永发信息网

【c语言学生管理系统】c语言学生成绩管理系统设计学生成绩信息包括:学号...

答案:2  悬赏:80  手机版
解决时间 2021-01-27 08:24
【c语言学生管理系统】c语言学生成绩管理系统设计学生成绩信息包括:学号...
最佳答案
【答案】 希望对你有所帮助。
  #includestdio.h
  #includestdlib.h
  #includestring.h
  #define N 3
  typedef struct z1
  {
   char no[11];
   char name[15];
   int score[N];
   float sum;
   float average;
   int order;
   struct z1 *next;
  }STUDENT;
  STUDENT *init();
  STUDENT *create();
  STUDENT *del(STUDENT *h);
  void print(STUDENT *h);
  void search1(STUDENT *h);
  void search2(STUDENT *h);
  STUDENT *insert(STUDENT *h);
  void sort(STUDENT *h);
  void save(STUDENT *h);
  void tongji(STUDENT *h);
  int menu_select();
  STUDENT *load();
  void inputs(char *prompt,char *s,int count);
  STUDENT *load();
  main()
  {
   int i;
   STUDENT *head;
   head=init();
   for(;;)
   {
   switch(menu_select())
   {
   case 0:head=init();break;
   case 1:head=create();break;
   case 2:head=insert(head);break;
   case 3:save(head);break;
   case 4:print(head);break;
   case 5:search1(head);break;
   case 6:head=del(head);break;
   case 7:sort(head);break;
   case 8:tongji(head);break;
   case 9:search2(head);break;
   case 10:exit(0);
   }
   }
  }
  int menu_select()
  {
   char *menu[]={************菜单************,
   0. 初始化链表,
   1. 输入学生成绩,
   2. 插入学生成绩,
   3. 保存学生记录,
   4. 显示学生记录,
   5. 按学号查找学生信息,
   6. 删除指定学号的学生信息,
   7. 按某一门课对学生成绩排序,
   8. 统计某门课程的学生成绩,
   9. 按姓名查找学生信息,
   10. 退出系统};
   char s[3];
   int c,i;
   for(i=0;i10);
   return c;
  }
  STUDENT *init()
  {
   return NULL;
  }
  STUDENT *create()
  {
   int i;int s;
   STUDENT *h=NULL,*info;
   for(;;)
   {
   info=(STUDENT *)malloc(sizeof(STUDENT));
   if(!info)
   {
   printf(\n内存不足);
   return NULL;
   }
   inputs(输入学号:,info->no,11);
   if(info->no[0]=='@')break;
   inputs(输入姓名:,info->name,15);
   printf(开始输入%d门课的成绩\n,N);
   s=0;
   for(i=0;iscore[i]);
   if(info->score[i]>100||info->score[i]score[i]>100||info->score[i]score[i];
   }
   info->sum=s;
   info->average=(float)s/N;
   info->order=0;
   info->next=h;
   h=info;
   }
   return h;
  }
  void inputs(char *prompt,char *s,int count)
  {
   char p[255];
   do
   {
   printf(prompt);
   scanf(%s,p);
   if(strlen(p)>count)
   printf(\n太长了!\n);
   }while(strlen(p)>count);
   strcpy(s,p);
  }
  void print(STUDENT *h)
  {
   int i=0;
   STUDENT *p;
   p=h;
   printf(\n\n\n***********************学生***********************\n);
   printf(|序号|学号 | 姓名 | 数学 | 英语 |计算机 | 总分 |平均分 |名次 |\n);
   printf(|---|-------|--------|----|----|----|------|------|---|\n);
   while(p!=NULL)
   {
   i++;
   printf(|%3d |%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n,i,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
   p=p->next;
   }
   printf(***********************end***********************\n);
  }
  STUDENT *del(STUDENT *h)
  {
   STUDENT *p,*q;
   char s[11];
   printf(请输入要删除的学生的学号\n);
   scanf(%s,s);
   q=p=h;
   while(strcmp(p->no,s)&&p!=NULL)
   {
   q=p;
   p=p->next;
   }
   if(p==NULL)
   printf(\n链表中没有学号为%s的学生\n,s);
   else
   {
   printf(\n\n\n***********************找到了***********************\n);
   printf(|学号 | 姓名 | 数学 | 英语 | 计算机 | 总分 | 平均分 | 名次 |\n);
   printf(|----------|----------|----|----|----|------|------|---|\n);
   printf(|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
   printf(***********************end***********************\n);
   printf(请按任意键删除\n);
   getchar();
   if(p==h)
   h=p->next;
   else q->next=p->next;
   free(p);
   printf(\n已经删除学号为%s的学生\n,s);
   printf(不要忘了保存数据\n);
   }
   return h;
  }
  void search1(STUDENT *h)
  {
   STUDENT *p;
   char s[11];
   printf(请输入你要查找的同学的学号\n);
   scanf(%s,s);
   p=h;
   while(strcmp(p->no,s)&&p!=NULL)
   p=p->next;
   if(p==NULL)
   printf('n没有学号为%s的学生\n,s);
   else
   {
   printf(\n\n\n***********************找到了***********************\n);
   printf(|学号 | 姓名 | 数学 | 英语 | 计算机 | 总分 | 平均分 | 名次 |\n);
   printf(|----------|-----------|----|----|----|------|------|---|\n);
   printf(|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
   printf(***********************end***********************\n);
   }
  }
  void search2(STUDENT *h)
  {
   STUDENT *p;
   char s[11];
   printf(请输入你要查找的同学的姓名\n);
   scanf(%s,s);
   p=h;
   while(strcmp(p->name,s)&&p!=NULL)
   p=p->next;
   if(p==NULL)
   printf(\n没有姓名为%s的学生\n,s);
   else
   {
   printf(\n\n\n***********************找到了***********************\n);
   printf(|学号 | 姓名 | 数学 | 英语 | 计算机 | 总分 | 平均分 | 名次 |\n);
   printf(|----------|-----------|----|----|----|------|------|---|\n);
   printf(|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
   printf(***********************end***********************\n);
   }
  }
  STUDENT *insert(STUDENT *h)
  {
   STUDENT *p,*q,*info;
   char s[11];
   int s1,i;
   printf(请输入插入点的学生学号\n);
   scanf(%s,s);
   printf(\n请输入新的学生信息\n);
   info=(STUDENT *)malloc(sizeof(STUDENT));
   if(!info)
   {
   printf(\n内存不足!);
   return NULL;
   }
   inputs(输入学号:,info->no,11);
   inputs(输入姓名:,info->name,15);
   printf(请输入%d门课的分数\n,N);
   s1=0;
   for(i=0;iscore[i]);
   if(info->score[i]>100||info->score[i]score[i]>100||info->score[i]score[i];
   }
   info->sum=s1;
   info->average=(float)s1/N;
   info->order=0;
   info->next=NULL;
   p=h;
   q=h;
   while(strcmp(p->no,s)&&p!=NULL)
   {q=p;p=p->next;}
   if(p==NULL)
   if(p==h)
   h=info;
   else q->next=info;
   else
   if(p==h)
   {
   info->next=p;
   h=info;
   }
   else
   {
   info->next=p;
   q->next=info;
   }
   printf(\n已经插入了%s这个学生\n,info->name);
   printf(----不要忘了存盘啊--\n);
   return(h);
  }
  void save(STUDENT *h)
  {
   FILE *fp;
   STUDENT *p;
   char outfile[10];
   printf(请输入保存文件的文件名,例如 c:\\f1\\te.txt:\n);
   scanf(%s,outfile);
   if((fp=fopen(outfile,wb))==NULL)
   {
   printf(不能打开文件\n);
   exit(1);
   }
   printf(\n正在保存......\n);
   p=h;
   while(p!=NULL)
   {
   fwrite(p,sizeof(STUDENT),1,fp);
   p=p->next;
   }
   fclose(fp);
   printf(------保存成功!!!------\n);
  }
  void sort(STUDENT *h)
  {
   int i=0,j;
   STUDENT *p,*q,*t,*h1;
   printf(请输入要按哪门课程的编号来排序:(1.数学 2.英语 3.计算机)\n);
   scanf(%d,&j);
   h1=h->next;
   h->next=NULL;
   while(h1!=NULL)
   {
   t=h1;
   h1=h1->next;
   p=h;
   q=h;
   while(t->score[j]score[j]&&p!=NULL)
   {
   q=p;
   p=p->next;
   }
   if(p==q)
   {
   t->next=p;
   h=t;
   }
   else
   {
   t->next=p;
   q->next=t;
   }
   }
   p=h;
   while(p!=NULL)
   {
   i++;
   p->order=i;
   p=p->next;
   }
   print(h);
   printf(排序成功!!!\n);
  }
  void tongji(STUDENT *h)
  {
   STUDENT *p;
   int a,b,i;
   printf(请输入课程编号\n);
   scanf(%d,&i);
   printf(请输入分数段:\n);
   scanf(%d,%d,&a,&b);
   p=h;
   while(p!=NULL)
   {
   printf(\n\n\n***********************找到了***********************\n);
   if(p->score[i]>=a&&p->score[i]no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
   }
   p=p->next;
   }
   printf(***********************end***********************\n);
  }
全部回答
正好我需要
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怪物猎人p3金火龙套装配什么技能好?
晶格缺陷是否也存在于热力学平衡状态中?
想去德国留学读研,交互设计或者用户体验设计
下面哪些参数是混杂参数A.kB.αC.βD.γE.K
贼驴的意思是什么啊?知道的请说下!
平安好医生兑换商品前能否先编辑收货地址?
【喜出望外、一望无际、望风而逃、德高望重的
对电光性眼炎的处理,最主要的是()
笔记本电脑像什么东西(并说明原因)
负片的意思是什么啊?知道的请说下!
苹果6按上蜗牛移动的卡,为什么上边的运营商
关于初三化学质量守恒定律的一个问题在反应 2
下列分别属于生产者和消费者的一组是CA. 阳光
有五爷有观音还有文殊还有财神爷怎么摆设
谁有恋爱禁止的世界动漫我
推荐资讯
()对银行理财产品的销售建立了行业监管规范。
管晏的意思是什么啊?知道的请说下!
男朋友生气了,躲起来不见我不理我
自动化仪表工程施工程序中,仪表单体校验的紧
非意相干的意思是什么啊?知道的请说下!
华为P10对比一加3T,综合来说,哪个更值得入
光线可以看见么
为什么我每次调闹钟都要检查很多遍?
360浏览器缓存小说什么时候可以恢复
为什么焦虑症患者只要左胸口疼痛而不是右胸口
一齐众楚的意思是什么啊?知道的请说下!
车之翼(张掖民乐县)地址有知道的么?有点事想
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?