版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、word格式文档目录一、设计目的 2二、设计内容 2三、设计要求 2四、设计过程 31、面向对象分析 32、数据结构分析 73、系统执行流程 8五、程序运行结果 11六、设计总结 17参考文献 17附录 18专业整理图书销售管理系统、设计目的本图书销售管理系统,主要用于小型的书店,进行简单的图书的管理,为了 能够更好的管理书店的销售的情况和库存的情况书店销售管理系统主要的功能 有:(1)图书入库管理:维护入库图书信息,图书编号、书名、价格等,自动 计算库存。(2)图书查询统计:可以根据图书分类、出版社、书名、作者等条件查询 图书的详细信息。(3)销售管理:销售过的图书都记录在销售列表中,方便统
2、计收入。图书 销售后,要记录图书库存,按每天统计销售额、每个月或季度生成报表,并生成 畅销书单。二、设计内容(1)图书信息包括书名、书号、作者、出版社、单价、库存数量、进价、售 价、利润;(2)用户登录界面设计(3)信息维护:包括子模块有增加图书信息、删除图书信息、修改图书信息(4 )查询功能:可按书名查询、作者查询、或出版社查询(5)排序功能:能实现按图书销售利润进行排序的功三、设计要求(1)只能使用C+叫言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明
3、文档四、设计过程1、面向对象分析(1)对象模型设计'*inpuuj、: void:uulpuin 二 X1 uid * computef): void <51Ruk树桃打”金:4H强留id 即riu 二 flout仲num : int帏 ucum: int庭d : mt二 intigcniimclj : string卜 gemumQ: ml+ctpriec(): float;Jgelk川仁uiH l 二 mtgmclO ; i】M-+gECMkl () : intHrnputt): virtualvoidH>utput(): viirtuiilvoidH云”'Mnp
4、ufl )二 void:UMpotl ji: vmdonipuTclO : vcnid. u|)trii(ektrvK : <YVLE>STR VEC<i>t : <Study>V KCPORI <>|i»itrch yulenuint: void J-HjC3.rch_yulen3mci|;): void pdel yuleniLiEDl *: void miel yulenamef I raid adkl_study()l ! Void 卜*d_yuH。t丽d _H«aLrch_Hhi£ii3uni(J; viv
5、id|twcO)iu<Mwii*0"尔斌 M* R即i_yuk<)i: %oitl P xiu段ii AfudM) - vuid pfcMnidjTiiiiin(): void hdlrl iiEudynuind): vuid ;f hcw_y(j】刎二 void 卜 Miuw sEiid>1 >: vuid I-vnleamoumtiis: void xrhHinjj*xLHnl(>: void churijjXiuM!) : eMJ i+-jve():翠。id宝巳1。: void +) : vnidl小Mil。: vgid-> MrnU() :
6、 voidD-M(2)各个类设计系统中说明了 4个类,每个类的详细设计如下:1. Book类class book /book 基类 protected:string name;/ 名称 float price; / 价格int num; / 编号int kucun,xcl,salel;/ 库存,现存量,销售量 public:int getnum()return num; / 编号接口函数string getname()/ 名称接 口 函数return name;价格接口函数库存量接口函数现存量接口函数销售量接口函数输入虚函数输出虚函数float getprice()return price;
7、/ int getkucun()return kucun; / int getxcl()return xcl; / int getsalel()return salel; / virtual void input()=0; / virtual void output()=0; /说明:Book类是一个基类,用于定义图书基本的信息。例如:其中 string getname()是一个接口函数,能获得图书的姓名。2. Yule (娱乐类)class yule:public book/ 娱乐的派生类public:void input()/ 输入 cin>>name; cin>>
8、num; cin>>price;cin>>kucun; cin>>salel; cin>>xcl;void output()/ 输出 cout<<"Yule:"<<endl;cout<<name<<" "<<num<<" "<<price<<" "<<kucun<<" "<<salel<<" &q
9、uot;<<xcl<<endl;)void compute()/计算售出剩余函数int counts;cout<<”输入售出的图书的本数"<<endl;cin>>counts;cout<<"售后剩余:"<<endl;kucun=kucun-counts;/计算库存量salel=salel+counts;/计算销售量xcl=xcl-counts;/计算乘 U余量说明:yule类用于定义娱乐图书的信息,它是 Book类的公有派生类。其 中:Compute。是一个计算售出图书数量和剩余的
10、函数,input ()和output() 函数是对图书信息的输入和输出而且他们是在基类中定义的纯虚函数。study (学习类图书)class study:public book/ 学习类public:void input()cin>>name;cin>>num;cin>>price;cin>>kucun;cin>>salel;cin>>xcl;)void output()cout<<"Learn:"<<endl;cout<<name<<" &qu
11、ot;<<num<<" "<<price<<" "<<kucun<<" "<<salel<<” "<<xcl<<endl;)void compute1()int counts;cout<<”输入售出的图书的本数"<<endl;cin>>counts;cout<<"售后剩余:"<<endl;kucun=kucun-cou
12、nts;salel=salel+counts;xcl=xcl-counts;study类用于定义学习类图书的信息,它是 Book类的公有派生类。其中:Compute1()是一个计算售出图书数量和剩余的函数,input ()和output() 函数是对图书信息的输入和输出而且他们是在基类中定义的纯虚函数。operate (功能类)typedef vector<yule> STRVEC;/ 定义 stl 模版的容器typedef vector<study> STRVEC1;class operate /定义功能类STRVEC strvec;STRVEC1 strvec1;p
13、ublic: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_studynum(int m)/查找学习类图书的编号void search_studyname(string s)/ 查找学习类图书的名称void xiu
14、gai_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()/娱乐类图书畅销void changxiao()/ 学习类图书畅销void save()/娱乐类入库单void save1()学习类入库单void l
15、oad()读取娱乐类文件void load1()读取学习类文件void Menu()/ 应用菜单说明:operate类用来实现图书管理系统的功能,它是用来查找、添加、删 除图书的信息的基本点的信息,对系统进行维护,生成入库单、畅销书和一天的 销售额。2、数据结构分析书店销售管理系统的数据结构:英文名称中文名称Book图书类Yule娱乐类图书Study学习类图书Strvec娱乐类的STL模版Strvecl学习类的STL模版Operate运算类search_yulenum娱乐类编号查找search_yulename娱乐类书名查找del_yulenum娱乐类编号删除del_yulename娱乐类书名
16、删除add_study添加学习类图书add_yule添加娱乐类图书search_studynum学习类编号查询search_studyname学习类书名查询del studynum学习类编号删除del studyname学习类书名删除show_yule显示娱乐类信息show study显示学习类信息save保存娱乐类文件load显示娱乐类文件Menu菜单main主函数Save1保存学习类文件Load1显示娱乐类文件saleamounts销售量的计算xiugai_yule娱乐类图书的修改xiugai_study学习类图书的修改changxiao娱乐类畅销图书Changxiao1学习类畅销图书3、
17、系统执行流程(1)主页面流程图如图(1)图(1)主页面流程图(2)顾客登陆简述:用户在图书销售系统里顾客登陆并查询图书内容。基本流程:1顾客:在图书销售系统画面,选择顾客登陆,显示图书基本信息,按提 示内容进行查找2查询:顾客在图书销售系统中能查询图书的信息;3显示:顾客能在顾客界面能看到最近的图书;4结束。流程图如图(2)图(2)顾客登录流程图(3)收银员登陆简述:收银员在图书销售系统里能看到图书信息并能修改出售图书的数量。基本流程:1收银员:在图书销售系统画面,选择收银员登陆,输入密码,进入收银 员界面。2修改:收银员在图书销售系统中能修改图书的售出情况;3显示:收银员能在顾客界面能看到最
18、近录入的图书;4结束。流程图如图(3)刊归收聚属所 存操作宝威”图(3)收银员登录流程图收银讪密为正确,M ;人就抖凄单0查找图书,I:悻*图H曾出口,'图1$内容I*耀第号制七,反伫由的图传情况惚员后H保有憔 也。蔚川客,得 £1劫1GW岂:t乘“一事界此管理员登陆简述:管理员在图书销售系统填加、删除和查找图书信息,并能显示销售额。基本流程:1管理员:在图书销售系统画面,选择管理员登陆,输入密码,进入收银 员界面。2添加:管理员在图书销售系统中能填加图书的基本情况;3删除:管理员在图书销售系统中能删除图书的基本信息;4查找:管理员在图书销售系统中能查找图书的基本信息。5销售
19、额:管理员在图书销售系统中能看到销售额的输出6畅销书:管理员在图书销售系统中能查询畅销书7结束流程图如图(4)显小克如的控H 洋生也淳.frit 立3口会掘印星 小罟理员界面,是i?通辽士旧r : +Ji回:址 it单,班2 , 6) . U榻4号:?1""!';'咨克图将剧晞成 功.6H除完吊不温耳1 .、”叫 优界面I31 .整人事疗31 於W* TD1 史|匕孑的洋科情W,仁君福.每号.;*. *号.tiff 分.啜桂金,1市 I工塔如先畸耳H小安鼻员界闻X*,'alIFl*济阳,尹flkc W妙部斗ft曲n营作社上处K4、*4蝎窿* 马等主案
20、 bH*的HM出料管E,密码串入F-:确.避人管理圆梯作菜单:次.返回一给人界面醺乐先1,本国盘档£边优艮内第t 2.耐除弁*才的图Nl 3.性往现白的找乐美的图书:4.显卡人库怙况:苧可史九 海顺良料O1优)班内宾】也 就除已经料完的阴灯7.和发期吊的学习类的闻信"最显市入库怙区:务?示怕学顿】10,显?17书: II,姐主菜相通出工1 17> » I 匿* 弓;:十代,国:”;:片香检人用附册,井号a (rt SF*1*7J4J) 加蜂全斗1怦-二洋 tt :'一帮防''1在图(4)管理员登录流程图五、程序运行结果管理员登录在书店
21、开始售书之前先由管理员添加书籍内容,在管理员将需要添加的书 籍添加完毕后顾客还有收银员才能执行自己相应的功能。选择管理员功能会进入登陆界面;密码输入正确方能进入使用,错误则会返回输入密码界面,直到密码正确,进入使用界面。请辐入密码I 123424 善廓俣 湎漏人密码, 2341 nt'H W'M"'RI Irt n E TM -;清贵而输AF醴/码:学习之图书:离建员欢迎您出11M-T*M*返国主菜请选择,按1添加娱乐类的图书及相关内容请选择!请输入需要添加如加book的名称编号价格库存销售量现存量y工1 2月5 0 5返乐类入库单生成口苴“MIMMM苴KMI
22、M:,官孑星号 XA HW:;MM KSTMMM: XMlff民乐类图书:显示入库情况学习类图书:JMXMMMMMMIM:回三 茸单_/ M;出11 H M ,疑 M 箕 K M请选择!添加成功后好可以继续按1添加娱乐类书籍相关内容,也可按 5继续添加学习类的图书管理员欢迎您幄乐类图书显示入库情况学习类图书显示人rww!%输入需要添加&松西血品的名称端号价格库存错管量现存量 math 2 30 6 0 6生成学习类入库单一添加完毕后可返回主菜单(11选项)收银员登录请选择!11层否返回主菜单<> ?欢迎使用图书错售管理系统终极版* MM* R ME:MMiH- M M: M
23、 M A ME MIII JL.' -I pa I J| :一l»-r »-r «-r a-r 11 !-» u »- LF !E1 |"J"T"WT"W'B_W_W_WTW_T p-T"T"T'rB7W-W-WTWFIxj _r »j ajrmru tj i_r i_r i_r<-r u> v x»r m_r w-r m1 1M m xjJO(JOtJ(M:M JCMM 三三里 员3 MMMMMMM MMMluj MJT * M
24、1 M 'M Xg -TXJ UJ RJ M- fcg M1 rM ,J择操作功能:在主界面按2可进入收银员的登录界面,同管理员一样,收银员也一样需 要输入密码,密码对方可进入修改界面,在这里收银员可以对图书的销售情况 进行修改,以便以后对图书销售情况便于管理选授操作功能 2请输入密码:1234密码惜送!请重新瑜入正确密码:请输.密码:123*欢迎使用图书销售修改系统IYule : yi 1 20 5 0 5 Learn: math 2 30 6 0 & 请输入要售出的图书的编号:输入图书编号(娱乐类/学习类)并且输入将要售出的本数,系统将会显示 图书(娱乐类/学习类)的售后情
25、况请箱.妻罟出的图二三一洞号I机人售出的图书的本数备后乘映yi</i 1 20 3 2 3顾客登录(张海东负责)在主界面选择1可以进入顾客的使用界面,在这里顾客可以看到所以书籍 (娱乐类和学习类),并可以按照编号或者图书名称查询相应图书的详细内容功熊:1!欢迎您使用图书查询系统Iyi 1 20 3 2 3用习类书籍:Learn* math 2 30 5 1 5 查询选项6按图书编号查找按图书名称查找请输入需要查询图书的编号 1Vule: yi 1 20 3 2 3 匹此编号.的study Wok 请输入需要查询图书的名称yi 无此名称的配khookLeapn m通匕h 2 30 5 1
26、5到此顾客使用功能结束当然管理员也有对图书查询的功能,对图书的销售情况时时了解 娱乐类图书查询:%人要查询图书的编号1Yult:h1和S85请输入要查询图书的名称Vuile :Ui 1 20 5 0 S学习类图书查询:7脑鞋赛上脚1输入要查询图书的编号2Lean:math 芝 30 6 6号输入要查询图书的名称math mathLearh: math 26 6销售额显示r9修销售额为: ?0在一段时间后书籍可能售完,这样管理员需要将此类书籍删除,以免误导 顾客,在图书删除后,顾客在查询系统中将不会再查询到相关的内容娱乐类图书删除请选择!或项 。按图书名称删除工按图书编号删除,髯输入要删除的图书
27、名称:*钻除成功! 学习类图书删除请选择!号项。按编号删除工按图书名称删除)蓍输入要删除的图书名称mathmath删除成功!管理员在执行完所有的步骤后可以选择回到住界面,也可以选择退出系统 回到主界面选择:I请选择!厘否返回主菜单QzQ?欢迎使用图书错售管理系统终极版*,*,*MM:* MM* R- 彳乍 单 M M: M M A ME MHMMWiWMEJtlEXMiX J<SK M:争M:EM M XXMXKIH M MJIMIMM顾 j WWWfWWHOe卜KIWllWMIWUMM" 一一一车艮员 2 XXMiMif " MMMM::M 梵 MM算 MMMMMI
28、M XNEMMM JOOtMMIKMM:言干里昂3 MMMMMMiMMXXMMlMilMMlIlCHMM XX JC / M M M M M陆择操作功能:退出系统选择:请选择!是否返回王菜单nPfcss any kev to cantinueB六、设计总结(1)完成本课题花了很长的时间,真正体会了作为一个程序员的辛苦,并 且必须具备细心、耐心的品质,想要完成一项出色的项目,必须精益求精,反 复操作与实践。(2)在做了本课程设计以后,我对 C+勺了解更深了,很多知识得到了巩 周,一些不懂的知识也渐渐明了!这其中主要是对指针的使用收获很多,在指 针使用的过程中,对指针的指向以及对各函数中指针的赋值
29、会影响到整个程序的 运行;还有就是对文件的输入输出流了解得更透彻了, 知道了打开一个文件后必 须还要对其关闭,否则程序无法运行,对各种文件的输入输出控制符都能基本融 会贯通。(3)虽然本课题已完成,可是还是存在一些问题,比如说界面还不够好 看,为了用户用得舒服,界面是很重要的。参考文献郑莉等编著.C+邮言程序设计.清华大学出版社郑莉等编著.C+邮言程序设计习题与实验指导.清华大学出版社 张基温编著.C+?序设计基础但J题与习题.高等教育出版社 黄明等编著.面向对象程序设计习题详解.机械工业出版社附录源代码:#include <iostream>#include <iomani
30、p>#include <string>#include <fstream>using namespace std;const int Maxr=100;const int Maxb=100;const int Maxbor=5;class Readerprivate:int tag;int no;char name10;int borbookMaxbor;public:Reader() char *getname() return name;int gettag() return tag;int getno() return no;void setname(cha
31、r na)strcpy(name,na);void delbook() tag=1; void addreader(int n,char *na)tag=0;no=n;strcpy(name,na);for(int i=0;i<Maxbor;i+) borbooki=0;void borrowbook(int bookid)for(int i=0;i<Maxbor;i+)if (borbooki=0)borbooki=bookid;return;int retbook(int bookid)for(int i=0;i<Maxbor;i+)if(borbooki=bookid)
32、borbooki=0;return 1;return 0;void disp()cout << setw(5) << no <<setw(10) << name<<" 借书编号:"for(int i=0;i<Maxbor;i+)if(borbooki!=0)cout << borbooki << "|"cout << ""<<endl;;class RDatabaseprivate:int top;Reader readM
33、axr;public:RDatabase()Reader s;top=-1;fstream file("reader.txt",ios:in);while (1)file.read(char *)&s,sizeof(s);if (!file)break;top+;readtop=s;file.close();void clear()top=-1;int addreader(int n,char *na)Reader *p=query(n);if (p=NULL)top+;readtop.addreader(n,na);return 1;return 0;Reader
34、 *query(int readerid)for (int i=0;i<=top;i+)if (readi.getno()=readerid &&readi.gettag()=0)return &readi;return NULL;void disp()for (int i=0;i<=top;i+) readi.disp();void readerdata();RDatabase()fstream file("reader.txt",ios二out);for (int i=0;i<=top;i+)if (readi.gettag()
35、=0)file.write(char *)&readi,sizeof(readi);file.close();void RDatabase二readerdata() char choice;char rname20;int readerid;Reader *r;cout <<"*while (choice!='0')欢迎使用图书销售管理系统终极版* ” vvendl;cin >> choice;switch (choice) case '1':cout << "*操作菜单*:"cin &g
36、t;> readerid;cout << "*收银员*"cin >> rname;addreader (readerid,rname);break;case '2': cin >> readerid;cout << "*管理员*:"r=query(readerid);if (r=NULL) cout << " * 顾客 * "vvendl;break;cout << "输入新的姓名:";cin >> rname
37、;r->setname(rname);break;case '3':cout << " 输入图书编号:";cin >> readerid;r=query(readerid);if (r=NULL)cout <<” 该图书不存在"<< endl;break;r->delbook();break;case '4':cout << "读入图书编号:”;cin >> readerid;r=query(readerid);if (r=NULL)cou
38、t <<”该图书不存在"<< endl;break;r->disp();break;case '5':disp();break;case '6':clear();"break;break;default:cout<<"输入错误,请从新输入:class Bookprivate:int tag;int no;char name20;int onshelf;public:Book()char *getname() return name; int getno() return no; int ge
39、ttag() return tag; void setname(char na)strcpy(name,na);void delbook() tag=1;void addbook(int n,char *na)tag=0;no=n;strcpy(name,na);onshelf=1;int borrowbook()if (onshelf=1)onshelf=0;return 1;return 0;void retbook()onshelf=1;void disp()cout << setw(6) << no << setw(18) << name
40、 << setw(10) <<(onshelf=1?"缺货")<<endl;;class BDatabaseprivate:int top;Book bookMaxb;public:BDatabase()Book b;top=-1;fstream file("book.txt",ios:in);while (1)file.read(char *)&b,sizeof(b);if (file) break;top+;booktop=b;file.close();void clear()top=-1;int addb
41、ook(int n,char *na)Book *p=query(n);if (NULL=p)top+;booktop.addbook(n,na);return 1;return 0;Book *query(int bookid)for (int i=0;i<=top;i+)if (booki.getno()=bookid &&booki.gettag()=0)return &booki;return NULL;void bookdata();void disp()for (int i=0;i<=top;i+)if (booki.gettag()=0) bo
42、oki.disp();BDatabase()fstream file("book.txt",ios二out);for (int i=0;i<=top;i+)if (booki.gettag()=0)file.whte(char *)&booki,sizeof(booki);file.close();; void BDatabase二bookdata() char choice;char bname40;int bookid;Book *b;while (choice!='0') cout <<"nnnttt 图书维护&qu
43、ot;<<endl<<endl;cin >> choice;switch (choice) case '1':cout << "输入图书编号:"<<endl;cin >> bookid;cout << "输入图书书名:"<<endl;cin >> bname;addbook(bookid,bname);break;case '2': cout << "输入图书编号:"<<e
44、ndl; cin >> bookid;b=query(bookid);if (b=NULL)cout << "该图书缺货"<<endl;break;cout << "输入新的书名:"<<endl;cin >> bname;b->setname(bname);break;case '3':cout <<” 读入图书编号:"<<endl;cin >> bookid;b=query(bookid);if (b=NULL)cout &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论