ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:515.60KB ,
资源ID:4869176      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4869176.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计学生成绩管理系统.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计学生成绩管理系统.docx

1、数据结构课程设计学生成绩管理系统课程设计报告课程设计题目: 1:学生成绩管理系统 2:joseph环 3:猴子选大王姓 名 洪军学 号 201420180706班 级 1421807指导教师 邹国华 2015年 12月 17日1:学生成绩管理系统1, 问题分析; 定义一个学生管理系统实现对学生基本数据的管理, 录入:输入每位学生的信息; 输出:输出每位学生的信息; 查询:可以按3学号和4姓名查询某个学生的信息; 修改:可以修改学生(按1学号修改,按2成绩修改)的信息; 插入:可以插入一个学生的信息; 删除:可以删除(按1学号删除,按2成绩删除)满足条件的学生信息; 排序:可以按学生的总成绩排序

2、。2 结构分析首先分析结果我采用的是单链表的存储结构通过此系统可以实现如下功能:定义一个学生类型student(学号,姓名,四门课程成绩),学生链表student,含有学生数组和学生数。3 实现流程分析 定义数据类型typedef struct student 初始化结构体并输入学生的数据inputstu(stu &s,int n) 重载运算符便于输入输出学生的成绩 输出函数输出全部学生的信息output(stu s) 查找学生 3按学号查找getstu1(stu s,char i) 4按姓名查找getstu2(stu s,char c) 插入学生insetstu(stu &s,int i,c

3、har nu,char na,char se,int sc) 1按学号删除学生deletestu1(stu &s),2按姓名删除学生deletestu2(stu &s) 1按学号修改学生的信息update1(stu &s) 2按姓名修改学生的信息update2(stu &s) 对总成绩排序sort(stu &s,struct shu shuzu) CPP文件实现所有功能 4 算法实现头文件status.htypedef int status;#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#d

4、efine N 10typedef struct student /学生结构体(链表) char num9; char name15; char sex2; int score4; student *next;student,*stu;struct shu /辅助结构体数组存储学生总成绩和学号便于排序 float allscore; char num9;shuzu10; ostream &operator(istream &is,stu &s); /运算符的重载void inputstu(stu &s,int n) /初始化并且输入函数 student *p,*r; int i; s=(stu

5、)malloc(sizeof(student); /申请头节点 r=s; for(i=0;ip; r-next=p; r=p; r-next=NULL; /最后节点指像空status output(stu s) /输出函数 student *r; r=s; r=r-next; while(r) /判断结点存在 coutnext; return 0;status getstu1(stu s,char i)/按学号查找 student *p=s; while(strcmp(p-num,i)!=0) /结点的名字相比较 p=p-next; if(p) /判断结点存在并且输出 coutnext; wh

6、ile(strcmp(p-name,c)!=0) p=p-next; if(p) /判断结点存在并且输出 coutp;return 0; else return ERROR;status insetstu(stu &s,int i,char nu,char na,char se,int sc) /插入学生 student *p=s,*q; int j=0,m; while(jnext) /找到学生的位置 p=p-next; j+; if(j=i-1) q=(student*)malloc(sizeof(student); /申请新结点 if(!q)return OVERFLOW; /申请失败返

7、回错误 strcpy(q-name,na); /赋值 strcpy(q-num,nu); for(m=0;mscorem=scm; strcpy(q-sex,se); q-next=p-next; p-next=q; return OK; else return ERROR;status deletestu1(stu &s) /按学号删除学生 char i10; cout请输入你要删除学生的学号i; student *p=s,*r; while(strcmp(p-next-num,i)!=0) /找到修改学生 p=p-next; if(p) /存在就删除不存在就返回错误 r=p-next; p

8、-next=r-next; free(r); return 0; else return ERROR;status deletestu2(stu &s) /按姓名删除学生 char i10; cout请输入你要删除学生的姓名i; student *p=s,*r; while(strcmp(p-next-name,i)!=0) /找到修改学生 p=p-next; if(p) r=p-next; p-next=r-next; free(r); return 0; else return ERROR;status update1(stu &s) /按学号修改学生的信息 char i10; cout请

9、输入你要修改学生的学号i; student *p=s; while(strcmp(p-num,i)!=0) /找到修改学生 p=p-next; if(p) cinp; return 0; else return ERROR;status update2(stu &s) /按姓名修改学生的信息 char i10; cout请输入你要修改学生的姓名i; student *p=s; while(strcmp(p-name,i)!=0) /找到修改学生 p=p-next; if(p) cinp; return 0; else return ERROR;void sort(stu &s,struct s

10、hu shuzu) /对总成绩排序 int n=0,i,j,k; student *p=s-next; while(p) /获取多少个人数 n+; p=p-next; ; p=s-next; for(i=1;i=n;i+) /对结构体进行赋值 shuzui.allscore=0; for(j=0;jscorej; strcpy(shuzui.num,p-num); p=p-next; for(i=1;in;i+) /对结构体进行排序 k=i; for(j=i+1;jshuzuk.allscore) k=j; if(k!=j) shuzu0.allscore=shuzui.allscore; s

11、trcpy(shuzu0.num,shuzui.num); shuzui.allscore=shuzuk.allscore; strcpy(shuzui.num,shuzuk.num); shuzuk.allscore=shuzu0.allscore; strcpy(shuzuk.num,shuzu0.num); for(i=1;inext; while(strcmp(p-num,shuzui.num)!=0) /按学号查找相对应的学生信息 p=p-next; coutp 总成绩为 :shuzui.allscoreendl; ostream &operator(ostream &os,stu

12、&s) /输出函数的重载 os学号:num 姓名:name 性别:sex科目1 score0科目2 score1科目3 score2科目4 score3(istream &is,stu &s) /输入函数的重载 cout学号 姓名 性别 科目1 科目2 科目3 科目4 s-nums-names-sexs-score0s-score1s-score2s-score3; return is;CPP文件#include#include#include#include#includeStatus.hvoid menu() cout* * * * * * * *学生管理系统* * * * * * *en

13、dl; cout* * * 1:添加学生 * * *endl; cout* * * 2:显示信息 * * *endl; cout* * * 3:按学号查找 * * *endl; cout* * * 4:按姓名查找 * * *endl; cout* * * 5: 插入学生 * * *endl; cout* * * 6: 删除学生 * * *endl; cout* * * 7: 修改学生 * * *endl; cout* * * 8: 学生总成绩排序 * * *endl; cout* 其他:返回主菜单endl; cout请选择;int main() stu s; struct shu shuzu1

14、0; int i,k4,j; char c9,p9; char x20,o20; char l3; menu(); while(1) static int n; scanf(%d,&n); switch(n) case 1:cout输入多少个学生n;inputstu(s,n);break; case 2:output(s);break; case 3:coutc;getstu1(s,c);break; case 4:coutx;getstu2(s,x);break; case 5:cout需要插入位置,学号,姓名,性别,科目,科目,科目,科目ipol;for(j=0;jkj; insetstu

15、(s,i,p,o,l,k);break; case 6:cout1:按学号删除学生的信息;2:按姓名删除学生的信息j; switch(j) case 1:deletestu1(s);break; case 2:deletestu2(s);break; ;break; case 7:cout1:按学号修改学生的信息;2:按姓名修改学生的信息j; switch(j) case 1:update1(s);break; case 2:update2(s);break; ;break; case 8:sort(s,shuzu);break; default:return 0; 调试结果5 课程小结 我采

16、用的是链表来存储学生的信息,最大的难点就是总成绩的排序,其他的功能实现还是比较简单,总成绩排序我用啦一个辅助结构体 struct shu 来存储每个学生的学号char num来记录学生以及便于排序的时候查找,还有总成绩float allscore,且用结构体数组来存储首先对每个学生的学号及总成绩赋值给结构体数组shuzu,然后对结构体数组进行从大到小排序(选择排序)然后对结构体一一查找相应的信息。假如用顺序表来存储可以避免这方面的麻烦。最后对一个管理系统具有较好的结构,即对链表的一系列的操作熟悉及运用同时也对数据结构这方面的认识深刻,数据存储的重要性。数据结构在程序设计的重要性。 2:jose

17、ph环1 任务分析编号是1,2,,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?要求:输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密

18、码,建立单循环链表。输出形式:建立一个输出函数,将正确的输出序列2结构分析采用链表来存储每个人的密码每一次出列将密码为下一次报道的M。并输出这个人。直到所有人输出3算法实现头文件status.htypedef int status;#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2typedef struct node /结构体存储密码 int mima; struct node *next;nodelist,*nodeli;void creatlist(nodeli &s,int n) /创建

19、循环链表 nodelist *p,*r,*q; int i; s=(nodeli)malloc(sizeof(nodelist); /申请空间 r=s; cout输入他们的密码:endl; /输入他们的密码 for(i=0;ip-mima; /输入密码 r-next=p; r=p; else cinp-mima; /输入密码 r-next=p; /开始下一个 r=p; r-next=q;void joseph(nodeli &s,int m,int n) /joseph函数 nodelist *p=s,*q; int i; while(n!=0) i=1; while(inext; if(i=

20、m) / 找到目标 q=p-next; p-next=q-next; coutmimamima; /把密码在复制给M找下一个 p=p-next; free(q); n-; coutn;Cpp文件#include#include#include#includestatus.hvoid main() nodeli s; /定义个链表 int n,m=20,l; cout输入人的个数n; /输入人的个数 creatlist(s,n); /创建链表 cout输入初始的M l; m=l; joseph(s,m,n); /JOSEPH函数调用调试结果4课程小结这是一个典型的约瑟夫环差不多的问题只要熟练链表

21、的操作就可以比较容易实现。关键在于每一个的输出。找下一个以上一次输出链表的密码来实现的。关键对数据结构分析的重要。链表的运用熟练3:猴子选大王 1 任务分析7、 猴子选大王一堆猴子都有编号,编号是1,2,3 .m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。要求:输入数据:输入m,n m,n 为整数,nm输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能 2结构分析采用链表来存储每个猴子的序号每一次出列将序号为下一次报道的M。并输出这个猴子

22、。直到所有人输出最后的猴子为大王下次3算法实现Cpp文件#include#includetypedef struct houzinode int num; /猴子编号 struct houzinode *next;houzinode,*houzilist; /猴子类型void houzidawan(houzilist &s,int n,int m) /求解猴子选大王问题最后输出的为大王 int i,j; houzinode *r,*p,*q; s=(houzilist)malloc(sizeof(houzinode); /头结点 r=q=s; /r p 指向头结点 q=r; for(i=1;i

23、num=i; /给猴子赋值 r-next=p;r=p; r-next=q-next;/指向第一个猴子 p=q-next; for(i=1;in;i+) for(j=1;jnext; printf(%d ,p-num); /输出即将淘汰的猴子 r-next=p-next; free(p); /淘汰去 p=r-next; printf(大王为%dn,r-num);/最后一个猴子 free(r);int main() int n,m; houzilist s; printf(* * * * * *猴子选大王* * * * * *n); printf(输入N,M:); scanf(%d %d,&n,&m); printf(出列人员的顺序为:n); houzidawan(s,n,m);/调用函数 return 0;调试结果4课程小结这是一个典型的约瑟夫环的问题应用到生活中与上一个的题目一样只要熟练链表的操作就可以比较容易实现。关键在于每一个猴子的输出。找下一个以上一次输出链表的序号来实现的。最后输出的猴子就是大王东华理工大学课程设计评分表学生姓名: 洪军 班级:1421807 学号:201420180706课程设计题目:学生成绩管理系统项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1