已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成 绩 评 定 表学生姓名班级学号专 业信息与计算科学课程设计题目考试成绩管理系统评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院理学院专 业信息与计算科学学生姓名班级学号课程设计题目考试成绩管理系统实践教学要求与任务:1、巩固和加深对数据结构基本知识的理解。2、初步掌握简单软件的分析方法和设计方法。3、了解与课程有关的工程技术规范,能正确解释和分析设计结果。4、具体任务(1)运用数据结构和C语言的相关知识编辑一个考试成绩管理系统的程序,可以进行录入,浏览删除等功能。(2)用编译软件将程序调试运行工作计划与进度安排:第一天 查阅资相关料; 第二、三天 程序设计; 第四天 程序调试; 第五天 答辩指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日摘 要数据结构计算机及相关专业的很重要的专业基础课程。它不仅是计算机程序设计的理论基础,而且是学习计算机操作系统、编译原理、数据库原理等课程的重要基础。数据结构的主要任务是讨论数据的各种逻辑结构和数据在计算机中的存储表示,以及各种非数值运算的算法的实现。通过数据结构课程的学习,使学生能使用数据结构的基本分析方法来提高编辑程序的能力和应用计算机解决实际问题的能力。 本文运用数据结构中链表和C语言的知识编译了一个学生考试成绩管理系统,本系统可以实现对考试成绩的录入、查询、删除、保存等功能,系统简单方便而且实用。关键词:数据结构;C语言;考试成绩管理系统26目 录1设计目的12设计内容及要求13程序分析及算法描述14结构图及流程图55源代码65结果分析20总 结25参考文献26考试成绩管理系统1设计目的设计并完成一个考试成绩管理系统,即定义一个包含学生信息(姓名、学号、语文成绩、数学成绩、英语成绩)的链表。(1) 熟练查找和排序的数据结构算法(2) 熟练掌握数据结构(3) 复习C语言的各个知识点2设计内容及要求(1)设计一个选择式的菜单考试成绩管理系统1输入学生的资料 2查询学生的成绩3删除学生的资料 4显示学生的成绩5对成绩进行排序 6保存输入的资料欢迎进入成绩管理系统,请选择您想要的操作:(2)编辑一个完整的程序,实现对学生考试成绩的录入、查询、删除、浏览、排序和保存输入资料的功能(3)要求应用数据结构的相关知识3程序分析及算法描述(1) 学生信息结构体的建立建立学生结构体以方便后来的操作struct studentnodeint number; char name10;float Chinese;float English;float maths;struct studentnode *next;(2) 学生链表的建立运用数据结构中链表的知识建立学生信息的链表student *creat()student*head;student*p1,*p2;n=0;/*计数*/ printf(若学号为0,结束输入n);/*0结束输入*/p1=(student*)malloc(sizeof(student);p2=(student*)malloc(sizeof(student);printf(请输入第1个学生的学号:);scanf(%d,&p1-number);printf(请输入第1个学生的姓名:);scanf(%s,&p1-name);printf(请输入第1个学生的语文成绩:);scanf(%f,&p1-Chinese);printf(请输入第1个学生的数学成绩:);scanf(%f,&p1-maths);printf(请输入第1个学生的英语成绩:);scanf(%f,&p1-English);head=NULL;while(p1-number!=NULL)/*当前节点不为空*/n=n+1;/*计数加一*/if(n=1)head=p1;else p2-next=p1;/*头插*/p2=p1;p1=(student*)malloc(sizeof(student);printf(请输入第%d个学生的学号:,n+1);scanf(%d,&p1-number);if (p1-number=0)/*当输入0时结束输入*/break;printf(请输入第%d个学生的姓名:,n+1);scanf(%s,p1-name);printf(请输入第%d个学生的语文成绩:,n+1);scanf(%f,&p1-Chinese);printf(请输入第%d个学生的数学成绩:,n+1);scanf(%f,&p1-maths);printf(请输入第%d个学生的英语成绩:,n+1);scanf(%f,&p1-English);p2-next=NULL;return(head);(3) 主菜单menu(int k)int i;printf(tttt考试成绩管理系统n); for(i=0;i80;i+) printf(=);printf(1输入学生的资料tttttt2查询学生的成绩n);printf(n);printf(3删除学生的资料tttttt4显示学生的成绩n);printf(n);printf(5对成绩进行排序tttttt6保存输入的资料n); for(i=0;i80;i+) printf(=);printf(欢迎进入成绩管理系统,请选择您所要的操作:);scanf(%d,&k);return (k);(4) 主函数main() student *head=0,*stu=0;while(1) k=menu(k); switch(k) case 1: head=creat();break; case 2: head=search(head);break; case 3: head=del(head); break; case 4: print(head); break; case 5: paixu(head);break; case 6: save(head);break; default: printf(输入错误,请重试!n);4结构图及流程图提示输入错误请重新输入开始输出选择1选择2选择3选择4输入学生的资料查询学生的成绩删除学生的资料显示学生的成绩对成绩进行排序结束输入0其他输入选择6选择5保存输入的资料5源代码#include #include #include #include #define NULL 0struct studentnodeint number; char name10;float Chinese;float English;float maths;struct studentnode *next;typedef struct studentnode student;int n,k;student *creat()/*建立学生信息的链表*/student*head;student*p1,*p2;n=0;/*计数*/ printf(若学号为0,结束输入n);/*0结束输入*/p1=(student*)malloc(sizeof(student);p2=(student*)malloc(sizeof(student);printf(请输入第1个学生的学号:);scanf(%d,&p1-number);printf(请输入第1个学生的姓名:);scanf(%s,&p1-name);printf(请输入第1个学生的语文成绩:);scanf(%f,&p1-Chinese);printf(请输入第1个学生的数学成绩:);scanf(%f,&p1-maths);printf(请输入第1个学生的英语成绩:);scanf(%f,&p1-English);head=NULL;while(p1-number!=NULL)/*当前节点不为空*/n=n+1;/*计数加一*/if(n=1)head=p1;else p2-next=p1;/*头插*/p2=p1;p1=(student*)malloc(sizeof(student);printf(请输入第%d个学生的学号:,n+1);scanf(%d,&p1-number);if (p1-number=0)/*当输入0时结束输入*/break;printf(请输入第%d个学生的姓名:,n+1);scanf(%s,p1-name);printf(请输入第%d个学生的语文成绩:,n+1);scanf(%f,&p1-Chinese);printf(请输入第%d个学生的数学成绩:,n+1);scanf(%f,&p1-maths);printf(请输入第%d个学生的英语成绩:,n+1);scanf(%f,&p1-English);p2-next=NULL;return(head);student *search(student *head)/*查询学生信息*/int number,m;char name10,subname10;student *p;printf(1按学生学号查询t2按学生姓名查询t3按课程名查询n);scanf(%d,&m);switch(m) case 1:printf(请输入学生的学号:); scanf(%d,&number); p=head; while(p-next!=NULL) if (p-number=number) break;else p=p-next; printf(ttt查找结果n); printf(学号%d 姓名%s 语文%f 数学%f 英语%fn,p-number,p-name,p-Chinese,p-maths,p-English); break; return(head); case 2:printf(请输入学生的姓名:); scanf(%s,name); p=head;while(p-next!=NULL) if (strcmp(p-name,name)=0)break; else p=p-next; printf(ttt查找结果n); printf(学号%d 姓名%s 语文%f 数学%f 英语%fn,p-number,p-name,p-Chinese,p-maths,p-English);break; return(head); case 3:printf(请输入欲查询的课程名,如Chinese,maths,English:); scanf(%s,subname); if (strcmp(Chinese,subname)=0) printf(语文成绩n:); p=head; do printf(学号%d 姓名%s 语文%fn,p-number,p-name,p-Chinese);p=p-next; while (p!=NULL); if (strcmp(maths,subname)=0) printf(数学成绩n:); p=head; do printf(学号%d 姓名%s 数学%fn,p-number,p-name,p-maths);p=p-next; while (p!=NULL); if (strcmp(English,subname)=0) printf(英语成绩n:); p=head; do printf(学号%d 姓名%s 英语%fn,p-number,p-name,p-English);p=p-next; while (p!=NULL); break; return(head);return(head);student *del(student *head)/*删除学生信息*/student *p1,*p2;int number;printf(输入要删除的学生的学号:);scanf(%d,&number);if(head=NULL) printf(n没有任何学生资料!n); return(head);p1=head;while(number!=p1-number&p1-next!=NULL) p2=p1;p1=p1-next; if(number=p1-number) if(p1=head) head=p1-next; else p2-next=p1-next; printf(删除:%dn,number);n=n-1;/*计数减一*/else printf(%d不存在此学生!n,number);return(head);void print(student *head)/*显示学生信息*/student *p;if(head=NULL) printf(n没有任何学生资料!n);elseprintf(%dn,n);printf(-n);printf(|学号t|姓名t|语文t|英语t|数学t|n);printf(-n);p=head;do printf(|%dt|%st|%.1ft|%.1ft|%.1ft|n,p-number,p-name,p-Chinese,p-English,p-maths); printf(-n); p=p-next;while (p!=NULL);/*输出链表中的学生信息*/student *paixu(student *head) student *p,*max;int i,j,x;float fen;char t10;if(head=NULL) printf(n没有任何学生资料,请先建立链表!n);return(head);max=head;p=head;for(i=0;i80;i+) printf(*); printf(1按学生学号排序t2按语文成绩排序n); printf(3按英语成绩排序t4按数学成绩排序tn);for(i=0;i80;i+)printf(*);printf(请选择操作:);scanf(%d,&x);switch(x)case 1: for(i=1;in;i+)for(j=i+1;jnext; if(max-numberp-number) k=max-number; max-number=p-number; p-number=k; strcpy(t,max-name); strcpy(max-name,p-name); strcpy(p-name,t); fen=max-Chinese; max-Chinese=p-Chinese; p-Chinese=fen; fen=max-English; max-English=p-English; p-English=fen; fen=max-maths; max-maths=p-maths; p-maths=fen; max=head; p=head; print(head); break;case 2 : for(i=1;in;i+) for(j=i+1;jnext; if(max-Chinesep-Chinese) fen=max-Chinese; max-Chinese=p-Chinese; p-Chinese=fen; k=max-number; max-number=p-number; p-number=k; strcpy(t,max-name); strcpy(max-name,p-name); strcpy(p-name,t); fen=max-English; max-English=p-English; p-English=fen; fen=max-maths; max-maths=p-maths; p-maths=fen; p=head; max=head; print(head); break;case 3 : for(i=1;in;i+) for(j=i+1;jnext; if(max-mathsp-maths) fen=max-maths; max-maths=p-maths; p-maths=fen; k=max-number; max-number=p-number; p-number=k; strcpy(t,max-name); strcpy(max-name,p-name); strcpy(p-name,t); fen=max-English; max-English=p-English; p-English=fen; fen=max-Chinese; max-Chinese=p-Chinese; p-Chinese=fen; p=head; max=head; print(head); break;case 4 : for(i=1;in;i+) for(j=i+1;jnext; if(max-Englishp-English) fen=max-English; max-English=p-English; p-English=fen; k=max-number; max-number=p-number; p-number=k; strcpy(t,max-name); strcpy(max-name,p-name); strcpy(p-name,t); fen=max-maths; max-maths=p-maths; p-maths=fen; fen=max-Chinese; max-Chinese=p-Chinese; p-Chinese=fen; p=head; max=head; print(head); break;default :printf(输入错误,请重试! n);return (0);save(student *p1) FILE *fp;char filepn20;printf(请输入文件路径及文件名:);scanf(%s,filepn);if(fp=fopen(filepn,w)=NULL)printf(不能打开文件!n);return 0; fprintf(fp, 考试成绩管理系统 n); fprintf(fp,|学号t|姓名t|语文t|英语t|数学t|n); fprintf(fp,-n);while(p1!=NULL)fprintf(fp,%dt%st%.1ft%.1ft%.1ftn,p1-number,p1-name,p1-Chinese,p1-English,p1-maths);p1=p1-next;fclose(fp);printf(文件已经保存!n);return 0;menu(int k)int i;printf(tttt考试成绩管理系统n); for(i=0;i80;i+) printf(=);printf(1输入学生的资料tttttt2查询学生的成绩n);printf(n);printf(3删除学生的资料tttttt4显示学生的成绩n);printf(n);printf(5对成绩进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年传染病与突发公共卫生事件报告管理技术培训试题及答案
- 三亚市重点中学2026届高二化学第一学期期中教学质量检测试题含解析
- 浙江省诸暨市诸暨中学2026届化学高三上期中教学质量检测模拟试题含解析
- 贵州省遵义市务川民族中学2026届化学高一第一学期期末监测试题含解析
- 木底座购销合同范本
- 旅行社车辆合同范本
- 沙石渣土清运合同范本
- 施工材料费合同范本
- 提前终止合同解除协议
- 2026届浙江省宁波市诺丁汉大学附中高一上数学期末调研模拟试题含解析
- 幼师职称答辩题库及答案
- 高中语文新课程标准(2025年)和《方案》测试卷
- 血液制品经营培训
- 2025包头市总工会招聘18名工会社会工作者招聘考试笔试备考题库及答案解析
- 停车场收费系统模板与说明
- 保洁公司质量管理体系手册
- 胆结石急性胰腺炎处理方案培训
- 【数】二元一次方程组问题解决策略:逐步确定课件+2025-2026学年北师大版八年级数学上册
- 2025至2030中国分时度假行业市场发展分析及发展趋势与投资机会报告
- 食堂搭伙协议参考
- 10kv线路带电跨越施工方案
评论
0/150
提交评论