学籍管理系统课程设计报告书.docx
- 文档编号:23005464
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:42
- 大小:484.78KB
学籍管理系统课程设计报告书.docx
《学籍管理系统课程设计报告书.docx》由会员分享,可在线阅读,更多相关《学籍管理系统课程设计报告书.docx(42页珍藏版)》请在冰豆网上搜索。
学籍管理系统课程设计报告书
xxxxx大学信息科学与工程学院
课程设计报告书
专业:
计算机科学与技术
课程设计名称:
《面象对象程序设计课程设计》
题目:
学籍管理系统
班级:
设计者:
学号:
指导教师:
完成时间:
重庆交通大学计算机与信息学院课程设计任务书
课程
C++面向对象程序设计
班级
指导教师
题目
学籍管理系统
完成时间
2012.06.18-2012.06.29
主要内容
要求完成以下功能:
1.能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
2.能够将指定的信息从文件中删除。
3.能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
4.可以统计全部学生的总成绩,及其在班上的排名。
5.能够统计各科的平均成绩及及格率。
6.要求有错误提示功能,例如性别只能输入“男”、“女”,成绩为百分制输入错误提示重新输入。
7.如果检索不到相应的信息应提示用户。
8.主要操作采用菜单方式。
设计报告要求
1.封面
2.课程设计任务书
3.课程设计报告:
⑴系统总体方案
⑵设计思路和主要步骤
⑶各功能模块和流程图
⑷主要代码
⑸测试说明
⑹心得体会和参考资料
⑺说明
Ø学生完成课程设计后,提交课程设计报告及软件;
Ø设计报告要求文字通畅,排版规范;
Ø设计报告文字不少于5000字,并装订成册。
版面要求
1.题目用黑体三号,段后距18磅(或1行),居中对齐;
2.标题用黑体四号,段前、段后距6磅(或0.3行);
3.正文用小四号宋体,行距为固定值“20”;
4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。
上机时间安排
星期
周次
一
二
三
四
五
六
日
第17周
2-7
2-7
2-7
2-7
第18周
2-7
2-7
2-7
2-7
2-7
指导时间地点
上机时间:
双福校区信息技术实验室
第一部分
系统总体方案
1.1系统设计的意义
1.2系统功能需求
(1)完成要求的功能
(2)系统功能流程图
(3)问题的解决方案
(4)输入输出要求
第二部分
设计思路和主要步骤
1.1系统功能结构图
1.2系统功能分析
(1)类的设计
第三部分
各功能板块和流程图
1.1功能模块实现设计
1.2流程图
第四部分
主要代码
第五部分
测试说明
第六部分
心得体会
第七部分
参考资料
第八部分
源文件
一.系统总体方案
(一).系统设计的意义:
系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。
(二).系统功能需求(系统流程图)
1.要求完成以下功能:
(1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
(2)能够将指定的信息从文件中删除。
(3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
(4)可以统计全部学生的总成绩,及其在班上的排名。
(5)能够统计各科的平均成绩及及格率。
(6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
(7)如果检索不到相应的信息应提示用户。
2.系统功能流程图
3、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)写出需求分析(做什么)
(2)分析系统中的各个实体之间的关系及其属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)用户界面的设计
(7)分析系统功能模块(系统流程图)
(8)代码编写
(9)功能调试;
(10)完成系统总结报告以及系统使用说明书。
4.输入输出的要求
(1)输入的要求:
通过主函数体调用其他函数应用系统主控界面包括学生信息录入,查找等功能模块。
学生信息录入功能完成学生信息和成绩的输入。
记录查询功能可以对数据各分类的记录进行查询。
(2).输出的要求:
1)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
2)可以统计全部学生的总成绩,及其在班上的排名。
3)能够统计各科的平均成绩及及格率。
4)如果检索不到相应的信息应提示用户
设计思路和主要步骤
1.系统功能结构图
2.系统功能分析
能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
能够将指定的信息从文件中删除。
能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
可以统计全部学生的总成绩,及其在班上的排名。
能够统计各科的平均成绩及及格率。
要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
如果检索不到相应的信息应提示用户。
1.类设计:
类:
student
数据成员
编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩
classstudent
{
protected:
intnumber;//学号
charname[20];//姓名
charsex[6];//性别
charplace[20];//籍贯
charnation[6];//民族
charbirth[20];//出生日期
charparty[10];//政治面貌
charid[20];//身份证号
floatscore[3];//成绩
类:
school
成员函数
录入函数input():
逐步输入学生信息;
修改函数mend():
按姓名或编号修改学生信息;
统计函数count():
统计各科的总成绩,计算平均成绩,统计各科的及格率;
查找函数found():
按学号或姓名查找学生的记录;
修改函数mend():
修改指定学号学生成绩记录;
删除函数del():
删除指定学号学生记录;
输出函数show():
输出班级所有学生成绩记录;
classschool
{
voidinput();//录入函数
voidmend();//修改函数
voiddel();//删除函数
intfind(student**p,intnum,char*pn="^");//子查找函数
voidfound();//查找函数
voidshow();//显示函数
voidcount();//统计函数
voidsave();//保存函数
voidbegin();//初始化函数
voidclear();//清空函数
charmainmenu();//主菜单函数
各功能模块和流程图
1.功能模块实现设计
通过主窗体调用其他窗体。
应用系统主控界面包括学生信息录入,查找等功能模块。
学生信息录入功能完成学生信息和成绩的输入。
记录查询功能可以对数据各分类的记录进行查询。
具体举例如下:
1)查找函数:
voidschool:
:
found()
{
student*p;
intnum=-1,n=9;
charname[20]="^";
do
{
cout<<"1:
按编号查找,2:
按姓名查找:
";
cin>>n;
}while(n<1||n>2);
if(n==1)
{
cout<<"请输入编号:
";
cin>>num;
}
if(n==2)
{
cout<<"请输入姓名:
";
cin>>name;
}
if(!
find(&p,num,name))
{
cout<<"SORRY!
找不到你要查找的内容!
"< return; } (p->next)->output(); } 2)删除函数 voidschool: : del() { student*p,*p2; intnum; cout<<"请输入编号: "; cin>>num; if(! find(&p,num,"^")) { cout<<"SORRY! 找不到你要删除的内容! "< return; } (p->next)->output(); p2=p->next; p->next=p2->next; deletep2; school: : setkey (1); } 2.流程图 主要代码 //主函数 #include"student.h" voidmain() { schoolp; intk=1; charn; p.begin(); while(k==1) { n=p.mainmenu(); switch(n) { case'1': p.input();break; case'2': p.show();break; case'3': p.found();break; case'4': p.del();break; case'5': p.mend();break; case'6': p.count();break; case'7': p.save();break; case'0': if(p.getkey()==1) { cout<<"\t\t\t是否保存? 1: 保存0: 不保存: "; cin>>k; if(k==1) p.save(); } p.clear(); k=0; break; } } } classstudent { protected: intnumber;//学号 charname[20];//姓名 charsex[6];//性别 charplace[20];//籍贯 charnation[6];//民族 charbirth[20];//出生日期 charparty[10];//政治面貌 charid[20];//身份证号 floatscore[3];//成绩 public: student*next; student(){} ~student(){} char*getname() { returnname; } intgetnumber() { returnnumber; } floatgetscore(inti) { returnscore[i]; } floatgetg(){return(score[0]+score[1]+score[2]);} //录入信息 voidinput() { inte=1; cout<<"按提示输入: "< cout<<"请输入学号: "; cin>>number; cout<<"请输入姓名: "; cin>>name; do { cout<<"请输入性别: "; cin>>sex; if(strcmp(sex,"男")==0||strcmp(sex,"女")==0) { cout<<"请输入籍贯: "; cin>>place; cout<<"请输入民族: "; cin>>nation; cout<<"请输入生日: "; cin>>birth; cout<<"请输入政治面貌: "; cin>>party; cout<<"请输入身份证号: "; cin>>id; while (1) { cout<<"请输入数学分数: "; cin>>score[0]; if(score[0]>=0&&score[0]<=100) break; else { cout<<"成绩为百分制,请重新出入\n"; } } while (1) { cout<<"请输入英语分数: "; cin>>score[1]; if(score[1]>=0&&score[1]<=100) break; else { cout<<"成绩为百分制,请重新出入\n"; } } while (1) { cout<<"请计算机数学分数: "; cin>>score[2]; if(score[2]>=0&&score[2]<=100) break; else { cout<<"成绩为百分制,请重新出入\n"; } } e=0; } else { cout<<"无此类型性别! 重新输入! "< e=1; } }while(e); return; } 测试说明 1.首页进入学籍管理系统主菜单 2录入学生信息界面 3.显示学生信息界面: 4.查找学生信息界面: 5.删除学生信息界面: 6.修改学生信息: 7.统计学生信息 心得体会和参考资料 此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。 首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。 程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。 系统在调试过程中出现了很多问题。 其中出现的乱码的情况在程序调试的初始阶段并未发现,最后当显示信息时发现,但不知如何解决。 通过向老师和同学的请教后得到了改正: 首先在定义学生类时加boolinput_y_n,同时把构造函数student(){}变成student(){input_y_n=false},再将录入函数中加上input_y_n=true;在显示函数中加入if(input_y_n==false){cout<<"没有信息! ";return;},这样解决了显示函数出现的乱码问题。 还有在统计函数中,调试过程中英语成绩显示的全部为0,经过向同学询问后得知(p->getscore(i))>=60? i++: : 0;语句在执行时,如果上一个成绩大于60则跳过下一个语句继续执行,也就是如果先执行的数学成绩大于60,那么英语的成绩便跳过执行,将此语句改为j[i]++后,解决了此问题。 这两个问题只是在整个系统调试过程中的其中之一。 此次实验让我深刻体会到面向对象程序设计的基本概念: 将数据及操作当成一个整体。 体现了它的主要思想是把一些具有相同数据特性的实例抽象成为一个类,通过对类的定义和类的使用(即对象的使用)实现对实例的使用的。 同时很好的体现了面向对象程序设计最主要的优点: 软件的可重用性和面向对象程序设计最重要的概念: 类与对象。 根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。 理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。 我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。 参考资料 《c++语言程序教程(第二版)》清华大学出版社 《c++面向对象程序设计(第二版)》中国铁道出版社 《面向对象程序设计实验指导》 新浪博客 豆丁网 源程序 #include #include #include #include classstudent { boolinput_y_n; protected: intnumber;//学号 charname[20];//姓名 charsex[6];//性别 charplace[20];//籍贯 charnation[6];//民族 charbirth[20];//出生日期 charparty[10];//政治面貌 charid[20];//身份证号 floatscore[3];//成绩 public: student*next; student(){input_y_n=false;} ~student(){} char*getname() { returnname; } intgetnumber() { returnnumber; } floatgetscore(inti) { returnscore[i]; } floatgetg(){return(score[0]+score[1]+score[2]);} //录入信息 voidinput() {//////////////////////////////////////////////////// input_y_n=true; inte=1; cout<<"按提示输入: "< cout<<"请输入学号: "; cin>>number; cout<<"请输入姓名: "; cin>>name; do { cout<<"请输入性别: "; cin>>sex; if(strcmp(sex,"男")==0||strcmp(sex,"女")==0) { cout<<"请输入籍贯: "; cin>>place; cout<<"请输入民族: "; cin>>nation; cout<<"请输入生日: "; cin>>birth; cout<<"请输入政治面貌: "; cin>>party; cout<<"请输入身份证号: "; cin>>id; while (1) { cout<<"请输入数学分数: "; cin>>score[0]; if(score[0]>=0&&score[0]<=100) break; else { cout<<"成绩为百分制,请重新出入\n"; } } while (1) { cout<<"请输入英语分数: "; cin>>score[1]; if(score[1]>=0&&score[1]<=100) break; else { cout<<"成绩为百分制,请重新出入\n"; } } while (1) { cout<<"请输入计算机分数: "; cin>>score[2]; if(score[2]>=0&&score[2]<=100) break; else { cout<<"成绩为百分制,请重新出入\n"; } } e=0; } else { cout<<"无此类型性别! 重新输入! "< e=1; } }while(e); return; } voidinput(ifstream&is) { is>>number>>name>>sex>>place>>nation>>birth>>party>>id >>score[0]>>score[1]>>score[2]; is.get(); } //显示信息 voidoutput() { if(input_y_n==false){cout<<"没有信息! ";return;} cout<<"学生基本信息如下: "< cout<<"学号: "< <<"姓名: "< <<"性别: "< <<"籍贯: "< <<"民族: "< <<"生日: "< <<"政治面貌: "< <<"身份证号: "< <<"数学成绩: "< <<"英语成绩: "< <<"计算机成绩: "< <<"总分: "< } 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<<"按1继续,按0返回: "; cin>>n; } } //子查找函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学籍 管理 系统 课程设计 报告书