c++MFC程序设计实践报告Word文档格式.docx
《c++MFC程序设计实践报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++MFC程序设计实践报告Word文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
用C++语言编程。
编程题目如下:
(一)统计一个班(最多有35人)的学生成绩,要求能实现如下功能:
(1)输入每个学生的学号和6门课程的成绩。
(2)计算每个学生的平均分和总分。
(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。
(4)根据用户要求输出某门课程(从键盘输入课程号)成绩在90分以上(含90分)且总分在前5名的学生情况,包括学号、各科成绩、平均分和总分。
(5)根据统计,绘制总成绩五分制百分比饼图。
(自学利用C++提供的库函数绘制曲线图)。
要求:
利用类来实现,学生学号和成绩采用文件输入,排序。
数据的组织可采用对象数组。
查阅相关资料并写出系统设计说明书。
写出实践报告。
(二)统计商品销售数据,要求能用菜单实现如下功能:
(1)输入每件商品的名称,编号,入库日期,标价,成本。
(2)输入每件商品的售价,出售日期。
(3)按总销售量从高到低排出每种商品的名称,售出件数,销售额。
(4)根据用户要求输出某商品某月(从键盘输入商品名称和月份)的平均售价、售出件数、总利润。
(5)根据统计,绘制商品销售利润百分比饼图。
利用类实现,数据采用文件输入,排序。
(三)统计足球比赛数据,要求能用菜单实现如下功能:
(1)输入每场比赛的主队名称,客队名称,比赛日期,主队得分,客队得分。
(2)按总得分从高到低排出每个队的名称,总得分,胜,和,负的次数。
(3)根据用户要求输出某队某月(从键盘输入队名和月份)的所有比赛数据。
(4)根据用户要求输出某队主场总得分,客场总得分(5)根据用户输入,绘制某队成绩历史趋势图。
(四)统计稿件管理数据,要求能用菜单实现如下功能:
(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。
(2)输入每件稿件的发表日期,审稿意见。
(3)按作者的省份,从高到低排出每个省的总发表篇数。
(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。
(5)根据用户输入,绘制稿件按省份的百分比饼图。
(五)统计用电管理数据,要求能用菜单实现如下功能:
(1)输入每个电表的用户名,楼栋号,抄表日期,电表读数。
(3)按作者的用电量,从高到低排出每个用户的总用电量。
(3)根据用户要求输出某用户某月(从键盘输入用户名和月份)的总用电量。
(4)统计某楼栋从某月到某月(从键盘输入)的总用电量(5)绘制按的楼栋的用电百分比饼图。
数据的组织对象数组。
以上五题任选一题。
四、实践纪律
学生除了要遵守实践期间学院的基本规定外,还要求做到:
1.必须在规定的时间、地点,独立完成以上任务;
2.不得迟到、早退。
尤其不得擅自缺席。
五、设计报告要求
1.任务书必须作为报告第一页
2.报告不得少于3000字:
主要总结实践心得、实践成果、程序功能、设计思路(程序流程图)、源程序(加上必要的注释)、运行情况、课程设计的收获与不足等
六、时间安排
两周时间
七、成绩评定规则
成绩分为优、良、中、及格、不及格五等。
优:
程序功能完备,报告有深度,遵守实践纪律。
良:
程序功能满足要求,报告有内容,遵守实践纪律。
中:
程序和报告基本满足要求,遵守实践纪律。
及格:
程序有错误但大体能运行,有报告书,基本遵守实践纪律。
不及格:
程序完全错误或严重违反实践纪律。
C++语言程序设计报告
一、实践内容
统计稿件管理数据,要求能用菜单实现如下功能:
二、实践成果
灵活运用《C++程序设计》课程所学的基础知识,独立设计大型程序的能力;
该程序必须用户界面友好、操作简洁方便,大大提高工作效率。
此程序先由用户输入数据,并存储。
再作各种功能处理。
整个程序基本可以实现稿件管理数据系统的统计。
三、程序功能
a)录入功能:
可以写入关于稿件的基本信息,并进行以下几项功能。
b)排序功能:
用户可按作者的省份,将每个省的总发表篇数进行排序,并输出。
c)查询功能:
用户可根据作者与月份查出某作者某月的稿件数据,没找到的给予提示。
d)绘制饼状图功能:
系统根据输入的数据绘制高价男生份的百分比饼图。
e)各项退出功能:
在每个环节里都设有退出功能。
四、设计思路
统计稿件管理数据系统程序框图
1
输入每一稿件第一作者名字,稿件名称,投稿日期,作者的省份
输入每件稿件的发表日期,审稿意见。
3
按省份排序
4
按作者名与月份查找
5
绘制百分比饼状图
五、源程序
#include<
windows.h>
conio.h>
stdio.h>
stdlib.h>
tchar.h>
math.h>
cstdlib>
iostream.h>
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{
doublecount;
Pro_count()
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;
switch(n)
case1:
{input();
break;
case2:
{input2();
case3:
{qsort();
case4:
{outputDateDoc();
case5:
{inspect();
case6:
{Print();
default:
{cout<
<
"
你输入的方式有误,请重新输入!
endl;
system("
pause"
}
returnEXIT_SUCCESS;
inti=1;
fread(&
doc[0],sizeof(Document),1,fp);
//cout<
Document"
1<
"
doc[0].person_name<
///////////////////////////////
while(!
feof(fp))
i<
/*
cout<
doc[i-1].person_name<
doc[i-1].name<
doc[i-1].date1<
doc[i-1].province<
endl<
*/
doc[i],sizeof(Document),1,fp);
i++;
//system("
fclose(fp);
//cout<
cheng"
intj,k=-1;
for(j=0;
j<
i;
j++)
if(strcmp(doc[j].name,name)==0)
{k=j;
/*-------------------------------------------*/
if(k!
=-1)
doc[k].flag=1;
请输入发表日期"
date2;
请输入审稿意见"
suggest;
strcpy(doc[k].date2,date2);
strcpy(doc[k].suggest,suggest);
FILE*fp;
if((fp=fopen("
Mydata.dat"
"
wb"
))==NULL)
文件打开失败!
exit
(1);
{fwrite(&
doc[j],sizeof(Document),1,fp);
else
不存在该稿件名,请确认后在输入!
//////////////////稿件按作者的省份输出以及排序/////////////////////////////
voidqsort()
Documentdoc[50];
rb"
intn=i-1,j,k=1;
//if()是空的话要返回
Pro_countpro[50];
//if(doc[0].flag!
=0){
pro[0].province<
strcpy(pro[0].province,doc[0].province);
n<
////////////////////////////////
for(i=1;
i++)
intflag=0;
k;
if(strcmp(pro[j].province,doc[i].province)==0)
{pro[j].count++;
flag=1;
if(flag==0)
strcpy(pro[k].province,doc[i].province);
intmax;
n=k-1;
chartemp[20],num;
for(i=0;
max=i;
for(j=i+1;
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;
//打印出来
------------------------------------------------------------------"
序号"
省份"
发表数量"
=n;
i+1<
:
pro[i].province<
pro[i].count<
voidoutputDateDoc()
charname[20],date1[5];
请输入作者名字:
name;
请输入投稿日期的月份,如八月--08"
date1;
intj;
i-1;
---------"
doc[j].name<
if(strcmp(doc[j].person_name,name)==0)
name<
if(doc[j].date1[4]==date1[0]&
&
doc[j].date1[5]==date1[1])
*********************************************************"
作者名字:
;
doc[j].person_name<
稿件名称:
投稿日期:
doc[j].date1<
作者的省份:
doc[j].province<
if(doc[j].flag!
=0)
发表日期:
doc[j].date2<
审稿意见:
doc[j].suggest<
--------------------------------------------------------"
if(doc[i-1].flag!
doc[i-1].date2<
doc[i-1].suggest<
六、运行情况
(1)运行程序:
出现主页面
(2)按“1”号键输入稿件相关数据,按任意键回到主页面
(3)按“2”号键输入每件稿件的发表日期,审稿意见,按任意键回到主页面
(4)按“3”号键按省份排序,按任意键回到主页面
(5)按“4”号键输出某作者某月(从键盘输入作者名和月份)的所有稿件数据,按任意键回到主页面
(6)按“5”号键显示稿件相关数据,按任意键回到主页面
七、实践心得
(1)考前的自以为是
这是第二次上计算机实践课程了,第一次是网页设计。
虽然两次要完成的任务不同,但给人的感觉都是较迷茫的。
由于我上课时没有认真听C++课程老师的讲解,学得相当糟糕,但要设计的又是一个较大的程序,便去请教老师。
老师建议我们找一个模板,认真仔细地看,去理解它,看懂它,然后根据自己的实践内容适当修改,应该就没多大问题了。
老师的话给了我莫大的鼓励,但不自觉地滋生了傲慢的态度。
只