ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:210.58KB ,
资源ID:2828069      下载积分:9 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(数据结构基础学生成绩综合管理系统c语言.docx)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据结构基础学生成绩综合管理系统c语言.docx

1、学 号: Xxxxx数据结构基础课程汇报题 目学生成绩管理系统学 院XXX专 业XXX 班 级XXX姓 名XXX指导老师XXX年11月27日目 录目 录21.任务和目标32.题目描述33.设计目标34.需求分析35.问题分析及算法设计45.1问题分析45.2算法设计46.系统设计方案46.1 系统功效46.2程序设计及运行结果5(1)主函数模块设计5(2)“屏幕”显示函数模块设计6(3) 结构体定义6(5)信息输入模块7(6)显示模块及结果8(7)查找模块及结果9(8)删除模块11(9)插入函数模块11(10)排序函数模块13(11)修改模块147 总结158 参考文件169附录16代码16数

2、据结构基础课程汇报成绩评定表291. 任务和目标数据结构基础大作业要求学生对所选题目进行问题分析、数据结构比较选择、数据结构存放方法和算法分析和编程实现。本课程关键目标是强化和巩固常见数据结构使用方法,培养综合利用所学知识,分析和处理实际问题能力。经过大作业完成,促进学生将数据结构理论方法和实际应用相结合,让学生能比较全方面而辩证地分析和处理问题,逐步树立正确算法设计思想,熟练掌握常见数据结构具体实现方法和分析方法,和软件开发基础技术和工作过程,培养严谨认真科学态度和务实工作作风。2. 题目描述学生成绩管理:实现功效:输入、输出、插入、删除、查找、显示、保留、排序、修改、退出等。用户使用该系统

3、关键在于实现对学生信息编写、修改、保留等操作。3. 设计目标 (1) 基础掌握程序设计基础思绪、方法和技能;(2) 达成能掌握数据结构基础知识并加以应用;(3) 能够利用所学基础知识和技能,处理简单程序设计问(4) 强化和巩固常见数据结构使用方法,培养综合利用所学知识,分析和处理实际问题能力4. 需求分析 作为基础程序设计,显示界面要含有美观性,所以在程序设计时要考虑程序输出时格式,所以我在编写程序时,从显示界面到各个部分全部经过了具体计划和编排,比如在下一个程序功效实施时,对前面显示东西用system(Cls)进行清除操作,这么操作以后在屏幕上显示就不会杂乱了。要设计学生信息管理系统要完成学

4、生信息建立、显示、查找、插入、删除、保留、排序、修改、退出等基础功效,程序设计基础建立在已学过数据结构、C语言等知识层面上,可自己增加程序难度。我要设计程序关键应用到C编程方法学1和数据结构2关键知识。基础要求需实现程序编译、链接、调试、运行。关键处理问题是程序编写,操作平台为VC+6.05. 问题分析及算法设计5.1问题分析这个程序要设计整体思想就是模块化编程,因为程序集多个功效于一体,然后依据用户输入要求实施对应子模块,以此达成功效实现。所以主函数就能够用switch结构实现,然后分别按功效编写模块函数了。5.2算法设计经过问题分析,程序大致结构已经确定,然后就要考虑该使用那些算法了。因为

5、程序要存放一连串学生信息,且包含多个数据项,所以能够用数组、结构体、次序表、单链表等实现,但要实现查找、排序、删除等多种功效,单链表就显得更适宜些,同时也能锻炼我们对链表使用技巧,所以经过思量,决定用单链表来实现编程。6. 系统设计方案6.1 系统功效首先要确定学生信息应包含:学号,姓名,科目,成绩业等。其次,学生信息管理系统应提供功效包含:(1) 系统以菜单方法显示(2) 要有学生信息录入功效(3) 学生信息浏览功效(4) 学生信息用文件保留(5) 按学号查询、按姓名查询(6) 能够按学号、科目成绩等排序(7) 学生信息删除修改(8) 学生信息修改(9) 退出结合实际情况及本身能力,确定了以

6、上要编写并实现功效。6.2程序设计及运行结果(1)主函数模块设计之前已确定主函数能够用switch结构实现,只要将系统功效经分析排版后写入主函数中每个case即可,所以主函数能够下编写3/主函数int main(void) menu(); /调用显示函数while(1) printf(tt请选择对应功效:);scanf(%d,&a);switch(a)case 0: /退出系统case 1: /学生信息输入case 2: /信息显示case 3: /查找信息case 4: /删除学生信息case 5 : /插入学生信息(尾插法)case 6: /学生信息排序case 7 : /修改信息case

7、 8 : /保留成绩至文件default: /输入其它情况,循环重新输入break;system(pause);return 0;如此编写,能够使主函数既简单易懂,又不杂乱,能让读者一目了然,有了主函数,以后就能够往主函数中加子模块了。(2)“屏幕”显示函数模块设计显示器幕,也就是要给用户提供功效选择主界面,需明了,整齐,要达成用户感觉到系统操作很其实简单效果,所以编译排版以后界面效果见下图能够从上图看出,只要用户按自己需求进行操作,就能够实现对应功效了。程序设计该函数为void menu()。(3) 结构体定义“结构体名”用作结构体类型标志,它又称“结构体标识”。申明一个结构体类型通常形式为

8、:Struct 结构体名组员表列;大括弧内是该结构体中各个组员,由它们组成一个结构体。对各组员全部应进行类型申明,即类型名 组员名我在结构体中定义了两个字符数组及三个整形变量,用于存放学号、姓名、三个科目标成绩,并在结构体中定义了一个指针,为单链表所需,用于指向下一结点。typedef struct student /建立学生类char num20; /学号char name20; /姓名int math; /数分int English; /英语int Data; /数据结构struct student *next; /指针student;student *head=NULL; /头指针(5)

9、 信息输入模块对应函数为void create(),可用链表建立学生信息,所以先要建立一个头结点p1=(student *)malloc(sizeof(student);/建立头结点然后让指针指向下一个结点,依次依据用户输入学生个数循环建立链表(学生信息)所以关键循环为whilewhile(numbernum,p2-name,&p2-math,&p2-English,&p2-Data); /输入学生信息if(p2-num=0)printf(信息输入成功!n);break;length+; /链表长度p1-next=p2;p2-next=NULL; /结点相继后移p1=p1-next;numbe

10、r+; /统计已输入学生个数printf(信息输入成功!n); /返回成功功效选择是用户依据选择模块屏幕上提醒做出操作,能够看到,在进行下一操作之前,系统会进行清屏,然后显示此次操作结果。(6) 显示模块及结果void display(),这个模块并不是每个操作结果输出函数,它会输出最终结果,在进行了输入学生信息操作后,进行这个功效,系统就会输出全部结果,见下图。能够看出,系统已把上次操作清屏,然后依据输入2 功效进行了显示操作。输出是按循环输出,用指针指向链表各项数据,依次输出。关键代码为while(p!=NULL) printf(tt%-13s%-11s%-9d%-9d%dn,p-num,

11、p-name,p-math,p-English,p-Data); p=p-next;(7) 查找模块及结果在程序设计时,并没有采取单一按学号或按姓名查找方法,而是既能够按学号查找,亦可按姓名查找,所以编写了void search1()和void search2()这两个查找函数,当输入学号或姓名不在统计时,系统会显示“查无此人”,关键代码以下,链表不空时循环查找,然后用字符串比较函数4判定查找是否成功。while(p!=NULL)if(strcmp(p-num,xh)=0) /查找成功,显示查找信息./显示查找到信息if(p=NULL) /链表遍历完成,返回查找信息printf(查无此人n);

12、(8) 删除模块void Delete() 为删除模块函数,按输入学号删除信息,首先会依据用户输入学号查找该学号对应信息,假如统计中没有,则系统返回查无此人,假如查找成功,则会删除该学生全部信息,代码同查找一样,在while循环中用了字符串比较函数,若查找成功,则删除,不然返回查无此人。(9) 插入函数模块void insert() 为插入函数,关键用了尾插法插入学生信息,关键代码以下void insert()q=(student *)malloc(sizeof(student); /建立新结点. /输入学生信息while(p!=NULL) /循环if(strcmp(p-num,q-num)=

13、0) /判定链表中是否已经有该学号printf(该学号已经存在,无法插入!n);return; /若链表中已经有该学号,则返回p=p-next;p=head;for(i=0;inext;q-next=p-next;p-next=q;length+; /插入后链表长度增加printf(插入成功!n); /返回成功插入函数难点在于新结点建立、信息输入、将信息插入链表等步骤链接,还有结点移动等关键算法。(10) 排序函数模块排序模块是我碰到最大难题,难在不仅要对整形数比大小,还要对学号这个字符串比大小,在编译时,老是犯错,也想了好些天,但在同学及老师帮助下还是把问题处理了,而关键在于对字符串比较函数

14、应用 if(strcmp(p-num,p-next-num)0) ,这么编写问题就迎刃而解了。排序模块关键有按学号排序、按各科目成绩排序。按学号排序时,用排序方法为结点交换排序方法,关键代码为while( head-next != tail ) /头指针不等于尾指针时prep = head;p = head-next;while( p-next != tail )if(strcmp(p-num,p-next-num)0) /利用字符串比较函数对学号比较大小temp = p-next; /临时保留p后继结点值prep-next = p-next; p-next = p-next-next; pr

15、ep-next-next = p; p = temp; /完成交换 p = p-next; / 节点后移 prep = prep-next; tail = p; /完成排序而按科目成绩排序时,采取全部是插入法排序,按成绩递减序列排序,关键算法以下void paixusf(student *&L)/将学生单链表按数分成绩递减排序student *p,*pre,*q;p=L-next-next;/p指向L第2个数据结点L-next-next=NULL;/结构只含一个数据结点有序表while (p!=NULL)q=p-next;/q保留*p结点后继结点指针pre=L;/从有序表开头进行比较,pre指

16、向插入*p前驱结点while (pre-next!=NULL & pre-next-mathp-math)pre=pre-next;/在有序表中找插入*p前驱结点*prep-next=pre-next;/将*pre以后插入*ppre-next=p;p=q;/扫描原单链表余下结点运行结果为(11) 修改模块修改时候,首先是依据用户输入学号查找该学生,若查找成功,则将用户输入信息临时保留,然后替换原先信息5while(p!=NULL) if(strcmp(p-num,xg)=0) /查找成功,并显示被修改者信息 . /显示要被修给学生信息printf(请输入你要修改学生学号、姓名、数分、英语、数据

17、结构:n);scanf(%s %s %d %d %d,num1,name1,&math1,&English1,&Data1);strcpy(p-num,num1); /字符串复制函数修改学号,名字strcpy(p-name,name1);p-math=math1;p-English=English1;p-Data=Data1;/修改成绩printf(修改成功n);t=0; /修改成功,赋值为0p=p-next; /指针移动if(t=1) /查找失败,无修改者信息printf(找不到要修改学号!n);运行结果比较 修改前 修改后7 总结在此次课程设计期间,我碰到了部分难点,开始时候,代码中有很多

18、错误,尤其是有部分调试方面错误让我束手无策,随即编程中又碰到了部分未知错误,只能一句一句去编译调试,碰到部分算法上难题,就得去翻阅其它资料,书本看了一遍又一遍,算法推演了一遍又一遍,但付出总有收获,经过几天坚持不懈,程序编写成功,然后经过不停地优化排版,最终程序完美出炉,也达成了我心目中目标。经过这段时间课程设计,不仅使我对线性表链式储存有了更深认识和了解,也使我愈加明白线性表链式储存在信息技术中关键性和地位。很多错误让我明白了一个道理-毅力和信心对成功是很关键。同时,对于编程者而言,思绪清楚是相当关键。在合适时候和同学一起交流探讨是一个十分好学习机会。请教老师也很关键,因为毕竟我们是新手,对

19、于一些问题极难搞清楚。而且,一些错误对于我们来说有时候想半天全部弄不来,但老师几下下就搞好了,这么就愈加有效地节省了时间。同时,这次课程设计还让我学会了怎样系统、正规做一份课程设计汇报,明白了做事情只有认真,才能真正做得愈加好!8 参考文件1 王舜燕/李民主编. C编程方法学.武汉:武汉理工大学出版社,.9.2 严蔚敏/吴伟民. 数据结构.北京:清华大学出版社,.3 (美)Dawn Griffiths 著/程亦超 译. 嗨翻C语言.北京:人民邮电出版社,.94 5 赵端阳/左伍衡编著. 算法分析和设计.北京:清华大学出版社,.39附录代码#include#include#include#inc

20、lude#include#define STUDENT 2typedef struct student /建立学生类char num20; /学号char name20; /姓名int math; /数分int English; /英语int Data; /数据结构struct student *next; /指针student;student *head=NULL; /头指针int length; /链表长度void create() /建立链表,学生信息建立函数 student *p1,*p2; length=0; int numb; /存放用户输入学生个数 int number=0; /

21、存放已输入学生个数 p1=(student *)malloc(sizeof(student);/建立头结点 p1-num;if(head=NULL)head=p1; /头结点地址赋于头指针printf(tt请先输入学生个数:);/保留要输入学生个数,用于后面循环输入信息 scanf(%d,&numb); Sleep(666); system(Cls); /清屏printf(输入学号、姓名、数分、英语、数据结构:n);while(numbernum,p2-name,&p2-math,&p2-English,&p2-Data); /输入学生信息if(p2-num=0)printf(信息输入成功!n

22、);break;length+; /链表长度p1-next=p2;p2-next=NULL; /结点相继后移p1=p1-next;number+; /统计已输入学生个数printf(信息输入成功!n); /返回成功system(pause);system(Cls);return; void display() /显示函数,显示用户输入学生信息 student *p=head-next;printf(全部学生信息以下:n); printf(tt_n);printf(tt 学号 姓名 数分 英语 数据结构 n);while(p!=NULL)printf(tt%-13s%-11s%-9d%-9d%d

23、n,p-num,p-name,p-math,p-English,p-Data); p=p-next; printf(tt_n);system(pause);system(Cls);return; void search1() /按学号查找 char xh20; /保留用户输入学号,用于后续比较查找 student *p=head-next; printf(请输入学号); scanf(%s,xh); while(p!=NULL) if(strcmp(p-num,xh)=0) /查找成功,显示查找信息printf(tt_n);printf(tt 学号 姓名 数分 英语 数据结构 n);printf

24、(tt%-13s%-11s%-9d%-9d%dn,p-num,p-name,p-math,p-English,p-Data);printf(tt_n);return;p=p-next; if(p=NULL) /链表遍历完成,返回查找信息 printf(查无此人n);system(pause);system(Cls);void search2() /按学号查找 char mz20; /保留用户输入名字,用于后续比较查找 student *p=head-next; printf(请输入名字); scanf(%s,mz); while(p!=NULL) if(strcmp(p-name,mz)=0)

25、 /查找成功,显示查找信息printf(tt_n);printf(tt 学号 姓名 数分 英语 数据结构 n);printf(tt%-13s%-11s%-9d%-9d%dn,p-num,p-name,p-math,p-English,p-Data);printf(tt_n);return;p=p-next; if(p=NULL) /链表遍历完成,返回查找信息 printf(查无此人n);system(pause);system(Cls);void insert() /尾插法插入学生信息 int i; student *p,*q; p=head;printf(请输入你要插入学生学号、姓名、数分、

26、英语、数据结构:n);q=(student *)malloc(sizeof(student); /建立新结点scanf(%s %s %d %d %d,q-num,q-name,&q-math,&q-English,&q-Data);while(p!=NULL)if(strcmp(p-num,q-num)=0) /判定链表中是否已经有该学号printf(该学号已经存在,无法插入!n);system(pause);system(Cls);return; /若链表中已经有该学号,则返回p=p-next;p=head;for(i=0;inext;q-next=p-next;p-next=q;lengt

27、h+; /插入后链表长度增加printf(插入成功!n); /返回成功system(pause);system(Cls);return;void Delete() /按输入学号删除信息char b20; /用于保留用户输入要删除学生学号,用于比较student *p,*q; q=head,p=head-next;printf(请输入要删除学生学号:n); scanf(%s,b);while(p!=NULL)if(strcmp(p-num,b)=0) /判定相同则删除q-next=p-next; /删除指定结点free(p); /结点释放length-;printf(删除成功!n);return

28、; /删除成功后返回p=p-next; /指针后移q=q-next;if(p=NULL) /遍历完成,未找到信息printf(找不到要删除学号!n);/return;system(pause);system(Cls);void menu() /显示函数-屏幕printf(tt_n);printf(tt| 学生信息管理系统 |n);printf(tt| 1、 信息输入 |n);printf(tt| 2、 显示信息 |n);printf(tt| 3、 查找学生信息 |n);printf(tt| 4、 删除指定学生信息 |n);printf(tt| 5、 插入学生信息 |n);printf(tt|

29、6、 排序 |n);printf(tt| 7、 修改 |n);printf(tt| 8、 保留 |n);printf(tt| 0、 退出系统 |n);printf(tt|_|n);return; void paixuxh(student *head) /利用结点交换方法对学号进行排序 student *p,*prep,*temp,*tail; /定义所需结点tail=NULL;while( head-next != tail )prep = head;p = head-next;while( p-next != tail )if(strcmp(p-num,p-next-num)0) /利用字符

30、串比较函数对学号比较大小temp = p-next; /临时保留p后继结点值prep-next = p-next; p-next = p-next-next; prep-next-next = p; p = temp; /完成交换 / 节点后移 p = p-next; prep = prep-next; tail = p; / 第一个whileprintf(tt排序成功n);void paixusf(student *&L)/将学生单链表按数分成绩递减排序strcmp(student *p,*pre,*q;p=L-next-next;/p指向L第2个数据结点L-next-next=NULL;/

31、结构只含一个数据结点有序表while (p!=NULL)q=p-next;/q保留*p结点后继结点指针pre=L;/从有序表开头进行比较,pre指向插入*p前驱结点while (pre-next!=NULL & pre-next-mathp-math)pre=pre-next;/在有序表中找插入*p前驱结点*prep-next=pre-next;/将*pre以后插入*ppre-next=p;p=q;/扫描原单链表余下结点void paixuyy(student *&L)/将学生单链表按英语成绩递减排序student *p,*pre,*q;p=L-next-next;L-next-next=NU

32、LL;while (p!=NULL)q=p-next;pre=L;while (pre-next!=NULL & pre-next-Englishp-English)pre=pre-next;p-next=pre-next;pre-next=p;p=q;void paixusj(student *&L)/将学生单链表按数据结组成绩递减排序student *p,*pre,*q;p=L-next-next;L-next-next=NULL;while (p!=NULL)q=p-next;pre=L;while (pre-next!=NULL & pre-next-Datap-Data)pre=pre-next;p-next=pre-next;pre-next=

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服