最新数据结构课程设计报告.docx
- 文档编号:11126859
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:21
- 大小:64.17KB
最新数据结构课程设计报告.docx
《最新数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《最新数据结构课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
最新数据结构课程设计报告
数据结构与算法课程论文
题目:
学生管理系统
院(系):
专业:
课程名称:
姓名:
学号:
指导老师:
2011年12月
学生管理系统
【设计目的】
设计“学生管理系统”使其具有数据插入、修改、删除、统计学生成绩、显示和查询等功能。
(1)数据包括:
学号、姓名、身份证信息及个人成绩等数据。
(2)可对记录中的学生信息进行修改。
(3)可增加或删除记录。
(4)可显示所有保存的记录。
(5)可按人名或学号进行查询。
(6)可进行成绩汇总统计和平均成绩及及格率的计算
【设计思路】
根据要求,学生管理系统数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
【总体设计】
图1系统功能模块图
【详细设计】
一、代码分析
此程序主要包含一个类student用来.对学生相关学籍信息的描述.School.
二、
(1)数据成员number;name.sex.place.nation.Birth.party.id.score
Number学生学号.Name学生姓名sex学生性别place学生籍贯nation民族
Birth学生生日party政治面貌id学生身份证score学生分数
(2)成员函数
getnumber().getscore().output().get(); input();mend()del();found();show()count();save();begin();clear();
三、函数实现说明
1.Show( )函数:
该函数列出一个清晰的结构,对本程序所运用的几个模块整体上有个统一认识,方便了对程序的调用,节省了时间。
2.Input( )函数:
该函数是一个输入函数,它运用了for循环语句,本程序定义了两个变量,通过scanf语句的使用,又调用了函数SIR,实现了简洁明了的对学生成绩,姓名以及学号等进行键入。
3.del( )函数:
该函数实现的是删除功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的删除所选的目标
4.output()函数:
该函数是一个输出函数,它运用了for循环语句,本程序定义了两个变量,通过scanf语句的使用,又调用了函数SIR,实现了简洁明了的对学生成绩,姓名以及学号等进行输出。
5.mend()函数
该函数实现的是修改功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的修改所选的目标
6.found()函数
该函数实现的是查找功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的查找所选的目标
7.main()函数:
一个程序主函数不能少。
当以上的函数均编完之后,要实现各个功能操作的连接,还必须有主函数将它们联系起来,这样才能达到理想的结果。
对以上函数的连接,此程序采用了switch语句,格式清晰、容易接受。
至此学生成绩管理的基本功能便基本实现。
二 、系统软件环境:
MicrosoftVisualC++6.0
三 、程序主要功能:
实现基本的学生成绩数据管理,如:
具有建立文件,读取文件和保存记录的功能,并可增加、显示、修改、删除、查询学生记录的功能,并能对学生成绩进行统计.其中数据的查找、数据的删除又可通过不同的方式如按学号或姓名等进行操作。
四 、总结
系统功能说明:
1录入:
作用:
用于对学生学籍信息进行输入,并保存.
方法:
先输入学生学籍信息,然后录入,最后按enter结束.你所录入的文字
就给保存到该文件里!
2显示
输入学生学号,或者姓名可以显示学生的学籍信息
3查找:
有两种,一种按学号,一种按姓名。
4删除
输入需要删除的学生的学号,或者姓名
5修改
输入需要修改的学生的学号,或者姓名
6统计:
作用:
用于对学生学习成绩进行统计
方法:
输入学生学号,或者姓名.然后按确定
7保存
. 按7,并按确定,可以保存学生学籍信息
0退出:
作用:
退出整个"学生学籍管理系统";
方法:
按0并按确定.
【附录程序】
//学生管理系统
//头文件及类
#include
#include
#include
#include
usingnamespacestd;
classstudent
{
protected:
intnumber;
charname[20];
charsex[6];
charplace[20];
charnation[6];
charbirth[20];
charparty[10];
charid[20];
floatscore[5];
public:
student*next;
student(){}
~student(){}
char*getname(){returnname;}
intgetnumber(){returnnumber;}
doublegetscore(inti){returnscore[i];}
floatgetg(){return(score[0]+score[1]+score[2]+score[3]+score[4]+score[5]);}
voidinput()
{
inte=1;
cout<<"\t\t\t按提示输入:
"< cout<<"\t\t输入学号: "; cin>>number; cout<<"\t\t输入姓名: "; cin>>name; do { cout<<"\t\t输入性别: "; cin>>sex; if(strcmp(sex,"男")==0||strcmp(sex,"女")==0) { cout<<"\t\t输入籍贯: "; cin>>place; cout<<"\t\t输入民族: "; cin>>nation; cout<<"\t\t输入生日: "; cin>>birth; cout<<"\t\t输入政治面貌: "; cin>>party; cout<<"\t\t输入身份证号: "; cin>>id; cout<<"\t\t输入数据结构与算法分数: "; cin>>score[0]; cout<<"\t\t输入信息管理与信息系统分数: "; cin>>score[1]; cout<<"\t\t输入ERP原理与应用分数: "; cin>>score[2]; cout<<"\t\t输入数据库原理与应用分数: "; cin>>score[3]; cout<<"\t\t输入企业认知实践分数: "; cin>>score[4]; cout<<"\t\t输入体测分数: "; cin>>score[5]; e=0; } else { cout<<"\t\t\t无此类型性别! 重新输入! "< e=1; } }while(e); return; } voidinput(ifstream&is) { is>>number>>name>>sex>>place>>nation>>birth>>party>>id >>score[0]>>score[1]>>score[2]>>score[3]>>score[4]>>score[5]; is.get(); } voidoutput() { cout<<"学生基本信息如下: "< cout<<"学号: "< <<"姓名: "< <<"性别: "< <<"籍贯: "< <<"民族: "< <<"生日: "< <<"政治面貌: "< <<"身份证号: "< <<"数据结构与算法: "< <<"信息管理与信息系统: "< <<"ERP原理与应用: "< <<"数据库原理与应用: "< <<"企业认知实践: "< <<"体测: "< <<"总分: "< } voidoutput(ofstream&os) { os< < < < < < < < < < < < < < } }; classschool { public: school(){head=newstudent;head->next=NULL;key=0;} ~school(){deletehead;} voidinput(); voidmend(); voiddel(); intfind(student**p,intnum,char*pn="^"); voidfound(); voidshow(); voidcount(); voidsave(); voidbegin(); voidclear(); charmainmenu(); intgetkey(){returnkey;} voidsetkey(intk){key=k;} private: student*head; intkey; }; //录入函数 voidschool: : input() { student*p,*p2=NULL; p=head; intn; while(p->next) p=p->next; while(n) { p2=newstudent; p2->input(); p->next=p2; p2->next=NULL; p=p->next; school: : setkey (1); cout<<"\t\t\t按1继续,按0返回: "; cin>>n; } } //子查找函数 intschool: : find(student**p1,intnum,char*pn) { student*p; p=head; while(p->next) { (*p1)=p; if((p->next)->getnumber()==num||! strcmp((p->next)->getname(),pn)) return1; p=p->next; } return0; } //查找函数 voidschool: : found() { student*p; intnum=-1,n=9; charname[20]="^"; do { cout<<"\t\t1: 按学号查找,2: 按姓名查找: "; cin>>n; }while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入学号: "; cin>>num; } if(n==2) { cout<<"\t\t\t输入姓名: "; cin>>name; } if(! find(&p,num,name)) { cout<<"\t\t找不到你要查找的内容! "< return; } (p->next)->output(); } //删除函数 voidschool: : del() { student*p,*p2; intnum; cout<<"\t\t\t输入学号: "; cin>>num; if(! find(&p,num,"^")) { cout<<"\t\t找不到你要删除的内容! "< return; } (p->next)->output(); p2=p->next; p->next=p2->next; deletep2; school: : setkey (1); } //显示函数 voidschool: : show() { student*p; p=head; while(p->next) { (p->next)->output(); p=p->next; } } //修改函数 voidschool: : mend() { student*p; intnum=-1,n; charname[20]="^"; do { cout<<"\t\t1: 按学号修改,2: 按姓名修改: "; cin>>n; }while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入学号: "; cin>>num; } if(n==2) { cout<<"\t\t\t输入姓名: "; cin>>name; } if(! find(&p,num,name)) { cout<<"\t\t找不到你要修改的内容! "< return; } (p->next)->output(); (p->next)->input(); school: : setkey (1); } //保存函数 voidschool: : save() { student*p; p=head; ofstreamos("student.txt",ios: : out); if(school: : getkey()==1) { while(p->next) { (p->next)->output(os); p=p->next; } } cout<<"\t\t\t文件已保存! "< school: : setkey(0); } //初始化函数 voidschool: : begin() { student*p,*p2; p=head; clear(); longt; ifstreamis("student.txt",ios: : in); if(! is) { ofstreamos("student.txt",ios: : out); os.close(); return; } intnum=-1; while (1) { num=-1; t=is.tellg(); is>>num; is.seekg(t); if(num<0) { is.close(); return; } p2=newstudent; p2->input(is); p->next=p2; p2->next=NULL; p=p->next; } } //清空函数 voidschool: : clear() { student*p,*p2; p=head->next; while(p) { p2=p; p=p->next; deletep2; } } //统计函数 voidschool: : count() { student*p; p=head; intn=0; doubleg[3]={0,0,0}; floatj[3]={0,0,0}; while(p->next) { p=p->next; n++; for(inti=0;i<3;i++) { g[i]=g[i]+(p->getscore(i)); (p->getscore(i))>=60? j[i]++: 0; } } cout<<"\t\t\b\b\b\b数据结构与算法总分: "< "< <<"及格率: "< "< <<"平均分: "< "< <<"\t\t\b\b\b\bERP原理与应用总分: "< "< <<"及格率: "< <<"\t\t\b\b\b\b数据库原理与应用总分: "< "< <<"及格率: "< "< <<"平均分: "< "< <<"\t\t\b\b\b\b体测总分: "< "< <<"及格率: "< } //主选菜单函数 charschool: : mainmenu() { charn[6]; cout<<"\n\n☆☆☆☆欢迎进入学生管理系统☆☆☆☆"< cout<<"专业: 信息管理与信息系统专业班级: 090509学号: 090509112姓名: 盛韩"< <<"****************************"< <<"****************************"< <<"**1: 录入学生信息**"< <<"**2: 显示设计学生信息**"< <<"**3: 查找学生信息**"< <<"**4: 删除学生信息**"< <<"**5: 修改学生信息**"< <<"**6: 统计学生成绩**"< <<"**7: 保存学生信息**"< <<"**0: 退出系统**"< <<"****************************"< <<"****************************"< <<"请选择: "; cin>>n; returnn[0]; } //主函数 voidmain() { schoolpp; intk=1; charn; pp.begin(); while(k==1) { n=pp.mainmenu(); switch(n) { case'1': pp.input();break; case'2': pp.show();break; case'3': pp.found();break; case'4': pp.del();break; case'5': pp.mend();break; case'6': pp.count();break; case'7': pp.save();break; case'0': if(pp.getkey()==1) { cout<<"\t\t\t是否保存? 1: 保存0: 不保存: "; cin>>k; if(k==1) pp.save(); } pp.clear(); k=0; break; } } } //源程序结束 【设计体会】 做了这个学生学籍管理系统,懂得了很多.明白了做事情都必须要先做好准备.看了有关C++方面的资料,上网找了些程序以作参考.觉得我这个程序的优点在于简单快捷的录入学生信息,并可以进行保存,我加上了学生各科成绩的统计,让学校在查看学生学籍信息的时候可以对学生的成绩一目了然.只需要输入学生的学号或者姓名就可以找到学生的学籍信息,还可以进行修改,保存. 但是存在的缺点就是,当录入的步骤有差错的时候不能够返回,有待完善与提高. 经过这次之后让我懂得一个程序的完善需要平时努力学习,积累知识,之后才可以找到解决方法的.改进方法就是增加个while (1)死循环. 经过这次设计程序之后,让我的逻辑思维,与动手能力都有所提高,使我一步步的向前. 总之,编程尤其是调试是一项细致深入的工作,需要下工夫、动脑子、善于积累经验,这往往能反映出一个人的水平、经验和科学态度。 【参考文献】 朱若愚.数据结构[M].北京: 电子工业出版社,2006.1: 41-65 晋良颍.数据结构[M].北京: 人民邮电出版社,2007.05: 21-45 刘大有.数据结构[M].北京: 高等教育出版社,2006.3: 30-58 赵文静.数据结构与算法[M].北京: 科学出版社,2007.8: 41-64 徐孝凯.数据结构简明教程.[M].北京: 清华大学出版社,2006.04: 102-115 严蔚敏,吴伟民.数据结构(C语言版)[M].北京: 清华大学出版社,2007.4: 39-43 傅清祥,王晓东.数据结构与算法设计[M].北京: 电子工业出版社,2006.3: 31-46 王敬华,林萍,.陈静.C语言程序设计[M].北京: 清华大学出版社,2007.10: 22-39 李云清,杨庆红,揭安全.数据结构(C语言版)[M].北京: 人民邮电出版社,2006.1: 44-67 [10]李春葆.数据结构(C语言版)习题与解析[M].北京: 清华大学出版社,2006.1: 47-55
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 数据结构 课程设计 报告