这个疫情学生管理系统,文件不会写 各个部分也不太对 编译不通过
想请大家帮忙改一下 最好能调试出来 然后符合这个要求
谢谢大家!!
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
#define DATA stu[i].number,stu[i].name,stu[i].sex,stu[i].Grade,stu[i].Class,stu[i].Record_vac,stu[i].Record_leaveapplication,stu[i]. Record_NAT
struct student
{
int number;
char name[20];
char sex;
int Grade;
int Class;
int tem[99];
int Record_vac;
int Record_leaveapplication;
int Record_NAT;
}stu[999];
void welcome();
void loadone();
void loadtwo();
void leave();
void jiemian1();
void jiemian2();
void search();
void insert();
void del();
void modify();
void print();
int main()
{
int choice1=0;
welcome();
printf("请输入对应功能键");
scanf("%d",&choice);
switch(choice)
{
case 1:loadone();
break;
case 2:loadtwo();
break;
case 3:leave();
break;
return 0;
}
void readin(){
FILE *fpr=fopen("studentInfo.txt","r");
if(fpr==NULL){
return 0;
}else{
while(fscanf(fpr,"%d%s%s%d%d%d%d%d%d",&stu[i].number,&stu[i].name,&stu[i].sex,&stu[i].Grade,&stu[i].Class,&stu[i].Record_vac,&stu[i].Record_leaveapplication,&stu[i]. Record_NAT))
printf("%d%s%s%d%d%d%d%d%d",stu[i].number,stu[i].name,stu[i].sex,stu[i].Grade,stu[i].Class,stu[i].Record_vac,stu[i].Record_leaveapplication,stu[i]. Record_NAT);
}
}
void show()
{ FILE *fp;
int i,m=0;
fp=fopen("data.txt","rb");
while(!feof(fp))
{
if(fread(&stu[m] ,LEN,1,fp)==1)
m++;
}
fclose(fp);
for(i=0;i<m;i++)
{
printf(FORMAT,DATA);/*将信息按指定格式打印*/
}
}
void welcome()
{
system("cls");
printf("************************\n");
printf("**疫情学生信息管理系统**");
printf("** **");
printf("** **");
printf("** **");
printf("管理员登录----1\n");
printf("学生登录------2\n");
printf("退出系统------3");
}
void jiemian1()
{
printf("*******管理员系统*******\n");
printf("** **\n");
printf("查询-------------------1\n");
printf("删除-------------------2\n");
printf("修改-------------------3\n");
printf("输出-------------------4\n");
printf("插入-------------------5\n");
printf("退出-------------------6\n");
printf("请输入对应功能键\n");
}
void jiemian2()
{
printf("*******学生系统*******\n");
printf("** **\n");
printf("查询-------------------1\n");
printf("修改-------------------2\n");
printf("输出-------------------3\n");
printf("退出-------------------4\n");
printf("请输入对应功能键\n");
}
void loadone()
{
char a[]='123456';
char b[99];
printf("please input secret code");
gets(b);
if(strcmp(a,b)==0){
jiemian1();
int choice1;
scanf("%d",&choice1);
switch(choice1)
{
case 1:search();
break;
case 2:del();
break;
case 3:change();
break;
case 4:send();
break;
case 5:insert();
break;
case 6:leave();
break;
}
}
else{
printf("The secret code is wrong,please try again");
}
}
void loadtwo()
{
char c[]='654321';
char str[99];
printf("please input secret code");
gets(str);
if(strcmp(c,str)==0)){
jiemian2();
int choice2;
scanf("%d",&choice2);
switch(choice2)
{
case 1:search();
break;
case 2:modify();
break;
case 3:print();
break;
case 4:leave();
break;
}
}
else{
printf("The secret code is wrong,please try again");
}
}
void order()/*自定义排序函数,对核酸检测次数从大到小进行排序*/
{
int i=0,j=0,m=0;
int t;
for(i=0;i<m-1;i++){//m代表核酸检测次数
for(j=0;j<m-1-i;j++){
if(stu[j].Record_NAT<stu[j+1].Record_NAT){
t=stu[j].Record_NAT;stu[j].Record_NAT=stu[j+1].Record_NAT;stu[j+1].Record_NAT=t;
}
}
}
void del()/*自定义删除函数*/
{
int snum,i,j;
char ch[2];
printf("请输入需要删除的学生学号");
scanf("%d",&snum);
for(i=0;i<;i++)
if(snum==stu[i].num)
break;
printf("find the student,delete?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
for(j=i;j<len;j++)
stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/
len--;/*记录的总个数减1*/
printf("delete successfully!\n");
}
void search()/*自定义查找函数*/
{
int snum,i,m=0;
char ch[2];
printf("please input the number:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)/*查找输入的学号是否在记录中*/
{ printf("find the student,show?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("number name sex grade class Record_vac Record_leaveapplication Record_NAT\t\n");
printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
break;
}
}
if(i==m) printf("can not find the student!\n");/*未找到要查找的信息*/
}
void modify()/*自定义修改函数*/
{ FILE *fp;
int i,j,m=0,snum;
if((fp=fopen("data.txt","r+"))==NULL)
{ printf("can not open\n");return;}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1) m++;
if(m==0) {printf("no record!\n");
fclose(fp);
return;
}
printf("please input the number of the student which do you want to modify!\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/
break;
printf("find the student!you can modify!\n");
printf("name:\n");
scanf("%s",stu[i].name);/*输入名字*/
printf("\nsex: ");
scanf("%s",stu[i].sex);/*修改性别*/
printf("\nnumber:");
scanf("%d",&stu[i].number);/*修改学号*/
printf("\ngrade:");
scanf("%d",&stu[i].grade);/*修改*/
if((fp=fopen("data.txt","wb"))==NULL)
{ printf("can not open\n");return;}
for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{ printf("can not save!"); getch(); }
fclose(fp);
}
void insert()/*自定义插入函数*/
{ FILE *fp;
int i,j,k,m=0,snum;
if((fp=fopen("data.txt","r+"))==NULL)
{ printf("can not open\n");return;}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1) m++;
if(m==0) {printf("no record!\n");
fclose(fp);
return;
}
printf("please input position where do you want to insert!(input the number)\n");
scanf("%d",&snum);/*输入要插入的位置*/
for(i=0;i<m;i++)
if(snum==stu[i].num)
break;
for(j=m-1;j>i;j--)
stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
printf("now please input the new information.\n");
printf("number:");
scanf("%d",&stu[i+1].num);
for(k=0;k<m;k++)
if(stu[k].num==stu[i+1].num)
{
printf("the number is existing,press any to continue!");
getch();
fclose(fp);
return;
}
printf("name:\n");
scanf("%s",stu[i+1].name);
printf("\nelective:");
scanf("%lf",&stu[i+1].elec);
printf("\nexperiment:");
scanf("%lf",&stu[i+1].expe);
printf("\nrequired course:");
scanf("%lf",&stu[i+1].requ);
if((fp=fopen("data.txt","wb"))==NULL)
{ printf("can not open\n");return;}
for(k=0;k<=m;k++)
if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
{ printf("can not save!"); getch(); }
fclose(fp);
}
void print(){ /*自定义输出函数*/
order();
search();
del();
modify();
insert();
for(int i=0;i<n;i++){
printf("name:%s",s[i].name);
printf("sex:%s",s[i].sex);
printf("number:%d",&s[i].name);
printf("grade:%d",&s[i].grade);
printf("class:%d",&s[i].class);
}
void leave(){
system("cls");
printf("欢迎下次使用!");
}
谢谢大家!!