1、设备管理教学设备管理系统中 南 大 学高级程序设计实践(C+)课程设计报告设计题目 指导老师设计者专业班级时间日期一 课题的基本内容和要求二 程序功能简介三 主体内容:1 设计分析2 程序结构3 各模块的功能及程序说明4 相关模块源程序5 操作方法6试验结果7设计体会8 参考文献一 基本内容和要求(一)基本要求本设计采用教师指导、学生自学和独立编程操作方式,先由学生查阅与本设计有关的书籍和资料,利用Visual C+ 6.0设计环境与开发工具,在两周时间内,完成课程设计内容中的一个管理系统,具体要求如下:1、 独立思考:独立完成课程设计中各任务的设计和调试。2、 上机准备:每次上机前,要事先编
2、制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。3、 数据管理:管理系统中的数据可用数据库(如Access数据库)的形式保存,也可用普通文件(文本文件或二进制文件)的形式保存。4、 程序要求:界面美观、可操作性强、稳定性好。 (二)基本内容: 教学设备管理系统为方便管理学校教学设备,编写一个教学设备管理系统软件。系统记录必须包括设备编号、设备名称、生产厂家、购置日期、台数、单价、及备注等。二 程序功能简介(1) 添加:增加一台设备的记录到管理系统中。(2) 查询:可以根据设备编号查找某台设备的相关信息,若找到则显示其信息。(3) 修改:在管理系统中修改一台设备的记录
3、。(4) 保存:将所有教学设备信息保存在一个文件中(数据库文件或普通的文本文件)。(5) 读取:从文件中读取已保存了数据。(6) 删除:从管理系统中删除一条记录。(7) 恢复:能恢复被删除的记录。(8) 统计:(A)统计每页合计台数及金额;(B)累计设备的总台数及总金额;(C)统计单价在:200元以下、200800元之间和800元以上的设备总台数及总金额。(D)以表格形式打印教学设备明细表。(9) 其他:可以根据自己的思路设计其他功能。三 主体内容1 设计分析 根据问题描述和要求,系统要求能够添加设备,按设备编号查询,修改,保存,读取,删除,恢复设备的信息。系统既然具有“数据存盘”功能,设备数
4、据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入”模块,以方便用户使用,避免数据重新录入。考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名.使用面向对象的程序设计思想进行分析,整个系统涉及两个类的信息和操作,设备和购置日期。所以系统主要涉及两个大类:设备类Equipment,日期Date。系统的主体框架就是设备类,考虑系统操作的设备信息的数量具有不确定性,所以考虑使用链表保存,处理设备信息。设备类包含所以设备信息的一个不带头结点的链表,可以对设备信息进行增,删,改,查询,基础数据设置,数据存盘,数据装入等操作的相关模块(Add,Del
5、ete,Modify,Find,Save,Recover,Read,Statistic)作为成员函数。2程序结构(1)系统功能模块图 3 各模块的功能(1) 主函数流程 4 源函数#include #include #include #include using namespace std;class Dateprivate: int year; int month; int day;public: Date(int y = 0 , int m = 0 , int d = 0); Date & operator = (Date &a); void foutput(ofstream &fout)
6、; void output(); void alloutput();void Date:alloutput() coutyear:month:dayt;void Date:foutput(ofstream &fout) foutyear month dayendl;Date:Date(int y,int m,int d) year = y; month = m; day = d;Date & Date:operator = (Date &a) year = a.year; month = a.month; day = a.day; return *this;void Date:output()
7、 coutyear年month月day日endl;class Equipmentprivate: int num; /设备编号 char name20; /设备名称 char factory30; /生产厂家 Date date; /购置日期 int amount; /台数 double prrice; /单价 char notes101; /备注public: Equipment(int num_ = 0 , char *name_ = NULL , int amount_ = 0, double prrice_ = 0); Equipment & operator = (Equipment
8、 &a) num = a.num; strcpy(name,a.name); strcpy(factory,a.factory); date = a.date; return *this; void give(char *factory_ , Date date_ , char *notes); void output(); void alloutput(); int getNum(); int getAmount(); double getPrrice(); void setNum(); void setName(); void setFactory(); void setDate(); v
9、oid setAmount(); void setPrrice(); void setNotes(); void foutput(ofstream &fout);void Equipment:alloutput() coutnumt namet factoryt; date.alloutput(); couttamount tprrice tnotesendl;void Equipment:give(char *factory_ , Date date_ , char *notes_) strcpy(factory,factory_); date = date_; strcpy(notes,n
10、otes_);Equipment:Equipment(int num_, char *name_,int amount_, double prrice_) num = num_; strcpy(name,name_); amount = amount_; prrice = prrice_; strcpy(factory,未设置); strcpy(notes,无);void Equipment:output() cout1.设备编号:numendl; cout2.设备名称:nameendl; cout3.生产厂家:factoryendl; cout4.购置日期:; date.output();
11、cout5.台数:amountendl; cout6.单价:prriceendl; cout7.备注:notesendl;int Equipment:getNum() return num;int Equipment:getAmount() return amount;double Equipment:getPrrice() return prrice;void Equipment:setNum() coutnum;void Equipment:setName() coutname;void Equipment:setFactory() coutfactory;void Equipment:s
12、etDate() int y,m,d; coutymd; Date a(y,m,d); date = a;void Equipment:setAmount() coutamount;void Equipment:setPrrice() coutprrice;void Equipment:setNotes() coutnotes;void Equipment:foutput(ofstream &fout) foutnumendl; foutnameendl; foutfactoryendl; date.foutput(fout); foutamountendl; foutprriceendl;
13、foutnotesendl;class Listprivate: int n,capacity; Equipment *elem;public: List(); List(); bool add(); /添加 bool find(); /查询 void modify(); /修改 bool Save(); / 设备保存 bool Read(); /读取 void Delete(); /删除设备记录 void Recover(); /恢复被删除的记录 void Statistic(); /统计;List:List() n = 0; capacity = 1000; elem = new Equi
14、pment *capacity; for(int i = 0 ; i capacity ; i+) elemi = NULL;List:List() for (int i = 0 ; i n ; i+) delete elemi; elemi = NULL; if(elem) delete elem; elem = NULL;bool List:add() if(n capacity) int num_; char name_20; int amount_; double prrice_; coutnum_; coutname_; coutamount_; coutprrice_; elemn
15、 = new Equipment(num_,name_,amount_,prrice_); n+; return true; return false;bool List:find() int num_; coutnum_; for(int i = 0 ; i getNum() cout查找成功!设备信息如下:output(); return true; cout查找失败!无此设备信息。 0) int i,num_; bool ok = false; cout现有的设备编号如下:endl; for (i = 0 ; i n ; i+) coutgetNum() ; coutendl; cout
16、num_; for (i = 0 ; i getNum()=num_) ok = true; int choice = 1; do system(cls); elemi-output(); cout8.退出修改。endl; coutchoice; if(choice 8) cout输入错误,请重新输入!setNum(); break; case 2: elemi-setName(); break; case 3: elemi-setFactory(); break; case 4: elemi-setDate(); break; case 5: elemi-setAmount(); break
17、; case 6: elemi-setPrrice(); break; case 7: elemi-setNotes(); break; case 8: break; while (choice != 8); if(!ok) cout您的输入有误!endl; else cout现无任何设备!endl;bool List:Save() ofstream fout; fout.open(save.txt); fout.put(0); /清楚txt文档的数据 fout.seekp(-1,ios:end); /在txt文档中光标退格 if(fout.fail() cout找不到文件,保存失败!endl
18、; return false; else for(int i = 0 ; i foutput(fout); cout保存成功!endl; fout.close(); return true;bool List:Read() int size; ifstream fin; fin.open(save.txt); streampos pos = fin.tellg(); fin.seekg(0,ios:end); size = fin.tellg(); fin.seekg(pos); if(fin.fail() cout找不到文件,读取失败!num_; finname_; finfactory_;
19、 finymd; if(fin.eof() break; Date date_(y,m,d); finamount_; finprrice_; finnotes_; elemn = new Equipment(num_,name_,amount_,prrice_); elemn-give(factory_,date_,notes_); n+; cout读取成功! 0) int i,num_; bool ok = false; cout现有的设备编号如下:endl; for (i = 0 ; i n ; i+) coutgetNum() ; coutendl; coutnum_; for (i
20、= 0 ; i getNum()=num_) ok = true; system(cls); elemi-output(); cout您确定要删除此设备? (Y or N)str; if(str != Y & str != N) coutfoutput(fout); fout.close(); if(i = n-1) delete elemi; elemi = NULL; else Equipment *tem; tem = elemi; elemi = elemn-1; elemn-1 = tem; delete elemn-1; elemn-1 = NULL; n-; cout删除成功!e
21、ndl; else cout删除失败!endl; if(!ok) cout您的输入有误!endl; else cout现无任何设备!endl;void List:Recover() int size; ifstream fin; fin.open(recover.txt); streampos pos = fin.tellg(); fin.seekg(0,ios:end); size = fin.tellg(); fin.seekg(pos); if(fin.fail() cout找不到文件,恢复失败!num_; finname_; finfactory_; finymd; if(fin.eof() break; Date date_(y,m,d); finamount_; finprrice_; finnotes_; elemn = new Equipment(num_,name_,amount_,prrice_); elemn-give(factory_,date_,notes_); n+; cout恢复成功!endl; fin.close(); ofstream fout; fout.open(recover.txt); fout.put(0); fout.seekp(-1,ios:end); fout.close(); void List:Statist
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1