下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计题目名称:学生成绩管理系统计算机科学与技术学院数据结构综合实验设计学生成绩管理系统1.需求分析系统主要管理学生信息与成绩信息排序等事项。根据需要可以查询学生的 信息。主要功能包括如下。(1)使用中文菜单,界面升级和用户输入要人性化。( 2)将学生信息保存到文本文档中, 具体对学生信息进行插入删除查询操 作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据 结构中,然后在对该数据结构进行操作,所有操作完成,或者在相应的命 令后,再将学生信息保存到文本文档中。(3)具有数据输入功能,输入的数据能最终保存在文件中。(4)具有数据删除功能,能最终从文件中删除。(5)排序功能
2、,根据自己设计的数据结构,升级排序算法。(6)具有多种查询与输出功能。(7)其他功能。(8)学生信息的修改。 本程序要求设计一个学生信息管理程序,即用计算机来管理一个学校的各 个班级成员的各种信息,实现学生信息管理。(9)数据的输入形式和输入值得范围: 首先输入的是菜单的序号, 选择你 想要进行 的操作,其次根据提示输入相关的班级或学生信息。(10)结果的输出形式:输出的是班级信息或学生信息。2.设计概要输入学生成绩输出学生成绩查询学生成绩插入学生成绩按总分排名删除学生信息退出系统3 函数Struct Student/ 结构体 Int term;/ 学期Int num;/ 学号Char nam
3、e12; 姓名Float mrak1; 成绩Float mark2;Float mark3;Float sum;/ 总分Float average;/ 平均分 ;void input(list *head) 输入函数void output(list *h)输出函数void sortsum(list *head)总成绩排名void sortnum(list *head)按学号排名查找主函数删除函数插入函数可以实现所有的功能void find (list *h) list *del (list *h) list *insert(list *h) 全部的功能函数 4 详细设计: 程序代码:#incl
4、ude <stdio.h>#include <stdlib.h>#include <malloc.h>#define MAXLEN 100#define Null 0/* int count = 0;/* typedef struct node int num; / 学号char nameMAXLEN; / 姓名 /*/char sex2; / 性别 /char sex;/*/float sum;/总分float ave;/平均分int computer; / 计算机成绩 int english;/ 英语成绩int math;/ 数学成绩int chines
5、e; / 语文分数/ 指针域/ 输入函数/ n 为学生人数struct node *next; list;/* void input(list *head) /* list *p,*r;int i,n;/*p=(list *)malloc(sizeof(list); p->next=Null;*/r=head;printf(" 请输入学生人数 .n");scanf("%d",&n);for(i=1;i<=n;i+)p=(list *)malloc(sizeof(list);printf(" 请输入学生学号: n")
6、; scanf("%d",&p->num);printf(" 请输入学生性别: n"); scanf("%s",&p->sex);printf(" 请输入学生姓名: n"); scanf("%s",&p->name);printf(" 请输入语文成绩: n"); scanf("%d",&p->chinese);printf(" 请输入英语成绩: n"); scanf("%
7、d",&p->english);printf(" 请输入数学成绩: n"); scanf("%d",&p->math);printf(" 请输入计算机成绩: n"); scanf("%d",&p->computer);(p->sum)=(p->chinese)+(p->computer)+(p->math)+(p->e nglish);(p->ave)=(p->sum)/4;p->next=Null; r->n
8、ext=p; r=r->next;*count +;*void output(list *h) / 输出函数/*/if (h = NULL) printf(" 记录为空! ");/*/list *p;printf("学号t姓名t性别t语文成绩t数学成绩t英语成绩t计算 机成绩 t 平均分 t 总成绩 tn");p=h->next;while (p!=NULL)printf("%dnt%st%st%dt%dt%dt%dt%5.1ft%5.1fn",p->num,p->name,p->sex,p->ch
9、inese,p->math,p->english,p->computer,p->ave,p->sum); p=p->next;输出函数/ 总成绩排序void sortsum(list *head) / struct node temp;/ const int n=20;/ int i,j,k;/ printf(" 按照总成绩排序 :t"); / for(i=0;i<n;i+) / / k=i;/ for(j=i+1;j<n;j+)/ if(listj.sum<listk.sum)/ k=j;/temp=listk;lis
10、tk=listi;listi=temp;/output(p);/ int i=count, j, k;printf(" 按照总成绩排序 :n");if (count=0 | count=1)return;list *p, *temp;while(i > 0)p=head;for(j=0; j<i-1; j+)if(p->next->sum > p->next->next->sum) temp = p->next ; p->next = p->next->next; temp->next = p-&
11、gt;next->next; p->next->next = temp;p = p->next;i-;/* 利用了冒泡排序的方法把成绩排序:void sortnum(list *head)int i=count, j, k;printf(" 按照学号排序 :n");if (count=0 | count=1)return;list *p, *temp;while(i > 0)p=head;for(j=0; j<i-1; j+)if(p->next->num > p->next->next->num) t
12、emp = p->next ; p->next = p->next->next; temp->next = p->next->next; p->next->next = temp;p = p->next;i-;/*/*利用了冒泡排序的方法把学号排序:int sortnum(node *list) / 学号排序 struct node temp;const int n=20;int i,j,k;printf(" 按照总成绩排序 :t");for(i=0;i<n;i+)k=i;for(j=i+1;j<n;j
13、+)if(listj.num<listk.num)k=j; temp=listk; listk=listi; listi=temp;return 0;*/ void find (list *h) / 查找函数int k; / 要找的学生学号list *p;p=h->next;printf(" 请输入要查找的学生学号: n");scanf("%d",&k);while (p && p->num!=k)p=p->next;if(p)printf("学号t姓名t性别t语文成绩t数学成绩t英语成绩t 计算
14、机成绩 t 平均成绩 t 总成绩 n");printf("%dt%st%st%dt%dt%dt%d%5.1ft%5.1fn",p-> num,p->name,p->sex,p->chinese,p->math,p->english,p->com puter,p->ave,p->sum);elseprintf(" 目标没找到 n"); 利用遍历按要求查找相应的学生:list *del (list *h)/ 删除函数int k; / 要删除的学生学号list *p,*q;q=h;p=h->
15、next;printf(" 请输入待删除的学生学号: n"); scanf("%d",&k);while (p && p->num!=k)q=p; p=p->next;if(p)q->next=p->next;free(p);count -;elseprintf(" 没有此学生的记录,无法删除! n");return (h);list *insert(list *h) / 插入函数list *p,*q,*r,*head; head=h;r=h;p=h->next; / 下面构造一个
16、学生的信息 q=(list *)malloc(sizeof(list);printf(" 请输入待插入学生的学号: n"); scanf("%d",&q->num);printf(" 请输入待插入学生性别: n"); scanf("%s",&q->sex);printf(" 请输入待插入学生的姓名: n"); scanf("%s",&q->name);printf(" 请输入待插入的语文成绩: n"); scanf
17、("%d",&q->chinese);printf(" 请输入待插入的英语成绩: n"); scanf("%d",&q->english);printf(" 请输入待插入的数学成绩: n"); scanf("%d",&q->math);printf(" 请输入待插入的计算机成绩: n"); scanf("%d",&q->computer);(q->sum)=(q->chinese)+(q-
18、>computer)+(q->math)+(q->e nglish);(q->ave)=(q->sum)/4; q->next=Null; / 找到链表的结尾结点 count -;while(p!=Null)r=p; p=p->next; / 将新结点插入表尾 r->next=q; r=r->next;return (head);/ 主函数void main()list *p;/*/ p=(list *)malloc(sizeof(list); p->next=Null;/ 控制循环的标志/*/ int k;while (1)prin
19、tf(printf(|n");printf(printf(|n");printf(|n");printf(|n");printf(|n");printf(|n");printf(|n");printf(|n");printf(IIIIIIIIIIIIIIIIIIIIIIn");学生成绩管理系统n");1.5.登记成绩2.3.4.查询成绩插入成绩删除成绩按学号排序6. 按 总 成 绩 排 序7. 输出 所有学 生成绩8. 退 出 系 统|n");printf(" n"
20、);printf(" 请输入你的选择 n");scanf("%d",&k);switch(k)case 1:/ p=input();/*/input(p);/*/break;case 2:find(p);break;case 3:p=insert(p);break;case 4:p=del(p);break;case 5:sortnum(p);output(p);break;case 6:sortsum(p);output(p);break;case 7:output(p);break;case 8:exit(0); default:printf
21、(" 选择错误,重新开始 n"); 4 调试分析switch 这样使得 也方(1):调试过程中在选择功能也就是简易界面出遇到了问题后才去 case 的方法也决问题, 在设计函数时第一次只进行了成绩排序, 程序不够完整没有满足要求,之后加上了学号排序这样方便了查找, 便了阅读。(2) 本次试验还要求利用文件的方式进行操作,后经过百度才找到方法, 找到了文件操作。(3)题目中没有什么复杂的算法, 唯一一个就是利用了冒泡排序, 对学生 成绩和学生学号进行了排序,这次实验主要是通过各种小函数来进行,其 中遍历操作用的次数最多。(4)由于本课题中的许多知识点都没有学过都要靠自己到课外
22、的资料中 去查找。在用的时候难免出现这样那样的错误。如幵始设计出来的菜单不 是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。 一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么 用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。 有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺 利。回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程, 从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学 过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论 知识是远
23、远不够的,只有把所学的理论知识与实践相结合起来,从理论中 得出结论,提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难 免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之 处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构 体,通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程 设计结束了,我们通过这次实践学到了许多知识。学到了设计一个简单的 系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团 队合作的可贵编写程序是件细心活,稍不留
24、神就会出错,这就必须要求我们 对待事情要认真!在编写程序的过程中。错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等 等)层出不穷,这考验我们待事细心 ,耐心,能不能坚持到底,不能半途而 废。但我们总结出了一点点的经验如下:1、要对系统的功能和要求做出详细的分析,并合理分解任务。2、把分解出来的子任务,做给一个相对独立的模块。3、在设计一个模块之前,要简单构想一下总界面的显视情况。4、针对构想出来的界面进行程序的编写。5、测试结果:学牛.成绩管理系统L 登记成绩2査询成绩3.插入成绩上面是一个简易的界面有 8中功能:选则功能1,可以登录学生的成绩,可以输入多个人但是必须一个一
25、个输 入。2関妣懶戲鹼 籍疇 報靖 廿訓趟平贓绩m 12 mw boy 2111 1,3 5. D选择功能2可以查看学生的成绩前提是有1操作登录的出成绩才可以诸输入你的选择请输入待插入学生的学号: 22请输入待插入学生性别* boy请输入待插入学生的滩名znnn陆输入恃插入的语文成绩:1请输入待価入的死语成绩:1诸辆入待桶入的数学成绩:1请输入待插入的汁算机成茨1功能3插入一个学生的的成绩方式同1操作相同,注意相同的学号会直接覆盖诒输入你的选捋4请输入待删除的学卞学号:11没有此学隹的记城无肚删除!操作4删除学生的成绩这是会有两种情况(1):输入的学好号里存在学生,这是会直接删除该学生(2):
26、输入的学号不存在学生,这是会显示不存在该学生操作5按学号排序:利用排序函数中的冒泡排序进行排序将学生以学好的大小进行, 若只有一个学生则会直接输出。6. 按息删伸I输出軸学生股绩脚入髓腳6学号址名件別语艾曲绩数学成掠碇语0绩OUffiSt 半坷什庙成旅19uni x>1111 L 04.0操作6按成绩排序:利用排序函数中的冒泡排序进行排序将学生以成绩的大小进行, 若只有一个学生则会直接输出。戢入料聲轨溜胡戢鹅 孵鹅 郷鹅 廿韌爛平輔总熾12 i i 操作7输出所有的学生成绩学生成缢管理系统了排学 绩绩缢绩抑诙存统 囱戍臨威号成胁系 记询入除学总出出 登查播删按按输退 *” 1 2 3 4
27、 5 6 7 00PrDC&ss rtLimed 0 0x0) execullou time : 911. C35 s Press ativ key to continue.操作8退出講入吶進学号排序:英脚榭戯 彳1 111 11 1L01abov1 11 1L010这个是大于两个学生是按学号排序的结果i師人你的芯杆 6*: './ 'V 吉八: 学号蛇器htt«jkf 或城竝7应皿駆点燈:It即机成集111JII11 1LO4,Qaboy1I1I1.04.0判1 EX.mil EJtt同理输出总成绩的结果1,2. ftllUhEW3. 価人成诵4上盼応贡5.械学兮恂序0.議他脸獅*序7. 出用冇宁丫说轴8. 退岀當務诸瑚人化的迪採说埼人性左人U1诂軌M 'I 7'JiI诅轍入学业社君*1讷坏人谄工咸摘;坍输人眞1耐埔人数亍城備I1ifliilAil-W 軌出轴:L匮记盧據Q金桶人磺檢4.f 1眩应就5威叮': m:6.曲 a- i:urFia“、屮耒也诫勵人怖的世并7讣输人坐“找的TL烘如学勺 柱榔 件划谄丈直加3诉辅入侍撞入孚空的学悸A扎咛件帕Lft输入侍播入学上的姓划:1祈输A甘擂k的讲丈应閔和1诉输人特插入的牡诰吧轨:就辅入挣撞入的散学厲就F冷能人衍比人llhW总虽学卫门J|!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省沧州市2024-2025学年高三年级上册10月质量检测地理试题(解析版)
- 湖南省常德市澧县2023-2024学年七年级上学期期中数学试题(含答案)
- 河北省张家口市宣化区2024-2025学年七年级下学期7月期末考试英语试卷(含部分答案无音频)
- 2025版肾脏病学常见症状及护理措施
- 服务设计调研报告
- 数据处理的方法和工具
- 七大营养素之水
- 老年生理健康评估
- 建筑工程类员工培训课件
- 饮食健康宣教讲座大纲
- 期中真题百练通关(期中专项训练)(解析版)七年级数学上学期浙教版2024
- 《精细化工企业安全管理规范》检查表
- 甘肃省兰州市第八中学2024-2025学年七年级上学期期中考试英语试卷(无答案)
- 催收业务员知识培训内容课件
- 企业项目管理流程标准化操作手册
- 2025年秋统编版九年级上册道德与法治全册知识点复习提纲
- 2025交通运输部所属事业单位招聘(7人)备考考试试题及答案解析
- 建筑工地 各岗位安全应急处置卡
- 辅警思想政治课件模板
- 国家网络安全培训讲座课件
- 冬季交通行车安全培训课件
评论
0/150
提交评论