




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南科技学院课程设计报告课程名称:计算机高级语言(C+)课程设计课程设计题目:学生通讯管理系统系:数学与计算科学系专 业:信息与计算科学年级、班:信计0801姓 名:谭鄱仑学 号:200905002109指导教师:牛志毅职 称:讲师2010年12月目 录课程实验报告-3一、需求分析-3二、概要设计-3 三、程序实现思路-7四、设计总结-7五、参考文献-7六、源代码-8七、运行情况16C+语言程序设计报告一、 需求分析用C+编写下面程序学生成绩统计管理系统(*)要求实现如下功能: 成绩的输入(学号、姓名、英语、数学、C+语言)。 成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及
2、格”、“不及格”的人数及其所占比例)。 总成绩统计(学生的总成绩、平均成绩及成绩排名)。 成绩的统计结果显示。 学生数据的添加、修改、与删除。 学生数据的读取与存储。二、 概要设计主要数据定义以及各程序模块的功能: Student类中:class Studentprivate: int id;/学号 string name;/姓名 double score3; int x;/指示是否存储了数据 double all;/总成绩 int rank;/名次 string dengji;/等级public: Student();/构造函数 void SetStudentID(int);/输入学生学号
3、int StudentID();/返回学生学号 void SetStudentName(string str);/输入学生姓名 string StudentName();/返回学生姓名 void SetStudentScore(double y,double s,double c);/输入学生成绩 double StudentYscore();/返回学生英语成绩 double StudentSscore();/返回学生数序成绩 double StudentCscore();/返回学生C+成绩 void SetStudentX(int n);/给判定学生数据存在与否的X赋值 void Getal
4、l();/计算学生总成绩 void SetRank();/给学生名次值加1 int Rank();/返回学生名次值 int StudentX();/返回判定X的值,判定是否修改 void RankClear();/给学生的名次赋值为1 void Setdengji(string dengji);/输入等级 double All();/返回学生总成绩 string StudentDengji();/返回学生等级值;Studentifo类中:class Studentifoprivate: int num;/学生个数 Student *stu;/定义指向存储学生类的指针public: Studen
5、tifo(int n);/构造函数 void LoadID(int n);/输入学生学号 void LoadName(int ,string name);/输入学生姓名 void LoadScore(int ,double,double,double);/输入学生各科成绩 void Setifo();/插入学生数据 void Putifo();/输出所有学生数据 void Clear();/清除所有学生数据 void PutID();/输出指定学生数据 void ClearID();/删除指定学生数据 void MakeRank();/给所有学生排名 void ReSetifo();/修改指定
6、学生数据 void ClearRank();/给指定学生的名次值赋为1 void MakeAll();/计算各个学生的总成绩 void PutifoRank();/按名次输出所有学生数据 int ID(int n);/返回学生学号 double Yscore(int);/返回学生英语成绩 double Sscore(int);/返回学生数学成绩 double Cscore(int);/返回学生C+成绩 double StudentAll(int n);/返回学生总成绩 int StudentRank(int n);/返回学生名次 string Name(int);/返回学生名次 int X(i
7、nt);/指定X值,确定是否有存储数据 string Dengji(int n);/返回学生等级 void Numadd();/num值加1 void Xfix(int);/将指定学生的X指示值赋为1Studentifo();/析构函数释放new创建的空间;类外:void DoMenu(int n,Studentifo*t);/将类里的各个函数组合起来实现各个功能,按指定数字执行void Load(Studentifo *S);/从文件中载入学生信息void Save(Studentifo *S);/将学生信息保存到文件void ShowTip(); /显示操作提示void ShowMenu(
8、); /显示菜单主函数的程序流程图开始输出菜单及提示信息输入功能数字1N 2YN 3清除学生数据YN 4插入学生数据NNYY 5删除指定学生数据 6N7Y Y 超找指定学生数据修改指定学生数据按名次输出学生信息 8N 9 输出所有学生综合信息载入数据10退出保存 结束 三 程序实现思路本程序通过Studentifo类开辟一个Student的类数组用已储存学生数据。通过Studentifo类的公有函数和Student的公有函数进行关联,对Student类里的私有学生数据进行操作,达到输入,处理,输出学生数据的功能。同时利用文件输入输出流在项目文件夹中创建一个date.txt文档进行学生数据的保存
9、与读取。四 设计总结(1)摆正心态,不心浮气躁 刚拿到题目,难免会觉得特别迷茫,无从下手,这时如果心浮气躁则会更加的觉得困难重重。但当我摆正心态,静小心来慢慢思考的时候,一个个的思路不断的的冒出,头脑中的想法远比实践过的多。此时,困难已不是从何下手,而是如何下手会是程序更趋完美。(2)一鼓作气,个个击破一旦开始了编程后,就要一鼓作气的继续下去。选择个个击破,然后将所有的程序在组合起来,很快主程序的雏形就能展现出来,接下来的就只是一点点的修改关联是的小错误了。用不了多久任务即可完成,特有成就感。但是如果断断续续的则会在每次编的时候被冗杂而繁多的定义弄糊涂,从而没有心情继续下去。(3)有目的地修改
10、、完善运行时会出现一些错误,但我发现其实里面的参数并不复杂,只要跟着那个error的提示,一个一个的改下去,其实很简单的。结果事实也是如此,看完书后,只用了一个小时多一点,102个错误全部搞定了。错误几乎为以下三类:1. 冒号,分号等符号打错了;2. 大小写等造成的对应问题;3. 变量的不完全修改。改完以后,在执行时我发现界面不好看,于是我又将主界面略加修改了些。看上去美观了不少。再运行功能,前四个都能顺利运行,但对百分比饼状图我傻眼了。不管我输入数据与否,输入了什么数据,结果都是一样的,相当离谱。我又糊涂了,搞不清是怎么回事。于是,又去问同学,在他们的帮助下,成功解决这个问题,在此真要好好谢
11、谢他们!终于大功告成!欣慰在这次实践中,我不仅弥补了自己在C+课上所落下的内容,尤其是指针那块部分,虽然现在概念搞的还不是很懂,但看见程序是能够理解的。这次C+实践是给我们这一学期来所学知识的一个总复习,总的实践。它让我们把所知道的知识点运用的更好,把不知道的知识点搞得明白了。实践出真知,通过这次实践,我也系统的把课本好好的回顾了下。猛然觉得,C+二级考试也有些把握了。五 参考文献谭浩强. C+程序设计. 清华大学出版社, 2007.5六 源程序main.cpp/* 课程设计题目:学生信息管理系统 班级:0901 学号:200905002109 姓名:谭鄱仑 */#includestudent
12、.hint main() int i=0; char ok; Studentifo stuifo; Studentifo *ifo=&stuifo; ShowMenu(); couti; system(cls); ShowMenu(); DoMenu(i,ifo); ShowTip(); if(flag) coutok; if(ok=Y|ok=y) ifo-MakeAll(); ifo-ClearRank(); ifo-MakeRank(); Save(ifo); cout数据已保存.按任意键安全退出; else cout已安全退出.按任意键返回;Student.h#ifndef STUDEN
13、T_H_INCLUDED#define STUDENT_H_INCLUDED#include#include#include#include#include#includeusing namespace std;class Studentprivate: int id;/学号 string name;/姓名 double score3; int x;/指示是否存储了数据 double all;/总成绩 int rank;/名次 string dengji;/等级public: Student();/构造函数 void SetStudentID(int);/输入学生学号 int StudentI
14、D();/返回学生学号 void SetStudentName(string str);/输入学生姓名 string StudentName();/返回学生姓名 void SetStudentScore(double y,double s,double c);/输入学生成绩 double StudentYscore();/返回学生英语成绩 double StudentSscore();/返回学生数序成绩 double StudentCscore();/返回学生C+成绩 void SetStudentX(int n);/给判定学生数据存在与否的X赋值 void Getall();/计算学生总成绩
15、 void SetRank();/给学生名次值加1 int Rank();/返回学生名次值 int StudentX();/返回判定X的值,判定是否修改 void RankClear();/给学生的名次赋值为1 void Setdengji(string dengji);/输入等级 double All();/返回学生总成绩 string StudentDengji();/返回学生等级值;class Studentifoprivate: int num;/学生个数 Student *stu;/定义指向存储学生类的指针public: Studentifo(int n);/构造函数 void Lo
16、adID(int n);/输入学生学号 void LoadName(int ,string name);/输入学生姓名 void LoadScore(int ,double,double,double);/输入学生各科成绩 void Setifo();/插入学生数据 void Putifo();/输出所有学生数据 void Clear();/清除所有学生数据 void PutID();/输出指定学生数据 void ClearID();/删除指定学生数据 void MakeRank();/给所有学生排名 void ReSetifo();/修改指定学生数据 void ClearRank();/给指
17、定学生的名次值赋为1 void MakeAll();/计算各个学生的总成绩 void PutifoRank();/按名次输出所有学生数据 int ID(int n);/返回学生学号 double Yscore(int);/返回学生英语成绩 double Sscore(int);/返回学生数学成绩 double Cscore(int);/返回学生C+成绩 double StudentAll(int n);/返回学生总成绩 int StudentRank(int n);/返回学生名次 string Name(int);/返回学生名次 int X(int);/指定X值,确定是否有存储数据 strin
18、g Dengji(int n);/返回学生等级 void Numadd();/num值加1 void Xfix(int);/将指定学生的X指示值赋为1 Studentifo();/析构函数释放new创建的空间;void DoMenu(int n,Studentifo*t);/将类里的各个函数组合起来实现各个功能,按指定数字执行void Load(Studentifo *S);/从文件中载入学生信息void Save(Studentifo *S);/将学生信息保存到文件void ShowTip(); /显示操作提示void ShowMenu(); /显示菜单#includestudentifo.
19、h#endif / STUDENT_H_INCLUDEDStudentifo.h#ifndef STUDENTIFO_H_INCLUDED#define STUDENTIFO_H_INCLUDEDbool flag=false ;/数据是否修改过的标志Student:Student() id=0; name=; score0=0; score1=0; score2=0; x=2; all=0; rank=1; dengji=;void Student:SetStudentID(int n) id=n;void Student:SetStudentName(string str) if(str=
20、0) string str1; coutstr1; this-name=str1; else this-name=str;void Student:SetStudentScore(double y,double s,double c) if(y!=0|s!=0|c!=0) score0=y; score1=s; score2=c; else double a,b,c; couta; coutb; coutc; score0=a; score1=b; score2=c; int Student:StudentID() return id;string Student:StudentName()
21、return name;double Student:StudentYscore() return score0;double Student:StudentSscore() return score1;double Student:StudentCscore() return score2;void Student:SetStudentX(int n) x=n;int Student:StudentX() return x;void Student:Getall() this-all=0; this-all=score0+score1+score2; double n; n=all/3; i
22、f(0=n&ndengji=不及格; else if(60=n&ndengji=及格; else if(70=n&ndengji=中等; else if(80=n&ndengji=良好; else this-dengji=优秀;double Student:All() return all;void Student:SetRank() rank+=1;int Student:Rank() return rank;void Student:RankClear() rank=1;void Student:Setdengji(string dengji) this-dengji=dengji;str
23、ing Student:StudentDengji() return dengji;Studentifo:Studentifo(int n=100) num=0; stu=new Studentn;Studentifo:Studentifo() delete stu;void Studentifo:Numadd() num+=1;void Studentifo:LoadID(int n) stun.SetStudentID(n);void Studentifo:LoadName(int n,string name) stun.SetStudentName(name);void Studenti
24、fo:LoadScore(int n,double y,double s,double c) stun.SetStudentScore(y,s,c);void Studentifo:Setifo() int n; coutn; if(stun.StudentX()=1|n=0) cout该学号已有或者学号信息错误endl; else stun.SetStudentID(n); stun.SetStudentName(0); stun.SetStudentScore(0,0,0); stun.SetStudentX(1); num+; coutendl; void Studentifo:Puti
25、fo() int i,s1=0,y1=0,c1=0,y2=0,s2=0,c2=0,y3=0,s3=0,c3=0,y4=0,s4=0,c4=0,y5=0,s5=0,c5=0; double Y=0,S=0,C=0; if(num=0) cout没有学生数据endl; else cout |*学生综合信息*|endl; cout | 学号t姓名t英语t数学tC+t总成绩t名次t等级 |endl; cout |*|endl; for(i=1; i=100; i+) if(stui.StudentX()=1) Y+=stui.StudentYscore(); S+=stui.StudentSscore
26、(); C+=stui.StudentCscore(); cout | stui.StudentID()t; coutstui.StudentName()t; coutstui.StudentYscore()t; coutstui.StudentSscore()t; coutstui.StudentCscore()t; stui.Getall(); coutstui.All()t; coutstui.Rank()t; coutstui.StudentDengji(); coutt|endl; cout |*|=0&stui.StudentYscore()=60&stui.StudentYsco
27、re()=70&stui.StudentYscore()=80&stui.StudentYscore()=0&stui.StudentSscore()=60&stui.StudentSscore()=70&stui.StudentSscore()=80&stui.StudentSscore()=0&stui.StudentCscore()=60&stui.StudentCscore()=70&stui.StudentCscore()=80&stui.StudentCscore()90) c4+; else c5+; cout _endl; cout |*各科成绩信息*|endl; coutt
28、|tt英语tt数学ttC+t |endl; coutt |平均成绩tY/numttS/numttC/numt |endl; coutt |不及格t100*double(y1)/num%tt100*double(s1)/num%tt100*double(c1)/num%t |endl; coutt |及格tsetprecision(4)100*double(y2)/num%ttsetprecision(4)100*double(s2)/num%ttsetprecision(4)100*double(c2)/num%t |endl; coutt |中等tsetprecision(4)100*dou
29、ble(y3)/num%ttsetprecision(4)100*double(s3)/num%ttsetprecision(4)100*double(c3)/num%t |endl; coutt |良好tsetprecision(4)100*double(y4)/num%ttsetprecision(4)100*double(s4)/num%ttsetprecision(4)100*double(c4)/num%t |endl; coutt |优秀tsetprecision(4)100*double(y5)/num%ttsetprecision(4)100*double(s5)/num%tt
30、setprecision(4)100*double(c5)/num%t |endl; cout |_|nendl; cout*各等级人数*endl; cout成绩t优秀t良好t中等t及格t不及格为endl; cout英语t y5t y4t y3t y2t y1endl; cout数学t s5t s4t s3t s2t s1endl; coutC+ t c5t c4t c3t c2t c1endl; cout*endl; void Studentifo:PutifoRank() if(num=0) cout没有学生数据endl; else cout名次t姓名t英语t数学tC+t总成绩t学号t等级
31、endl; for(int n=1; n=num; n+) for(int i=1; i=100; i+) if(stui.StudentX()=1&stui.Rank()=n) stui.Getall(); coutstui.Rank()t; coutstui.StudentName()t; coutstui.StudentYscore()t; coutstui.StudentSscore()t; coutstui.StudentCscore()t; coutstui.All()t; coutstui.StudentID()t; coutstui.StudentDengji(); coute
32、ndl; void Studentifo:PutID() int n,i,k=0; string str2;pick: cout *endl; cout *1:按学号查找*endl; cout *2:按姓名查找*endl; cout *3:退出查找 *endl; cout *endl; couti; switch(i) case 1: coutn; if(stun.StudentX()=2) cout错误!不存在该学生endl; goto pick; else cout学号t姓名t英语t数学tC+t总成绩t名次t等级endl; coutstun.StudentID()t; coutstun.StudentName()t; coutstun.StudentYscore()t; coutstun.StudentSscore()t; coutstun.StudentCscore()t; stun.Getall(); coutstun.All()t; coutstun.Rank()t; coutstun.StudentDengji(); coutendl; break; case 2: coutstr2; cout学号t姓名t英语t数学tC+t总成绩t名次t等
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏淮安2024~2025学年高二下册6月期末调研测试数学试题学生卷
- 江苏部分学校2024~2025学年高二下册联考数学试题学生卷
- 中药材种植标准化与农业信息化技术集成研究考核试卷
- 充电设备维修工具与设备介绍考核试卷
- 环保与可持续发展合作考核试卷
- 橡胶物理回收的能耗优化策略考核试卷
- 供应链与零售业融合考核试卷
- 阀门密封性能测试方法考核试卷
- 2025年新疆中考英语试题真题(含答案)
- 2025年中国PE材料热缩管数据监测报告
- 脑室分流术后护理
- 子午流注针法智慧树知到答案2024年南方医科大学
- 地下防水工程施工方案-石河子地下综合管廊项目
- 曼娜回忆录完整版三篇
- 期末培优拔高卷(试题)-2023-2024学年五年级下册数学北师大版
- 酒店装饰装修工程施工方案
- 注塑技术员等级评定标准
- 全屋定制家具合同
- 有限空间作业活动风险分级管控清单
- 中华民族共同体概论课件专家版2第二讲 树立正确的中华民族历史观
- 公安出入境培训课件
评论
0/150
提交评论