用两个结构和两个类做的学生成绩管理课程设计查询c++课程设计

数据结构课程设计-学生成绩管理系统(C++)学生选课系统课程设计学生选修课程系统设计-果绿网
数据结构课程设计-学生成绩管理系统(C++)
数据结构课程设计-学生成绩管理系统(C++)_工学_高等教育_教育专区。数据结构课程设计-学生成绩管理系统(C++)课程设计(论文)任务书软 件学院学院专业班 一、课程设......
课程设计(论文)任务书
软 件 学 院
学 院 专 业班
一、课程设计(论文)
学 生 成 绩 管 理 系 统 的 设 计 与 实 现
二、课程设计(论文)工作自日起至日止
三、课程设计(论文) 地点:
创 新 大 楼 机 房
四、课程设计(论文)内容要求:
1.本课程设计的目的 ⑴训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据
结构理论知识,编写程序求解指定问题; ⑵初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基
本方法和技能; ⑶提高综合运用所学的理论知识和方法独立分析和解决问题的能力,巩
固、深化学生的理论知识,提升编程水平。
2.课程设计的任务及要求
1)基本要求: ⑴要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过
设计实现抽象数据类型、编写上机程序和上机调试等若干步骤完成题目,
最终写出完整的报告;
⑵在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率;
⑶程序设计语言推荐使用C/C++,程序书写规范,源程序需必要的注释;
⑷每位同学需提交可独立运行的程序和规范的课程设计报告。
2)课程设计论文编写要求 ⑴理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论
文标准格式进行书写和装订; ⑵课程设计报告(论文)包括中文目录、设计任务、需求分析、概要设
计、详细设计、编码实现、调试分析、总结、谢辞、参考文献、附录等;
⑶设计部分应包含系统功能模块图,调试分析应包括运行截图等。
3)课程设计评分标准:
⑴学习态度:10分;
⑵系统设计:20分;
⑶编程调试:20分;
共50页(1/50)
数据结构课程设计 学生成绩管理系统_计算机软件及应用_IT/计算机_专业资料。任务...开发环境:vc++6.0 实现目标:(1) 熟悉的运用 c 语言程序编写代码。 (2) ......数据结构课程设计-学生成绩管理系统(C++)_工学_高等教育_教育专区。数据结构课程设计-学生成绩管理系统(C++)课程设计(论文)任务书软 件学院学院专业班 一、课程设......数据结构课程设计 学生成绩管理系统_管理学_高等教育_教育专区。课程设计报告 ]...数据结构课程设计-《学生成绩管理系统》《参考版》_计算机软件及应用_IT/计算机_...C 语言程序设计教程(第二版). 北京:人民邮 电出版社 2009 [2] 刁成嘉 . ......数据结构课程设计报告-学生成绩管理系统[1] (1)_管理学_高等教育_教育专区。武汉理工大学华夏学院 课程设计报告书课程名称: 数据结构课程设计 题系 目:用 C ......数据结构课程设计报告-学生成绩管理系统_IT/计算机_专业资料。自己做的学生成绩管理系统,C语言实现,代码完整,VC上可运行数据结构课程设计报告 目 录 一、问题描述.......数据结构课程设计学生成绩管理系统_计算机软件及应用_IT/计算机_专业资料。这是...c[])//按名字查找 { student *p=s-> while(strcmp(p->name,c)!=......题目2. 学生信息管理系统一、课程设计目的 1. 数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构, 以及程序设计语言(C 语言) ,自行实现一个较为......学生成绩管理系统数据结构_管理学_高等教育_教育专区。洛阳理工学院 课程设计报告...数据结构课程设计-学生成绩管理系统_管理学_高等教育_教育专区。大 ...(4)学生成绩管理系统测试数据表 class_0 num name elec c_prog media eng ......
新安晚报广告代理
新安晚报广告代理_广告/传媒_人文社科_专业资料。安徽日报报业集团主办的一份地区...新安晚报广告代理_广告/传媒_人文社科_专业资料。新安晚报安徽日报报业集团主办的...新安晚报广告部-新安晚报广告刊例_广告/传媒_人文社科_专业资料。新安晚报广告部...新安晚报广告代理 4页 免费
新安晚报版面价格 3页 免费
新安晚报优势 6页 ......《新安晚报》发稿报价_报纸软文刊登投放服务公司_《新安晚报》广告发布费用_报纸广告代理代发中心_广告/传媒_人文社科_专业资料。《新安晚报》发稿报价_报纸软文刊登......安徽商报广告代理_广告/传媒_人文社科_专业资料。《安徽商报》是由安徽日报报业...新安晚报合肥晚报安徽商报安徽日报江淮晨报大江晚报芜湖日报 山东媒体:齐鲁晚报半岛......报纸广告代理:华西都市报、成都商报、成都晚报等 重庆报纸广告代 安徽报纸广告代理 新安晚报、 纸广告代理: 理:重庆晚报、重庆商报、重庆晨报等 安徽报纸广告代理:......等 四川报纸广告代理:华西都市报、成都商报、成都晚报等 重庆报纸广告代 理:重庆晚报、重庆商报、重庆晨报等 安徽报纸广告代理:新安晚报、合肥晚 重庆晚报、重庆商报......报纸广告代理:华西都市报、成都商报、成都晚报等 重庆报纸广告代 安徽报纸广告代理 新安晚报、 纸广告代理: 理:重庆晚报、重庆商报、重庆晨报等 安徽报纸广告代理:......四川报纸广告代理:华西都市报、成都商报、成都晚报等 重庆报纸广告代 安徽报纸广告代理:新安晚报、 理:重庆晚报、重庆商报、重庆晨报等 安徽报纸广告代理:新安晚报、......2015老博会广告招商方案_临床医学_医药卫生_专业资料...共有 代理商 合肥 标准展位1000个,特装展位 200个...《新安晚报》《安徽商报》等(价值10万元); ◇以及......&C++简单学生成绩管理系统(C++课程设计)
秒后自动跳转到登录页
(奖励5下载豆)
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
视频课程推荐
C++简单学生成绩管理系统(C++课程设计)
上传时间:
技术分类:
资源评价:
(1位用户参与评价)
已被下载&52&次
滚刀哥个个都滚刀哥冯绍峰事发时
本资料共包含以下附件:
C++简单学生成绩管理系统(C++课程设计).doc
(1位用户参与评价)
down友评价
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
下载1902次
相关专题推荐
本专题收录Java经典编程的实例源码,
在国内的开发语言中,java凭借这简单
本套视频教程是韩顺平老师,循序渐进
北京圣思园张龙(风中叶)老师的Java
讲述Arm嵌入式Linux系统下的C语言编程
这段视频是从尚学堂科技的教学课堂上
本套视频共78集,是由郝斌老师根据多
本视频专题共180集涵盖了C语言概述中
本视频专题共107集涵盖了Java概述、数
由传智播客毕向东老师讲解的Java基础
本专题为spring视频教程,共31集。教
本专题为C语言黑客编程系列视频教程,
本专题为韩顺平讲解的Java从入门到精
本专题为Java Web项目开发案例精粹视
SSH为struts+spring+hibernate的一个
本专题为疯狂Java李刚老师讲解的Stru
意见或建议:
联系方式:
您已提交成功!感谢您的宝贵意见,我们会尽快处理C++课程设计报告总结
C++课程设计报告
学院:计算机学院
班级:计科141班
姓名:刘建伟
指导老师:王璐
C++课程设计实验报告
学号: 班级:计科141 姓名:刘建伟
一、课程设计目的及要求
1、设计目的
计算机专业所开设的C++课程设计是教学实践环节中一项重要内容,进行此课程设计的旨在:
1.提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。
2.培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。
3.学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。
本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,书写课程设计报告。
2、设计要求
1.设计一个复数类CComplex (15分)
l 私有成员为,实部和虚部
l 采用指针存储动态数组方式存储n个复数信息。
l 重载“>>”、“<<”操作,实现直接输入/输出复数。
l 重载“&#43;”、“-”操作,实现两个复数相加、减。
l 重载“&#43;”、“-”操作,实现一个复数与一个实数相加、减,且满足交换律。
l 重载“=”操作,实现两个复数赋&#20540;。
l 重载[]操作直接获得第i个复数。
l 设计显示函数Display(CComplex*),输出数组中所有复数
2 .定义一个CPerson类及其派生类:学生类CStudent和教师类CTeacher。(25分)
CPerson类私有数据成员:身份ID(char*),姓名(char *),性别(枚举类型Tsex),生日(日期类CBirthday)。成员函数:CPerson()和~CPerson();其中,若对象缺省则为ID(“”),姓名(空串),性别(man),生日();input():用于录入人员信息;displayP():用于显示人员信息。
学生类CStudent私有数据成员:班级名(char*),学号(char*),课程(包括课程名和成绩,可以用一个结构体实现。假定有8门课,则定义一个8元素的结构体数组);成员函数:构造函数和析构函数,若对象缺省则为学号(“”),班级名(空串),课程(课程名空,成绩-1);input():用于录入学生信息;inputCourse():用于录入课程信息(这里指录入8门课的名称,即课程名);displayS():用于显示学生信息。
教师类CTeacher私有数据成员:职称(String类),工号(String类),所在部门(String类),教授课程(课程名、课程号)。成员函数:构造函数和析构函数,若对象缺省则为工号(“”),职称(空串),所在部门(空串),课程(课程名空,课程号“000000”);input():用于录入教师相关信息;SetScore():用于录入学生课程成绩信息(设有一个10人的学生对象数组,则依次访问该数组的每个学生,针对每个修这门课程的学生,录入该门课的成绩。);DispScore():用于显示指定或所有学生课程成绩信息;SortScore():用于对所有学生课程成绩排序;SetedStuScore():用于修改指定学生课程成绩信息;displayT():用于显示教师信息。
1. 采用文件流方式存储学生信息和教师信息。
2. 要求从键盘上录入10名学生信息(包括8门课程成绩),4名教师信息(每名老师至少上一门课,,注意与学生课程的对应性,假设课程不重复)。上述各类函数至少运行一次。
设计抽象类:几何图形类 (20分)
l 派生类:长方形类(能定义长方体\正方体)、圆类(能定义圆柱\圆锥对象)、三角形类(能定义三棱锥)。
l 设计函数:设计成员函数,计算平面图形和立体图形的周长、面积、或表面积与体积;定义重载函数分别比较不同图形的面积,或表面积。
l 设计要求:各种图形的边长(半径)或棱长必须大于或等于0,且满足各种图形的对应特征,参数为边长或半径或棱长,在不同派生类实现上述函数;在不同类中如果参数超出范围则抛出字符串异常。
4. 职工信息管理(30分)
a.问题描述(功能要求):
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作&#61558;
(2)职工信息录入功能(职工信息用文件保存)--输入&#61558;
(3)职工信息浏览功能--输出&#61558;
(4)查询和排序功能:(至少一种查询方式)--算法&#61558;
按工资查询
按学历查询等
(5)职工信息删除、修改功能(任选项)&#61558;
b.问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和方法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)完成系统总结报告以及系统使用说明书。
c.其它要求:
(1)只能使用C/C&#43;&#43;语言,源程序要有适当的注释,使程序容易
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块。
5. 成绩记录簿(30分)
1.问题描述(功能要求):
编制一个C&#43;&#43;语言成绩记录簿,每个学生信息包括:学号、姓名、C&#43;&#43;语言成绩。具体功能:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的成绩;
(3)按学号或姓名查询成绩;
(4)添加成绩记录;
(5)修改指定姓名或学号的学生的成绩并可存盘;
(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。
2.问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和方法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)完成系统总结报告以及系统使用说明书。
3.其它要求:
(1)只能使用C&#43;&#43;语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面
(3)学生可自动增加新功能模块
二、课程设计具体实现
1、定义一个复数类
a、总体设计
? 总体思路
在对书本上例题的进行仔细查看后,用C&#43;&#43;语言在VC6.0编译器下进行编译工作完成题目中要求的各类运算符的重载等等。
b、详细设计
1、构造函数设计
CComplex(double re=0.0,doubleim=0.0)
2、对各种操纵符的重载
ostream& operator<<(ostream&os,CComplex&p) //重载<<
if(p.real==0)
if(p.imag>0)
os<<p.imag<<"i"<<
if(p.imag==0)
os<<p.real<<
if(p.imag<0)
os<<p.imag<<"i"<<
if(p.imag>0)
os<<p.real<<"&#43;"<<p.imag<<"i"<<
if(p.imag<0)
os<<p.real<<p.imag<<"i"<<
if(p.imag==0)
os<<p.real<<
istream& operator>>(istream&is,CComplex&p) //重载>>
is>>p.real>>p.
CComplex CComplex::operator&#43;(const CComplex&c) //重载&#43;
t.real=real&#43;c.
t.imag=imag&#43;c.
CComplex CComplex::operator-(constCComplex& c) //重载-
t.real=real-c.
t.imag=imag-c.
CComplex CComplex::operator=(constCComplex& c) //重载=
CComplex CComplex::operator&#43;(double d)
t.real=real&#43;d;
CComplex CComplex::operator-(double d)
t.real=real-d;
istream & operator>>(istream &in,vector& s) //重载>>
s.push_back(str);
CComplex operator-(double d,const CComplex&c2)
returnCComplex(d-c2.real,c2.imag);
CComplex CComplex::operator[](int z)
cout<<"liujianwei"<<
return(z-1);
3、输出所有复数的函数
void Dispaly()
if(real==0)
if(imag>0)
cout<<imag<<"i"<<
if(imag==0)
cout<<real<<
if(imag<0)
cout<<imag<<"i"<<
if(imag>0)
cout<<real<<"&#43;"<<imag<<"i"<<
if(imag<0)
cout<<real<<imag<<"i"<<
if(imag==0)
cout<<real<<
4、主函数的实现设计
int main()
system("color 0b");
stringc1,c2;
intc1_int,c2_
cout<<"注意:除了键盘输入复数的个数之外,系统将自动开辟6个空间,用于保存计算结果。"<<
cout<<"请输入复数个数:";
p=newCComplex[n&#43;7];
system("cls");
//system("color 1b");
zhujiemian();
switch(in)
system("cls");
for(i=0;i<n;i&#43;&#43;)
cout<<"输入第"<<i&#43;1<<"个的实部和虚部:"<<
cin>>p[i];
for(i=0;i<n;i&#43;&#43;)
cout<<"("<<i&#43;1<<"):";
cout<<p[i];
system("pause");
system("cls");
xianshi();
if(flag_case3==1)
cout<<"("<<n&#43;1<<"):";
p[n&#43;1].Dispaly();
if(flag_case4==1)
cout<<"("<<n&#43;2<<"):";
p[n&#43;2].Dispaly();
if(flag_case5==1)
cout<<"("<<n&#43;3<<"):";
p[n&#43;3].Dispaly();
if(flag_case6==1)
cout<<"("<<n&#43;4<<"):";
p[n&#43;4].Dispaly();
cout<<"("<<n&#43;5<<"):";
p[n&#43;5].Dispaly();
if(flag_case7==1)
cout<<"("<<n&#43;6<<"):";
p[n&#43;6].Dispaly();
system("pause");
system("cls");
xianshi();
cout<<"请输入想加和的两位复数的下标"<<
while(cin>>c1>>c2)
c1_int=static_cast(strtol(c1.c_str(),&end, 10));
c2_int=static_cast(strtol(c2.c_str(),&end, 10));
if(c1_int>n||c2_int>n)
cout<<"输入的下标不在所给范围内部!"<<
cout<<"请输入想加和的两位复数的下标"<<
p[n&#43;1]=p[c1_int-1]&#43;p[c2_int-1];
cout<<"计算结果为:"<<p[n&#43;1];
flag_case3=1;
system("pause");
system("cls");
xianshi();
cout<<"请输入想相减的两位复数的下标"<<
while(cin>>c1>>c2)
c1_int=static_cast(strtol(c1.c_str(),&end, 10));
c2_int=static_cast(strtol(c2.c_str(),&end, 10));
if(c1_int>n||c2_int>n)
cout<<"输入的下标不在所给范围内部!"<<
cout<<"请输入想相减的两位复数的下标"<<
p[n&#43;2]=p[c1_int-1]-p[c2_int-1];
cout<<"计算结果为:"<<p[n&#43;2];
flag_case4=1;
system("pause");
system("cls");
xianshi();
cout<<"请输入想加和的一位实数"<<
cout<<"请输入想加和复数的下标"<<
while(cin>>c1)
c1_int=static_cast(strtol(c1.c_str(),&end, 10));
if(c1_int>n)
cout<<"输入的下标不在所给范围内部!"<<
cout<<"请输入想加和复数的下标"<<
p[n&#43;3]=p[c1_int-1]&#43;
cout<<"复数和实数的计算结果为:"<<p[n&#43;3]<<
cout<<"实数和复数的计算结果为:"<<p[n&#43;3]<<
cout<<"满足交换律!"<<
flag_case5=1;
system("pause");
system("cls");
xianshi();
cout<<"请输入想相减的一位实数"<<
cout<<"请输入想相减复数的下标"<<
while(cin>>c1)
c1_int=static_cast(strtol(c1.c_str(),&end, 10));
if(c1_int>n)
cout<<"输入的下标不在所给范围内部!"<<
cout<<"请输入想相减复数的下标"<<
p[n&#43;4]=p[c1_int-1]-
cout<<"当实数当作被减数时:"<<
cout<<"计算结果为:"<<p[n&#43;4];
cout<<"当复数当作被减数时:"<<
p[n&#43;5]=shishu-p[c1_int-1];
cout<<"计算结果为:"<<p[n&#43;5];
if((p[n&#43;4].Real()==p[n&#43;5].Real())&&(p[n&#43;4].Imag()==p[n&#43;5].Imag()))
cout<<"满足交换律!"<<
cout<<"不满足交换律"<<
flag_case6=1;
system("pause");
system("cls");
xianshi();
if(flag_case3==1)
cout<<"("<<n&#43;1<<"):";
p[n&#43;1].Dispaly();
if(flag_case4==1)
cout<<"("<<n&#43;2<<"):";
p[n&#43;2].Dispaly();
if(flag_case5==1)
cout<<"("<<n&#43;3<<"):";
p[n&#43;3].Dispaly();
if(flag_case6==1)
cout<<"("<<n&#43;4<<"):";
p[n&#43;4].Dispaly();
cout<<"("<<n&#43;5<<"):";
p[n&#43;5].Dispaly();
if(flag_case7==1)
cout<<"("<<n&#43;6<<"):";
p[n&#43;6].Dispaly();
cout<<"请输入需要赋&#20540;的下标"<<
while(cin>>c1)
c1_int=static_cast(strtol(c1.c_str(),&end, 10));
if(c1_int>n&#43;6)
cout<<"输入的下标不在所给范围内部!"<<
cout<<"请输入需要赋&#20540;的下标"<<
p[n&#43;6]=p[c1_int-1];
cout<<"则第"<<n&#43;6<<"个复数&#20540;为:"<<p[n&#43;6]<<
flag_case7=1;
system("pause");
system("cls");
xianshi();
if(flag_case3==1)
cout<<"("<<n&#43;1<<"):";
p[n&#43;1].Dispaly();
if(flag_case4==1)
cout<<"("<<n&#43;2<<"):";
p[n&#43;2].Dispaly();
if(flag_case5==1)
cout<<"("<<n&#43;3<<"):";
p[n&#43;3].Dispaly();
if(flag_case6==1)
cout<<"("<<n&#43;4<<"):";
p[n&#43;4].Dispaly();
cout<<"("<<n&#43;5<<"):";
p[n&#43;5].Dispaly();
if(flag_case7==1)
cout<<"("<<n&#43;6<<"):";
p[n&#43;6].Dispaly();
cout<<"请输入想获取复数的下标"<<
while(cin>>c1)
c1_int=static_cast(strtol(c1.c_str(),&end, 10));
if(c1_int>n&#43;6)
cout<<"输入的下标不在所给范围内部!"<<
cout<<"请输入需要赋&#20540;的下标"<<
cout<<"第"<<c1_int<<"个复数&#20540;为:"<<p[c1_int-1]<<
system("pause");
cout << "即将退出界面" <<
cin.clear();
cin.sync();
cout << "输入错误,请重新输入命令:" <<
system("pause");
}while(in!='9');
2.定义一个CPerson类及其派生类
a、总体设计
CBirthday类
?总体设计方案
定义Cperson类作为基类,然后定义Cperson类的派生类Cteacher.类和Cstudent类,将功能已类的成员函数实现,在VC6.0中编写并测试。
b、详细设计
1、CBirthday类设计
class CBirthday
CBirthday()
year=2000;
strcpy(month,"01");
strcpy(day,"01");
CBirthday(int y,char *m,char*d)
strcpy(month,m);
strcpy(month,d);
void Input()
void Print()
cout<<year<<"-"<<month<<"-"<<day<<
char month[5],day[5];
2、CPerson 类设计
class CPerson:publicCBirthday
CPerson(char*,char*,Tsex,CBirthday&);
CPerson();
~CPerson();
void input();
void display();
char ID[10];
char Name[20];
3、学生类设计
class CStudent:public CPerson
voidinput()
cout<<"输入学生信息:"<<
CPerson::input ();
inputCourse();
CStudent();
CStudent(char*id,char *name,Tsex sex,CBirthday &d,char *num,char *dep);
~CStudent();
voidinputCourse();
voiddisplayS();
coursecj[8];
charnumber[10];
chardepart[30];
4、教师类设计
class CTeacher:public CPerson
voidinput()
cout<<"输入教师信息:"<<
CPerson::input ();
SetScore();
CTeacher();
CTeacher(char*id,char *name,Tsex sex,CBirthday &d,string num,string dep,string pro);
~CTeacher();
voidSetScore();
voidDispScore();
voidSortScore();
voidSetedStuScore(CStudent &);
voiddisplayT();
TcourseTcj[2];
5、学生输入信息设计
CStudent::CStudent (char *id,char *name,Tsexsex,CBirthday &d,char *num,char *dep):CPerson(id,name,sex,d)
strcpy(number,num);
strcpy(depart,dep);
for(inti=0;i<8;i&#43;&#43;)
strcpy(cj[i].coursename ,"");
cj[i].grade =-1;
6、学生输出信息设计
void CStudent::displayS ()
display();
cout<<"学号:"<<number<<
cout<<"班级名:"<<depart<<
cout<<"该生成绩:"<<
for(inti=0;i<8;i&#43;&#43;)
if(strcmp(cj[i].coursename,"")!=0)
cout<<cj[i].coursename<<'\t'<<cj[i].grade<<'\n';
cout<<"------------------"<<
7、输入教师信息设计
void CTeacher::SetScore ()
cout<<"请输入所教课程数目:"<<
for(inti=0;i<q;i&#43;&#43;)
cout<<"课程名"<<
cin>>Tcj[i].
cout<<"各个学生的成绩"<<
for(int j=0;j<8;j&#43;&#43;)
cin>>Tcj[i].grade[j];
8、输出教师信息设计模板
void CTeacher::DispScore ()
for(inti=0;i<q;i&#43;&#43;)
cout<<"课程名:"<<Tcj[i].coursename <<
for(int j=0;j<8;j&#43;&#43;)
cout<<"("<<j&#43;1<<")"<<" "<<Tcj[i].grade [j]<<
9.学生成绩修改模板
void CTeacher::SetedStuScore (CStudent &s)
for(inti=0;i<2;i&#43;&#43;)
if(strcmp(s.cj[i].coursename,"")!=0)
cout<<s.cj[i].coursename<<'\t'<<s.cj[i].grade<<
cout<<"请输入修改的成绩"<<
cout<<s.cj[i].coursename<<'\t'<<score<<
cout<<"---------------------"<<
3、几何图形类
a、总体设计
? 总体设计图
几何图形类(虚基类)
正三棱锥类
?总体设计方案
定义虚基类,派生出长方形类、圆类、三角形类、再分别从中派生出长方体类、正方体类、圆柱类、圆锥类、正三棱锥。在每个类中定义其功能函数,用于计算面积、体积。重载比较的函数,方便比较相同几何图形或不同几何图形的面积和体积。
b、详细设计
1、虚基类的定义
class Geometric_shape
virtualdouble perimeter()=0;//周长
virtualdouble area()=0;//面积
virtualdouble volume()=0;//体积
virtualvoid Show(){};
2、圆类的定义
class Circle:public Geometric_shape//圆
Circle(){radius=0;}//构造函数
Circle(doublevv){radius=}
doubleperimeter(){return 2.0*PI*}//周长
doublearea(){return PI*radius*}//面积
doublevolume(){return 0;}
doubleceshi(){}
voidShow(){cout<<"半径="<<radius<<}
3、矩形类的定义
class Rectangle:public Geometric_shape//长方形
doublewidth,//宽、长
Rectangle(){width=0;length=0;}//构造 长、宽
Rectangle(doublewid,double len)
Rectangle(Rectangle&rr)
length=rr.
doubleperimeter(){return 2.0*(width&#43;length);}//周长
doublearea(){return width*}//面积
doublevolume(){return 0;}//体积
doubleceshi1(){}
double ceshi2(){}
voidShow(){cout<<"宽="<<width<<'\n'<<"长="<<length<<}
4、三角形类定义
class Triangle:public Geometric_shape//三角形
doublea,b,c;
Triangle(){a=0;b=0;c=0;}
Triangle(doublev1){a=v1;}
Triangle(doublev1,double v2,double v3){a=v1;b=v2;c=v3;}
doubleperimeter(){return a&#43;b&#43;c;}//周长
doublearea()//面积
double s=(a&#43;b&#43;c)/2.0;
return sqrt(s*(s-a)*(s-b)*(s-c));
doublevolume(){return 0;}//体积
voidShow(){cout<<"边长a="<<a<<'\n'<<"边长b="<<b<<'\n'<<"边长c="<<c<<}
double ceshi1(){}
doubleceshi2(){}
doubleceshi3(){}
class Cube:public Rectangle//正方体
Cube(doublewid,double len,double heg):Rectangle(wid,len){height=}
doublearea(){return Rectangle::area()*6;}
doublevolume(){return sqrt(Rectangle::area())*Rectangle::area();}
doubleceshi(){}
voidShow(){Rectangle::Show();cout<<"高="<<height<<}
5、正三棱锥类定义
class Three_pyramid:public Triangle//正三棱锥
Three_pyramid(){dd=0;}
Three_pyramid(double a,double b,doublec,double d):Triangle(a,b,c){dd=d;}
doublearea(){returnTriangle::area()&#43;3*sqrt(Triangle::area()*4/sqrt(3))/2*sqrt(dd*dd-Triangle::area()/sqrt(3));}
doublevolume(){return Triangle::area()/3*sqrt(dd*dd-Triangle::area()*4/sqrt(3)/3);}
voidShow(){Triangle::Show();cout<<"侧棱="<<dd<<}
doubleceshi(){}
6、长方体类定义
class Box:public Rectangle//长方体
Box(){height=0;}
Box(doublewid,double len,double heg):Rectangle(wid,len){height=}
doublearea(){return Rectangle::area()*2&#43;height*(Rectangle::perimeter());}
doubleceshi(){}
doublevolume(){return Rectangle::area()*}//体积
7、圆柱体类定义
class Cylinder:public Circle//圆柱体
Cylinder(){height=0;}
Cylinder(doublevv,double heg):Circle(vv){height=}
doublevolume(){return Circle::area()*}
doubleceshi(){}
voidShow(){Circle::Show();cout<<"高="<<height<<}
8、圆锥类定义
class Cone:public Circle//圆锥体
Cone(){genera=0;}
Cone(doublevv,double gen):Circle(vv){genera=}
doublearea(){return Circle::area()&#43;sqrt(Circle::area()/PI)*}
doublevolume(){return Circle::area()/3*sqrt(genera*genera-Circle::area()/PI);}
voidShow(){Circle::Show();cout<<"母线="<<genera<<}
doubleceshi(){}
9、比较重载
double max(double x,double y)
returnx>y?x:y;
4、成绩记录薄
a、总体设计
?总体设计图
学生类对象
?总体设计方案
设计学生类,用以保存身份、成绩信息,支持从键盘或者文件录入,在输入过程中应加入异常检测,防止错误数据的录入导致系统崩溃或出错。支持查询,修改,删除功能,可以进行分段统计,统计各个分数段的学生,最后能够存档在文件中。
b、详细设计
1、学生类的定义
class Cstudent
Cstudent()//构造函数,将成绩赋&#20540;为零
grade = '0';
voiddisplay()//控制输出,进行左对齐
cout<<"姓名:"<<std::left<<setw(20)<<
cout<<"学号:"<<std::left<<setw(20)<<
cout<<"成绩:"<<std::left<<setw(20)<<
voidsetdate(string name, string idnumber, string grade)//对私有变量进行复制
stringstudent_name()
stringstudent_idnumber()
stringstudent_grade()
stringfind_idnumber()//按照学号查找时学号
stringfind_NAME()//按照姓名查找时返回姓名
intcount()
score =static_cast(strtol(gr.c_str(), &end, 10));//使用strtol(string to long) 利用string的c_str()转化为C风&#26684;字符串
voidrevise()
int grade_
cout << "请根据以下提示进行修改。" <<
cout << "姓名:";
cout << "学号:";
cout << "成绩(0~100):";
while(cin >> gr)
grade_bian=static_cast(strtol(gr.c_str(), &end, 10));
if(grade_bian>=0&&grade_bian<=100)
cout<<"输入有误!"<<
cout << "请输入成绩(0~100):";
2、异常检测示例
cin.clear();//清除cin的错误状态
cin.sync();//清空cin缓冲区里面未读取的信息...
cout <<"输入错误,重新返回主界面。" <<
system("pause");
3、读取文件示例
ofile.open("H:\\student_in.txt", ios::in);
if (ofile.is_open())
for ( i = i < N; i&#43;&#43;)
{//依次提取学生三个基本私有变量信息
p[i].setdate(name, idnumber, grade);
if (i >= N)
cout << "文件数据已经全部导入。" <<
cout << "当前学生数量:" << i <<
cout << "当前存储容量已达到最大&#20540;!" <<
if(flag_case1==1)
for (i = 0; i < N; i&#43;&#43;)
cout << "student" <<"[" << i &#43; 1 << "]" << ":\t";
p[i].display();
for (i = i < N; i&#43;&#43;)
cout << "student" <<"[" << i &#43; 1 << "]" << ":\t";
p[i].display();
/*for (i = 0; i < N; i&#43;&#43;)
p[i].display();
cout << "已成功导入的学生数量:" << i <<
flag_case7 = 1;
cout << "打开文件时出错!";
ofile.close();
三、结束语
从课设开始到课设结束,总共经历了两周的时间。在这段时间,将自己在书本上学到的知识在实践中得以应用,同时也能够使自己的代码能力进一步地提高。能够很明显地感觉到,在编写题目的过程中,出现了许许多多从未遇到过的错误和问题。但通过请教老师、同学还有百度,最终得以解决。代码的完整度已经达到,但是程序的稳定性有时不尽如人意。总会出现接二连三的BUG。同时,在解决BUG的同时,能够获取更多的知识和调试断点的能力。无论是程序设计的思想还是到代码的具体实现,都需要去一步步构想。稳扎稳打,最后你的成果自然不会辜负你原来的期望。
特别感谢C&#43;&#43;代课王老师和课设王老师的帮助,在他们的帮助下自己的程序才能够日趋完善。总之,自己在这次两周课程设计里学到了很多。自己将会更加努力,写出美丽的代码!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 结构体学生成绩排序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信