《面向对象程序设计》专周报告成绩管理系统.docx
- 文档编号:27926621
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:32
- 大小:573.48KB
《面向对象程序设计》专周报告成绩管理系统.docx
《《面向对象程序设计》专周报告成绩管理系统.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》专周报告成绩管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
《面向对象程序设计》专周报告成绩管理系统
成都工业学院
专周报告
课程名称
《面向对象程序设计》
专周题目
学生成绩管理系统
姓名
junlong
班级
1405173
学号
38
指导教师
设计时间
2015-06-29至2015-07-03
成都工业学院计算机工程学院
目录
目录-2-
正文-3-
专周任务与要求-3-
一、任务-3-
二、设计要求-3-
设计说明书-4-
一、需求分析-4-
二、过程分析-4-
三、物理设计(流程图)-5-
四、程序代码-8-
专周体会-22-
参考文献-23-
专周评审意见-24-
Ø专周目的:
制作此学生成绩信息管理系统,更方便管理学生信息和他人查询,给大家带来方便。
Ø专周任务与要求
1、专周任务
用C++语言编写一系统,实现学生信息管理。
2、专周要求
(1)信息维护,要求:
学生信息数据要以文件的形式保存,能实现学生信息数据的维护。
此模块包括子模块有:
以文件形式读入和从键盘输入。
(2)信息查询,要求:
查询时可实现按姓名查询、按学号查询。
(3)成绩统计,要求:
输入任意的一个课程名编码(1、C语言成绩2、数学成绩3、英语成绩)和一个分数段(如60-70),统计出这科在此分数段的学生情况。
(4)排序:
按降序对平均成绩进行排位。
Ø
设计说明书
1、需求分析:
学生基本信息:
如班级、学号、姓名、性别、年龄、宿舍号码、电话号码等。
学生选修课程的基本信息:
课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。
2、过程分析:
3、流程图
1.主页面
2.查询界面
3.文件导入查询界面
4.排序界面
5.统计选择界面
4、程序代码
#include
#include
#include
#include//STL模板,容器,双向链表
#include
#include
usingnamespacestd;
classStudent//定义学生类
{
private:
intnum;//学号
stringname;//姓名
stringsex;//性别
intage;//年龄
stringschool;//学校
floateng;//C语言成绩
floatmath;//数学成绩
floatpe;//体育成绩
floatday;//平时成绩
floattotal;//总成绩
public:
Student(){}//默认的构造函数
Student(intpnum,stringpname,stringpsex,intpage,stringpschool,floatpeng,floatppe,floatpday,floatpmath)//带参数的构造函数
{
num=pnum;
name=pname;
sex=psex;
age=page;
school=pschool;
eng=peng;
pe=ppe;
day=pday;
math=pmath;
}
voidsetNum(intpnum){num=pnum;};//以下8个成员函数都是为了得到学生类的private数据所写的
intgetNum(){returnnum;};
voidsetName(stringpname){name=pname;};
stringgetName(){returnname;};
voidsetSex(stringpsex){sex=psex;};
stringgetSex(){returnsex;};
voidsetAge(intpage){age=page;};
intgetAge(){returnage;};
voidsetSchool(stringpschool){school=pschool;};
stringgetSchool(){returnschool;};
voidsetMath(floatpmath){math=pmath;};
floatgetMath(){returnmath;};
voidsetEng(floatpeng){eng=peng;};
floatgetEng(){returneng;};
voidsetPe(floatppe){pe=ppe;};
floatgetPe(){returnpe;};
voidsetDay(floatpday){day=pday;};
floatgetDay(){returnday;};
voidsetTotal(floatptotal){total=ptotal;};
floatgetTotal()const{returnmath+eng+pe+day;};//原因在于带const修饰符的接口会把this指针转化为为constthis类型。
网上一种解决办法是,把需要调用的非const接口都改为const
};
classDstudent:
publicStudent//定义了一个大学生类
{
private:
stringschool;//学校
stringxibie;//系别
stringprofession;//专业
intteam;//班级
public:
Dstudent(){}
voidsetschool(intpage){xibie=page;};
stringgetAge(){returnxibie;};
voidsetprofession(intpage){profession=page;};
stringgetProfession(){returnprofession;};
voidsetSchool(stringpschool){school=pschool;};
stringgetSchool(){returnschool;};
voidsetMath(floatpmath){team=pmath;};
floatgetMath(){returnteam;};
};
classcourse:
publicStudent//定义了一个课程类
{
private:
intclassnum;//课程编号
stringclassname;//课程名称
stringclasstea;//课程教师
intclassscore;//课程学分
public:
course(){}
voidsetclassnum(intpage){classnum=page;};
intgetclassnum(){returnclassnum;};
voidsetclassname(intpage){classname=page;};
stringgetclassname(){returnclassname;};
voidsetclasstea(stringpschool){classtea=pschool;};
stringgetclasstea(){returnclasstea;};
voidsetclassscore(floatpmath){classscore=pmath;};
intgetclassscore(){returnclassscore;};
};
intTrue=0;//用于判断链表中是否有数据
typedeflist
//listsort()重载函数,自定义排序,bool类型的返回值,1.true2.false
booloperator>(Studentconst&student1,Studentconst&student2)
{
returnstudent1.getTotal()>student2.getTotal();
}
classStudentManager//定义了一个管理学生信息的类
{
private:
LinkListll;//list
public:
StudentManager(){}//默认构造函数
voidStudentAdd(Studentstudent)//添加学生信息
{
ll.push_back(student);
True=1;//用于判断链表中是否有数据
}
voidStudentPrint()//显示学生信息
{
system("cls");//清屏
intcount=0;
LinkList:
:
iteratori;//对链表进行遍历
cout<<"\n\n";
for(i=ll.begin();i!
=ll.end();i++)
{
cout<<"学号:
"< (2)< "< cout<<"性别: "< (2)< "< (2)< cout<<"学校: "< "< cout<<"数学成绩: "< "< cout<<"平时成绩: "< "< count++; } cout<<"\n学生总人数为: "< } voidWriteFile()//保存到文件 { LinkList: : iteratori; ofstreamoutfile("student.txt",ios: : app);//新建一个“student.txt”文件 if(! outfile)//默认的是打开成功返回1 { cout<<"outfile打开失败01"; } for(i=ll.begin();i! =ll.end();i++) { outfile< < < } outfile.close();//关闭文件 cout<<"保存成功! "< } voidStudentDelete(intpnum)//删除学生信息 { LinkList: : iteratori; intyes_no=0; for(i=ll.begin();i! =ll.end();i++) { while(i->getNum()==pnum) { i=ll.erase(i);//删除该节点 yes_no=1; } } if(yes_no) cout<<"删除成功! "< else cout<<"没有找到该学生信息! "< } voidStudentSelectname(stringpname)//查找学生信息(按姓名) { intyes_no=0;//用于判断该学生是否存在 LinkList: : iteratori; system("cls"); for(i=ll.begin();i! =ll.end();i++) { while(i->getName()==pname) { cout<<"存在此学生! "< cout<<"此学生的信息为: \n"< cout<<"学号: "< (2)< "< cout<<"性别: "< (2)< "< (2)< cout<<"学校: "< "< cout<<"数学成绩: "< "< cout<<"平时成绩: "< "< yes_no=1; break; } } if(! yes_no) cout<<"不存在此学生! "< } voidStudentSelectnum(intpnum)//查找学生信息(按学号) { intyes_no=0;//用于判断该学生是否存在 LinkList: : iteratori; system("cls"); for(i=ll.begin();i! =ll.end();i++) { while(i->getNum()==pnum) { cout<<"存在此学生! "< cout<<"此学生的信息为: \n"< cout<<"学号: "< (2)< "< cout<<"性别: "< (2)< "< (2)< cout<<"学校: "< "< cout<<"数学成绩: "< "< cout<<"平时成绩: "< "< yes_no=1; break; } } if(! yes_no) cout<<"不存在此学生! "< } voidReadFile()//从文件读取学生信息 { Studentstudent; LinkList: : iteratori; intnum; stringname; stringsex; intage; stringschool; floateng; floatmath; floatpe; floatday; floattotal; ifstreaminfile("student.txt",ios: : in);//输入文件数据 if(infile)//输入成功默认返回1 { //将文件中的数据依次存入链表中 while(infile>>num>>name>>sex>>age>>school>>eng>>math>>pe>>day>>total) { student.setNum(num);//单个进行赋值 student.setName(name); student.setSex(sex); student.setAge(age); student.setSchool(school); student.setEng(eng); student.setMath(math); student.setPe(pe); student.setDay(day); student.setTotal(total); ll.push_back(student);//将链表串起来 } cout<<"导入文件成功! ! "< True=1;//用于判断链表中是否有数据 } else { cout<<"导入文件失败! ! "< } infile.close();//关闭文件 } voidStudentCppeng()//统计学生成绩(C语言成绩) { floatmin,max;//分数段 intcount=0;//人数计数器 LinkList: : iteratori; cout<<"请输入您要查询分段的最低分: (C语言)"< cin>>min; cout<<"请输入您要查询分段的最高分: (C语言)"< cin>>max; for(i=ll.begin();i! =ll.end();++i) { while(i->getEng()<=max&&i->getEng()>=min) { count++; break; } } cout<<"在此分数段的学生有"< } voidStudentCppmath()//统计学生成绩(数学成绩) { floatmin,max;//注释和StudentCppeng类似 intcount=0; LinkList: : iteratori; cout<<"请输入您要查询分段的最低分: (数学)"< cin>>min; cout<<"请输入您要查询分段的最高分: (数学)"< cin>>max; for(i=ll.begin();i! =ll.end();++i) { while(i->getMath()<=max&&i->getMath()>=min) { count++; break; } } cout<<"在此分数段的学生有"< } voidStudentCpptotal()//统计学生成绩(总成绩) { floatmin,max;//注释和StudentCppeng类似 intcount=0; LinkList: : iteratori; cout<<"请输入您要查询分段的最低分: (总成绩)"< cin>>min; cout<<"请输入您要查询分段的最高分: (总成绩)"< cin>>max; for(i=ll.begin();i! =ll.end();++i) { while(i->getTotal()<=max&&i->getTotal()>=min) { count++; break; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 周报 成绩管理系统