c++实践报告书.doc_第1页
c++实践报告书.doc_第2页
c++实践报告书.doc_第3页
c++实践报告书.doc_第4页
c++实践报告书.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

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

文档简介

中南大学c+语言程序设计 设计者:李红江中南大学本科生课程设计(实践)任务书、设计报告(c+课程设计)题 目统计用电管理数据程序设计学生姓名李红江指导教师李力学 院能源科学院与工程学院专业班级能动1104班学生学号1003110429计算机基础教学实验中心2012年 06 月 28 日目 录设计任务书3课程实践报告5一、实践内容5二、实践成果6三、程序功能6四、设计思路7五、源程序12六、运行情况21七、实践心得24八、实践收获与不足25C+语言程序设计任务书 指导老师:李力 课程编号:一、学时与学分学时: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不得迟到、早退。尤其不得擅自缺席。五、设计报告要求1 任务书必须作为报告第一页2 报告不得少于3000字:主要总结实践心得、实践成果 、程序功能、设计思路(程序流程图)、源程序(加上必要的注释)、运行情况、课程设计的收获与不足等六、时间安排两周时间七、成绩评定规则 成绩分为优、良、中、及格、不及格五等。优:程序功能完备,报告有深度, 遵守实践纪律。良:程序功能满足要求,报告有内容, 遵守实践纪律。中:程序和报告基本满足要求, 遵守实践纪律。及格:程序有错误但大体能运行,有报告书, 基本遵守实践纪律。不及格:程序完全错误或严重违反实践纪律。 C+语言程序设计报告一、实践内容统计用电管理数据,要求能用菜单实现如下功能:(1)输入每个电表的用户名,楼栋号,抄表日期,电表读数。(2)按用户的用电量,从高到低排出每个用户的总用电量。(3)根据用户要求输出某用户某月(从键盘输入用户名和月份)的总用电量。(4)统计某楼栋从某月到某月(从键盘输入)的总用电量。 (5) 绘制按楼栋的用电百分比饼图。(自学利用C+提供的库函数绘制曲线图)。 二、实践成果 自学visual c+ 6.0程序设计课本部分内容,加上老师给的的相关课件和代码,独立的设计了用电管理系统。该程序采用类和对象来实现,充分利用visual c+提供的可视化图形界面,使用户界面十分友好,操作简洁方便,大大提供了工作效率。 用户先用Microsoft Office Access 建立一个用电统计表,添加ODBC数据源,数据源名为1003110429.在利用设计的程序实现对用电统计表中数据的操作。程序功能三、程序功能 (1)预览功能:利用系统提供的记录菜单,实现查询“第一条记录”、“前一条记录”、“下一条记录”、“最后一条记录”。(2)添加功能:在指定编辑框中输入相应信息,单击“添加”按钮,将编辑的数据添加到数据库中。(3)删除功能:单击“删除”按钮,删除编辑框中的对应数据库中的信息,并清空编剧框中的内容。(4)修改功能:在对指定编辑框中修改用户相关信息,单击“修改”按钮,将修改后的数据保存到数据库中。(5)查询功能:此功能分为两个部分。1.按用户名查询:在对应编辑框中输入用户名,单旁边的“查询”按钮。将在对应列表框中显示用户的用电记录。2.按抄表日期查询:在对应编辑框中输入查询日期(注:格式如201221)或在下拉选项列表中选择日期,单击对应“查询“按钮,将在对应列表框中显示相应信息。(6)排序功能:在对应编辑框中输入日期(注:格式如201221),单击“显示”按钮,将实现给定抄表日期按用户用电量大小从高到低的排序。(7)绘图功能:根据用户的用电量,绘制用电百分比。(注:为了让数据更加清晰,百分比设置为300%)(8)统计功能:根据用户提供的楼栋号,统计该楼栋用电总量,并输出。(9)提示功能:在用户成功删除和修改数据后,弹出相应提示框,提示用户操作是否成功。四、设计思路 ODBC组成结构图数据源名(1003110429)用电管理系统ODBC管理器ODBC API(SQL)驱动程序管理器数据源 Microsoft Access Driver 根据以上结构图:1.先建立数据源 。2.安装相应驱动器。 3.建立对应的MFC工程。4.接着为相应的类添加成员函数和成员变量 。5.在对话框中添加相应控件,并给添加对应的成员变量、成员函数。6编写相应成员函数。调试运行即可。用户操作界面图 静态文本框、组框控件名称ID号备注Static Text IDC_STATIC用电管理系统Static TextIDC_STATIC用户名Static TextIDC_STATIC楼栋号Static TextIDC_STATIC日期Static TextIDC_STATIC用电量Static TextIDC_STATIC按用户名查询Static TextIDC_STATIC按日期查询Static TextIDC_STATIC日期(年-月-日)Static TextIDC_STATIC按用电量排序Static TextIDC_STATIC输入查询楼栋号Group BoxIDC_STATIC用电预览Group BoxIDC_STATIC按楼栋用电统计Group BoxIDC_STATIC按用电量排序Group BoxIDC_STATIC查询区 编辑框、列表框、组合框、和其对应变量和对应函数控件名称对应编辑框名称ID号备注成员变量CategoryVariable typeEdit Box编辑框1IDC_user输入用户名m_shownameValueCStringEdit Box编辑框2IDC_number输入楼栋号m_shownumberValueCStringEdit Box编辑框3IDC_date输入日期m_showdfateValueCStringEdit Box编辑框4IDC_count输入用电量m_showcountValueCStringEdit Box编辑框5IDC_EDIT2输入用户名m_topValueCStringEdit Box编辑框6IDC_checkname输入日期m_checkndateValueCStringComboBox组合框IDC_COMBO1输入或选择日期m_checkbynameValueCStringList Box列表框一IDC_LIST2显示信息myshowtopcontrolCListBoxList Box列白框IDC_LIST1显示信息myshowlistcontrolCListBoxEdit Box编辑框IDC_EDIT1输入楼栋号m_edt1ValueCStringEdit Box编辑框IDC_EDIT1输出统计用电量m_edt2ValueCString 各控件及其对应函数控件名称ID号备注成员函数MessageButtonIDC_BUTTON2绘图Onbutton2BN_CLICKEDButtonIDC_add添加OnaddBN_CLICKEDButtonIDC_change修改OnchangeBN_CLICKEDButtonIDC_delete删除OndeleteBN_CLICKEDButtonIDC_namesearch按姓名查询OnnameseachBN_CLICKEDButtonIDC_datereach按日期查询OndatereachBN_CLICKEDButtonIDC_SHOWTOP显示排序OnShowtopBN_CLICKEDButtonIDC_BUTTON3统计漏洞的用电总量OnButton3BN_CLICKED 注:以上函数都属于CMy1003110429View类 自定义类函数类名函数类型函数声明访问权限CMy1003110429Viewvoidshow(CString s)publicCMy1003110429Viewfloattongji(CString s)public 自定义类成员变量类名变量类型变量名访问权限CMy1003110429SetCStringppublic变量五、源程序 1预览工能函数void CMy1003110429View:OnRecordFirst() m_pSet-MoveFirst();/数据库表记录集指针移动到数据库起始位置 m_showname=m_pSet-m_username; m_shownumber= m_pSet-m_usernumber; m_showdate=m_pSet-m_date; m_showcount=m_pSet-m_count; UpdateData(FALSE);/将数据显示在编辑框中 / TODO: Add your command handler code here void CMy1003110429View:OnRecordNext() m_pSet-MoveNext();/数据库表记录集指针移动到数据库起始位置 m_showname=m_pSet-m_username; m_shownumber= m_pSet-m_usernumber; m_showdate=m_pSet-m_date; m_showcount=m_pSet-m_count; UpdateData(FALSE);/将数据显示在编辑框中 / TODO: Add your command handler code here void CMy1003110429View:OnRecordPrev() m_pSet-MovePrev();/数据库表记录集指针移动到数据库起始位置 m_showname=m_pSet-m_username; m_shownumber= m_pSet-m_usernumber; m_showdate=m_pSet-m_date; m_showcount=m_pSet-m_count; UpdateData(FALSE);/将数据显示在编辑框中 / TODO: Add your command handler code here void CMy1003110429View:OnRecordLast() m_pSet-MoveLast();/数据库表记录集指针移动到数据库起始位置 m_showname=m_pSet-m_username; m_shownumber= m_pSet-m_usernumber; m_showdate=m_pSet-m_date; m_showcount=m_pSet-m_count; UpdateData(FALSE);/将数据显示在编辑框中/ TODO: Add your command handler code here2添加函数 void CMy1003110429View:Onadd() UpdateData(1);/将编记录辑中的输入保存到对应变量中去 m_pSet-AddNew();/记录集当前位置添加一空白记录 m_pSet-m_username=m_showname; m_pSet-m_usernumber=m_shownumber; m_pSet-m_date=m_showdate; m_pSet-m_count=m_showcount; m_pSet-Update();/更新数据 m_pSet-MoveLast();/数库指针移动到最后一条记录 m_pSet-Requery();/重新排序 MessageBox(你一成功添加记录); /显示提示信息/ TODO: Add your control notification handler code here3修改函数 void CMy1003110429View:Onchange() UpdateData(1);/将编辑框中的输入保存到对应变量中去 m_pSet-Edit();/进行记录的编辑m_pSet-m_username=m_showname; m_pSet-m_usernumber=m_shownumber; m_pSet-m_date=m_showdate; m_pSet-m_count=m_showcount; m_pSet-Update();/更新记录 m_pSet-Requery();/重新排序 MessageBox(你一成功修改记录); /显示提示信息/ TODO: Add your control notification handler code here 4删除函数void CMy1003110429View:Ondelete() m_pSet-Delete();/删除当前指针位置记录 m_pSet-Requery();/重新排序 MessageBox(你以删除当前记录);/显示提示信息/ TODO: Add your control notification handler code here5查询函数 C1003110429View:C1003110429View() :CRecordView(C1003110429View:IDD) /AFX_DATA_INIT(CMy1003110429View)m_pSet = NULL;m_showcount = _T();m_showdate = _T();m_shownumber = _T();m_showname = _T();m_checkdate = _T();m_checkname = _T();m_top = _T();/AFX_DATA_INIT/ TODO: add construction code here void C1003110429View:show(CString s) CString str=; while(myshowlist.GetCount()0) /如果myshowlist列表中条目内容不为0 myshowlist.DeleteString(0);/清空列表中的记录 m_pSet-MoveFirst(); while(m_pSet-IsEOF()!=1) /如果文件到末尾 switch(choice)/根据choice的值进行选择 case 1: /按用户名查询 if(m_pSet-m_username=s) /找到符合条件记录 str.Format(%8s%8s%14s%14f,m_pSet-m_username,m_pSet-m_usernumber,m_pSet-m_date,m_pSet-m_count); myshowlist.AddString(str);/列表中增加一项显示 m_pSet-MoveNext();/指针向后移动一个记录 UpdateData(FALSE);/显示数据 else/无符合条件记录 m_pSet-MoveNext();/指针向后移动一个记录 break; case 2:/按日期查询 if(m_pSet-m_date=s)/找到符合条件的记录 str.Format(%8s%8s%14s%114f,m_pSet-m_username,m_pSet-m_usernumber,m_pSet-m_date,m_pSet-m_count); myshowlist.AddString(str);/列表中增加一项显示 m_pSet-MoveNext();/指针向后移动一个记录 UpdateData(FALSE);/显示数据 else /无符合条件记录 m_pSet-MoveNext();/指针向后移动一个记录 break; void CMy1003110429View:Onnamesearch() choice=1; UpdateData(1); show(m_checkname); m_checkdate=; UpdateData(FALSE);/ TODO: Add your control notification handler code here void CMy1003110429View:Ondatereach() choice=2; UpdateData(1); show(m_checkdate); m_checkname=; UpdateData(FALSE);/ TODO: Add your control notification handler code here 6排序函数 CMy1003110429Set:CMy1003110429Set(CDatabase* pdb): CRecordset(pdb)/AFX_FIELD_INIT(CMy1003110429Set)m_column1 = 0;m_username = _T();m_usernumber = _T();m_date = _T();m_count =_T();m_nFields = 5; m_nParams=1;/AFX_FIELD_INITm_nDefaultType = dynaset; oid CMy1003110429Set:DoFieldExchange(CFieldExchange* pFX)/AFX_FIELD_MAP(CMy1003110429Set)pFX-SetFieldType(CFieldExchange:outputColumn);RFX_Long(pFX, _T(编号), m_column1);RFX_Text(pFX, _T(username), m_username);RFX_Text(pFX, _T(usernumber), m_usernumber);RFX_Text(pFX, _T(date), m_date);RFX_Text(pFX, _T(count), m_count); pFX-SetFieldType(CFieldExchange:param); RFX_Text(pFX,_T(P),p);/AFX_FIELD_MAP void CMy1003110429View:Top(CString s)CString str=;/定义中间变量 while(myshowtop.GetCount()0)/如果列表框中有记录 myshowtop.DeleteString(0);/清列表框中的记录 m_pSet-m_strFilter=date=?;/设置排序条件:字段=未知 m_pSet-p=s;/字段=用户选择的日期 m_pSet-m_strSort=count DESC;/一字段count降序排序 m_pSet-Requery();/重新排序m_pSet-MoveFirst();/将记录指针移到第一个记录位置 while(m_pSet-IsEOF()!=1)/如果不是文件末尾 str.Format(%8s%8s%14s%14f,m_pSet-m_username,m_pSet-m_usernumber,m_pSet-m_date,m_pSet-m_count); /将指针位置的记录添加到str中 myshowtop.AddString(str);/str的内容添加到列表框中 m_pSet-MoveNext();/指针移动到下一条记录统计函数void CMy1003110429View:OnButton2() / TODO: Add your control notification handler code hereShellExecute( NULL,open, pie.exe,NULL,NULL,SW_SHOWNORMAL);float CMy1003110429View:tongji(CString s) float f=0.0; m_pSet-MoveFirst(); while(m_pSet-IsEOF()!=1) if(m_pSet-m_usernumber=s) f+=m_pSet-m_count; m_pSet-MoveNext(); return f;画图函数void CMy1003110429View:OnButto

温馨提示

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

评论

0/150

提交评论