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

上传人:b****8 文档编号:23872785 上传时间:2023-05-21 格式:DOCX 页数:17 大小:167.56KB
下载 相关 举报
数据结构课程设计学生管理系统.docx_第1页
第1页 / 共17页
数据结构课程设计学生管理系统.docx_第2页
第2页 / 共17页
数据结构课程设计学生管理系统.docx_第3页
第3页 / 共17页
数据结构课程设计学生管理系统.docx_第4页
第4页 / 共17页
数据结构课程设计学生管理系统.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

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

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

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

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

淮阴工学院

数据结构课程设计报告

选题名称:

学生管理系统

系(院):

计算机工程系

专业:

计算机科学与技术

班级:

网络1071

姓名:

施琦学号:

1071304118

指导教师:

张亚红张勇军

学年学期:

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日

摘要:

随着现在学校在校同学的增加,传统的的学生的信息的管理系统已经不能满足现在的需求,为了能够更加有效地对学生信息进行管理,所以在本次的数据结构课程设计中,目标是运用数据结构中的链表知识在C++中涉及一个能够有效管理学生信息的程序包括:

主控程序、学生档案管理子系统、学生成绩管理子系统、学生宿舍管理子系统。

可以对学生信息进行添加,修改,删除,和查看。

关键词:

数据结构;链表;学生管理系统

 

目录

1.需求分析2

2.概要设计2

2.1功能模块描述2

3.详细设计和实现2

3.1类的定义2

3.2具体函数的实现4

3.3程序流程图9

4.调试与操作说明9

总结12

致谢13

参考文献14

 

1.需求分析

随着现在学校在校同学的增加,传统的的学生的信息的管理系统已经不能满足现在的需求,所以在本次的数据结构课程设计中,我选择的课题是学生管理系统,目标是运用数据结构中的链表知识在VisualC++编程环境中设计出学生管理系统。

2.概要设计

链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。

线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。

链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。

链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。

本课题分为六个部分:

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

2.1功能模块描述

voidCList:

:

addnode(CNode*pnode)//增加结点

voidCList:

:

deletelist()//删除链表

CNode*CList:

:

deletenode(CNode*pnode)//删除结点

CNode*CList:

:

lookup(CData&data)//查询

voidCList:

:

showlist()//显示学生信息

CNode*CList:

:

getnext(CNode*pnode)//获得下个结点

intStudent:

:

comparename(CData&data)//比较姓名

intmain()//主函数

3.详细设计和实现

3.1类的定义

定义了CData类,声明了comparename和show函数。

classCData

{

public:

CData(){};

virtualintcomparename(CData&)=0;

virtualvoidshow()=0;

virtual~CData(){};

};

定义结点类,声明了inputdata,shownode函数。

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;

};

 

定义了链表类,声明了addnode和deletelist函数

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具体函数的实现

voidloadfile(CList&stulist)

{

ifstreaminfile("student.dat",ios:

:

binary);

if(!

infile)

{

cout<<"没有数据文件!

"<

return;

}

CNode*p;

Student*s;

while(!

infile.eof())

{

s=newStudent;

infile.read((char*)s,sizeof(Student));

p=newCNode;

p->inputdata(s);

stulist.addnode(p);

}

stulist.deletenode(p);

infile.close();

}//在该函数中创建了一个文件,可以存储数据,并且创建结点和链表

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

}//在该函数中使用了switch语句,可以选择相应的case进行操作。

在case1中

voidCList:

:

showlist()//显示学生信息

{

if(phead==0)

cout<<"对不起,没有任何记录.\n";

else

{

CNode*p=phead;

while(p)

{

p->pdata->show();

p=p->pnext;

}

}

}//对学生的信息进行了显示。

在case2中

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

}}//在该函数中增加学生信息到结点中去

在case3中

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

}

}//在该函数中删除结点信息,从而达到删除学生信息的目的。

在case4中

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.3程序流程图

图1.流程图

4.调试与操作说明

执行程序后,首先向系统中录入三位同学的信息,然后显示三个人的信息,运行后的界面如下:

图4.1录入三个学生信息后的运行结果

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

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

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

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

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

图4.4查询的结果

总结

在这次课程设计中,感觉自己学到了不少知识,以往在上机实验过程中,书上总有相关的代码可以让我们参考,但是在这次课程设计中,是要独立的设计出一个真正的程序,在开始的时候我们使用了上学期C++所学到的关于文本输入输出的程序,但是在和同伴的讨论过程中,发现仅仅只是输入输出流的应用,并没有数据结构中的知识,所以我们就否定了原来的程序,重新做了这个程序,在这个程序中使用了链表存储相关信息,在编写程序中,动手能力得到了很大的提高,同时对链表的知识得到了很大的巩固。

在编写过程中,遇到了很多的问题,比如开始的时候算法不正确,后来的编写程序中对程序函数不能正确认识,但是在后来查阅资料和与同伴讨论中,很多的问题都得到了良好的解决。

总之,这次的课程设计对我来说是受益匪浅。

 

致谢

本次课程设计中,我得到了很多来自他方的帮助,在这里我要谢谢所有帮助过我的老师学生。

首先,我要谢谢淮阴工学院计算机工程系提供给实验室给我提供的方便环境!

其次,要谢谢这次课程设计的辅导老师张亚红老师给予我的帮助,没有他的悉心指导我也不能这么顺利的完成本次的课程设计,在这里衷心的对他们表示深深的谢意,谢谢!

同时也要感谢学校提供了优越的硬件设备可以让我们能够顺利的完成课程设计。

 

参考文献

1.殷人昆.据结构(用面向对象方法与C++语言描述).清华大学出版社,2008

2.吴乃陵,况迎辉.高等教育出版社,2006

3.慧南.结构——C++语言描述.人民邮电出版社,2005

4.周云静.数据结构习题解析与上机指导.冶金工业出版社,2004

5.苏仕华.数据结构课程设计.机械工业出版社,2005

6.李春葆,金晶.数据结构教程.清华大学出版社,2006

 

指导教师评语

学号

1071304118

姓名

施琦

班级

网络1071

选题

名称

学生管理系统

序号

评价内容

权重(%)

得分

1

考勤记录、学习态度、工作作风与表现。

5

2

自学情况:

上网检索机时数、文献阅读情况(笔记)。

10

3

论文选题是否先进,是否具有前沿性或前瞻性。

5

4

成果验收:

是否完成设计任务;能否运行、可操作性如何等。

20

5

报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。

30

6

文献引用是否合理、充分、真实。

5

7

答辩情况:

自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。

25

合计

指导教师(签章):

2008年6月30日

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

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1