中南大学c课程设计报告.docx
- 文档编号:24310010
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:35
- 大小:640.58KB
中南大学c课程设计报告.docx
《中南大学c课程设计报告.docx》由会员分享,可在线阅读,更多相关《中南大学c课程设计报告.docx(35页珍藏版)》请在冰豆网上搜索。
中南大学c课程设计报告
中南大学
《高级程序设计实践(C++)》
课程设计报告
设计题目教学设备管理系统
指导老师
设计者
专业班级
设计日期
一课题的基本内容和要求
二程序功能简介
三主体内容:
1设计分析
2程序整体结构
3部分模块的结构
4相关模块源程序
5操作方法
6试验结果
7设计体会
8参考文献
一基本内容和要求
(一)基本要求
本设计采用教师指导、学生自学和独立编程操作方式,先由学生查阅与本设计有关的书籍和资料,利用VisualC++6.0设计环境与开发工具,在两周时间内,完成课程设计内容中的一个管理系统,具体要求如下:
1、独立思考:
独立完成课程设计中各任务的设计和调试。
2、上机准备:
每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
3、数据管理:
管理系统中的数据可用数据库(如Access数据库)的形式保存,也可用普通文件(文本文件或二进制文件)的形式保存。
4、程序要求:
界面美观、可操作性强、稳定性好。
(二)基本内容:
教学设备管理系统
为方便管理学校教学设备,编写一个教学设备管理系统软件。
系统记录必须包括设备编号、设备名称、生产厂家、购置日期、台数、单价、及备注等。
二程序功能简介
(1)添加:
增加一台设备的记录到管理系统中。
(2)查询:
可以根据设备编号查找某台设备的相关信息,若找到则显示其信息。
(3)修改:
在管理系统中修改一台设备的记录。
(4)保存:
将所有教学设备信息保存在一个文件中(数据库文件或普通的文本文件)。
(5)读取:
从文件中读取已保存了数据。
(6)删除:
从管理系统中删除一条记录。
(7)恢复:
能恢复被删除的记录。
(8)统计:
(A)统计每页合计台数及金额;(B)累计设备的总台数及总金额;(C)统计单价在:
200元以下、200~800元之间和800元以上的设备总台数及总金额。
(D)以表格形式打印教学设备明细表。
(9)其他:
可以根据自己的思路设计其他功能。
三主体内容
1设计分析
根据问题描述和要求,系统要求能够添加设备,按设备编号查询,修改,保存,读取,删除,恢复设备的信息。
系统既然具有“数据存盘”功能,设备数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入”模块,以方便用户使用,避免数据重新录入。
考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名.
使用面向对象的程序设计思想进行分析,整个系统涉及两个类的信息和操作,设备和购置日期。
所以系统主要涉及两个大类:
设备类Equipment,日期Date。
系统的主体框架就是设备类,考虑系统操作的设备信息的数量具有不确定性,所以考虑使用链表保存,处理设备信息。
设备类包含所以设备信息的一个不带头结点的链表,可以对设备信息进行增,删,改,查询,基础数据设置,数据存盘,数据装入等操作的相关模块(Add,Delete,Modify,Find,Save,Recover,Read,Statistic)作为成员函数。
2程序整体结构
(1)系统功能模块图
统计
设备
信息
3部分模块的结构
(1)
开始
主函数流程
创建设备对象
显示菜单
接受输入
根据输入执行操作
YES
NO
结束
退出
(2)类的层次图
Equipment
NumNameDateFactoryAmountPrrice
YearMonthDay
(3)Equipment:
:
Add()
开始
结束
开始
(4)Equipment:
:
Delete
输入设备编号
查找删除结点
结点存在?
结束
提示未找到
链表删除设备结点
开始
(5)Equipment:
:
Modify
结束
提示未找到
开始
(6)Equipment:
:
Save
打开设备数据文件
结束
四相关模块源程序
#include
#include
#include
#include
usingnamespacestd;
classDate
{
private:
intyear;
intmonth;
intday;
public:
Date(inty=0,intm=0,intd=0);
Date&operator=(Date&a);
voidfoutput(ofstream&fout);
voidoutput();
voidalloutput();
};
voidDate:
:
alloutput()
{
cout< "< "< } voidDate: : foutput(ofstream&fout) { fout< } Date: : Date(inty,intm,intd) { year=y; month=m; day=d; } Date&Date: : operator=(Date&a) { year=a.year; month=a.month; day=a.day; return*this; } voidDate: : output() { cout< } classEquipment { private: intnum;//设备编号 charname[20];//设备名称 charfactory[30];//生产厂家 Datedate;//购置日期 intamount;//台数 doubleprrice;//单价 charnotes[101];//备注 public: Equipment(intnum_=0,char*name_=NULL, intamount_=0,doubleprrice_=0); Equipment&operator=(Equipment&a) { num=a.num; strcpy(name,a.name); strcpy(factory,a.factory); date=a.date; return*this; } voidgive(char*factory_,Datedate_,char*notes); voidoutput(); voidalloutput(); intgetNum(); intgetAmount(); doublegetPrrice(); voidsetNum(); voidsetName(); voidsetFactory(); voidsetDate(); voidsetAmount(); voidsetPrrice(); voidsetNotes(); voidfoutput(ofstream&fout); }; voidEquipment: : alloutput() { cout< < < date.alloutput(); cout<<'\t'< <<'\t'< <<'\t'< } voidEquipment: : give(char*factory_,Datedate_,char*notes_) { strcpy(factory,factory_); date=date_; strcpy(notes,notes_); } Equipment: : Equipment(intnum_,char*name_,intamount_,doubleprrice_) { num=num_; strcpy(name,name_); amount=amount_; prrice=prrice_; strcpy(factory,"未设置"); strcpy(notes,"无"); } voidEquipment: : output() { cout<<"1.设备编号: "< cout<<"2.设备名称: "< cout<<"3.生产厂家: "< cout<<"4.购置日期: ";date.output(); cout<<"5.台数: "< cout<<"6.单价: "< cout<<"7.备注: "< } intEquipment: : getNum() { returnnum; } intEquipment: : getAmount() { returnamount; } doubleEquipment: : getPrrice() { returnprrice; } voidEquipment: : setNum() { cout<<"请输入设备编号: "; cin>>num; } voidEquipment: : setName() { cout<<"请输入设备名称: "; cin>>name; } voidEquipment: : setFactory() { cout<<"请输入生产厂家的名称: "; cin>>factory; } voidEquipment: : setDate() { inty,m,d; cout<<"请输入年、月、日,用空格隔开: "; cin>>y>>m>>d; Datea(y,m,d); date=a; } voidEquipment: : setAmount() { cout<<"请输入设备台数: "; cin>>amount; } voidEquipment: : setPrrice() { cout<<"请输入设备单价: "; cin>>prrice; } voidEquipment: : setNotes() { cout<<"请输入备注内容: "; cin>>notes; } voidEquipment: : foutput(ofstream&fout) { fout< fout< fout< date.foutput(fout); fout< fout< fout< } classList { private: intn,capacity; Equipment**elem; public: List(); ~List(); booladd();//添加 boolfind();//查询 voidmodify();//修改 boolSave();//设备保存 boolRead();//读取 voidDelete();//删除设备记录 voidRecover();//恢复被删除的记录 voidStatistic();//统计 }; List: : List() { n=0; capacity=1000; elem=newEquipment*[capacity]; for(inti=0;i } List: : ~List() { for(inti=0;i { delete[]elem[i]; elem[i]=NULL; } if(elem)delete[]elem; elem=NULL; } boolList: : add() { if(n { intnum_; charname_[20]; intamount_; doubleprrice_; cout<<"请输入设备编号: "; cin>>num_; cout<<"请输入设备名称: "; cin>>name_; cout<<"请输入购置台数: "; cin>>amount_; cout<<"请输入设备单价: "; cin>>prrice_; elem[n]=newEquipment(num_,name_,amount_,prrice_); n++; returntrue; } returnfalse; } boolList: : find() { intnum_; cout<<"请输入您需要查找的设备编号: "; cin>>num_; for(inti=0;i { if(num_==elem[i]->getNum()) { cout<<"查找成功! 设备信息如下: "< elem[i]->output(); returntrue; } } cout<<"查找失败! 无此设备信息。 "< returnfalse; } voidList: : modify() { system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"现有的设备编号如下: "< for(i=0;i { cout< } cout< cout<<"请输入您需要修改的设备编号: "; cin>>num_; for(i=0;i { if(elem[i]->getNum()==num_) { ok=true; intchoice=1; do { system("cls"); elem[i]->output(); cout<<"8.退出修改。 "< cout<<"请输入您需要修改的选项: "; cin>>choice; if(choice<1||choice>8) { cout<<"输入错误,请重新输入! "< choice=1; continue; } switch(choice) { case1: elem[i]->setNum(); break; case2: elem[i]->setName(); break; case3: elem[i]->setFactory(); break; case4: elem[i]->setDate(); break; case5: elem[i]->setAmount(); break; case6: elem[i]->setPrrice(); break; case7: elem[i]->setNotes(); break; case8: break; } }while(choice! =8); } } if(! ok)cout<<"您的输入有误! "< } elsecout<<"现无任何设备! "< } boolList: : Save() { ofstreamfout; fout.open("save.txt"); fout.put(0);//清楚txt文档的数据 fout.seekp(-1,ios: : end);//在txt文档中光标退格 if(fout.fail()) { cout<<"找不到文件,保存失败! "< returnfalse; } else { for(inti=0;i { elem[i]->foutput(fout); } } cout<<"保存成功! "< fout.close(); returntrue; } boolList: : Read() { intsize; ifstreamfin; fin.open("save.txt"); streampospos=fin.tellg(); fin.seekg(0,ios: : end); size=fin.tellg(); fin.seekg(pos); if(fin.fail()) { cout<<"找不到文件,读取失败! "< returnfalse; } else { intnum_,amount_,y,m,d; doubleprrice_; charname_[20],factory_[30],notes_[101]; n=0; while(size! =1) { fin>>num_; fin>>name_; fin>>factory_; fin>>y>>m>>d; if(fin.eof())break; Datedate_(y,m,d); fin>>amount_; fin>>prrice_; fin>>notes_; elem[n]=newEquipment(num_,name_,amount_,prrice_); elem[n]->give(factory_,date_,notes_); n++; } } cout<<"读取成功! "< fin.close(); returntrue; } voidList: : Delete() { system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"现有的设备编号如下: "< for(i=0;i { cout< } cout< cout<<"请选择您要删除的设备编号: "; cin>>num_; for(i=0;i { if(elem[i]->getNum()==num_) { ok=true; system("cls"); elem[i]->output(); cout<<"您确定要删除此设备? (YorN)"< charstr; do { cin>>str; if(str! ='Y'&&str! ='N') { cout<<"输入错误,请重新输入: "; } }while(str! ='Y'&&str! ='N'); if(str=='Y') { ofstreamfout; fout.open("recover.txt"); fout.app; elem[i]->foutput(fout); fout.close(); if(i==n-1) { delete[]elem[i]; elem[i]=NULL; } else { Equipment*tem; tem=elem[i]; elem[i]=elem[n-1]; elem[n-1]=tem; delete[]elem[n-1]; elem[n-1]=NULL; } n--; cout<<"删除成功! "< } elsecout<<"删除失败! "< } } if(! ok)cout<<"您的输入有误! "< } elsecout<<"现无任何设备! "< } voidList: : Recover() { intsize; ifstreamfin; fin.open("recover.txt"); streampospos=fin.tellg(); fin.seekg(0,ios: : end); size=fin.tellg(); fin.seekg(pos); if(fin.fail()) { cout<<"找不到文件,恢复失败! "< } else { intnum_,amount_,y,m,d; doubleprrice_; charname_[20],factory_[30],notes_[101]; while(! fin.eof()&&size! =1) { fin>>num_; fin>>name_; fin>>factory_; fin>>y>>m>>d; if(fin.eof())break; Dateda
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南大学c 课程设计报告 中南 大学 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)