数据结构课程设计报告考生报名管理系统.docx
《数据结构课程设计报告考生报名管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告考生报名管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构课程设计报告考生报名管理系统
课程设计报告
课程设计名称:
数据构造
系:
三系
学生XX:
班级:
学号:
成绩:
指导教师:
开课时间:
2011-2012学年1学期
一.设计题目
考生报名管理系统〔线性表、查找、排序〕
考生报名管理系统的设计主要是实现对考生报考相应类别考试的管理和相关操作。
根本功能如下:
〔1〕考试报考息录入、添加功能:
包括考生的考号、XX、性别、年龄、籍贯、考试类别等信息。
〔2〕报考信息查询:
可以按考生的考号查询某个考生的报考信息。
〔3〕报考信息排序:
按考生的考号排序或按考试类别排序。
〔4〕考生报考信息的修改或删除:
按考生考号修改或删除某个考生的相关信息。
〔5〕统计功能:
分别统计系统中共有多少人报名、每个考生的报考种类的数量、每种考试类别的考生数量等。
二.主要容
程序主要分为三局部:
1.KSBM.h头文件,2.KSBM.cpp各种实现功能函数,3.KSBM_M.cpp主函数。
程序的功能:
1.数据的录入与添加LinkList*InsetList(LinkList*&p)
2人数统计intListLength(LinkList*p)
3.信息查询voidFindElem(LinkList*p)
4.考生排序voidSortList(LinkList*&p)
5.考生信息修改LinkList*ReList(LinkList*&p)
6.删除考生LinkList*DelList(LinkList*&p)
7.输出考生信息表voidDispList(LinkList*p)
三.课题设计的根本思想,原理和算法描述
录入采用链表的尾插法;人数统计即利用链表长度求出;信息查询即匹配关键字循环一次链表,匹配成功就输出;修改似于查询,对链表有改动,最后返回链表完成修改;删除考生对应节点的指针移动,并释放节点。
四.源程序及注释
1.头文件
KSBM.H头文件================================================================
typedefstruct{
charKH[12];//考生考号
charXM[12];//考生XX
charXB[4];//性别
charNL[4];//年龄
charJG[20];//籍贯
charKSLB[10];//考试类别
}DataType;
typedefstructLNode
{
DataTypedata;
structLNode*next;
}LinkList;
externLinkList*InsetList(LinkList*&p);//1
externintListLength(LinkList*p);//2
externvoidFindElem(LinkList*p);//3
externvoidSortList(LinkList*&p);//4
externLinkList*ReList(LinkList*&p);//5
externLinkList*DelList(LinkList*&p);//6
externvoidDispList(LinkList*p);//7
===============================================================================
2.函数实现文件
KSBM.CPP函数实现文件==========================================================
#include"KSBM.H"
#include
#include
#include
usingnamespacestd;
//1.报名表信息添加函数
//===========================================================
LinkList*InsetList(LinkList*&p)
{LinkList*L=p;
while(L->next!
=NULL)
L=L->next;
LinkList*q;
q=(LinkList*)malloc(sizeof(LinkList));
cout<<"考号:
";cin>>q->data.KH;
cout<<"XX:
";cin>>q->data.XM;
cout<<"性别:
";cin>>q->data.XB;
cout<<"年龄:
";cin>>q->data.NL;
cout<<"籍贯:
";cin>>q->data.JG;
cout<<"考试类别:
";cin>>q->data.KSLB;
q->next=L->next;
L->next=q;
returnp;
}
//===========================================================
//2.报名表人数统计
//=========================================================
intListLength(LinkList*p)
{intn=0;
LinkList*L=p;
while(L->next!
=NULL)
{n++;L=L->next;}
returnn;
}
//===========================================================
//3.考生信息的查询
//===========================================================
voidFindElem(LinkList*p)
{
LinkList*L=p;
chary[12];
cout<<"请输入需查询者的考号或XX\n";
cin>>y;
while(L!
=NULL&&(strcmp(L->data.KH,y)!
=0||strcmp(L->data.XM,y)!
=0))
{L=L->next;}
if(L!
=NULL)
{cout<<"------------------------------------------------------------------------------------------------------------------------\n";
cout<<"考生号XX性别年龄籍贯考试类别\n";
cout<:
left)<data.KH<:
left)<data.XM<:
left)<data.XB<:
left)<data.NL
<:
left)<data.JG<:
left)<data.KSLB<cout<<"------------------------------------------------------------------------------------------------------------------------\n";}
else
cout<<"查无此人\n";
}
//===========================================================
//4.报名表信息排序
//===========================================================
voidSortList(LinkList*&p)
{LinkList*L=p->next,*q,*r;
if(L!
=NULL)
{r=L->next;
L->next=NULL;
L=r;
while(L!
=NULL)
{r=L->next;
q=p;
while(q->next!
=NULL&&strcmp(q->next->data.KH,L->data.KH)<0)
q=q->next;
L->next=q->next;
q->next=L;
L=r;
}
}cout<<"排序完成\n";
DispList(p);
}
//===========================================================
//5.信息修改
//===========================================================
LinkList*ReList(LinkList*&p)
{LinkList*L;
L=p->next;
if(L!
=NULL)
{
chary[12];
cout<<"请输入需修改人的考号\n";
cin>>y;
while(strcmp(L->data.KH,y)!
=0)//||strcmp(L->data.XM,y)!
=0)
{L=L->next;}
for(;;)
{cout<<"修改哪类信息\n";
cout<<"1.考号2.XX3.性别4.年龄5.籍贯6.考试类别其它整数退出";
intx;cin>>x;
if(x==1)
{cin>>L->data.KH;cout<<"修改完毕\n";}
if(x==2)
{cin>>L->data.XM;cout<<"修改完毕\n";}
if(x==3)
{cin>>L->data.XB;cout<<"修改完毕\n";}
if(x==4)
{cin>>L->data.JG;cout<<"修改完毕\n";}
if(x==5)
{cin>>L->data.KSLB;cout<<"修改完毕\n";}
else
break;}
cout<<"确认更改后信息:
\n";
cout<<"考生号XX性别年龄籍贯考试类别\n";
cout<:
left)<data.KH<:
left)<data.XM<:
left)<data.XB<:
left)<data.NL
<:
left)<data.JG<:
left)<data.KSLB<}
else
cout<<"表为空\n";
returnp;}
//===========================================================
//6.考生信息的删除
//===========================================================
LinkList*DelList(LinkList*&p)
{
LinkList*m=p,*s;
chary[12];
cout<<"请输入需删除者的考号\n";
cin>>y;
//if(m!
=NULL)
while(m!
=0&&(strcmp(m->next->data.KH,y)!
=0))//||strcmp(m->next->data.XM,y)!
=0))
m=m->next;
if(m==0)
returnNULL;
s=m->next;
if(s==0)return0;
m->next=s->next;
free(s);
returnp;
}
//===========================================================
//7.考生信息表的输出
//==========================================================
voidDispList(LinkList*p)
{LinkList*L;
L=p->next;
cout<<"考生报名信息表输出:
\n";
cout<<"---------------------------------------------------------------------------------------------------------\n";
cout<<"考生号XX性别年龄籍贯考试类别\n";
while(L!
=NULL)
{cout<:
left)<data.KH<:
left)<data.XM<:
left)<data.XB<:
left)<data.NL
<:
left)<data.JG<:
left)<data.KSLB<L=L->next;}
cout<<"---------------------------------------------------------------------------------------------------------\n";
cout<<"输出完毕\n";
}
//============================================================
===============================================================================
3.主函数
KSBM_M.CPP主函数===============================================================
#include"KSBM.H"
#include
#include
usingnamespacestd;
intmain()
{LinkList*p;
intxz;
p=(LinkList*)malloc(sizeof(LinkList));
p->next=NULL;
B:
{
cout<<"考生报名管理系统\n";
cout<<"=============================\n";
cout<<"1.考生初始添加\n";
cout<<"2.考生人数统计\n";
cout<<"3.考生信息查询\n";
cout<<"4.考生排序\n";
cout<<"5.考生信息修改\n";
cout<<"6.删除考生\n";
cout<<"7.输出考生信息表\n";
cout<<"0.平安退出系统\n";
cout<<"=============================\n";
cout<<"请选择0-7进展操作\n";}
A:
{cin>>xz;
switch(xz)
{
case0:
cout<<"谢谢使用\n";break;
case1:
{intK=1;
while(K==1)
{
InsetList(p);
cout<<"是否继续添加?
〔1/0〕\n";
cin>>K;}
gotoB;
break;}
case2:
cout<<"当前报名人数为:
"<break;
case3:
FindElem(p);gotoB;
break;
case4:
SortList(p);gotoB;
break;
case5:
ReList(p);gotoB;
break;
case6:
DelList(p);gotoB;
break;
case7:
DispList(p);gotoB;
break;
default:
cout<<"输错啦!
!
!
重输==\n";
gotoA;
}
}
return0;}
================================================================================
五、运行例如及结果分析
1.
主界面
录入三个数据
统计人数
删除一数据的效果
排序并输出
六、调试和运行程序过程中产生的问题及采取的措施
数据类型定义为char,在函数体中当int型简单的比拟,造成exe运行至那里时崩掉,改成用strcmp〔S1,S2〕的返回值进展条件控制并顺利地解决。
七、总结和展望
在这次数据构造程序设计中遇到了很多实际性的问题,在实际中发现,书本上的理论性的东西并不能很好的切合实际问题,有出入就必须熟用书本知识,生硬的搬用并不能写出好的程序。
所以在这次的课程设计中我不断改正以前学习中所形成的错误思维。
理论与实践的结合在这次课程设计中很有体会。
此次的设计信息的录入完全放在存,没有用以前学的文件知识很是遗憾。
程序设计就要勇于尝试。
在这一点上做的不够,设计不单单是哪一方面的知识,运用到所有学过的,只有融汇才能贯穿。
写的过程中碰到不少问题,苦思冥想而不能解决,为一个函数的错误而浪费了好多时间,让同学看了一下就改好了,就是很简单的错误。
通过这件事我知道,课程设计是个人的事,但要懂得求教,以免浪费珍贵的时间,自大要不得。
这为以后的工作提供了良好的教训,工作中必然一个工程是大到一个人无法单独完成,那就要求合作了。
这次的课程设计让我学到的不仅仅是知识,更多的是方法。
另外,同学的设计让我大开眼界,自学了好多知识并用到设计中,这更是激起了我今后学习的强烈欲望。
八、参考资料
[1]春葆、为名等编著数据构造教程〔第3版〕清华大学2009
[2]春葆、为名等编著数据构造教程上机实验指导〔第3版〕清华大学2009