C语言课程设计报告--学生成绩统计系统_第1页
C语言课程设计报告--学生成绩统计系统_第2页
C语言课程设计报告--学生成绩统计系统_第3页
C语言课程设计报告--学生成绩统计系统_第4页
C语言课程设计报告--学生成绩统计系统_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、. / C语言课程设计书 设计题目: 学生成绩统计系统 课程名称: C语言课程设计 学 院 :物理与光电工程学院 专业班级: 电子科学与技术(1)班 学 号 : 3111008376 姓 名 : 何灿豪 联系方式 :任课教师 : 刘力斌 2013 年 11月 10日; 目录 设计目的 ··················· 2 任务要求 ···

2、3;··············· 2 总体设计 ··················· 2 部分程序 ·············

3、····· 4 调试分析过程 ··················· 9 课程设计总结 ···················· 13 题目:学生成绩统计一、设

4、计目的:(1)该课程设计要求学生既动手又动脑,自学,查资料,独立实践。将上学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编(程的能力,使对C语言系统编程有一个大致的了解。(2)C语言的实践。掌握C语言函数的定义方法,函数的声明及函数的调用过程。掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。二、任务要求:假设某班有:30人(姓名自定)考试课程有:高等数学、物理、外语、C语言、德育5门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容, 程序的功能主要包括

5、3方面: 输入成绩到文件中 输出成绩 输出不及格学生名单 成绩排序 修改记录 删除记录 插入记录等主函数中对3个功能选择(菜单),调用对应的函数完成。三、总体设计:(1)程序设计组成框图1.按班级输出学生成绩单2.按姓名查询学生成绩管理系统3.增加学生4.删除学生5.按班级修改学生成绩6.保存所有学生信息7.显示不及格学生成绩8.按平均成绩排序并输出成绩9.退出(2)模块功能说明1 输出功能:显示全部学生的记录。2 查询功能:输入姓名可以查询学生的详细信息。3 增加功能:增加新学生的信息。 4 删除功能:删除学生信息。5 修改功能:修改学生的错误信息。6 保存功能:保存已输入信息。7读取功能:

6、读取已输入信息。8显示功能:按照所需要的要求显示学生记录。9 排序功能:按照要求完成对学生信息的排序。 10 退出系统。(3)程序流程图开始学生成绩单结束输入数字平均分排序不及格名单保存信息增加学生退出按班修改按姓名查询删除学生四、部分程序代码如下:(1) 该函数功能:从文件中读学生信息到链表中void ReadInfoFormFile(void)FILE *fp;STUDENT *p;fp=fopen("student.txt","r");if(!fp)printf("文件不存在n");return;p=MallocNode();w

7、hile(fscanf(fp,"%s%s%s%f%f%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3),&(p->mark4),&(p->mark5)>0)InsertOneNode(p);p=MallocNode();fclose(fp);(2)该函数功能:显示菜单,根据用户的输入的数字完成对应的功能void DesplayMenu(void)STUDEN

8、T *p; printf("tt=欢迎来到学生成绩管理系统=n");printf("ttt-请选择相应功能-n");printf("tt|*|n");printf("tt|- 1 按班级输出学生成绩单 -|n");printf("tt|- 2 按姓名查询-|n");printf("tt|- 3 增加学生 -|n");printf("tt|- 4 删除学生 -|n");printf("tt|- 5 按班级修改学生成绩 -|n");prin

9、tf("tt|- 6 保存所有学生信息 -|n");printf("tt|- 7 显示不及格学生名单-|n");printf("tt|- 8 按平均成绩排序并输出成绩-|n");printf("tt|- 9 退出 -|n");printf("tt|*|n");printf("tttttt制作者:何灿豪n"); printf("tttttt制作时间:2013年11月10号n"); scanf("%d",&choose);/*取得用

10、户的选择*/switch(choose)case 1:OutputInformation();/*显示所有学生的信息*/break;case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();/*先申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/InsertOneNode(p);/*将新结点加到链表中*/break;case 4:DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/break;case 5:ChangeMarkByName();/*根据

11、用户输入的姓名修改学生成绩*/break;case 6:SaveLinkToFile();/*保存数据*/break;case 7:DesplayMarkSegment();/*显示不及格的学生成绩*/break;case 8:CompositorByTotalMark();/*按平均成绩排序*/break;case 9:SaveLinkToFile();/*保存数据后再退出*/free(headLink);exit(1);break;default:break;DesplayMenu();/*递归调用*/(3)函数功能:根据用户输入的学号删除该学生void DeleteNodeBystude

12、ntNumber(void)char studentNumber10;STUDENT *p,*q;char flag=0;printf("请输入要删除的学生学号:");scanf("%s",studentNumber);p=headLink;q=headLink->next;while(q) if(strcmp(q->studentNumber,studentNumber)=0) p->next=q->next; free(q); flag=1; break; p=p->next; q=q->next; if(!fla

13、g)printf("不存在该学号的学生n");return;printf("成功删除n");(4)该函数功能是:保存链表数据到文件中void SaveLinkToFile(void)STUDENT *p;FILE *fp;p=headLink->next;if(p=NULL)printf("现在没有学生信息,请先输入学生信息nn");return;fp=fopen("student.txt","w+");if(!fp)printf("文件不存在n");return;wh

14、ile(p)fprintf(fp,"%s %s %s %f %f %fn",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3,p->mark4,p->mark5);p=p->next;fclose(fp);(5)函数功能:输出不及格学生名单 void DesplayMarkSegment(void)STUDENT *p;p=headLink->next;printf("不及格学生的名单有:n");whi

15、le(p)if(6>(int)(p->mark1/10)|(6>(int)(p->mark2/10)|(6>(int)(p->mark3/10)|(6>(int)(p->mark4/10)|(6>(int)(p->mark3/10)/*只要有一科不及格就认为该生不及格*/printf("%sn",p->studentName);p=p->next;(6)该函数功能:按平均成绩进行排序void CompositorByTotalMark(void)STUDENT exchange,*r,*p,*q;r=h

16、eadLink->next;if(r=NULL)printf("现在还没学生信息,请先输入学生信息n");return;while(r)/*两层while循环实现排序*/p=r;q=r->next;while(q)if(q->mark1+q->mark2+q->mark3+q->mark4+q->mark5)>(p->mark1+p->mark2+p->mark3+p->mark4+p->mark5)strcpy(exchange.studentNumber,q->studentNumber

17、);/*先复制q结点信息到exchange*/strcpy(exchange.studentName,q->studentName);strcpy(exchange.className,q->className);exchange.mark1=q->mark1;exchange.mark2=q->mark2;exchange.mark3=q->mark3;exchange.mark4=q->mark4;exchange.mark5=q->mark5;strcpy(q->studentNumber,p->studentNumber);/*再复

18、制p结点信息到q*/strcpy(q->studentName,p->studentName);strcpy(q->className,p->className);q->mark1=p->mark1;q->mark2=p->mark3;q->mark3=p->mark3;q->mark4=p->mark4;q->mark5=p->mark5;strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/strcpy(p->studentName,exchange.studentName);strcpy(p->className,exchange.className);p->mark1=exchange.mark1;p->mark2=exchange.mark2;p->mark3=exchange.mark3;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论