数据结构学籍管理系统

上传人:优*** 文档编号:50836239 上传时间:2022-01-22 格式:DOC 页数:18 大小:148KB
收藏 版权申诉 举报 下载
数据结构学籍管理系统_第1页
第1页 / 共18页
数据结构学籍管理系统_第2页
第2页 / 共18页
数据结构学籍管理系统_第3页
第3页 / 共18页
资源描述:

《数据结构学籍管理系统》由会员分享,可在线阅读,更多相关《数据结构学籍管理系统(18页珍藏版)》请在装配图网上搜索。

1、真诚为您提供优质参考资料,若有不当之处,请指正。目 录一、设计目的2二、设计内容3三、设计要求4四、设计过程41算法思想分析42算法描述与实现53系统测试7五、设计总结11参考文献12附录131 设计目的1 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。2 设计内容2.1开发环境操作系统: Windows 7开发工具:Microsof

2、t Visual C+ 6.0开发语言:C+2.2功能简介:本程序采用C+编写,用于管理学生信息,基本功能有 批量添加学生信息,单个添加学生信息,按学号查找学生,按姓名查找学生,按学号删除学生信息,排序输出全部学生信息以及退出功能。程序流程:开始选择功能按姓名查找按学号查找批量添加排序输出按学号删除添加信息结束3 设计要求1) 程序设计要求:采用交互工作方式,设计功能菜单;建立数据文件,数据包含学生的自然信息和成绩信息(设计几门课以及总成绩);对如下关键字:姓名、学号、各科成绩进行排序(冒泡、选择、插入排序等任选一种)。2) 用二分查找实现如下查询:按姓名查询 按学号查询 3) 用堆排序找出总

3、成绩排名的前5名学生4) 输出任一查询结果(可以连续操作)4 设计过程1. 算法思想分析根据设计要求,首先定义三个数组,分别存放学号、姓名、成绩.typedef struct stud /学生信息结构 long num; char name20; float score; Stud; 然后编写函数,实现添加、查找、删除、排序、退出功能,对数组元素进行操作。2. 算法描述与实现添加信息:定义添加信息函数,将输入的信息添加到数组中:void inser(long b) Node *last,*current,*p; current=head; while(current!=NULL&bcurren

4、t-student.num) last=current; current=current-next; 查找学生:void searchname(char *s) /按姓名查找 Node *p=head; int flag=0; printf(n学号 姓名 成绩:n); while(p!=NULL) if(strcmp(p-student.name,s)=0) printf(%ld %s %fn,p-student.num,p-student.name,p-student.score); flag=1; p=p-next; continue; else p=p-next; if(!flag) p

5、rintf(没有找到相关信息); void find(long b) /按姓名查找 Node *p=head; while(p!=NULL&b!=p-student.num) p=p-next; if(!p) printf(No foundn); else printf(n学号 姓名 成绩n); printf(%ld %s %fn,p-student.num,p-student.name,p-student.score); 输出信息:void print() Node *p=head; printf(n学号 姓名 成绩:n); while(p!=NULL) printf(%ld %s %fn,

6、p-student.num,p-student.name,p-student.score); p=p-next; printf(n); 3.系统测试1. 菜单 用户运行程序后,显示如下所示菜单,用户根据菜单提示进行操作(如图2.1)。图2.1 2.批量添加用户选择批量添加学生信息功能进行批量添加,可连续添加,按 0 结束添加操作(如图 2.2)。图2.23.按学号查找学生 将学生信息录入之后,若想查找某个学生,用户可选择按学号查找学生信息(图2.3)。图2.34. 按姓名查找学生将学生信息录入之后,若想查找某个学生,用户可选择按姓名查找学生信息(图2.4)。图2.45. 添加信息用户可以在批量

7、添加后在单个添加学生信息(图2.5)。图2.56. 按学号删除学生信息用户可根据情况对已添加的学生信息进行删除,通过学号删除(图2.6)。图2.67. 排序输出程序可以将已添加的学生按照成绩的降序排列输出(图2.7).图2.78. 退出 操作结束后按 0 退出程序(图2.8)。图2.85 设计总结通过一周的课程设计,我从中受益匪浅,使得我对数据结构这门课有了更深一步的认识。在设计过程中,我们发现问题,解决问题,一同探讨问题,在老师的帮助下把问题一一解决。在解决问题的过程中得到了成长,在与同学的合作过程中,我获益良多,提高了自己的团队合作能力和实际动手能力,在亲自动手的同时提升自己,锻炼自己。通

8、过这次设计,我深深的感受到了做系统是一件十分复杂周密的事情,不能有半点的疏忽,需要一个人有周密的思考能力,分析问题、处理问题的能力,还要有足够的耐心。参考文献数据结构程序设计题典 李春葆等编 清华大学出版社数据结构(C语言版) 黄国瑜 叶乃菁编 清华大学出版社数据结构课程设计 苏仕华 等编 机械工业出版社附录:源代码#include #include #include typedef struct stud /学生信息结构 long num; char name20; float score; Stud; typedef struct node Stud student; struct nod

9、e *next; Node; Node *head=NULL; void read(void); void inser(long b); void print(); void find(long b); void searchname(char *s); Node * del(long n); void sort(int flag); void menu(); void main() char choose; int flag=1; while (flag) menu(); /调用功能菜单函数,显示菜单项。 printf( 请选择功能:); choose=getchar(); switch(c

10、hoose) case 1: read(); /调用建立链表的函数;输出链表信息; print(); printf(nPress any key Continue ); getchar(); break; case 2: /调用按学号查找学生信息的函数;并输出查找结果信息; long c; printf(输入要查找的学号:); scanf(%ld,&c); find(c); printf(nPress any key Continue.); getchar(); break; case 3: /调用按姓名查找学生信息的函数;并输出查找结果信息; char s20; printf(输入要查找的姓

11、名:); scanf(%s,s); searchname(s); printf(n Press any key Continue.); getchar(); getchar(); break; case 4: /调用根据学号删除某个学生信息的函数;并输出删除后的链表信息; Node *h; long n; printf(输入要删除的学生学号:); scanf(%ld,&n); h=del(n); if(h=NULL) printf(No find the student n); else print(); printf(n Press any key Continue.); getchar()

12、; getchar(); break; case 5: /调用插入新的学生信息的函数;并输出插入后的链表信息; long a; printf(输入新学号:n); scanf(%ld,&a); inser(a); print(); printf(n Press any key Continue.); getchar(); getchar(); break; case 6: /调用按分数降序排序输出的函数;并输出排序后的链表信息; sort(1); print(); sort(0); printf(nPress any key Continue.); getchar(); getchar(); b

13、reak; case 0: /结束程序运行flag=0; printf(n * The End! *n); break; default: printf(n Wrong Selection !(选择错误,重选)n); getchar(); void menu() /综合作业功能菜单 printf( n 学 生 信 息 管 理 系 统n); printf( n *菜 单*nn); printf( * nn);printf(* 1. 批 量 添 加 学 生 信 息 ); printf( 2. 按 学 号 查 找 学 生 信 息 *n); printf(* 3. 按 姓 名 查 学 生 信 息 );

14、 printf( 4. 按 学 号 删 除 学 生 信 息 *n); printf(* 5. 录 入 新 的 学 生 信 息 ); printf( 6. 按 分 数 降 序 排 序 输 出 *n); printf( -0. 返 回-n); printf( * n); void read(void) long a; printf(请输入学号:); scanf(%ld,&a); while(a0) inser(a); printf(请输入学号:); scanf(%ld,&a); void inser(long b) Node *last,*current,*p; current=head; whi

15、le(current!=NULL&bcurrent-student.num) last=current; current=current-next; if(current=NULL|bstudent.num) printf(请输入姓名、分数:); p=(Node *)malloc(sizeof(Node); p-student.num=b; scanf(%s%f,p-student.name,&p-student.score); p-next=NULL; if(current=head) p-next=head; head=p; else p-next=current; last-next=p

16、; else if(b=current-student.num) printf(error input a different number:); void print() Node *p=head; printf(n学号 姓名 成绩:n); while(p!=NULL) printf(%ld %s %fn,p-student.num,p-student.name,p-student.score); p=p-next; printf(n); void find(long b) Node *p=head; while(p!=NULL&b!=p-student.num) p=p-next; if(

17、!p) printf(No foundn); else printf(n学号 姓名 成绩n); printf(%ld %s %fn,p-student.num,p-student.name,p-student.score); void searchname(char *s) Node *p=head; int flag=0; printf(n学号 姓名 成绩:n); while(p!=NULL) if(strcmp(p-student.name,s)=0) printf(%ld %s %fn,p-student.num,p-student.name,p-student.score); flag

18、=1; p=p-next; continue; else p=p-next; if(!flag) printf(没有找到相关信息); Node * del(long n) Node *p=head,*last; while(p-student.num!=n) last=p; p=p-next; if(p=NULL) return p; else if(p=head) head=p-next; else last-next=p-next; return head; void sort(int flag) Node *p1,*p2,*k; float t1; long t2; char s20;

19、for(p1=head;p1-next;p1=p1-next) k=p1; for(p2=p1-next;p2;p2=p2-next) if(flag=1&k-student.scorestudent.score|!flag&k-student.nump2-student.num) k=p2; if(k!=p1) t1=p1-student.score; p1-student.score=k-student.score; k-student.score=t1; t2=p1-student.num; p1-student.num=k-student.num; k-student.num=t2; strcpy(s,p1-student.name); strcpy(p1-student.name,k-student.name); strcpy(k-student.name,s); 18 / 18

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!