




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南大学本科生课程设计(实践)任务书、设计报告(c+程序设计基础课程设计)题 目 小型图书购销管理系统学生学号0909123020学生姓名指导教师汤蕾雨昕学 院信息科学与工程学院专业班级电气信息类1230班指导老师向瑶计算机基础教学实验中心2013年 7月5日小型图书购销管理系统一系统描述本次选择的小型图书购销管理系统主要包括图书资料基本信息、图书库存信息、图书采购信息和图书销售信息的数据处理,要求实现的基本功能有图书基本信息的录入和查询、图书采购、图书销售和利润统计。此次编写的程序是在vc+环境下的一个基于控制台方式的应用程序,主要包含两个部分,一个是叫main.h的头文件,其中包含类的定义、以及各函数声明,另一个则是用于实现主要功能的main文件,其中包括各功能函数的定义、菜单函数、以及主函数。在编写程序的过程中,充分考虑到了c+数据的保护以及封装性的特点,进行模块化、结构化的编程,同时,考虑到实际应用上的需求,在原要求上还添加了文件流的功能,以实现信息的自动读取和保存。程序简洁易读,操作简便,执行效率高。二功能模块结构类:class bookinfo;class psinfo;class storeinfo; class shop; 功能实现函数menu();shop.addbookinfo(); shop.purchase(); shop.sale(); shop.profit(); shop.listpurinfo(); shop.listsaleinfo(); shop.findbook(); shop.save(); shop.read(); exit();程序运行框图:利润统计shop.profit()退出保存信息shop.exit()shop.purchase()shop.sale()shop.listpurinfo()shop.findbook()shop.listsaleinfo()图书采购图书销售图书查询采购查询销售查询shop.addbookinfo()开始输出菜单和提示信息输入选择新增图书读取信息shop.read()结束shop.save()三主要模块的算法说明数据处理:考虑到此次的程序为小型图书购销系统,数据存储量相对较小,所以数据的处理是基于数组来实现的。为增强实践生活中的可操作性,首先在类外定义了maxnum_bookinfo和maxnum_psinfo的两个宏,可以对这两个宏赋值来改变数组长度扩大数据储存量。类:首先在main.h中定义了四个类,来进行基本数据的处理。bookinfo类:图书编号、书名、作者、出版社、出版日期、定价storeinfo类:图书编号、书名、作者、库存数量psinfo类:采购单号、图书编号、采购日期、采购数量、单价、采购金额 销售单号、图书编号、销售日期、销售数量、单价、销售金额shop类:包含所有功能函数,用于管理包括书籍添加、采购、销售、查询、订单、利润等。重载:1.输入输出流重载:考虑到程序中要多次使用输入信息与输出信息,于是对输入输出进行了重载,用ostream& operator(istream& in,bookinfo& book)来进行图书信息的输入输出,用ostream& operator(istream& in,psinfo& info)来进行图书采购和销售信息的输入输出。2.运算符重载:主要包括三个运算的符重载 storeinfo&storeinfo:operator+=(const psinfo& info)用于之后图书采购;storeinfo& storeinfo:operator-=(const psinfo& info)用于之后图书销售;storeinfo& storeinfo:operator=(const bookinfo& info)用于添加信息。3.文件流重载:为实现数据的存储和录入功能,进行了文件流的重载。用ofstream& operator(ifstream& in,bookinfo& book)进行数据的读入。shop类的功能函数:shop相当于一个商店,用于管理所有的功能函数,以实现系统的所有基本功能。void addbookinfo():实现图书信息添加void purchase():实现图书采购void sale():实现图书销售float profit():实现利润统计void listpurinfo():实现采购订单查询void listsaleinfo():实现销售订单查询void findbook():实现图书查找void save():实现信息保存void read():实现信息读入主函数部分:首先进行一个名为menu()的函数,以实现进入后的系统页面,然后用switch(select)函数来实现不同功能的选择。其他说明:关于采购和销售日期:在预处理中包含了一个time的头文件,根据实际的采购和销售时间有电脑自动生成。关于采购和销售单号:由电脑自动生成,采用循环语句,每次在之前的基础上加1。关于退出:根据用户使用习惯人性化考虑,加入了exit()函数实现退出选项。四运行结果程序进入主界面选择1进行图书基本信息的添加选择2进行图书采购当采购的书籍未添加基本信息时图书销售当销售数量大于库存量时选择4进行图书查询选择5查询采购订单选择6查询销售订单选择7查询总利润选择0退出系统五课程设计总结 本次课程设计总体来看完成不错,任务要求中的数据处理以及功能要求都能够得到实现,同时还增添了数据的储存和读入功能,但仍有一些部分欠缺不足,统观整个设计过程,现总结如下:初期设想阶段:刚开始的设计程序时的想法是想通过链表来实现的,但后来根据实际情况来看,由于是小型系统,通过数组来实现更为方便,同时宏的使用也更好的解决了实际问题中容量大小的问题。同时根据课设要求来规划类和函数,实现基本构思和结构。编程实践阶段:这个过程是学到东西最多的阶段。许多原来的设想也在实际操作中不断地进行改变和优化。首先考虑到系统中多次需要用到的一些功能,决定采取用重载的方式来简化程序代码,在类的定义上也将原来计划定义的purinfo和saleinfo综合为一个psinfo,同时考虑到c+的封装性以及结构化编程,用一个main.h包含了所有的类和声明,使主函数部分看起来更为简明。而在后期编译的时候也遇到个许多问题,一些小的关于输入法符合上的错误是可以避免的,还有一些思路语句上的错误则在老师和同学的帮助下得到了解决。后期优化阶段:在后期主要是对程序的优化阶段,使程序更加美观,使用更加方便,同时对一些功能也做出了适当修改,例如将采购销售时间由原来的手动输入改为增加了一个time函数,使之能够通过电脑自动获取,还有加入exit函数,使程序更为人性化。当然,也还有一些未解决的问题,例如对于添加书籍时若输入了重复书籍编号,此时程序会记录原来的信息而不能录入新的信息。在这个方面不能不能做到很好的解决。对于程序的一些未能很好解决的问题,我会在今后继续加以完善。最后感谢老师对我此次c+课程设计的细心指导! 参考文献:c+程序设计 谭浩强 清华大学出版社 (2004-06出版);c+程序设计题解与程序指导 谭浩强 清华大学出版社 (2004-06出版);c+ primer中文版 (美)stanley b. lippmanbarbara e. moo joselajoie 著,李师贤 等译 (2006-6-1);c+实训;附录:源代码程序#include #include #include #include using namespace std;const int maxnum_bookinfo=200;const int maxnum_psinfo=100;class bookinfo;class psinfo;class purinfo;class saleinfo;ostream& operator(istream& in,bookinfo& book);ostream& operator(istream& in,psinfo& info);ofstream& operator(ifstream& in,bookinfo& book);ofstream& operator(ifstream& in,psinfo& info);bookinfo* findbookinfo(const string& str);class bookinfofriend class storeinfo;/图书编号、书名、作者、出版社、出版日期、定价string index;string name;string writer;string press;string date;float price;public:friend storeinfo* findstoreinfo(const string& str);friend bookinfo* findbookinfo(const string& str);friend ostream& operator(istream& in,bookinfo& book);friend ofstream& operator(ifstream& in,bookinfo& book);const string& getname()constreturn name;const string& getindex()constreturn index;class storeinfofriend class shop;/图书编号、书名、作者、库存数量string index;string name;string writer;int num;public:storeinfo& operator+=(const psinfo& info);storeinfo& operator-=(const psinfo& info);storeinfo& operator=(const bookinfo& info);friend storeinfo* findstoreinfo(const string& str);friend bookinfo* findbookinfo(const string& str);class psinfofriend class shop;friend class storeinfo;protected:/采购单号、图书编号、采购日期、采购数量、单价、采购金额/销售单号、图书编号、销售日期、销售数量、单价、销售金额string index;string bookid;string date;int num;float price;float sum;public:friend ostream& operator(istream& in,psinfo& info);friend ofstream& operator(ifstream& in,psinfo& info);class shopbookinfobookmaxnum_bookinfo;storeinfostoreinfomaxnum_bookinfo;psinfopurinfomaxnum_psinfo;psinfosaleinfomaxnum_psinfo;int book_num;int storeinfo_num;int purinfo_num;int saleinfo_num;int purid,saleid;public:shop():book_num(0),storeinfo_num(0),purinfo_num(0),saleinfo_num(0),purid(0),saleid(0)void addbookinfo();void purchase();void sale();float profit();void listpurinfo();void listsaleinfo();void findbook();void save();void read();friend storeinfo* findstoreinfo(const string& str);friend bookinfo* findbookinfo(const string& str);#include main.h#include shop shop;/-输入输出流重载-ostream& operator(ostream& os,const bookinfo& book)os图书编号:book.index;ossetw(8)书名:;ossetw(8)作者:book.writer;ossetw(10)出版社:book.press;ossetw(10)出版日期:book.date;ossetw(8)定价:(istream& in,bookinfo& book)coutbook.index;;coutbook.writer;coutbook.press;coutbook.date;coutbook.price;return in;ostream& operator(ostream& os,const psinfo& info)/单号、图书编号、日期、数量、单价、金额os单号:info.index;ost图书编号:info.bookid;ost数量:info.num;ost单价:info.price;ost金额:info.sum;ost日期:info.date;os(istream& in,psinfo& info)time_t tm= time(null); char sztm64; strftime(sztm,sizeof(sztm),%y/%m/%d,localtime(&tm); info.date=sztm;coutidorname;bookinfo *bookinfo=findbookinfo(idorname);if(bookinfo)info.bookid=bookinfo-getindex();coutinfo.num;coutinfo.price;info.sum=info.price*info.num;cout总金额:info.sumendl;elsecerr无相关信息!endl;return in;/-文件流重载-ofstream& operator(ofstream& os,const bookinfo& book)osbook.indexendl;endl;osbook.writerendl;osbook.pressendl;osbook.dateendl;osbook.price(ifstream& in,bookinfo& book)inbook.index;;inbook.writer;inbook.press;inbook.date;inbook.price;return in;ofstream& operator(ofstream& os,const psinfo& info)osinfo.indexendl;osinfo.bookidendl;osinfo.numendl;osinfo.priceendl;osinfo.sumendl;osinfo.date(ifstream& in,psinfo& info)ininfo.index;ininfo.bookid;ininfo.num;ininfo.price;ininfo.sum;ininfo.date;return in;/-storeinfo& storeinfo:operator+=(const psinfo& info)num+=info.num;return *this;storeinfo& storeinfo:operator-=(const psinfo& info)num-=info.num;return *this;storeinfo& storeinfo:operator=(const bookinfo& info)index=info.index;name=;writer=info.writer;return *this;bookinfo* findbookinfo(const string& str)for(int i=0;ishop.book_num;i+)if(=str | shop.booki.index=str)return &shop.booki;return null;storeinfo* findstoreinfo(const string& str)for(int i=0;ipurinfopurinfo_num;storeinfo* stinfo=findstoreinfo(purinfopurinfo_num.bookid);/在库存库里查找if(stinfo)purid+;char puridstr50;sprintf(puridstr,%d,purid);purinfopurinfo_num.index=puridstr;(*stinfo)+=purinfopurinfo_num;/添加库存purinfo_num+;elsecerr未找到相关库存信息!saleinfosaleinfo_num;storeinfo* stinfo=findstoreinfo(saleinfosaleinfo_num.bookid);/在库存库里查找if(stinfo)if(stinfo-numsaleinfosaleinfo_num.num)cerr该书库存数少于销售数!endl;return;saleid+;char saleidstr50;sprintf(saleidstr,%d,purid);saleinfosaleinfo_num.index=saleidstr;(*stinfo)-=saleinfosaleinfo_num;/减少库存saleinfo_num+;elsecerr未找到相关库存信息!bookbook_num;storeinfostoreinfo_num=bookbook_num;/添加相应的库存信息storeinfo_num+;book_num+;void shop:save()ofstream ofs(dat.txt);ofsbook_numendl;for(int i=0;ibook_num;i+)ofsbooki;ofsstoreinfo_numendl;for(int j=0;jstoreinfo_num;j+)ofsstoreinfoj.indexendl;endl;ofsstoreinfoj.writerendl;ofsstoreinfoj.numendl;ofspurinfo_numendl;for(int k=0;kpurinfo_num;k+)ofspurinfok;ofssaleinfo_numendl;for(int m=0;msaleinfo_num;m+)ofsnum;for(int i=0;ibooki;book_num=num;ifsnum;for(int j=0;jstoreinfoj.index;;ifsstoreinfoj.writer;ifsstoreinfoj.num;storeinfo_num=num;ifsnum;for(int k=0;kpurinfok;purinfo_num=num;ifsnum;for(int m=0;msaleinfom;saleinfo_num=num;void shop:listpurinfo()for(int i=0;ipurinfo_num;i+)coutpurinfoi;void shop:listsaleinfo()for(int i=0;isaleinfo_num;i+)coutsaleinfoi;void shop:findbook()string name;coutname;bookinfo* info=findbookinfo(name);cout(*info);storeinfo* storeinfo=findstoreinfo(name);cout 库存:numendl;float shop:profit()float pursum=0;for(int i=0;ipurinfo_num;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版生物降解材料生产合作协议范本
- 2025年度海绵城市土石方工程承包施工及雨水收集合同
- 2025版清单检查项在旅游业中的服务质量监管合同
- 2025年消防电梯采购及消防系统安装合同
- 2025版酒店大堂装修合同范本
- 2025年度物品租赁合同严格禁止转让授权
- 2025年度高端技术人才聘用合同范本
- 贵州省兴仁县2025年上半年公开招聘村务工作者试题含答案分析
- 2025版电子商务平台产品售后服务协议
- 2025年度房地产项目土建施工合同范本
- GB/T 42268-2022乙烯-丙烯-二烯烃橡胶(EPDM)评价方法
- 装饰员工薪资工资表
- YC/T 207-2014烟用纸张中溶剂残留的测定顶空-气相色谱/质谱联用法
- GB/T 9237-2017制冷系统及热泵安全与环境要求
- 胃肠减压操作流程课件
- 《昆虫记》整本书阅读教学设计
- 冀教版六年级英语上册课件Unit-2
- 八年级上册英语开学第一课
- 民事纠纷委托律师合同书
- 全国机场图2013九江庐山
- 法律法规和其他要求清单+合规性评价表
评论
0/150
提交评论