c程序设计基础课程设计小型图书购销管理系统.docx

上传人:sccc 文档编号:5138271 上传时间:2023-06-07 格式:DOCX 页数:27 大小:217.85KB
返回 下载 相关 举报
c程序设计基础课程设计小型图书购销管理系统.docx_第1页
第1页 / 共27页
c程序设计基础课程设计小型图书购销管理系统.docx_第2页
第2页 / 共27页
c程序设计基础课程设计小型图书购销管理系统.docx_第3页
第3页 / 共27页
c程序设计基础课程设计小型图书购销管理系统.docx_第4页
第4页 / 共27页
c程序设计基础课程设计小型图书购销管理系统.docx_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《c程序设计基础课程设计小型图书购销管理系统.docx》由会员分享,可在线阅读,更多相关《c程序设计基础课程设计小型图书购销管理系统.docx(27页珍藏版)》请在三一办公上搜索。

1、中南大学本科生课程设计(实践)任务书、设计报告(c+程序设计基础课程设计)题 目 小型图书购销管理系统学生学号0909123020学生姓名指导教师汤蕾雨昕学 院信息科学与工程学院专业班级电气信息类1230班指导老师向瑶计算机基础教学实验中心2013年 7月5日小型图书购销管理系统一系统描述本次选择的小型图书购销管理系统主要包括图书资料基本信息、图书库存信息、图书采购信息和图书销售信息的数据处理,要求实现的基本功能有图书基本信息的录入和查询、图书采购、图书销售和利润统计。此次编写的程序是在vc+环境下的一个基于控制台方式的应用程序,主要包含两个部分,一个是叫main.h的头文件,其中包含类的定义

2、、以及各函数声明,另一个则是用于实现主要功能的main文件,其中包括各功能函数的定义、菜单函数、以及主函数。在编写程序的过程中,充分考虑到了c+数据的保护以及封装性的特点,进行模块化、结构化的编程,同时,考虑到实际应用上的需求,在原要求上还添加了文件流的功能,以实现信息的自动读取和保存。程序简洁易读,操作简便,执行效率高。二功能模块结构类:class BookInfo;class PSInfo;class StoreInfo; class Shop; 功能实现函数Menu();shop.AddBookInfo(); shop.Purchase(); shop.Sale(); shop.Prof

3、it(); 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(

4、)三主要模块的算法说明数据处理:考虑到此次的程序为小型图书购销系统,数据存储量相对较小,所以数据的处理是基于数组来实现的。为增强实践生活中的可操作性,首先在类外定义了MAXNUM_BOOKINFO和MAXNUM_PSINFO的两个宏,可以对这两个宏赋值来改变数组长度扩大数据储存量。类:首先在main.h中定义了四个类,来进行基本数据的处理。BookInfo类:图书编号、书名、作者、出版社、出版日期、定价StoreInfo类:图书编号、书名、作者、库存数量PSInfo类:采购单号、图书编号、采购日期、采购数量、单价、采购金额 销售单号、图书编号、销售日期、销售数量、单价、销售金额Shop类:包含

5、所有功能函数,用于管理包括书籍添加、采购、销售、查询、订单、利润等。重载:1.输入输出流重载:考虑到程序中要多次使用输入信息与输出信息,于是对输入输出进行了重载,用ostream& operator(istream& in,BookInfo& book)来进行图书信息的输入输出,用ostream& operator(istream& in,PSInfo& info)来进行图书采购和销售信息的输入输出。2.运算符重载:主要包括三个运算的符重载 StoreInfo&StoreInfo:operator+=(const PSInfo& info)用于之后图书采购;StoreInfo& StoreIn

6、fo: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():实现

7、图书销售float Profit():实现利润统计void ListPurInfo():实现采购订单查询void ListSaleInfo():实现销售订单查询void FindBook():实现图书查找void Save():实现信息保存void Read():实现信息读入主函数部分:首先进行一个名为Menu()的函数,以实现进入后的系统页面,然后用switch(select)函数来实现不同功能的选择。其他说明:关于采购和销售日期:在预处理中包含了一个time的头文件,根据实际的采购和销售时间有电脑自动生成。关于采购和销售单号:由电脑自动生成,采用循环语句,每次在之前的基础上加1。关于退出:

8、根据用户使用习惯人性化考虑,加入了Exit()函数实现退出选项。四运行结果程序进入主界面选择1进行图书基本信息的添加选择2进行图书采购当采购的书籍未添加基本信息时图书销售当销售数量大于库存量时选择4进行图书查询选择5查询采购订单选择6查询销售订单选择7查询总利润选择0退出系统五课程设计总结 本次课程设计总体来看完成不错,任务要求中的数据处理以及功能要求都能够得到实现,同时还增添了数据的储存和读入功能,但仍有一些部分欠缺不足,统观整个设计过程,现总结如下:初期设想阶段:刚开始的设计程序时的想法是想通过链表来实现的,但后来根据实际情况来看,由于是小型系统,通过数组来实现更为方便,同时宏的使用也更好

9、的解决了实际问题中容量大小的问题。同时根据课设要求来规划类和函数,实现基本构思和结构。编程实践阶段:这个过程是学到东西最多的阶段。许多原来的设想也在实际操作中不断地进行改变和优化。首先考虑到系统中多次需要用到的一些功能,决定采取用重载的方式来简化程序代码,在类的定义上也将原来计划定义的PurInfo和SaleInfo综合为一个PSInfo,同时考虑到c+的封装性以及结构化编程,用一个main.h包含了所有的类和声明,使主函数部分看起来更为简明。而在后期编译的时候也遇到个许多问题,一些小的关于输入法符合上的错误是可以避免的,还有一些思路语句上的错误则在老师和同学的帮助下得到了解决。后期优化阶段:

10、在后期主要是对程序的优化阶段,使程序更加美观,使用更加方便,同时对一些功能也做出了适当修改,例如将采购销售时间由原来的手动输入改为增加了一个time函数,使之能够通过电脑自动获取,还有加入Exit函数,使程序更为人性化。当然,也还有一些未解决的问题,例如对于添加书籍时若输入了重复书籍编号,此时程序会记录原来的信息而不能录入新的信息。在这个方面不能不能做到很好的解决。对于程序的一些未能很好解决的问题,我会在今后继续加以完善。最后感谢老师对我此次c+课程设计的细心指导! 参考文献:C+程序设计 谭浩强 清华大学出版社 (2004-06出版);C+程序设计题解与程序指导 谭浩强 清华大学出版社 (2

11、004-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&

12、 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;s

13、tring 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 str

14、ing& 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

15、 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,PSInf

16、o& 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),stor

17、einfo_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& st

18、r);#include main.h#include Shop shop;/-输入输出流重载-ostream& operator(ostream& os,const BookInfo& book)os图书编号:book.index;ossetw(8)书名:book.name;ossetw(8)作者:book.writer;ossetw(10)出版社:book.press;ossetw(10)出版日期:book.date;ossetw(8)定价:(istream& in,BookInfo& book)coutbook.index;coutbook.name;coutbook.writer;cou

19、tbook.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,siz

20、eof(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,cons

21、t BookInfo& book)osbook.indexendl;osbook.nameendl;osbook.writerendl;osbook.pressendl;osbook.dateendl;osbook.price(ifstream& in,BookInfo& book)inbook.index;inbook.name;inbook.writer;inbook.press;inbook.date;inbook.price;return in;ofstream& operator(ofstream& os,const PSInfo& info)osinfo.indexendl;osi

22、nfo.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-=(cons

23、t PSInfo& info)num-=info.num;return *this;StoreInfo& StoreInfo:operator=(const BookInfo& info)index=info.index;name=info.name;writer=info.writer;return *this;BookInfo* FindBookInfo(const string& str)for(int i=0;ishop.book_num;i+)if(shop.booki.name=str | shop.booki.index=str)return &shop.booki;return

24、 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未找

25、到相关库存信息!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;/减少库存

26、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;ofsstoreinfoj.nameend

27、l;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.name;ifsstoreinfoj.writer;ifsstoreinfoj.num;storeinfo

28、_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

29、(name);cout(*info);StoreInfo* storeinfo=FindStoreInfo(name);cout 库存:numendl;float Shop:Profit()float pursum=0;for(int i=0;ipurinfo_num;i+)pursum+=purinfoi.sum;float salesum=0;for(int j=0;jsaleinfo_num;j+)salesum+=saleinfoj.sum;cout总利润:salesum-pursumendl;return salesum-pursum;int Menu()cout=功能菜单=endl

30、;int n=1,select=-1;coutt请输入数字以选择功能endlendl;couttn+.添加图书信息endlendl;couttn+.图书采购endlendl;couttn+.图书销售endlendl;couttn+.图书查询endlendl;couttn+.采购查询endlendl;couttn+.销售查询endlendl;couttn+.利润统计endlendl;coutt0.退出endlselect;return select;char Exit()char s;couts;return s;int main()/system(mode con cols=160 lines

31、=80);shop.Read();int select;char s;while(1)coutt欢迎进入图书购销管理系统endl;select=Menu();switch(select) case 0:s=Exit();if(s=y|s=Y) return 0;break;case 1: cout请输入添加的图书信息endl;shop.AddBookInfo();break;case 2:cout请输入购书信息endl; shop.Purchase();break;case 3:cout请输入售书信息endl;shop.Sale();break;case 4:cout请输入要查找的书籍编号或书名endl;shop.FindBook();break;case 5:cout采购订单:endl;shop.ListPurInfo();break;case 6:cout销售订单:endl;shop.ListSaleInfo();break;case 7:shop.Profit();break;shop.Save();system(pause);return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号