数据结构课程设计.docx
- 文档编号:4823075
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:18
- 大小:169.40KB
数据结构课程设计.docx
《数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计.docx(18页珍藏版)》请在冰点文库上搜索。
数据结构课程设计
淮阴工学院
数据结构课程设计报告
选题名称:
学生管理系统
系(院):
计算机工程系
专业:
计算机科学与技术
班级:
网络1071
姓名:
邓领兵学号:
1071304105
指导教师:
张亚红张勇军
学年学期:
2008~2009学年第2学期
2009年6月20日
设计任务书
课题
名称
学生管理系统
设计
目的
本课程设计的目的是通过实践使学生经历一个系统开发的全过程并受到一次综合的训练,以便能较全面地理解、掌握和综合运用所学的知识去分析、解决实际问题。
实验
环境
1、Windows2000及以上
2、MicrosoftVisualC++6.0
任务
要求
任务:
完成《学生管理系统》的分析设计工作,并选用MicosoftVisualC++6.0完成系统的开发。
要求:
1.搜集学生管理方面的资料并编写代码;
2、上机调试;
3、答辩;
4、完成课程设计报告。
工作进度计划
序号
起止日期
工作内容
2009.6.8~2009.6.9
搜集学生管理方面的资料并编写代码
2009.6.9~2009.6.10
上机调试
2009.6.10
答辩
2009.6.10~2009.6.14
完成课程设计报告
指导教师:
2009年6月10日
摘要:
随着现代科学的发展,计算机的应用几乎进入了生活中的每一个领域。
计算机技术在信息管理上也得到了越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。
学生信息管理系统是学校等教育单位不可缺少的部分,利用计算机对学生信息进行管理,具有传统手工管理无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。
本系统以VisualC++6.0作为开发工具实现学生信息的管理。
关键词:
VC++6.0;学生管理系统;添加;查找;删除
目录
1需求分析……………………………………………………………………………1
1.1课程设计题目…………………………………………………………………………………1
1.2课程设计的基本任务和要求…………………………………………………………………1
1.3课程设计思想…………………………………………………………………………………1
1.4软硬件运行环境及开发工具…………………………………………………………………1
2概要设计……………………………………………………………………………2
2.1课题概述………………………………………………………………………………………2
3详细设计…………………………………………………………………………………………3
3.1构造单链表…………………………………………………………………………………….3
3.2显示所有学生信息的函数............................................................................................4
3.3添加学生信息的函…………………………………………………………………..5
3.4查找学生信息的函数………………………………………………………………………….6
3.5删除学生信息的函数………………………………………………………………………….7
3.6主函数的设计………………………………………………………………………………….8
4调试与操作说明…………………………………………………………………………….10
总结……………………………………………………………………………..13
致谢…………………………………………………………………………………..14
参考文献……………………………………………………………………………..15
1需求分析
1.1课程设计题目
运用数据结构编一C++程序,实现对学生信息的管理,主要包括主控程序、学生档案管理子系统、学生成绩管理子系统、学生宿舍管理子系统。
1.2课程设计的基本任务和要求
1.2.1课程设计的基本要求
设计好算法,使之能顺利实现对学生信息的管理,实用。
1.2.2课程设计的任务
通过此系统可以实现如下功能:
a)添加学生信息:
包括学生的姓名,学号,班级,宿舍号以及其C++、多媒体技术、高等数学、大学英语、大学体育等成绩;
b)删除学生信息:
可以根据其姓名、学号、班级、宿舍号和其成绩进行删除;
c)查询学生信息:
可以根据其姓名、学号、班级、宿舍号和其成绩进行查询;
d)输出所有学生信息:
可以显示所有录入到系统中的学生的信息。
1.3课程设计思想
学生管理系统是由单链表来完成的,它的主要思想是先将你的具体信息录入到文件中,如果要查询的话就是从文件中读取出来的,然后我的查询是由多种方式来查询的,可以通过姓名,学号,班级,宿舍号或成绩;删除也是通过多种方式实现的,也是根据用户输入的姓名,学号,班级,宿舍号或者成绩;最后还有一个显示所有学生的信息,可以把所有录入的学生信息显示出来。
这个系统整个思想就是如此。
编程时考虑得还不是很周全,还需要不断完善。
1.4软硬件运行环境及开发工具
本次课程设计主要是在VisualC++6.0下做的,VisualC++是Microsoft公司的功能强大的Windows应用程序开发环境。
由于VisualC++与Windows同为Microsoft公司的产品,它与Windows操作系统的结合将更加紧密。
目前,VisualC++是Windows平台下开发应用程序最重要的开发环境之一。
VisualC++既能支持C语言程序,又能C++运行程序,C++程序通常无需修改,或稍作修改,即可在其他计算机系统上运行。
2概要设计
2.1课题概述
本课题主要分为5个模块,即:
(1)voidadd(CList&stulist)模块,其作用是向系统中添加学生的信息;
(2)voiddisplay(CList&stulist)模块,其作用是显示所有录入的学生的信息;
(3)voidlookup(CList&stulist)模块,其作用是按照一定的条件查找学生的信息;
(4)voiddeletes(CList&stulist)模块,其作用是删除满足一定条件的学生的信息。
其流程图如下:
3详细设计
本课题分为六个部分:
构造单链表,显示所有学生信息的函数,添加学生信息的函数,查找学生信息的函数,删除学生信息的函数,主函数的设计。
3.1构造单链表
单链表有连个部分组成,即链表的结点类和链表类,其代码如下:
classCNode//结点类
{
public:
CNode()
{
pdata=0;
pnext=0;
}
CNode(CNode&n);
voidinputdata(CData*pd){pdata=pd;}
voidshownode(){pdata->show();}
CData*getdata(){returnpdata;}
friendclassCList;
private:
CData*pdata;
CNode*pnext;
};
CNode:
:
CNode(CNode&n)//拷贝构造函数
{
pdata=n.pdata;
pnext=n.pnext;
}
classCList//链表类
{
public:
CList(){phead=0;}
~CList(){deletelist();}
voidaddnode(CNode*pnode);
voiddeletelist();
CNode*deletenode(CNode*pnode);
CNode*lookup(CData&data);
CNode*getlisthead(){returnphead;}
voidshowlist();
CNode*getnext(CNode*pnode);
private:
CNode*phead;
};
3.2显示所有学生信息的函数
代码如下:
voiddisplay(CList&stulist)
{
stulist.showlist();
cout< cout<<"按任意键返回主菜单"; getchar();getchar(); } 3.3添加学生信息的函数 代码如下: voidadd(CList&stulist) { CNode*p; Student*s; charc[17],n[17],nam[17]; doublee,cp,m,ce,sm,cg,mar;floataver; cout<<"请输入姓名(输入0结束): "; cin.ignore(); cin.getline(nam,17); while(strcmp(nam,"0")) { cout<<"输入学号: ";cin.getline(n,17); cout<<"输入班级: ";cin.getline(c,17); cout<<"输入宿舍: ";cin>>e; cout<<"输入C++成绩: ";cin>>cp; cout<<"输入多媒体技术成绩: ";cin>>m; cout<<"输入大学英语成绩: ";cin>>ce; cout<<"输入高等数学成绩: ";cin>>sm; cout<<"输入大学体育成绩: ";cin>>cg; aver=(cp+m+ce+sm+cg)/5; s=newStudent; s->set(c,n,nam,e,cp,m,ce,sm,cg,mar,aver); p=newCNode; p->inputdata(s); stulist.addnode(p); cout<<"记录添加成功."< cout<<"请输入姓名(输入0结束): "; cin.ignore(); cin.getline(nam,17); } } 3.4查找学生信息的函数 代码如下: voidlookup(CList&stulist) { CNode*plook; charname[17]; cout<<"请输入你要查找的姓名(输入0结束): "; cin.ignore(); cin.getline(name,17); while(strcmp(name,"0")) { Students; s.set("0","0",name,0,0,0,0,0,0,0,0); plook=stulist.lookup(s); if(plook) { plook->shownode(); } else cout<<"对不起,在学生记录中查找不到"< cout<<"请输入你要查找的姓名(输入0结束): "; cin.getline(name,17); } } 3.5删除学生信息的函数 代码如下: voiddeletes(CList&stulist) { CNode*plook; charname[17]; cout<<"请输入要删除的记录的学生姓名(输入0结束): "; cin.ignore(); cin.getline(name,17); while(strcmp(name,"0")) { Students; s.set("0","0",name,0,0,0,0,0,0,0,0); plook=stulist.lookup(s); if(plook) { plook->shownode(); stulist.deletenode(plook); cout< } else cout<<"对不起,在学生记录中查找不到"< cout<<"请输入要删除的记录的学生姓名(输入0结束): "; cin.getline(name,17); } } 3.6主函数的设计 代码如下: voidoperate(CList&stulist) { intchoice; do { system("cls"); cout<<"欢迎使用学生管理系统\n"; cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" <<"1.输出所有学生记录\n" <<"2.增加学生记录\n" <<"3.删除学生记录\n" <<"4.查询学生记录\n" <<"0.退出\n" <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; cout<<"提示: 按0-4进行选择"; cin>>choice; cout< switch(choice) {case1: display(stulist);break; case2: add(stulist);break; case3: deletes(stulist);break; case4: lookup(stulist);break; case0: storefile(stulist);break; default: cout<<"输入错误,请重新输入您的选择: "; } }while(choice! =0); } intmain() { CListstulist; loadfile(stulist); operate(stulist); return0; } 4调试与操作说明 执行程序后,首先向系统中录入三位同学的信息,然后显示三个人的信息,运行后的界面如下: 图4.1录入三个学生信息后的运行结果 然后增加一个学生的信息再输出,结果如下图: 图4.2添加一个学生后的运行结果 接着再任意删除一个学生的信息,输出结果如下图: 图4.3删除一个学生后的运行结果 最后查询“shiqi”的信息,结果如下图: 图4.4查询的结果 总结 本次课程设计使我了解到了有关VC++的真实案例,当然也使我学到的不少的知识,也提高了我的实际动手能力。 由于之前对VC++的知识没有足够的掌握,使我在实验的最初阶段遇到了不小的困难,但是随着实验的进行,随着问题的一步步被我解决了,我由衷的感到高兴,因为我又掌握了一些知识。 实验过程中我更好地掌握了单链表等相关涉及的知识点,运用这些知识点编写程序代码。 调试程序中,我们常常会不注意细节性的问题。 例如: 变量没有初始化、没有定义、少分号、少头文件等这些细节性的错误。 这此问题只是细小的问题,但不容忽视,它可能会影响到全部程序的运行。 查找主要代码无误后,若调试程序还存在错误的话,我们就需要关注这此细节性问题了。 要规范化程序,这样就很容易查找出细节性的问题。 一个好的程序应该是一个所占空间小、运行时间短、其他性能也好的算法。 然而,实际上很难做到十全十美,原因是上述要求有时相互抵触。 要节约算法的执行时间往往要以牺牲更多的存储空间为代价;而为了节省存储空间又可能要以更多的时间作为代价。 因此,只能根据具体情况有所侧重。 学习了数据结构这门课,我们在编写程序时就应该注意到所编写程序的时间复杂度,以及是否运用了良好的算法,充分考虑程序的性能,争取编写出更优良的程序来! 虽然在这一周中有过挫折和坎坷,有的问题一直到了最后才被解决,但是我认为这未必就不是好事,这样能磨练我的耐心,也锻炼了我主动收集查阅资料、关注点滴知识积累、重视实验细节分析的主动性、积极性、实践性,形式规范书写的习惯。 致谢 首先,我要谢谢淮阴工学院计算机工程系提供给实验室给我提供的方便环境! 其次,要谢谢这次课程设计的辅导老师张亚红老师给予我的帮助,没有他们的悉心指导我也不能这么顺利的完成本次的课程设计,在这里衷心的对他们表示深深的谢意,谢谢! 其次,还要感谢同学们的帮助,对于细节上自己没有注意的问题给予了帮助,是本次课程设计有了更深一步的了解和认识,加深了印象。 与此同时,更加深刻地体会到团队精神的重要性,一个人的力量是永远不够的,只有同心协力,才能把系统做的更加完善。 在程序运行及操作时,由于老师和同学的热心帮助是本次课程设计才能及时的完成。 其实,完成课程设计的同时也明白了一个道理: 集体的力量真的是很大,以前对集体没有什么深刻的认识,不过通过两次的课程设计,明白了这个至古不变的道理。 最后还要感谢的是图书馆中提供的书籍和参考资料,使有些问题和疑难能过顺利的解决。 谢谢编者和作者,是他们的智慧结晶是我们能够更好的把课程设计制作完成。 参考文献 1.殷人昆.据结构(用面向对象方法与C++语言描述).清华大学出版社,2008 2.吴乃陵,况迎辉.高等教育出版社,2006 3.慧南.结构——C++语言描述.人民邮电出版社,2005 4.周云静.数据结构习题解析与上机指导.冶金工业出版社,2004 5.苏仕华.数据结构课程设计.机械工业出版社,2005 6.李春葆,金晶.数据结构教程.清华大学出版社,2006 指导教师评语 学号 1071304105 姓名 邓领兵 班级 网络1071 选题 名称 学生管理系统 序号 评价内容 权重(%) 得分 1 考勤记录、学习态度、工作作风与表现。 5 2 自学情况: 上网检索机时数、文献阅读情况(笔记)。 10 3 论文选题是否先进,是否具有前沿性或前瞻性。 5 4 成果验收: 是否完成设计任务;能否运行、可操作性如何等。 20 5 报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。 30 6 文献引用是否合理、充分、真实。 5 7 答辩情况: 自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。 25 合计 指导教师(签章): 2008年6月30日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计