已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机高级语言(C+)实习报告实验一、成绩管理系统实验二、 MyString类定义和应用学生姓名:靳庆琛学 号:20111001524指导老师:马丽中国地质大学(武汉)机械与电子信息学院2013 年 6月实验一、成绩管理系统一、 设计任务与要求:1、 设计三个结构体:学生类(存储学生的基本信息,如学生姓名Stu_Name、学生学号Stu_ID、学生性别Stu_Sex等,采用结构体);课程科目Course(存储课程名称Cou_Name,课程编号Cou_ID,开课学期Cou_Term,授课老师Cou_Teacher等,采用结构体);选课情况Sel_Course(课程编号Cou_ID, 学生学号Stu_ID,成绩Score等,采用结构体)。2、 实现功能:a、计算平均值Avg:包括每门课程的平均值,和每个学生所有课程的平均值。b、计算最高分Max:包括每门课程的最高分,和学生平均分的最高分,并给出最高分对应的学生姓名和学号。c、计算最低分Min:包括每门课程的最低分,和学生平均分的最低分,并给出最低分对应的学生姓名和学号。d、计算每门课程成绩不及格(60分)以及优秀(大于90分)的学生个数Count。e、计算每门课程的标准方差Variance。f、查询功能Query:可以根据输入的学生姓名或者学号,查询该学生的所有课程的成绩。g、排序功能Sort:按照从高到低的顺序,对每门课程的成绩进行排序,对学生平均分进行排序,并给出排序后成绩所对应的学生姓名和学号。提示:把初始化部分和7个功能设置为可以选择的菜单方式,也就是每次运行程序,可以让用户选择实现某个功能,各个功能用函数来实现,有些函数需要重载。每个功能的输出可以输出到屏幕,也可以输出到文件。二、课程设计的要求:根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序对给出的程序源代码要给出各部分的详细注释自己根据能力及需要添加相应功能模块,增强模拟系统功能。包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的表、视图(如果使用)、索引的结构和定义、触发器、存储过程、课程设计体会。三、系统分析(需求分析):1、需求分析:a、能对学生按学生姓名,学号和各科成绩进行录入:。b、能按学号和姓名查询学生信息。c、能统计学生所有课程的平均分并排序,统计各科成绩的最高分和最低分,优秀和不及格人数,各科成绩的平均分和方差。2、系统性能要求:a、系统安全、可靠;b、功能齐全;c、操作方便、界面友好;d、易于维护和扩充。3、系统的功能分析:资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查询:可以对学生的信息进行查询。4、系统功能模块学生成绩查询系统有:学生成绩信息输入模块,数据统计模块,查询模块,排序显示构成。四、系统设计与实现1、界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。2、功能设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。五、系统运行截图:六、总结:此次c+课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。附源程序:#include#include#include#include#include#includeusing namespace std;ifstream fin;ofstream fout;struct student char stu_name10;char studynumber12;int score5;student stu10;void new_line( );void putin ( student a,int size);void average( student a,int size);void max(student a,int size);void min( student a,int size);void bujige( student a,int size);void variance( student a,int size);void query( student a,int size);void sort();void main() using namespace std;ifstream fin1,fin2;using namespace std;fin1.open(score1.txt);/fin2.open(score2.txt); if(fin1.fail()coutopen score1.txt n;exit(1);for(int i=0;istui.stu_namestui.studynumberstui.score0stui.score1stui.score2stui.score3stui.score4;char choise;Menu:cout endl;cout 成绩管理系统 endl;cout 0.退出系统Exit System ;cout 1.求平均值 endl;cout 2.计算最高分Max ;cout 3.计算最低分Min endl;cout 4.计算每门课程成绩不及格及优秀的人数 ;cout 5.计算每门课程的标准方差 endl; cout 6.查询功能Query ;cout 7.排序功能Sortt endl;coutendl;cout Choose the Appropriate option(0-7) :;cin.get(choise);if(choise=0)exit(1);elsenew_line();switch( choise )case 1: average(stu,10);break;case 2:max(stu,10);break;case 3: min(stu,10);break; case 4:bujige(stu,10);break; case 5:variance(stu,10);break; case 6:query(stu,10);break;case 7:sort();break;default:cout default Add your default handling function here endl;system(pause);system(cls);goto Menu;void new_line( ) char symbol; do cin.get(symbol); while (symbol != n);void average ( student a,int size)double c10;/每个学生的成绩的平均值 double d5;/每门课的成绩的平均值int sum5=0;for (int i=0;i10;i+) ci=(ai.score0+ai.score1 +ai.score2+ai.score3+ai.score4)/5.00;for (int k=0;k5;k+) for ( i=0;i10;i+)sumk=sumk+ai.scorek; dk=sumk/10.00; cout*平均分*n; cout-n; cout | 学号 | 名字 | 平均分 |n; cout-n; for ( i=0;i10;i+) cout ai.studynumber ai.stu_name ci n; cout-n; cout | 数学 | 语文 | 英语 | 物理 | 化学 |n; cout-n; cout d0 d1 d2 d3 d4 n; cout-n; void max( student a,int size)double c10; double max_stu; int max_crouse5=0;int q;/标记平均分最高的学生的序号for (int i=0;i10;i+) ci=(ai.score0+ai.score1 +ai.score2+ai.score3+ai.score4)/5.00; max_stu=c0;q=0; for ( i=0;imax_stu) max_stu=ci;q=i;cout*最高分*n; cout-n; cout | 学号 | 名字 | 平均分 |n; cout-n; cout aq.studynumber aq.stu_name cq n; cout-n;for (int k=0;k5;k+) for (i=0;imax_crousek) max_crousek=ai.scorek;cout-n; cout | 数学 | 语文 | 英语 | 物理 | 化学 |n; cout-n; cout max_crouse0 max_crouse1 max_crouse2 max_crouse3 max_crouse4 n; cout-n; void min( student a,int size) int i,k;double c10; double min_stu; int min_crouse5=a0.score1,a0.score2,a0.score3,a1.score4,a1.score5;/int min_crouse5=100;int q;for ( i=0;i10;i+) ci=(ai.score0+ai.score1 +ai.score2+ai.score3+ai.score4)/5.00; min_stu=c0;q=0; for ( i=0;i10;i+)if(cimin_stu) min_stu=ci;q=i;cout*最低分*n; cout-n; cout | 学号 | 名字 | 平均分 |n; cout-n; cout aq.studynumber aq.stu_name cq n; cout-n;for ( k=0;k5;k+) for ( i=0;i10;i+) if(ai.scorekmin_crousek) min_crousek=ai.scorek;cout-n; cout | 数学 | 语文 | 英语 | 物理 | 化学 |n; cout-n; cout min_crouse0 min_crouse1 min_crouse2 min_crouse3 min_crouse4endl; cout-n; void bujige( student a,int size) int bujige5=0,youxiu5=0; for ( int k=0;k5;k+) for ( int i=0;i10;i+) if(ai.scorek90) youxiuk+; cout*统计不及格和优秀人数*n;cout-n;cout | 数学 | 语文 | 英语 | 物理 | 化学 |n;cout-n;cout 不及格 bujige0 bujige1 bujige2 bujige3 bujige4endl;cout-n;cout 优秀 youxiu0 youxiu1 youxiu2 youxiu3 youxiu4 n; void variance( student a,int size) double d5;/每门课的成绩的平均值 int sum5=0;/每门课的总分 double sum_fangcha5=0; double fangcha5,biaozhuncha5; for (int k=0;k5;k+) for ( int i=0;i10;i+)sumk=sumk+ai.scorek; dk=sumk/10.00; for ( k=0;k5;k+) for ( int i=0;i10;i+) sum_fangchak+=(ai.scorek-dk)*(ai.scorek-dk); fangchak=sum_fangchak/5.00; biaozhunchak=sqrt(fangchak); cout*每门课程的标准差*n;cout-n;cout | 数学 | 语文 | 英语 | 物理 | 化学 |n;cout-n;cout 标准差 biaozhuncha0 biaozhuncha1 biaozhuncha2 biaozhuncha3 biaozhuncha4 n;cout-n;void query( student a,int size) char d; int q,i; char name10; char number12; cout选择1姓名查询endl; cout选择2学号查询d; switch( d )case 1:cout 请输入所查询的姓名 name;for ( i=0;i10;i+) if(strcmp(name,ai.stu_name)=0) /找到要查询学生的信息,将其输出 q=i; cout*查询结果*n; cout-n; cout | 学号 | 名字 | 数学 | 语文 | 英语 | 物理 | 化学 | n; cout-n; cout aq.studynumber aq.stu_name aq.score0 aq.score1 aq.score2 aq.score3 aq.score4endl; cout-n; if(strcmp(name,a0.stu_name)&strcmp(name,a1.stu_name)&strcmp(name,a2.stu_name)&strcmp(name,a3.stu_name)& strcmp(name,a4.stu_name)&strcmp(name,a5.stu_name)&strcmp(name,a6.stu_name)&strcmp(name,a7.stu_name)& strcmp(name,a8.stu_name)&strcmp(name,a9.stu_name)!=0) cout没有您查询的信息n ; break;case 2:cout 请输入所查询的学号 number; for ( i=0;i10;i+) if(strcmp(number,ai.studynumber)=0)q=i; cout*查询结果*n; cout-n; cout | 学号 | 名字 | 数学 | 语文 | 英语 | 物理 | 化学 | n; cout-n; cout aq.studynumber aq.stu_name aq.score0 aq.score1 aq.score2 aq.score3 aq.score4endl; cout-n; if(strcmp(name,a0.stu_name)&strcmp(name,a1.stu_name)&strcmp(name,a2.stu_name)&strcmp(name,a3.stu_name)& strcmp(name,a4.stu_name)&strcmp(name,a5.stu_name)&strcmp(name,a6.stu_name)&strcmp(name,a7.stu_name)& strcmp(name,a8.stu_name)&strcmp(name,a9.stu_name)!=0) cout没有您查询的信息n ; break;default:cout error endl;void sort() using namespace std;int t,k,j,i; char h10,e12; cout*排序*n; cout-n; for( k=0;k5;k+) for( i=0;i10;i+) for( j=i;j10;j+) if(stui.scorekstuj.scorek) t=stui.scorek,stui.scorek=stuj.scorek, stuj.scorek=t; strcpy(h,stui.stu_name),strcpy(stui.stu_name,stuj.stu_name ),strcpy(stuj.stu_name,h); strcpy(e,stui.studynumber),strcpy(stui.studynumber,stuj.studynumber),strcpy(stuj.studynumber,e); if(k=0) cout | 数学 | n ; else if(k=1) cout | 语文 | n ; else if(k=2) cout | 英语 | n ;else if(k=3) cout | 物理 | n ;else cout | 化学 | n ; cout-n;cout | 学号 | 名字 | 分数 | n ; for(i=0;i10;i+) cout stui.studynumber stui.stu_name stui.scorekendl; cout-n;double c10;/每个学生的成绩的平均值for ( i=0;i10;i+) ci=(stui.score0+stui.score1 +stui.score2+stui.score3+stui.score4)/5.00; for(i=0;i10;i+) for(j=i;j10;j+) if(cicj) t=ci,ci=cj, cj=t; strcpy(h,stui.stu_name),strcpy(stui.stu_name,stuj.stu_name ),strcpy(stuj.stu_name,h); strcpy(e,stui.studynumber),strcpy(stui.studynumber,stuj.studynumber),strcpy(stuj.studynumber,e); cout*平均分排序*n; cout-n; cout | 学号 | 名字 | 平均分 |n; cout-n; for(i=0;i10;i+) cout stui.studynumber stui.stu_name ci n; cout)和小于()和输出操作符(),用来将MyString类型的字符串输入和输出(只能用友元函数实现)。并且,选择合适的流参数,使得既可以从键盘输入,也可以从文件输入,既可以输出到屏幕,也可以输出到文件。(8)定义成员函数length,用来得到MyString类型字符串的长度。(9)定义成员函数c_str(),用来将MyString类型的字符串转变为C字符串。(10)定义成员函数input_line,用来输入一行MyString类型的字符串。既可以从键盘输入,也可以从文件输入。(11)定义成员函数substr,用来得到并返回MyString类型调用对象的一个子字符串,该子字符串开始于调用对象的某位置position,长度是length(包含length个字符)。(12)定义成员函数find,返回某一个字符串在调用对象中首次出现的位置。要求:(1)使用三个文件:类的接口文件;类的实现文件;应用程序文件。(2)给自己定义的类创建一个命名空间。(3) main部分中,要对类中的成员函数和友元函数进行使用和测试。二、接口文件: #include using namespace std;namespace mynameclass MyStringpublic:MyString( );MyString(char par) ;MyString(const MyString& mystring_object); /复制构造函数MyString( ); /析构函数 void operator = (const MyString& right_side);void operator = (const char right_side );friend bool operator =(const MyString& left_side, const char right_side ); friend bool operator =(const MyString& left_side, const MyString& right_side); friend MyString operator +( MyString& string1, MyString& string2); friend MyString operator +( MyString& string1, char string2 ); friend bool operator ( MyString& string1, MyString& string2);friend bool operator (istream& ins, MyString& the_object); friend ostream& operator (ostream& outs, const MyString& the_object);int length( ) const;const char* c_str( ) const;istream& input_line(istream& ins);MyString substr(const int& position,const int& length);int find(MyString& string);private: char *p; int str_length;三、实现文件: #include #include #include mystring.husing namespace std;using namespace myname;namespace myname/*-默认构造函数,使得对象为空字符串,字符串长度为0-*/ MyString:MyString( ) : str_length(0) p = new char1; p0=0; /*-参数化构造函数,接收一个C字符串作为参数,使得对象初始化为该参数的值-*/ MyString:MyString(char par) int k=0;while(park!=0) k+; str_length=k;p= new charstr_length+1; for(int j=0;jstr_length;j+) pj=parj;pj=0; M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗创新与创业机遇
- 临床营养支持工作总结
- 原创中班科学标准课件沉与浮沉浮实验
- 感知时空课程设计
- 2025秋华师大版八年级数学上册习题标准课件
- 家庭教育课程设计背景
- 保育专业课程设计心得
- 内分泌科患者管理总结
- 优化诊疗流程提升服务质量
- 小学语文博物馆课程设计
- 2026届上海市青浦区高三一模数学试卷和答案
- 2026年重庆安全技术职业学院单招职业技能测试题库附答案
- 2025年宝鸡麟游县殡仪馆及公益性公墓招聘(10人)笔试考试备考题库及答案解析
- 微创机器人手术基层普及路径
- 2025年黑龙江省公务员《申论(行政执法)》试题含答案
- 2025黑龙江鸡西兴凯物业管理有限公司招聘区属国有企业中层管理人员7人考试参考题库附答案解析
- 2025江苏镇江市京口产业投资发展集团有限公司招聘2人备考题库附答案详解(轻巧夺冠)
- 福建省福州市仓山区2024-2025学年三年级上学期期末数学试题
- 中医特色护理在急诊科的应用
- (正式版)DB32∕T 5161-2025 《尘肺病康复站服务规范》
- 旋挖钻机地基承载力验算2017.7
评论
0/150
提交评论