数据结构学籍管理系统Word下载.docx
《数据结构学籍管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构学籍管理系统Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
1)程序设计要求:
①采用交互工作方式,设计功能菜单;
②建立数据文件,数据包含学生的自然信息和成绩信息(设计几门课以及总成绩);
③对如下关键字:
姓名、学号、各科成绩进行排序(冒泡、选择、插入排序等任选一种)。
2)用二分查找实现如下查询:
①按姓名查询
②按学号查询
3)用堆排序找出总成绩排名的前5名学生
4)输出任一查询结果(可以连续操作)
4.设计过程
1.算法思想分析
根据设计要求,首先定义三个数组,分别存放学号、姓名、成绩.
typedefstructstud统测试
1.菜单
用户运行程序后,显示如下所示菜单,用户根据菜单提示进行操作(如图)。
图
2.批量添加
用户选择批量添加学生信息功能进行批量添加,可连续添加,按0结束添加操作(如图)。
3.按学号查找学生
将学生信息录入之后,若想查找某个学生,用户可选择按学号查找学生信息(图)。
4.按姓名查找学生
将学生信息录入之后,若想查找某个学生,用户可选择按姓名查找学生信息(图)。
5.添加信息
用户可以在批量添加后在单个添加学生信息(图)。
6.按学号删除学生信息
用户可根据情况对已添加的学生信息进行删除,通过学号删除(图)。
7.排序输出
程序可以将已添加的学生按照成绩的降序排列输出(图).
8.退出
操作结束后按0退出程序(图)。
5.设计总结
通过一周的课程设计,我从中受益匪浅,使得我对数据结构这门课有了更深一步的认识。
在设计过程中,我们发现问题,解决问题,一同探讨问题,在老师的帮助下把问题一一解决。
在解决问题的过程中得到了成长,在与同学的合作过程中,我获益良多,提高了自己的团队合作能力和实际动手能力,在亲自动手的同时提升自己,锻炼自己。
通过这次设计,我深深的感受到了做系统是一件十分复杂周密的事情,不能有半点的疏忽,需要一个人有周密的思考能力,分析问题、处理问题的能力,还要有足够的耐心。
参考文献
《数据结构程序设计题典》李春葆等编清华大学出版社
《数据结构(C语言版)》黄国瑜叶乃菁编清华大学出版社
《数据结构课程设计》苏仕华等编机械工业出版社
附录:
源代码
#include<
>
typedefstructstud;
getchar();
break;
case'
3'
:
;
4'
5'
6'
0'
批量添加学生信息"
);
printf("
2.按学号查找学生信息*\n"
*3.按姓名查学生信息"
4.按学号删除学生信息*\n"
*5.录入新的学生信息"
6.按分数降序排序输出*\n"
----------0.返回-----------\n"
\
**********************************************************************\n"
}
voidread(void)
{
longa;
请输入学号:
"
scanf("
%ld"
&
a);
while(a>
0){
inser(a);
voidinser(longb)
Node*last,*current,*p;
current=head;
while(current!
=NULL&
&
b>
current->
last=current;
current=current->
next;
if(current==NULL||b<
请输入姓名、分数:
p=(Node*)malloc(sizeof(Node));
p->
=b;
%s%f"
p->
;
next=NULL;
if(current==head){
next=head;
head=p;
else{
next=current;
last->
next=p;
elseif(b==current->
errorinputadifferentnumber:
voidprint()
Node*p=head;
\n学号姓名成绩:
\n"
while(p!
=NULL){
%ld%s%f\n"
p=p->
voidfind(longb)
b!
=p->
if(!
p)printf("
Nofound\n"
else{
\n学号姓名成绩\n"
voidsearchname(char*s)
intflag=0;
=NULL)
if(strcmp(p->
s)==0)
flag=1;
continue;
elsep=p->
flag)printf("
没有找到相关信息"
Node*del(longn)
Node*p=head,*last;
while(p->
!
=n){
last=p;
if(p==NULL)returnp;
elseif(p==head)head=p->
elselast->
next=p->
returnhead;
voidsort(intflag)
{
Node*p1,*p2,*k;
floatt1;
longt2;
chars[20];
for(p1=head;
p1->
p1=p1->
next)
k=p1;
for(p2=p1->
p2;
p2=p2->
if(flag==1&
k->
<
p2->
||!
flag&
k=p2;
if(k!
=p1){
t1=p1->
=k->
=t1;
t2=p1->
=t2;
strcpy(s,p1->
strcpy(p1->
k->
strcpy(k->
s);
}