_Phoebe__ 2022-01-13 16:15 采纳率: 96.9%
浏览 790
已结题

c语言 疫情学生信息管理系统

这个疫情学生管理系统,文件不会写 各个部分也不太对 编译不通过
想请大家帮忙改一下 最好能调试出来 然后符合这个要求
谢谢大家!!

img


#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("欢迎下次使用!");
 }

谢谢大家!!

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月13日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵