2022年C++程序设计专题实验实验报告_第1页
2022年C++程序设计专题实验实验报告_第2页
2022年C++程序设计专题实验实验报告_第3页
2022年C++程序设计专题实验实验报告_第4页
2022年C++程序设计专题实验实验报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

兰州交通大学请正反打印请正反打印《C++程序设计专项实验》实验报告专业计算机科学与技术班级学号学生姓名完毕日期指引教师成绩

【排版阐明】(1)一级标题用黑体三号,加粗。(2)如有二级标题,请使用黑体、四号、加粗。(3)正文中文均用宋体小四号,英文用TimesNewRoman字体。(4)正文行距建议设立为1.25倍行距。(5)程序源代码部分建议使用五号、TimesNewRoman字体;(6)实验报告中的图和表的格式必须有编号和标题,且图表均要居中显示,标题字号宋体5号,英文用TimesNewRoman5号字体图表中的字号大小合适,显示比较清晰。如下所示(图的标题在下方、表的标题在上方):图1XXXXXXX图表1XXXXXXX表数据1数据2数据3数据4数据5………【附加阐明】(1)实验报告必须按照本模板的标题来写,具体内容可以根据自己的设计状况如实填写;(2)实验报告内容的总体排版规定整洁美观;(3)实验报告按规定命名:学号_姓名_班级.doc,例如:10301_张三_计算机1203班.doc;(4)最后提交的电子版内容为:实验报告和可以对的运营的完整源代码,源代码为压缩文献(rar),命名规范和实验报告命名一致;(5)最后提交的纸质版内容为:实验报告纸质版,规定A4正背面打印;(6)整个实验内容必须自己独立完毕,不得抄袭她人作业,雷同作业均按0分记;(7)作业提交的截止时间为6月20日,逾期按0分记。C++程序设计专项实验任务课本任务书用A4纸正背面打印任务书用A4纸正背面打印所在系:计算机课程名称:C++程序设计专项实验指引教师:兰丽专业班级:计算机1503班学生姓名:张忠帅学号:11028实验目的1.使学生进一步理解继承与派生的基本概念;2.使学生理解并掌握单一继承和多继承的原理;3.使学生掌握在不同继承方式下的基类成员的访问控制。4.使学生理解构造和派生的使用。5.使学生理解并掌握多态性和虚函数的使用。6.使学生理解数据的共享和保护的措施和意义。实验要求基本规定(1)本次专项实验共涉及5个大型设计题目,其中必作题为必须完毕的题目,背面4个题目中至少选作一种。(2)分析题目规定,设计相应的类及对象;(3)设计算法操作对象;(4)对设计进行编程、调试、修改;(5)针对题目规定,作相应测试及成果分析。2.专项实验论文编写规定:(1)按照论文统一规格撰写打印报告;(2)论文涉及目录、正文、总结等;(3)装订按学校统一规定完毕。必作题目:通过组合和派生构成新的类本设计题目的任务是使用Point类产生Line类。分别通过组合类及派生类两种措施实现,并规定分别给出使用类模板实现的程序。本设计题的目的是使学生掌握在不同的实现措施中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合类和派生类。此外本设计题目要让学生进一步掌握和理解类模板的技术及其实现措施。题目详细要求选作题目题目1:人员信息管理系统本设计题目的任务是设计一种人员信息管理系统,并使用虚函数实现多态性,完毕显示不同人员信息的任务。设计employee类,用来存储雇员的编号,级别,月薪等信息,可以对其进行操作和显示。以employee为基类派生出technician类,表达兼职技术人员,以及manager类,表达经理,以及salesman类,表达兼职推销员。运用manage类和salesman类派生出salesmanager类,表达销售经理。注意使用虚基类。进一步使用虚函数和抽象类改善上面的程序。本设计题目的目的是让学生进一步理解和掌握C++中类的继承,虚基类,多态性,虚函数以及抽象类技术及实现措施。题目2:成绩管理系统输入一种班级的学生基本信息(涉及学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5)规定顾客录入每个学生每门课程的分数;可以计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名;计算全班各门功课的平均分,显示每门课程中低于平均分的每一种学生的学号,姓名,性别,科目,成绩等信息;显示每门科目中,成绩在90分以上的学生信息。此外还输出每门科目中不及格的学生信息;能按姓名或者学号查找,增长,删除和保存各个学生的信息。题目3:高校教职工人事管理系统基本规定:(1)设计一种菜单将实现的功能显示出来,并有选择提示(2)教师的基本信息涉及编号、职工分类(“行政人员”,“教师”,“一般员工”,“退休人员”,“返聘人员”,“临时工”)、性别、年龄,职务(“无”,“科级”,“处级”,“地级”);称(“无”,“初级”,“中级”,“高档”);政治面貌(“群众”,“中共党员”,“民主党派”)、学历(“中专”,“大专”,“大学”,“研究生”,“博士”)(3)信息的输入输出可以重载输入与输出操作符(4)可以实现教职工信息增长、删除、修改、查找。(5)可以记录在职人员、中共党员、女教职工、高职称、高学历的人数。题目4:学生考勤管理系统问题描述:在学生考勤管理系统中,考勤信息记录了学生的缺课状况,它涉及:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。系统功能涉及信息录入、修改、查询、记录等。功能要求:录入学生的缺课记录;修改某个学生的缺课记录;查询某个学生的缺课状况;记录某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;记录某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序。《C++程序设计专项实验》课程成绩评估措施课程代码:3241课程负责人:胡晓辉任课教师:兰丽学时:16学分:1考试方式:设计报告一、成绩构成及比例1.总评成绩总评成绩=平时总成绩(30%)+设计报告成绩×70%2.平时成绩平时成绩=考勤成绩(占总评成绩的5%)+作业成绩(占总评成绩的20%)+答疑成绩(占总评成绩的5%)。二、各部提成绩评估措施1.考勤成绩考勤成绩占总评成绩的5%,总分5分。旷课一次扣1分,事假、病假请假1次扣0.5分,早退1次扣1分,迟到不扣分。2.作业成绩作业成绩占总评成绩的20%。本课程共开1周,每授课都需布置作业,每2天收一次作业,合计2次作业成绩,每次作业满分100分,作业成绩为各次作业成绩的平均分。计分原则为:(1)作业完整,论述清晰,内容对的,书写规范,得100分。(2)作业完整,论述清晰,内容基本对的,书写规范,得80分。(3)作业完整,论述较清晰,内容基本对的,书写较规范,得70分。(4)作业完整,论述较清晰,内容基本对的,书写不规范,得60分。(5)作业欠完整,论述较清晰,内容基本对的,书写规范,得50分。(6)作业不交或抄袭作业者为0分。(7)晚交、补交者每次先按照上面(1)~(6)评分,但最高不超过50分。注:若发既有雷同作业,波及所有当事学生的本次作业成绩全按0分记。若查实两次均积极抄袭别人作业现象,取消当事学生期末考试资格。3.设计报告成绩设计报告成绩占总评成绩的70%。设计报告成绩=系统分析(占设计报告成绩的25%)+设计算法编程(占设计报告成绩的25%)+测试及成果分析(占设计报告成绩的25%)+撰写报告(占设计报告成绩的25%)系统分析计分原则为:(1)具体分析了系统的特点,并给出选择实现模型的因素,得25分。(2)较具体分析了系统的特点,给出了实现模型,得19分。(3)简要分析系统的特点,给出了实现模型,得13分。(4)未分析系统特点,未给出实现模型,得6分。设计算法编程计分原则为:(1)设计了所有或以上功能算法且实现,得25分。(2)设计了题目规定三分之二功能算法且实现,得19分。(3)设计了题目规定三分之一功能算法且实现,得13分。(4)设计了题目规定三分之一如下功能算法且实现,得6分。测试及成果分析:(1)进行了较具体测试且各处成果分析,得25分。(2)简朴测试且给出成果分析,得19分。(3)简朴测试未给出成果分析,得13分。撰写报告:(1)报告格式规范,无排版错误,得25分。(2)报告格式规范,有个别字体、图表格式不对的,得19分。(3)报告格式基本规范,但部分字体、图表命名格式不对的,得13分。(4)报告格式完全不规范,字体、图表命名格式不对的,得6分。注:若发既有雷同,波及所有当事学生的成绩全按0分记。若查实为积极抄袭别人现象,本课程为不及格。三、有关取消考试资格的阐明1.缺课合计6学时及以上者取消考试资格。2.无端旷课4学时者取消考试资格。四、有关该课程成绩评估措施的执行阐明1.严格按照学院审核通过的措施执行,不得随意改动或变通。2.本措施开学第一授课向全体学生宣布阐明。3.平时成绩评估成果在期末考试前向全体同窗发布,负责解释、阐明和质疑,确认无误后交学院教务办公室备案。4.课程成绩评估措施由学院审核通过后,教务办公室统一盖章印发后执行。课程负责人负责将成绩评估措施发放到任课教师,并组织阐明和解释有关细则,所有开课教师评分规定和宽严限度要保持一致,以保证班级间平时成绩的公正性。5.课程名称和学时相似的课程期末考试采用同一套试题和补考试题,两个以上开课教师必须采用流水线方式批阅试卷,严禁单独批阅。6.期末试题和补考试题由课程负责人组织任课教师集体研究出题,命题质量实行审定制度,应尽量避免概念题、简答题、选择题、填空题,杜绝教材及作业中的原题。命题须经教学院长审定并于开考前两周交付印刷。7.开卷、半开卷考试,考生可携带教材、教辅等印刷资料及本人的笔记本、作业本等进入考场,但不得借用或复印她人的笔记本和作业本,否则按考试违纪解决。考试过程中不得互相讨论、互相借用资料,否则按考试违纪或作弊解决。8.所有考试中使用的各类复杂公式、图表可按实际需要附于试卷末尾。9.教师严禁向学生提供历届考试题,严禁考试前勾画重点和范畴,严禁泄露或变相泄露试题,并做好试题保密工作。课程负责人签字:兰丽年1月9日目录1实验目的及规定 错误!未定义书签。2设计内容 错误!未定义书签。2.1必作题 错误!未定义书签。2.1.1程序基本功能 错误!未定义书签。2.1.2程序设计方案和原理 错误!未定义书签。2.1.3程序代码实现 错误!未定义书签。2.1.4程序运营效果 122.2必作题 错误!未定义书签。2.2.1程序基本功能 错误!未定义书签。2.2.2程序设计方案和原理 错误!未定义书签。2.2.3程序代码实现 错误!未定义书签。2.2.4程序运营效果 错误!未定义书签。3实验总结 211实验目的及规定C++程序设计专项实验是计算机类专业的集中实践性环节之一,是学习完《C++程序设计》课程后进行的一次全面的综合练习。专项实验是课程教学中的一项重要内容,是完毕教学筹划达到教学目的的重要环节,是教学筹划中综合性较强的实践教学环节,它对协助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。本次课程设计通过设计和实现几种应用程序,达到如下目的:使学生可以比较纯熟地掌握C++语言的基本语法规则;纯熟掌握基本的面向对象的程序设计措施,如类的实现、创立类的实例—对象、实现类的继承等;掌握多种面向对象的程序设计技术,如继承和派生,虚继承、虚函数、抽象类、多态的实现、运算符重载、使用C++原则库等。掌握在VC++平台上进行程序设计和调试的措施。具体规定涉及:整个专项实验的各个环节学生自己动手。前1个题目是C++的基本知识,每个学生都必须完毕。背面题目可作为选做内容。写出相应的算法分析和源代码。规定上机调试通过。对课程设计进行总结,撰写课程设计报告。2设计内容2.1必作题——组合类与派生类2.1.1程序基本功能该程序将通过组合类和派生类两种不同的方式来产生line类,求出line的起始点、结束点,并且求出line的长度。2.1.2程序设计方案和原理用类的组合,使line类涉及Point类的两个对象p1和p2,作为其数据成员。Line类具有计算线段长度的功能,在构造函数中实现。派生类派生类组合类产产生生Line类Line类图1构造图组合类源程序 #include<iostream>#include<cmath>usingnamespacestd;classPoint{//Point类的定义public: Point(intxx,intyy):x(xx),y(yy){} intgetx(){returnx;}intgety(){returny;}private:intx; inty;};//类的组合classLine{public: Line(Pointxp1,Pointxp2); doublegetlen(){returnlen;}private: doublelen; Pointp1; Pointp2;};//组合类的构造函数Line::Line(Pointxp1,Pointxp2):p1(xp1),p2(xp2){doublex=static_cast<double>(p1.getx()-p2.getx());doubley=static_cast<double>(p1.gety()-p2.gety());len=sqrt(x*x+y*y);}//主函数intmain(){intx1,y1,x2,y2;cout<<"请输入第一种点的坐标:";cin>>x1>>y1;cout<<"请输入第二个点的坐标:";cin>>x2>>y2;Pointp1(x1,y1),p2(x2,y2);Lineline(p1,p2);cout<<"Thelenghis:"<<line.getlen()<<endl;return0;}2.1.4程序运营效果及成果分析图2组合类运营成果图按照提示在界面输入两个点的坐标,运营程序后就会得出line的长度。派生类源程序#include<iostream>#include<cmath>usingnamespacestd;classPoint{intx,y;public:Point(inta=0,intb=0){SetPoint(a,b);}voidSetPoint(inta,intb);//设立点的坐标值intGetX(){returnx;}intGetY(){returny;}voidshowPoint();//显示点的坐标值};voidPoint::SetPoint(inta,intb){x=a;y=b;}voidPoint::showPoint(){}classLine:publicPoint{public:Line(inta,intb,intc,intd):Point(a,b){EndPoint.SetPoint(c,d);}doubleLength(){doublep=(double)(EndPoint.GetX()-GetX());doubleq=(double)((EndPoint.GetY()-GetY()));returnsqrt(p*p+q*q);}voidlength(){cout<<"开始点:["<<GetX()<<','<<GetY()<<']'<<endl;cout<<"结束点:["<<EndPoint.GetX()<<','<<EndPoint.GetY()<<']'<<endl;}private:PointEndPoint;};intmain(){intx1,y1,x2,y2;cout<<"请输入开始点的坐标:";cin>>x1>>y1;cout<<"请输入结束点的坐标:";cin>>x2>>y2;Lineline(x1,y1,x2,y2);cout<<"两个点分别为:"<<endl;line.length();cout<<"line的长度:";cout<<line.Length()<<endl;return0;}程序运营效果及成果分析图3派生类运营成果图成果分析按照提示输入两个点的坐标后;运营程序,将在界面上显示出两个点以及两个点之间的距离。通过派生的措施可以很简朴的求出两个点之间距离。2.2必做题——学生考勤管理系统2.2.1程序的基本功能该程序通过构造体设立了学生的基本信息,有学生姓名,科目,日期,第一节课和缺课类型,整个函数又分为四个部分,第一部分为学生信息的录入,以文献的形式将学生信息存储,为了背面使用;第二部分为学生信息的查询,输入你要查询的学生姓名,学生的信息就所有显示出来;第三部分为学生信息的修改,该功能的实现先是找出你要修改信息的学生,然后进行修改之后,继续存储到文献之中,为背面使用。第四部分为学生旷课次数的记录,也是通过查询,找出符合条件的信息,进而记录出更加直观的信息,以便于阅读。2.2.2设计方式几原理学生考勤管理系统学生考勤管理系统信息的统信息的统计信息的修改信息的查询信息的录入图4管理系统构造图2.2.3程序的源代码实现#include<iostream>#include<string>#defineSIZE5usingnamespacestd;structattence{charname[10]; charproject[10]; chardate[10]; chartime[10]; chartype[10]; }att[SIZE];voidmenu(){cout<<"******************学生考勤管理系统************"<<endl;cout<<"1.信息录入"<<endl;cout<<"2.信息查询"<<endl;cout<<"3.信息修改"<<endl;cout<<"4.信息记录"<<endl;cout<<"5.退出系统"<<endl;cout<<"**********************************************"<<endl;}//建立文献来存储录入的信息voidsave(){FILE*fp;inti;if((fp=fopen("att.dat","wb+"))==NULL){printf("不能打开此文献\n");return;}for(i=0;i<SIZE;i++)if(fwrite(&att[i],sizeof(structattence),1,fp)!=1)printf("filewriteerror\n");fclose(fp);}voidreadate(){FILE*fp;if((fp=fopen("att.dat","wb+"))==NULL){printf("不能打开此文献\n");return;}fclose(fp);}//考勤系统学生信息的录入功能voidinput(){inti;cout<<"请按如下顺序输入信息"<<endl;cout<<"姓名"<<"科目"<<"日期"<<"第几节课"<<"类型"<<endl;for(i=0;i<SIZE;i++){ cin>>att[i].name>>att[i].project>>att[i].date>>att[i].time>>att[i].type;save();}menu();}voidoutput(){inti;readate();for(i=0;i<SIZE;i++){if(!i)cout<<"姓名"<<"科目"<<"日期"<<"第几节课"<<"类型"<<endl;cout<<att[i].name<<'\t'<<att[i].project<<'\t'<<att[i].date<<'\t'<<att[i].time<<'\t'<<att[i].type<<'\t'<<endl;}menu();}//修改功能voidxiugai(){ FILE*fp; inti; charname[10]; charproject[10]; chardate[10]; chartime[10]; chartype[10]; charstr[10]; charstr1[10]; readate(); cout<<"请输入要修改的学生姓名和缺课科目:"<<endl; cout<<"姓名"<<"科目"<<endl; cin>>str>>str1;cout<<"请按如下顺序输入修改后的信息"<<endl;cout<<"姓名"<<"科目"<<"日期"<<"第几节课"<<"缺课类型"<<endl; cin>>name>>project>>date>>time>>type;for(i=0;i<SIZE;i++) if(strcmp(att[i].name,str)&&strcmp(att[i].project,str1)==0) { strcpy(att[i].name,name); strcpy(att[i].project,project); strcpy(att[i].date,date); strcpy(att[i].time,time);strcpy(att[i].type,type); cout<<i<<endl;}if((fp=fopen("att.dat","wb+"))==NULL){cout<<"不能打开此文献"<<endl;}for(i=0;i<SIZE;i++)if(fwrite(&att[i],sizeof(structattence),1,fp)!=1) { cout<<"写入文献错误"<<endl;fclose(fp);exit(0); } fclose(fp);cout<<"修改成功"<<endl;menu();}//记录考勤状况voidsave1(){FILE*fp;inti;if((fp=fopen("att.dat","wb+"))==NULL){printf("不能打开此文献\n");return;}for(i=0;i<SIZE;i++)if(fwrite(&att[i],sizeof(structattence),1,fp)!=1)printf("filewriteerror\n");fclose(fp);}voidreadate1(){FILE*fp;if((fp=fopen("att.dat","wb+"))==NULL){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论