1、 float getprice()return price; /价格接口函数 int getkucun()return kucun; /库存量接口函数 int getxcl()return xcl; /现存量接口函数 int getsalel()return salel; /销售量接口函数 virtual void input()=0; /输入虚函数 virtual void output()=0; /输出虚函数说明:Book类是一个基类,用于定义图书基本的信息。例如:其中string getname()是一个接口函数,能获得图书的姓名。2Yule(娱乐类)class yule:public
2、book/娱乐的派生类 void input()/输入 cinname;num; price;kucun;salel;xcl; void output()/输出 coutYule:endl;name numpricekucunsalelxcl void compute()/计算售出剩余函数 int counts;输入售出的图书的本数counts;售后剩余: kucun=kucun-counts;/计算库存量 salel=salel+counts;/计算销售量 xcl=xcl-counts;/计算剩余量 yule类用于定义娱乐图书的信息,它是Book类的公有派生类。其中:Compute()是一个
3、计算售出图书数量和剩余的函数,input()和 output()函数是对图书信息的输入和输出而且他们是在基类中定义的纯虚函数。study(学习类图书)class study:public book/学习类 void input() void output()Learn: void compute1()study类用于定义学习类图书的信息,它是Book类的公有派生类。Compute1()是一个计算售出图书数量和剩余的函数,input()和 output()函数是对图书信息的输入和输出而且他们是在基类中定义的纯虚函数。operate(功能类)typedef vector STRVEC;/定义stl
4、模版的容器study STRVEC1;class operate /定义功能类 STRVEC strvec; STRVEC1 strvec1; void search_yulenum(int m)/娱乐类图书按编号查找 void search_yulename(string s)/查找娱乐类图书按名称 void del_yulenum(int n)/删除娱乐类图书按编号 void del_yulename(string p)/按图书名称删除 void add_study()/添加学习类图书的基本信息 void add_yule()/添加娱乐类图书的基本信息 void search_studyn
5、um(int m)/查找学习类图书的编号 void search_studyname(string s)/查找学习类图书的名称 void xiugai_yule(int m)/修改娱乐类图书的剩余量 void xiugai_study(int m)/修改学习类图书的剩余量void del_studynum(int n)/删除售完图书void del_studyname(string p) /按名称删除图书void show_yule()/显示娱乐类图书void show_study()/显示学习类图书void saleamounts()/计算销售额void changxiao1()/娱乐类图书
6、畅销void changxiao()/学习类图书畅销void save()/娱乐类入库单void save1()/学习类入库单void load()/读取娱乐类文件void load1()/读取学习类文件void Menu()/应用菜单operate类用来实现图书管理系统的功能,它是用来查找、添加、删除图书的信息的基本点的信息,对系统进行维护,生成入库单、畅销书和一天的销售额。2、数据结构分析书店销售管理系统的数据结构:英文名称中文名称Book 图书类Yule 娱乐类图书Study 学习类图书Strvec 娱乐类的STL模版Strvec1 学习类的STL模版Operate 运算类search_
7、yulenum 娱乐类编号查找search_yulename 娱乐类书名查找del_yulenum 娱乐类编号删除del_yulename 娱乐类书名删除add_study 添加学习类图书add_yule 添加娱乐类图书search_studynum 学习类编号查询search_studyname 学习类书名查询del_studynum 学习类编号删除del_studyname 学习类书名删除show_yule 显示娱乐类信息show_study 显示学习类信息save 保存娱乐类文件load 显示娱乐类文件Menu 菜单main 主函数Save1 保存学习类文件 Load1saleamoun
8、ts 销售量的计算xiugai_yule 娱乐类图书的修改xiugai_study 学习类图书的修改changxiao 娱乐类畅销图书Changxiao1 学习类畅销图书3、系统执行流程(1)主页面流程图如图(1)图(1)主页面流程图(2)顾客登陆简述:用户在图书销售系统里顾客登陆并查询图书内容。基本流程:1 顾客:在图书销售系统画面,选择顾客登陆,显示图书基本信息,按提示内容进行查找2 查询:顾客在图书销售系统中能查询图书的信息;3 显示:顾客能在顾客界面能看到最近的图书;4 结束。流程图如图(2)图(2)顾客登录流程图(3)收银员登陆收银员在图书销售系统里能看到图书信息并能修改出售图书的数
9、量。基本流程:1 收银员:在图书销售系统画面,选择收银员登陆,输入密码,进入收银员界面。2 修改:收银员在图书销售系统中能修改图书的售出情况;收银员能在顾客界面能看到最近录入的图书;流程图如图(3)图(3)收银员登录流程图管理员登陆管理员在图书销售系统填加、删除和查找图书信息,并能显示销售额。1 管理员:在图书销售系统画面,选择管理员登陆,输入密码,进入收银员界面。2 添加: 管理员在图书销售系统中能填加图书的基本情况;3 删除: 管理员在图书销售系统中能删除图书的基本信息;4 查找: 管理员在图书销售系统中能查找图书的基本信息。5 销售额:管理员在图书销售系统中能看到销售额的输出6 畅销书:
10、管理员在图书销售系统中能查询畅销书7 结束流程图如图(4)图(4)管理员登录流程图5、程序运行结果管理员登录在书店开始售书之前先由管理员添加书籍内容,在管理员将需要添加的书籍添加完毕后顾客还有收银员才能执行自己相应的功能。选择管理员功能会进入登陆界面;密码输入正确方能进入使用,错误则会返回输入密码界面,直到密码正确,进入使用界面。按1添加娱乐类的图书及相关内容添加成功后好可以继续按1添加娱乐类书籍相关内容,也可按5继续添加学习类的图书添加完毕后可返回主菜单(11选项)收银员登录在主界面按2可进入收银员的登录界面,同管理员一样,收银员也一样需要输入密码,密码对方可进入修改界面,在这里收银员可以对
11、图书的销售情况进行修改,以便以后对图书销售情况便于管理输入图书编号(娱乐类/学习类)并且输入将要售出的本数,系统将会显示图书(娱乐类/学习类)的售后情况顾客登录(张海东负责)在主界面选择1可以进入顾客的使用界面,在这里顾客可以看到所以书籍(娱乐类和学习类),并可以按照编号或者图书名称查询相应图书的详细内容到此顾客使用功能结束。当然管理员也有对图书查询的功能,对图书的销售情况时时了解娱乐类图书查询:学习类图书查询:销售额显示 在一段时间后书籍可能售完,这样管理员需要将此类书籍删除,以免误导顾客,在图书删除后,顾客在查询系统中将不会再查询到相关的内容 娱乐类图书删除学习类图书删除管理员在执行完所有
12、的步骤后可以选择回到住界面,也可以选择退出系统回到主界面选择:退出系统选择:6、设计总结(1)完成本课题花了很长的时间,真正体会了作为一个程序员的辛苦,并且必须具备细心、耐心的品质,想要完成一项出色的项目,必须精益求精,反复操作与实践。(2)在做了本课程设计以后,我对C+的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了!这其中主要是对指针的使用收获很多,在指针使用的过程中,对指针的指向以及对各函数中指针的赋值会影响到整个程序的运行;还有就是对文件的输入输出流了解得更透彻了,知道了打开一个文件后必须还要对其关闭,否则程序无法运行,对各种文件的输入输出控制符都能基本融会贯通。(3)虽然本
13、课题已完成,可是还是存在一些问题,比如说界面还不够好看,为了用户用得舒服,界面是很重要的。参考文献郑莉等编著.C+语言程序设计.清华大学出版社 郑莉等编著.C+语言程序设计习题与实验指导.清华大学出版社 张基温编著.C+程序设计基础例题与习题.高等教育出版社 黄明等编著.面向对象程序设计习题详解.机械工业出版社 附录 源代码:#include iomanipstringfstreamusing namespace std;const int Maxr=100;const int Maxb=100;const int Maxbor=5;class Reader private:int tag;i
14、nt no;char name10;int borbookMaxbor;Reader() char *getname() return name; int gettag() return tag;int getno() return no;void setname(char na) strcpy(name,na);void delbook() tag=1;void addreader(int n,char *na)tag=0;no=n;for(int i=0;iMaxbor;i+) borbooki=0;void borrowbook(int bookid)if (borbooki=0) bo
15、rbooki=bookid;return;int retbook(int bookid)if(borbooki=bookid) return 1;return 0;void disp()cout setw(5) no setw(10) name借书编号:;if(borbooki!=0) borbooki |;class RDatabase int top;Reader readMaxr;RDatabase() Reader s;top=-1;fstream file(reader.txt,ios:in);while (1) file.read(char *)&s,sizeof(s);if (!
16、file)break;top+;readtop=s;file.close();void clear()int addreader(int n,char *na)Reader *p=query(n);if (p=NULL) readtop.addreader(n,na);Reader *query(int readerid)for (int i=0;=top;if (readi.getno()=readerid &readi.gettag()=0) return &readi;return NULL;void disp() readi.disp();void readerdata();RData
17、base()out);if (readi.gettag()=0) file.write(char *)&readi,sizeof(readi);void RDatabase:readerdata() char choice;char rname20;int readerid;Reader *r;while (choice!=0) *欢迎使用图书销售管理系统终极版*” choice;switch (choice) case 1*操作菜单*: readerid;*收银员* rname;addreader (readerid,rname);break;2*管理员*:r=query(readerid)
18、;if (r=NULL) *顾客* 输入新的姓名:r-setname(rname);3 输入图书编号: 该图书不存在 endl;delbook();4读入图书编号:该图书不存在disp();56clear();default:cout输入错误,请从新输入:class Book char name20;int onshelf;Book() char *getname() return name;int getno() return no;int gettag() return tag;void addbook(int n,char *na)onshelf=1;int borrowbook()if
19、 (onshelf=1) onshelf=0;void retbook() setw(6) setw(18) name setw(10) (onshelf=1?缺货) class BDatabase Book bookMaxb;BDatabase()Book b;book.txtb,sizeof(b);file) break;booktop=b;int addbook(int n,char *na)Book *p=query(n);if (NULL=p) booktop.addbook(n,na);Book *query(int bookid)if (booki.getno()=bookid &booki.gettag()=0) booki;void bookdata();if (booki.gettag()=0) booki.disp();BDatabase()i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1