学生成绩管理系统试验报告_第1页
学生成绩管理系统试验报告_第2页
学生成绩管理系统试验报告_第3页
学生成绩管理系统试验报告_第4页
学生成绩管理系统试验报告_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

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

文档简介

1、XX经济学院 信息工程学院4来名型城拳院数据构造实验报告实验一实验人:颜建学班级: 4101090703实验时间:实验学时:4实验地点:260XX经济学院信息工程学院实验题目:学生成绩管理系统实验目的:.掌握线性表的逻辑构造和根本操作.理解线性表的存储构造,特别是用单链表的实现和相应操作.通过实用系统的编写更进一般认识线性表这种数据构造的应用实验内容:实现学生成绩管理系统,根本功能要求:.添加学生信息:学号整型,XX字符数组,高数,英语,数据构造double.输出所有同学信息.求平均成绩按各个科目,求总平均.统计成绩及格以及不及格的人数.删除学生信息.查找学生信息按学号,按 XX实验用到数据构

2、造:逻辑构造:线性表存储构造:顺序构造定义,功能函数声明如下:typedef struct student (int num ;char name10;double math,english,struture ; elemtype ;typedef srtuct list (elemtype *elem ;int lenth ;int size ; list ;typedef int status ;status initlist(list &la 力 初始化顺序表.word.zl.status inserlist(list &la ,int i, elemtype e) ; /添加元素即:学

3、生信息status deletlist(list &la ,int i) ;/ 删除元素即:学生信息int findlistname(list &la,char name) ;/ 按 XX 查找,找的返回位置,否那么返回0int findlistnum(list &la,int num) ;/ 按学号查找,找的返回位置,否那么返回 0double avg(list &la ) ;/ 求平均分status statistic(list &la) ; / 统计status prin(list &la);/输出全部学生信息实验源程序:#include#include#include#include

4、typedef struct STUDENT char studentNumber20;/* 学生学号 */char studentName20;/* 学生 XX*/char className20;/* 班级名称 */float math;/* 数学成绩 */float english;/* 英语成绩 */float struture;/*数据构造成绩*/struct STUDENT *next;STUDENT;STUDENT *headLink;/* 链表表头指针 */*函数声明*/void ReadInfoFormFile();void Menu();void CreateHeadLin

5、k();STUDENT *Malloode();void GetInformation(STUDENT *t);void OutputInformation();void DesplayInfoBystudentName();void DesplayInfoBystudentNumber();void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber();void ChangeMarkByName();void ChangeMarkByNumber();void Sa

6、veLinkToFile();void paixu();void DesplayMarkSegment();int choose;/*用于承受用户的选择*/*主函数*/void main().word.zl.(printf(nttt欢送进入学生成绩管理系统nnn);printf(ttttO( n _n )Onnnn);printf(tttA_AtttA_Ann);printf(ntt注意:请按照要求输入相应的信息,谢谢您的合作!nnnnn);printf(tPress any key to enter the performance management system);getch();Cre

7、ateHeadLink();ReadInfoFormFile();Menu();)/*从文件中读学生信息到链表中*/void ReadlnfoFormFile(void)(FILE *fp;STUDENT *p;fp=fopen(student.txt,r);if(ifp)(printf(n);return;)p=Malloode();while(fscanf(fp,%s%s%s%f%f%f,p-studentNumber,p-studentName,p-className,&(p-m ath),&(p-english),&(p-struture)0)(InsertOneNode(p);p=M

8、alloode();)fclose(fp);)/*显示菜单,根据用户的输入完成相应的功能 */void Menu(void) (STUDENT *p;printf(tt (AoA)欢送使用学生成绩管理系统(AoA)nn);printf(t 妥 请选择相应功能 Mnn);printf(t 1:显示所有学生的信息);printf( t2:按 XX 查询 nn);printf(t3:按学号查询 );printf( tt4:增加学生 nn);printf(t 5:删除学生);.word.zl.printf( tt6:按 XX 修改学生成绩nn);printf(t7:按学号修改学生成绩);printf(

9、 t8:保存所有学生信息nn);printf(t9:按成绩输出学生信息);printf(t10:显示不及格及优秀学生nn);printf(t11:返回主菜单 );printf(tt12:退出 nn);printf(t 妥O(n _n )0 兴nn);printf(t请输入对应数字:”);scanf(%d,&choose);/* 取得用户的选择 */ switch(choose) case 1: OutputInformation();/* 显示所有学生的信息 */ break; case 2: DesplayInfoBystudentName(); break; case 3:DesplayI

10、nfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/break; case 4: p=Malloode();/*先申请一个新结点*/ GetInformation(p);/*要求用户输入信息到新结点中*/InsertOneNode(p);/*将新结点加到链表中 */ break; case 5: DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/break; case 6: ChangeMarkByName();/*根据用户输入的 XX修改学生成绩*/ break; case 7: ChangeMarkByNumber(

11、);/*根据用户输入的学号修改学生成绩*/break; case 8: SaveLinkToFile();/* 保存数据 */ break; case 9: paixu();break; case 10: DesplayMarkSegment();break; case 11: break;.word.zl.case 12:SaveLinkToFile();/*保存数据后再退出*/ free(headLink);break;default: break;Menu();/*递归调用*/*建立链表表头*/void CreateHeadLink(void)STUDENT *p;p=(STUDENT*

12、)malloc(sizeof(STUDENT);headLink=p; p-next=NULL;/*申请一个新结点,并将其初始化 */STUDENT *Malloode(void)STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(STUDENT);if(p=NULL)return NULL;for(i=0;istudentNumber,NULL,20);for(i=0;istudentName,NULL,20);for(i=0;iclassName,NULL,20);p-math=0.0;p-english=0.0;p-struture=0.0;p-next

13、=NULL;return p;/*取得用户输入的学生信息*/void GetInformation(STUDENT *t)printf(请输入学生学号:); scanf(%s”,t-studentNumber);.word.zl.printf(请输入学生XX:);scanf(%s,t-studentName);printf(请输入该生所在班级:);scanf(%s”,t-className);printf(请输入数学成绩:);scanf(%f,&(t-math);printf(请输入英语成绩:);scanf(%f,&(t-english);printf(请输入数据构造成绩:);scanf(%f

14、,&(t-struture);/*在链表的结尾处增加一个结点 */void InsertOneNode(STUDENT *t) STUDENT *p;p=headLink;while(p-next)p=p-next;p-next=t;/*根据用户输入的学生 XX显示该学生的信息*/void DesplayInfoBystudentName(void) STUDENT *p;char studentName20;char flag=0;p=headLink-next;printf(请输入学生XX:);scanf(%s,studentName);while(p)if(strcmp(p-studen

15、tName,studentName)=0)printf(t学号tXXt班级t数学成绩t英语成绩t数据构造成绩t总成绩t平均成绩n);DesplayOneNode(p);flag=1;break;p=p-next;if(!flag) printf(t对不起,不存在 XX 为 s 的学生 n,studentName);.word.zl.)/*根据用户输入的学号显示该学生的信息*/void DesplaylnfoBystudentNumber(void)(STUDENT *p;char studentNumber20;char flag=0;p=headLink-next;printf(请输入学生学

16、号:);scanf(%s,studentNumber);while(p)(if(strcmp(p-studentNumber,studentNumber)=0)(printf(t学号tXXt班级t数学成绩t英语成绩t数据构造成绩t总成绩t平均成绩n);DesplayOneNode(p);flag=1;break;)p=p-next;)if(!flag) printf(t对不起,不存在学号为s的学生n,studentNumber);)/*输出一个结点的信息*/void DesplayOneNode(STUDENT *t)printf(t%st,t-studentNumber);printf(%s

17、t,t-studentName);printf(%st,t-className);printf(%.2ft,t-math);printf(%.2ft,t-english);printf(%.2ft,t-struture);printf(%.2ft,t-math+t-english+t-struture);printf(%.2ftn,(t-math+t-english+t-struture)/3);/*根据用户输入的学号删除该学生*/void DeleteNodeBystudentNumber(void) char studentNumber10;STUDENT *p,*q;char flag=

18、0;printf(请输入要删除的学生学号:);scanf(%s,studentNumber);.word.zl. 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(!flag) (printf(t不存在该学号的学生n);return; printf(t 成功删除 n);/*显示所有学生的信息*/ void OutputInformation(void) (STUD

19、ENT *p;p=headLink-next; if(p=NULL) (printf(t现在没有学生信息,请先输入学生信息nn);return; printf(t学号tXXt班级t数学成绩t英语成绩t数据构造成绩t总成绩t平均成绩n); while(p) ( DesplayOneNode(p);p=p-next; /*根据输入的XX修改成绩*/ void ChangeMarkByName(void) (STUDENT *p;char studentName20;.word.zl.char flag=0;float math,english,struture;p=headLink-next;pr

20、intf(请输入学生XX:);scanf(%s,studentName);while(p)if(strcmp(p-studentName,studentName)=0)printf(请输入新的数学成绩:n);scanf(%f,&math);printf(请输入新的英语成绩:n);scanf(%f,&english);printf(请输入新的数据构造成绩:n);scanf(%f,struture);p-math=math;p-english=english;p-struture=struture;flag=1;printf(修改成功 n);break;p=p-next;if(!flag) pri

21、ntf(t 对不起,不存在 XX 为 s 的学生 n,studentName); /*根据输入的XX修改成绩*/void ChangeMarkByNumber(void)STUDENT *p;char studentNumber20;char flag=0;float math,english,struture;p=headLink-next;printf(请输入学生学号:);scanf(%s,studentNumber);while(p)if(strcmp(p-studentNumber,studentNumber)=0)printf(请输入新的数学成绩:n);scanf(%f,&math)

22、;printf(请输入新的英语成绩:n);.word.zl. scanf(%f,&english);printf(请输入新的数据构造成绩:n);scanf(%f,&struture);p-math=math;p-english=english;p-struture=struture;flag=1;printf(修改成功 n);break;p=p-next;if(!flag)printf(t对不起,不存在学号为 s的学生n,studentNumber);/*保存链表数据到文件中*/void SaveLinkToFile(void)STUDENT *p;FILE *fp;p=headLink-ne

23、xt;if(p=NULL)printf(t现在没有学生信息,请先输入学生信息nn);return;fp=fopen(student.txt,w+);if(!fp)printf(文件不存在n);return;while(p)fprintf(fp,%s %s %s %f %f %fn,p-studentNumber,p-studentName,p-className,p-math, p-english,p-struture);p=p-next;fclose(fp);/*显示优秀和不及格学生成绩*/void DesplayMarkSegment(void)STUDENT *p;.word.zl. i

24、nt count=0;p=headLink-next;printf(t60分以下(不及格)的学生成绩如下:n);printf(t学号tXXt班级t数学成绩t英语成绩t数据构造成绩t总成绩t平均成绩nn); while(p)if(6(int)(p-math/10)|(6(int)(p-english/10)|(6(int)(p-struture/10)/*只 要有一科不及格就认为该生不及格*/count+;DesplayOneNode(p);p=p-next;printf(t不及格的学生一共有 d人n,count);p=headLink-next;printf(t成绩优秀的学生成绩如下:n);p

25、rintf(t学号tXXt班级t数学成绩t英语成绩t数据构造成绩t总成绩t平均成绩nn);count=0;while(p)if(8math/10)&(8english/10)&(8struture/10)count+;DesplayOneNode(p);p=p-next; printf(t成绩优秀的学生一共有d人n,count);/*按总成绩排序*/void paixu(void)STUDENT exchange,*r,*p,*q;r=headLink-next;if(r=NULL)printf(t现在还没学生信息,请先输入学生信息n);return;while(r)/*两层while循环实现

26、排序*/p=r;q=r-next;.word.zl.while(q)(if(q-math+q-english+q-struture)(p-math+p-english+p-struture)(strcpy(exchange.studentNumber,q-studentNumber);/*先复制 q 结点信息到 exchange*/strcpy(exchange.studentName,q-studentName);strcpy(exchange.className,q-className);exchange.math=q-math;exchange.english=q-english;exchange.struture=q-struture;strcpy(q-studentNumber,p-studentNumber);/* 再复制 p 结点信息到 q*/ strcpy(q-studentName,p-studentName)

温馨提示

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

评论

0/150

提交评论