c++程序设计实践报告_第1页
c++程序设计实践报告_第2页
c++程序设计实践报告_第3页
c++程序设计实践报告_第4页
c++程序设计实践报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

中南大学c++程序设计PAGEPAGE1中南大学本科生课程设计(实践)任务书、设计报告(C++语言程序设计)题目稿件管理数据系统学生姓名李林玉指导教师李力学院能源科学与工程学院专业班级能源动力类0906班学生学号1003090614计算机基础教学实验中心2010年07

目录设计任务书……………3课程实践报告…………4一、实践内容…………4二、实践成果…………4三、程序功能…………4四、设计思路…………5五、源程序……………7六、运行情况…………13七、实践心得…………16八、实践收获与不足…………………18C++语言程序设计任务书指导老师:李力课程编号:一、学时与学分学时:40学分:2二、实践目的计算机实践是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。三、实践任务与要求用C++语言编程。编程题目如下:(一)统计一个班(最多有35人)的学生成绩,要求能实现如下功能:(1)输入每个学生的学号和6门课程的成绩。(2)计算每个学生的平均分和总分。(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。(4)根据用户要求输出某门课程(从键盘输入课程号)成绩在90分以上(含90分)且总分在前5名的学生情况,包括学号、各科成绩、平均分和总分。(5)根据统计,绘制总成绩五分制百分比饼图。(自学利用C++提供的库函数绘制曲线图)。要求:利用类来实现,学生学号和成绩采用文件输入,排序。

数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。(二)统计商品销售数据,要求能用菜单实现如下功能:(1)输入每件商品的名称,编号,入库日期,标价,成本。(2)输入每件商品的售价,出售日期。(3)按总销售量从高到低排出每种商品的名称,售出件数,销售额。(4)根据用户要求输出某商品某月(从键盘输入商品名称和月份)的平均售价、售出件数、总利润。(5)根据统计,绘制商品销售利润百分比饼图。(自学利用C++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。

数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。(三)统计足球比赛数据,要求能用菜单实现如下功能:(1)输入每场比赛的主队名称,客队名称,比赛日期,主队得分,客队得分。(2)按总得分从高到低排出每个队的名称,总得分,胜,和,负的次数。(3)根据用户要求输出某队某月(从键盘输入队名和月份)的所有比赛数据。(4)根据用户要求输出某队主场总得分,客场总得分(5)根据用户输入,绘制某队成绩历史趋势图。(自学利用C++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。

数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。(四)统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用C++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。

数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。(五)统计用电管理数据,要求能用菜单实现如下功能:(1)输入每个电表的用户名,楼栋号,抄表日期,电表读数。(3)按作者的用电量,从高到低排出每个用户的总用电量。(3)根据用户要求输出某用户某月(从键盘输入用户名和月份)的总用电量。(4)统计某楼栋从某月到某月(从键盘输入)的总用电量(5)绘制按的楼栋的用电百分比饼图。(自学利用C++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。

数据的组织对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。以上五题任选一题。四、实践纪律学生除了要遵守实践期间学院的基本规定外,还要求做到:1.必须在规定的时间、地点,独立完成以上任务;2.不得迟到、早退。尤其不得擅自缺席。五、设计报告要求任务书必须作为报告第一页2.报告不得少于3000字:主要总结实践心得、实践成果、程序功能、设计思路(程序流程图)、源程序(加上必要的注释)、运行情况、课程设计的收获与不足等六、时间安排两周时间七、成绩评定规则成绩分为优、良、中、及格、不及格五等。优:程序功能完备,报告有深度,遵守实践纪律。良:程序功能满足要求,报告有内容,遵守实践纪律。中:程序和报告基本满足要求,遵守实践纪律。及格:程序有错误但大体能运行,有报告书,基本遵守实践纪律。不及格:程序完全错误或严重违反实践纪律。C++语言程序设计报告实践内容统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用C++提供的库函数绘制曲线图)。二、实践成果灵活运用《C++程序设计》课程所学的基础知识,独立设计大型程序的能力;该程序必须用户界面友好、操作简洁方便,大大提高工作效率。此程序先由用户输入数据,并存储。再作各种功能处理。整个程序基本可以实现稿件管理数据系统的统计。程序功能录入功能:可以写入关于稿件的基本信息,并进行以下几项功能。排序功能:用户可按作者的省份,将每个省的总发表篇数进行排序,并输出。查询功能:用户可根据作者与月份查出某作者某月的稿件数据,没找到的给予提示。绘制饼状图功能:系统根据输入的数据绘制高价男生份的百分比饼图。各项退出功能:在每个环节里都设有退出功能。四、设计思路统计稿件管理数据系统程序框图开始 开始输出菜单及提示信息1输出菜单及提示信息输入每一稿件第一作者名字,稿件名称,投稿日期,作者的省份2输入每件稿件的发表日期,审稿意见。3按省份排序输入功能数字4输入功能数字按作者名与月份查找5绘制百分比饼状图1 1N2N2YN YN3 3AddNew()YN4AddNew()YN4NNYNNYAddNew()Y5 AddNew()Y5退出 退出Sort_by_province()Sort_by_province()Y NNDoFind()DDoprint()结束结束五、源程序#include<windows.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<tchar.h>#include<math.h>#include<cstdlib>#include<iostream.h>#include<string.h>extern"C"WINBASEAPIHWNDWINAPIGetConsoleWindow();//定义稿件数据类//////////////////////////////////classDocument{public:intflag;charname[20];charperson_name[20];chardate1[20],date2[20];charprovince[20];charsuggest[50];Document(){this->flag=0;}};/////////////////////////////定义稿件省份类//////////////////////////////////classPro_count{public:charprovince[20];doublecount;Pro_count(){this->count=1;}};/////////////////////////////函数声明语句///////////////////////////////////voiddisplay();voidinput();voidinput2();voidqsort();voidoutputDateDoc();voidinspect();voidPrint();////////////////////////////定义主函数///////////////////////////////////////intmain(intargc,char*argv[]){intn;while(1){system("cls");display();cin>>n;if(n==0)break;system("cls");switch(n){case1:{input();break;}case2:{input2();break;}case3:{qsort();break;}case4:{outputDateDoc();break;}case5:{inspect();break;}case6:{Print();break;}default:{cout<<"你输入的方式有误,请重新输入!"<<endl;system("pause");}}}returnEXIT_SUCCESS;}//////////////////////////稿件投稿数据录入////////////////voidinput(){Documentp;cout<<"请输入作者名字:"<<endl;cin>>p.person_name;cout<<"请输入稿件名称:"<<endl;cin>>;cout<<"请输入投稿日期"<<endl;cin>>p.date1;cout<<"请输入作者的省份"<<endl;cin>>vince;FILE*fp;if((fp=fopen("Mydata.dat","ab"))==NULL){cout<<"文件打开失败!"<<endl;system("pause");exit(1);}fseek(fp,0L,SEEK_END);fwrite(&p,sizeof(Document),1,fp);fclose(fp);system("pause");}////////////////////////稿件发表数据录入///////////////////////////////////////voidinput2(){charname[20],date2[20],suggest[20];cout<<"请输入要发表的稿件名称:"<<endl;cin>>name;Documentdoc[50];FILE*fp;if((fp=fopen("Mydata.dat","rb"))==NULL){cout<<"文件打开失败!"<<endl;system("pause");exit(1);}inti=1;fread(&doc[0],sizeof(Document),1,fp);//cout<<"Document"<<1<<""<<doc[0].person_name<<endl;///////////////////////////////while(!feof(fp)){//cout<<"Document"<<i<<""<<endl;/*cout<<doc[i-1].person_name<<endl;///////////////////////////////cout<<doc[i-1].name<<endl;///////////////////////////////cout<<doc[i-1].date1<<endl;///////////////////////////////cout<<doc[i-1].province<<endl<<endl;///////////////////////////////*/fread(&doc[i],sizeof(Document),1,fp);i++;}//system("pause");fclose(fp);//cout<<"cheng"<<endl;intj,k=-1;for(j=0;j<i;j++)if(strcmp(doc[j].name,name)==0){k=j;break;}/**/if(k!=-1){doc[k].flag=1;cout<<"请输入发表日期"<<endl;cin>>date2;cout<<"请输入审稿意见"<<endl;cin>>suggest;strcpy(doc[k].date2,date2);strcpy(doc[k].suggest,suggest);FILE*fp;if((fp=fopen("Mydata.dat","wb"))==NULL){cout<<"文件打开失败!"<<endl;system("pause");exit(1);}for(j=0;j<i;j++){fwrite(&doc[j],sizeof(Document),1,fp);}fclose(fp);}else{cout<<"不存在该稿件名,请确认后在输入!"<<endl;}system("pause");}//////////////////稿件按作者的省份输出以及排序/////////////////////////////voidqsort(){Documentdoc[50];FILE*fp;if((fp=fopen("Mydata.dat","rb"))==NULL){cout<<"文件打开失败!"<<endl;system("pause");exit(1);}inti=1;fread(&doc[0],sizeof(Document),1,fp);while(!feof(fp)){//cout<<doc[i-1].person_name<<endl;/////////////////////////////////cout<<doc[i-1].name<<endl;/////////////////////////////////cout<<doc[i-1].date1<<endl;/////////////////////////////////cout<<doc[i-1].province<<endl;///////////////////////////////fread(&doc[i],sizeof(Document),1,fp);i++;}fclose(fp);//system("pause");intn=i-1,j,k=1;//if()是空的话要返回Pro_countpro[50];//if(doc[0].flag!=0){//cout<<pro[0].province<<endl;strcpy(pro[0].province,doc[0].province);//cout<<n<<endl;//cout<<pro[0].province<<endl;system("pause");////////////////////////////////for(i=1;i<n;i++){intflag=0;for(j=0;j<k;j++){if(strcmp(pro[j].province,doc[i].province)==0){pro[j].count++;flag=1;break;}}if(flag==0){strcpy(pro[k].province,doc[i].province);k++;}}/*cout<<k<<endl;cout<<""<<endl;for(i=0;i<k-1;i++){cout<<pro[i].province<<""<<pro[i].count<<endl;}cout<<""<<endl;system("pause");*///排序intmax;n=k-1;chartemp[20],num;for(i=0;i<n;i++){max=i;for(j=i+1;j<n;j++)if(pro[max].count<pro[j].count){max=j;}if(max!=i){strcpy(temp,pro[i].province);strcpy(pro[i].province,pro[max].province);strcpy(pro[max].province,temp);num=pro[i].count;pro[i].count=pro[max].count;pro[max].count=num;}}//打印出来cout<<""<<endl;cout<<"序号"<<""<<"省份"<<""<<"发表数量"<<endl;cout<<""<<endl;for(i=0;i<=n;i++)cout<<i+1<<":"<<pro[i].province<<""<<pro[i].count<<endl;system("pause");}voidoutputDateDoc(){Documentdoc[50];FILE*fp;if((fp=fopen("Mydata.dat","rb"))==NULL){cout<<"文件打开失败!"<<endl;system("pause");exit(1);}inti=1;fread(&doc[0],sizeof(Document),1,fp);//cout<<"Document"<<1<<""<<doc[0].person_name<<endl;///////////////////////////////while(!feof(fp)){//cout<<"Document"<<i<<""<<endl;/*cout<<doc[i-1].person_name<<endl;///////////////////////////////cout<<doc[i-1].name<<endl;///////////////////////////////cout<<doc[i-1].date1<<endl;///////////////////////////////cout<<doc[i-1].province<<endl<<endl;///////////////////////////////*/fread(&doc[i],sizeof(Document),1,fp);i++;}//system("pause");fclose(fp);charname[20],date1[5];cout<<"请输入作者名字:"<<endl;cin>>name;cout<<"请输入投稿日期的月份,如八月--08"<<endl;cin>>date1;//cout<<i<<endl;intj;for(j=0;j<i-1;j++){//cout<<""<<doc[j].name<<endl;if(strcmp(doc[j].person_name,name)==0){cout<<name<<endl;if(doc[j].date1[4]==date1[0]&&doc[j].date1[5]==date1[1]){cout<<"*********************************************************"<<endl;cout<<"*********************************************************"<<endl;cout<<"作者名字:";cout<<doc[j].person_name<<endl;cout<<"稿件名称:";cout<<doc[j].name<<endl;cout<<"投稿日期:";cout<<doc[j].date1<<endl;cout<<"作者的省份:";cout<<doc[j].province<<endl;if(doc[j].flag!=0){cout<<"发表日期:";cout<<doc[j].date2<<endl;cout<<"审稿意见:"<<endl;cout<<doc[j].suggest<<endl;}}}}system("pause");}//读文件voidinspect(){Documentdoc[50];FILE*fp;if((fp=fopen("Mydata.dat","rb"))==NULL){cout<<"文件打开失败!"<<endl;system("pause");exit(1);}inti=1;fread(&doc[0],sizeof(Document),1,fp);while(!feof(fp)){cout<<""<<endl;cout<<""<<endl;cout<<"作者名字:";cout<<doc[i-1].person_name<<endl;cout<<"稿件名称:";cout<<doc[i-1].name<<endl;cout<<"投稿日期:";cout<<doc[i-1].date1<<endl;cout<<"作者的省份:";cout<<doc[i-1].province<<endl;if(doc[i-1].flag!=0){cout<<"发表日期:";cout<<doc[i-1].date2<<endl;cout<<"审稿意见:"<<endl;cout<<doc[i-1].suggest<<endl;}fread(&doc[i],sizeof(Document),1,fp);i++;}system("pause");fclose(fp);}六、运行情况(1)运行程序:出现主页面(2)按“1”号键输入稿件相关数据,按任意键(3)按“2”号键输入每件稿件的发表日期,审稿意见,按任意键回到主页面(4)按“3”号键按省份排序,按任意键回到主页面(5)按“4”号键输出某作者某月(从键盘输入作者名和月份)的所有稿件数据,按任意键回到主页面(6)按“5”号键显示稿件相关数据,按任意键回到主页面(7)按“6”号键绘制饼状图,任意键返回主界面七、实践心得(1)考前的自以为是这是第二次上计算机实践课程了,第一次是网页设计。虽然两次要完成的任务不同,但给人的感觉都是较迷茫的。由于我上课时没有认真听C++课程老师的讲解,学得相当糟糕,但要设计的又是一个较大的程序,便去请教老师。老师建议我们找一个模板,认真仔细地看,去理解它,看懂它,然后根据自己的实践内容适当修改,应该就没多大问题了。老师的话给了我莫大的鼓励,但不自觉地滋生了傲慢的态度。只要有个模板不就行了嘛,小事一桩啊!但结果并非如此,在后来的实践过程中,我还是碰到了许多麻烦。(2)开始时急于求成一个大程序都是环环相扣的,类的对象,函数的定义,变量的使用都是互相有联系的。我认为只要把模板略加改动,就能够完成这次作业了。这种投机取巧的想法让我很快尝到了苦头。程序编好后,执行时出现了许多错误,大多是定义的不规则,究其原因,我根本没看懂模板。还是仔细研究模板吧!(3)摆正心态,认真面对我首先声明头文件,然后分别定义稿件数据类、稿件省份类,再是函数声明语句,主函数的定义(switch语句的应用)。接着,我浏览了成员函数,每个成员函数看起来并不很难,简单的输入输出(AddItem),指针取值(基本都涉及到了)还有交换变量的数据域(swap)。但对指针还是相当模糊的,不能透彻地理解它,在C++机试中就是因为不了解指针,导致相关的试题都不会做。看完每一个函数,心里算是有些程序雏形了。对于按省份给每个省的总发表篇数进行排序这一问题,刚开始真的不会弄,老师让我用一维数组,可还是不太明白。于是,我询问了周边同学。他们用了多重循环语句,并且调试成功了,听他们讲解后我便用了他们的方法。,与同学讨论、向同学请教有时候也不失为一个好方法,一个人的智慧毕竟是不全面的,集体的力量才是强大的!(4)敢于挑战自己不会的东西对于绘制稿件按省份的百分比饼图,我真是丈二和尚摸不着头脑,对如何编程一窍不通。我想放弃算了,能得及格就行。但又不忍这样轻易地放弃,心想先看教程真不懂再说。下定决心后,于7月4号晚上捧起c++教材仔细研读,刚开始觉得相当的枯燥乏味,耐着性子读下去,觉得很有意思的。一边看书我一边编程,居然能编出一部分。第二天,我请教班上其他同学,然后我们一起合作完成了编程。“一分耕耘一分收获”,看着自己辛苦换来的劳动成果,心里着实美滋滋的。虽然熬了一夜,但在这过程中我收获了许多。在今后遇到困难时,我会像这

温馨提示

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

最新文档

评论

0/150

提交评论