当前位置:文档之家› 随机点名系统源程序ok

随机点名系统源程序ok

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define SIZE 4
struct student
{char num[20];
char name[20];
int time;
}std[SIZE];
void save()
{int i;
FILE *fp;
if((fp=fopen("myfile.dat","rb+"))==NULL)
{printf("文件打开失败\n");
exit(0);}
for(i=0;i<SIZE;i++)
if(fwrite(&std[i],sizeof(struct student),1,fp)!=1)
/*将内存中的数据输出到磁盘文件中*/
printf("文件保存失败\n");
}
void main()
{
int j,i;
char c;
FILE *fp;
/*if((fp=fopen("myfile.dat","wb+"))==NULL)
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;i<SIZE;i++)
scanf("%s %s %d",std[i].name,std[i].num,&std[i].time);
for(i=0;i<SIZE;i++)
fwrite(&std[i],sizeof(struct student),1,fp);
fclose(fp);*///第一次运行写入名字
if((fp=fopen("myfile.dat","ab+"))==NULL)
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;i<SIZE;i++)
fread(&std[i],sizeof(struct student),1,fp);
/*将fp所指向的文件中的数据存储到数组std中*/
printf("*************欢迎使用上课随机点名程序**************\n");
printf("*************输入a:显示所有同学名情况*************\n"); printf("*************输入d: 开始点名**********************\n"); printf("*************输入s:保存点名**********************\n"); printf("*************输入b: 点名次数归零******************\n"); printf("*************输入q: 退出**************************\n"); printf("***************************************************\n"); while(1)
{
c=getchar();
switch(c)
{
case 'a':for(i=0;i<SIZE;i++)
printf("\t\t%s\t\t%s\t\t被点名%d次\n",std[i].num,std[i].name,std[i].time); break;
case 's': save();
printf("****文件保存成功!退出请输入q****\n");
break;
case 'b': for(i=0;i<SIZE;i++)
std[i].time=0;
printf("点名次数归%d\n",std[i].time);break;
case 'q': exit(0);
case 'd':
loop:j=rand()/1000; /*调用rand的函数进行点名*/
if(j==0)
{
std[0].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else if(j==1)
{
std[1].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else if(j==2)
{
std[2].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else if(j==3)
{
std[3].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else goto loop;
break;}
}
fclose(fp); }
运行结果:。

相关主题