数据结构课程设计学生管理系统.docx

上传人:b****4 文档编号:6858489 上传时间:2023-05-10 格式:DOCX 页数:13 大小:173.94KB
下载 相关 举报
数据结构课程设计学生管理系统.docx_第1页
第1页 / 共13页
数据结构课程设计学生管理系统.docx_第2页
第2页 / 共13页
数据结构课程设计学生管理系统.docx_第3页
第3页 / 共13页
数据结构课程设计学生管理系统.docx_第4页
第4页 / 共13页
数据结构课程设计学生管理系统.docx_第5页
第5页 / 共13页
数据结构课程设计学生管理系统.docx_第6页
第6页 / 共13页
数据结构课程设计学生管理系统.docx_第7页
第7页 / 共13页
数据结构课程设计学生管理系统.docx_第8页
第8页 / 共13页
数据结构课程设计学生管理系统.docx_第9页
第9页 / 共13页
数据结构课程设计学生管理系统.docx_第10页
第10页 / 共13页
数据结构课程设计学生管理系统.docx_第11页
第11页 / 共13页
数据结构课程设计学生管理系统.docx_第12页
第12页 / 共13页
数据结构课程设计学生管理系统.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计学生管理系统.docx

《数据结构课程设计学生管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计学生管理系统.docx(13页珍藏版)》请在冰点文库上搜索。

数据结构课程设计学生管理系统.docx

数据结构课程设计学生管理系统

成绩

 

10信计2011-2012

(一)

数据结构课程设计

 

设计题目 学生管理系统

设计时间 2012.12.31至2012.1.6

学生姓名 

学生学号 

所在班级 

指导教师 

 

徐州工程学院数学与物理科学学院

学生管理系统

一、需求分析

1)课程设计题目:

运用数据结构编一C++程序,实现对学生信息的管理,主要包括主控程序、学生档案管理子系统、学生成绩管理子系统、学生宿舍管理子系统。

2)课程设计的基本要求:

设计好算法,使之能顺利实现对学生信息的管理,实用。

3)课程设计的任务:

通过此系统可以实现如下功能:

a)添加学生信息:

包括学生的姓名,学号,班级,宿舍号以及其C++、多媒体技术、高等数学、大学英语、大学体育等成绩;

b)删除学生信息:

可以根据其姓名、学号、班级、宿舍号和其成绩进行删除;

c)查询学生信息:

可以根据其姓名、学号、班级、宿舍号和其成绩进行查询;

d)输出所有学生信息:

可以显示所有录入到系统中的学生的信息。

4)软硬件运行环境及开发工具

本次课程设计主要是在VisualC++6.0下做的,VisualC++是Microsoft公司的功能强大的Windows应用程序开发环境。

由于VisualC++与Windows同为Microsoft公司的产品,它与Windows操作系统的结合将更加紧密。

目前,VisualC++是Windows平台下开发应用程序最重要的开发环境之一。

VisualC++既能支持C语言程序,又能C++运行程序,C++程序通常无需修改,或稍作修改,即可在其他计算机系统上运行。

二、概要设计

(1)、课程设计思想

学生管理系统是由单链表来完成的,它的主要思想是先将你的具体信息录入到文件中,如果要查询的话就是从文件中读取出来的,然后我的查询是由多种方式来查询的,可以通过姓名,学号,班级,宿舍号或成绩;删除也是通过多种方式实现的,也是根据用户输入的姓名,学号,班级,宿舍号或者成绩;最后还有一个显示所有学生的信息,可以把所有录入的学生信息显示出来。

这个系统整个思想就是如此。

编程时考虑得还不是很周全,还需要不断完善。

(2)、模块设计

本课题主要分为5个模块,即:

(1)voidadd(CList&stulist)模块,其作用是向系统中添加学生的信息;

(2)voiddisplay(CList&stulist)模块,其作用是显示所有录入的学生的信息;

(3)voidlookup(CList&stulist)模块,其作用是按照一定的条件查找学生的信息;

(4)voiddeletes(CList&stulist)模块,其作用是删除满足一定条件的学生的信息。

其流程图如下:

判断

开始

功能菜单

用户选择功能

执行选择服务

y

三、详细设计

本课题分为六个部分:

构造单链表,显示所有学生信息的函数,添加学生信息的函数,查找学生信息的函数,删除学生信息的函数,主函数的设计。

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;

};

2)显示所有学生信息的函数

代码如下:

voiddisplay(CList&stulist)

{

stulist.showlist();

cout<

cout<<"按任意键返回主菜单";

getchar();getchar();

}

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);

}

}

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);

}

}

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);

}

}

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.1录入三个学生信息后的运行结果

然后增加一个学生的信息再输出,结果如下图:

图4.2添加一个学生后的运行结果

接着再任意删除一个学生的信息,输出结果如下图:

图4.3删除一个学生后的运行结果

最后查询“shiqi”的信息,结果如下图:

图4.4查询的结果

五、课设总结

本次课程设计使我了解到了有关VC++的真实案例,当然也使我学到的不少的知识,也提高了我的实际动手能力。

由于之前对VC++的知识没有足够的掌握,使我在实验的最初阶段遇到了不小的困难,但是随着实验的进行,随着问题的一步步被我解决了,我由衷的感到高兴,因为我又掌握了一些知识。

实验过程中我更好地掌握了单链表等相关涉及的知识点,运用这些知识点编写程序代码。

调试程序中,我们常常会不注意细节性的问题。

例如:

变量没有初始化、没有定义、少分号、少头文件等这些细节性的错误。

这此问题只是细小的问题,但不容忽视,它可能会影响到全部程序的运行。

查找主要代码无误后,若调试程序还存在错误的话,我们就需要关注这此细节性问题了。

要规范化程序,这样就很容易查找出细节性的问题。

一个好的程序应该是一个所占空间小、运行时间短、其他性能也好的算法。

然而,实际上很难做到十全十美,原因是上述要求有时相互抵触。

要节约算法的执行时间往往要以牺牲更多的存储空间为代价;而为了节省存储空间又可能要以更多的时间作为代价。

因此,只能根据具体情况有所侧重。

学习了数据结构这门课,我们在编写程序时就应该注意到所编写程序的时间复杂度,以及是否运用了良好的算法,充分考虑程序的性能,争取编写出更优良的程序来!

虽然在这一周中有过挫折和坎坷,有的问题一直到了最后才被解决,但是我认为这未必就不是好事,这样能磨练我的耐心,也锻炼了我主动收集查阅资料、关注点滴知识积累、重视实验细节分析的主动性、积极性、实践性,形式规范书写的习惯。

 

资料仅供参考!

!

!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2