面向对象程序设计+课程设计报告1.docx
- 文档编号:12265454
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:35
- 大小:259.21KB
面向对象程序设计+课程设计报告1.docx
《面向对象程序设计+课程设计报告1.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计+课程设计报告1.docx(35页珍藏版)》请在冰豆网上搜索。
面向对象程序设计+课程设计报告1
面向对象程序设计课程设计
学生学籍管理系统
院系:
计算机科学技术学院二系
班级:
计11–1班
姓名:
梁娟(20号)
合作者:
田媛媛迟苗苗
指导教师:
薛曼玲
2012年7月06日
面向对象程序设计课程设计任务书
一、题目:
学生学籍管理系统
二、设计要求
(1)梁娟(组长)、田媛媛和迟苗苗组成设计小组。
(2)小组成员分工协作完成,要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。
(3)查阅相关资料,自学具体课题中涉及到的新知识。
(4)根据实现的功能,划分出合理的对象类,明确对象类间的关系。
为每个对象类设计正确的属性和方法,为每个方法设计合理的方法体。
(5)编程简练,程序功能齐全,能正确运行。
(6)课题完成后提交课程设计报告,格式规范,内容详实。
其主要内容包括:
1-封皮、2-课程设计任务书,3-指导教师评语与成绩、4-目录、5-需求分析、6-概要设计、7-详细设计(含主要代码)、8-调试分析与测试结果、9-用户使用说明、10-附录或参考资料。
报告用A4纸打印,中文字体为宋体,西文字体用TimeNewRoma,小四号字,行距采用“固定值”18磅,首行缩进2字符。
(7)课程设计报告内容的说明:
需求分析-分析课题需要实现的功能以及要用到的知识点,分析课题涉及的对象间的关系;概要设计-根据实现的功能,划分出合理的对象类,明确对象类间的关系;为每个对象类设计正确的属性和方法,为每个方法设计合理的方法体;详细设计-具体的类、对象和功能的实现以及主要程序代码;调试分析与测试结果-用多组测试用例调试分析系统的正确性、完备性等各项性能指标,写出测试结果;用户使用说明-编写该系统的使用说明书;附录或参考资料-完整的程序代码以及查阅资料的参考文献。
三、课程设计工作量
由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。
四、课程设计工作计划
2012年6月25日,指导教师讲课,学生根据题目准备资料;
2012年6月26日、27日、28日,设计小组进行总体方案设计和任务分工;每人完成自己承担的程序模块并通过独立编译;
2012年6月29日~2012年7月5日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;同时撰写报告。
2012年7月6日,验收;提交课程设计报告。
指导教师签章:
教研室主任签章
面向对象程学设计课程设计指导教师评语与成绩
指导教师评语:
课程设计表现成绩:
课程设计验收成绩:
课程设计报告成绩:
课程设计总成绩:
指导教师签章
2012年7月6日
第1章需求分析4
1.1性能需求4
1.2功能需求4
第2章概要设计5
2.1功能模块设计5
2.2类的分析与设计7
第3章程序设计9
3.1录入函数9
3.2查找函数9
3.3删除函数10
3.4显示函数11
3.5修改函数11
3.6保存函数12
3.7统计函数13
第4章用户使用说明14
第5章程序清单14
参考文献26
第1章需求分析
1.1性能需求
系统软件环境:
MicrosoftVisualC++6.0,即利用网上资料查询。
1.2功能需求
需求分析-分析课题需要实现的功能以及要用到的知识点,分析课题涉及的对象间的关系;
要开发学生成绩数据管理程序,首先要分析改程序应实现哪些功能。
对学生成绩管理系统程序的功能需求可描述如下:
程序运行后显示程序运行后显示学生成绩管理系统的操作界面,操作界面中有8项操作,分别有1:
录入学生信息2:
显示学生信息3:
查找学生信息4:
删除学生信息5:
修改学生信息6:
统计学生成绩7:
保存学生信息0:
退出系统这8个操作是学生成绩系统要实现的功能。
实现基本的学生成绩数据管理,如:
具有建立文件,读取文件和保存记录的功能,并可增加、显示、修改、删除、查询学生记录的功能,并能对学生成绩进行统计.其中数据的查找、数据的删除又可通过不同的方式如按学号或姓名等进行操作。
第2章概要设计
2.1功能模块设计
Show( )函数:
所运用的几个模块整体上有个统一认识,方便了对程序的调用,节省了时间。
显示主菜单功能。
del( )函数:
该函数实现的是删除功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的删除所选的目标
output()函数
该函数是一个输出函数,它运用了for循环语句,本程序定义了两个变量,通过scanf语句的使用,又调用了函数SIR,实现了简洁明了的对学生成绩,姓名以及学号等进行输出
Input( )函数:
该函数是一个输入函数,它运用了for循环语句,本程序定义了两个变量,通过scanf语句的使用,又调用了函数SIR,实现了简洁明了的对学生成绩,姓名以及学号等进行键入。
found()函数
该函数实现的是查找功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的查找所选的目标
mend()函数
该函数实现的是修改功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的修改所选的目标
2.2类的分析与设计
此程序主要包含一个类student用来.对学生相关学籍信息的描述.
School.数据成员number;name.sex.place.nation.Birth.party.id.score
Number学生学号.Name学生姓名sex学生性别place学生籍贯nation民族
Classstudent
{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]);}
classschool
{
public:
school(){head=newstudent;head->next=NULL;key=0;}
~school(){deletehead;}
voidinput();
voidmend();
voiddel();
intfind(student**p,intnum,char*pn="^");
voidfound();
voidshow();
第3章程序设计
3.1录入函数
本段函数通过链表尾插法录入学生的信息,通过while函数的使用,可以实现连续输入学生信息
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;
}
3.2查找函数
该函数实现的是查找功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的查找所选的目标
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();/ 3.3删除函数 该函数实现的是删除功能。 该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的删除所选的目标 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); } 3.4显示函数 所运用的几个模块整体上有个统一认识,方便了对程序的调用,节省了时间。 显示主菜单功能。 此函数主要是遍历整个链表,用来输出ZG类链表中的所有结点,就是所有职工信息。 voidschool: : show() { student*p; p=head; while(p->next) { (p->next)->output(); p=p->next; } } 3.5修改函数 该函数实现的是修改功能。 该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的修改所选的目标 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); } } 3.6保存函数 通过链表访问学校类中的信息并进行保存,其中还用while函数实现这一过程 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); } 3.7统计函数 通过使用链表访问shool类并使用while循环实现了这一统计 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\b面向对象程序设计总分: "< "< <<"及格率: "< <<"\t\t\b\b\b\b大学物理总分: "< "< <<"及格率: "< "< <<"平均分: "< "< <<"\t\t\b\b\b\b大学体育总分: "< "< <<"及格率: "< 第4章用户使用说明 系统功能说明: 1录入: 作用: 用于对学生学籍信息进行输入,并保存. 方法: 先输入学生学籍信息,然后录入,最后按enter结束.你所录入的文字 就给保存到该文件里! 2显示 输入学生学号,或者姓名可以显示学生的学籍信息 3查找: 有两种,一种按学号,一种按姓名. 4删除 输入需要删除的学生的学号,或者姓名 5修改 输入需要修改的学生的学号,或者姓名 6统计: 作用: 用于对学生学习成绩进行统计 方法: 输入学生学号,或者姓名.然后按确定 7保存 . 按7,并按确定,可以保存学生学籍信息 0退出: 作用: 退出整个"学生学籍管理系统"; 方法: 按0并按确定. 第5章程序清单 #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输入面向对象程序设计分数: "; 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<<"学号: "< <<"姓名: "< <<"性别: "< <<"籍贯: "< <<"民族: "< <<"生日: "< <<"政治面貌: "< <<"身份证号: "< <<"高数: "< <<"大学英语英语: "< <<"面向对象程序设计: "< <<"大学物理: "< <<"线性代数: "< <<"大学体育: "< <<"总分: "< } 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; }; //主选菜单函数 charschool: : mainmenu() { charn[6]; cout<<"\n\n☆☆☆☆Welcometothestudentmanagementsystem☆☆☆☆"< cout<<"作者: 计11-1班田媛媛梁娟迟苗苗"< <<"****************************"< <<"****************************"< <<"**1: 录入学生信息**"< <<"**2: 显示学生信息**"< <<"**3: 查找学生信息**"< <<"**4: 删除学生信息**"< <<"**5: 修改学生信息**"< <<"**6: 统计学生成绩**"< <<"**7: 保存学生信息**"< <<"**0: 退出系统**"< <<"****************************"< <<"****************************"< <<"请选择: "; cin>>n; returnn[0]; } //录入函数 voidschool: : input() { student*p,*p2=NULL; p=head; intn; while(p->next) p=p->next; while(n) { p2=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)