c专业课程设计图书销售标准管理系统.doc
《c专业课程设计图书销售标准管理系统.doc》由会员分享,可在线阅读,更多相关《c专业课程设计图书销售标准管理系统.doc(35页珍藏版)》请在咨信网上搜索。
目录 一、 设计目标 2 二、设计内容 2 三、设计要求 2 四、设计过程 3 1、面向对象分析 3 2、数据结构分析 7 3、 系统实施步骤 8 五、 程序运行结果 11 六、 设计总结 17 参考文件 17 附录 18 图书销售管理系统 一、 设计目标 本图书销售管理系统,关键用于小型书店,进行简单图书管理,为了能够愈加好管理书店销售情况和库存情况书店销售管理系统关键功效有: (1)图书入库管理:维护入库图书信息,图书编号、书名、价格等,自动计算库存。 (2)图书查询统计:能够依据图书分类、出版社、书名、作者等条件查询图书具体信息。 (3)销售管理:销售过图书全部统计在销售列表中,方便统计收入。图书销售后,要统计图书库存,按天天统计销售额、每个月或季度生成报表,并生成畅销书单。 二、设计内容 (1) 图书信息包含书名、书号、作者、出版社、单价、库存数量、进价、售价、利润; (2)用户登录界面设计 (3)信息维护:包含子模块有增加图书信息、删除图书信息、修改图书信息 (4 ) 查询功效:可按书名查询、作者查询、或出版社查询 (5) 排序功效:能实现按图书销售利润进行排序功 三、设计要求 (1) 只能使用C++语言,源程序要有合适注释,使程序轻易阅读 (2) 最少采取文本菜单界面(假如能采取图形菜单界面愈加好) (3) 学生可自动增加新功效模块(视情况可另外加分) (4) 写出课程设计汇报,具体要求见相关说明文档 四、设计过程 1、面向对象分析 (1)对象模型设计 (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;} //价格接口函数 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>>num; cin>>price; cin>>kucun; cin>>salel; cin>>xcl; } void output(){//输出 cout<<"Yule:"<<endl; cout<<name<<" "<<num<<" "<<price<<" "<<kucun<<" "<<salel<<" "<<xcl<<endl; } void compute(){//计算售出剩下函数 int counts; cout<<"输入售出图书本数"<<endl; cin>>counts; cout<<"售后剩下:"<<endl; kucun=kucun-counts;//计算库存量 salel=salel+counts;//计算销售量 xcl=xcl-counts;//计算剩下量 说明: yule类用于定义娱乐图书信息,它是Book类公有派生类。其中: Compute()是一个计算售出图书数量和剩下函数,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<<" "<<num<<" "<<price<<" "<<kucun<<" "<<salel<<" "<<xcl<<endl; } void compute1(){ int counts; cout<<"输入售出图书本数"<<endl; cin>>counts; cout<<"售后剩下:"<<endl; kucun=kucun-counts; 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; public: 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 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()//娱乐类图书畅销 void changxiao()//学习类图书畅销 void save()//娱乐类入库单 void save1()//学习类入库单 void load()//读取娱乐类文件 void load1()//读取学习类文件 void Menu()//应用菜单 说明:operate类用来实现图书管理系统功效,它是用来查找、添加、删除图书信息基础点信息,对系统进行维护,生成入库单、畅销书和一天销售额。 2、数据结构分析 书店销售管理系统数据结构: 英文名称 汉字名称 Book 图书类 Yule 娱乐类图书 Study 学习类图书 Strvec 娱乐类STL模版 Strvec1 学习类STL模版 Operate 运算类 search_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 保留学习类文件 Load1 显示娱乐类文件 saleamounts 销售量计算 xiugai_yule 娱乐类图书修改 xiugai_study 学习类图书修改 changxiao 娱乐类畅销图书 Changxiao1 学习类畅销图书 3、 系统实施步骤 (1)主页面步骤图图(1) 图(1)主页面步骤图 (2)用户登陆 简述: 用户在图书销售系统里用户登陆并查询图书内容。 基础步骤: 1 用户:在图书销售系统画面,选择用户登陆,显示图书基础信息,按提醒内容进行查找 2 查询:用户在图书销售系统中能查询图书信息; 3 显示:用户能在用户界面能看到最近图书; 4 结束。 步骤图图(2) 图(2)用户登录步骤图 (3)收银员登陆 简述: 收银员在图书销售系统里能看到图书信息并能修改出售图书数量。 基础步骤: 1 收银员:在图书销售系统画面,选择收银员登陆,输入密码,进入收银员界面。 2 修改:收银员在图书销售系统中能修改图书售出情况; 3 显示:收银员能在用户界面能看到最近录入图书; 4 结束。 步骤图图(3) 图(3)收银员登录步骤图 管理员登陆 简述: 管理员在图书销售系统填加、删除和查找图书信息,并能显示销售额。 基础步骤: 1 管理员:在图书销售系统画面,选择管理员登陆,输入密码,进入收银员界面。 2 添加: 管理员在图书销售系统中能填加图书基础情况; 3 删除: 管理员在图书销售系统中能删除图书基础信息; 4 查找: 管理员在图书销售系统中能查找图书基础信息。 5 销售额:管理员在图书销售系统中能看到销售额输出 6 畅销书:管理员在图书销售系统中能查询畅销书 7 结束 步骤图图(4) 图(4)管理员登录步骤图 五、 程序运行结果 管理员登录 在书店开始售书之前先由管理员添加书籍内容,在管理员将需要添加书籍添加完成后用户还有收银员才能实施自己对应功效。选择管理员功效会进入登陆界面;密码输入正确方能进入使用,错误则会返回输入密码界面,直到密码正确,进入使用界面。 按1添加娱乐类图书及相关内容 添加成功后好能够继续按1添加娱乐类书籍相关内容,也可按5继续添加学习类图书 添加完成后可返回主菜单(11选项) 收银员登录 在主界面按2可进入收银员登录界面,同管理员一样,收银员也一样需要输入密码,密码对方可进入修改界面,在这里收银员能够对图书销售情况进行修改,方便以后对图书销售情况便于管理 输入图书编号(娱乐类/学习类)而且输入将要售出本数,系统将会显示图书(娱乐类/学习类)售后情况 用户登录(张海东负责) 在主界面选择1能够进入用户使用界面,在这里用户能够看到所以书籍(娱乐类和学习类),并能够根据编号或图书名称查询对应图书具体内容 到此用户使用功效结束。 当然管理员也有对图书查询功效,对图书销售情况时时了解 娱乐类图书查询: 学习类图书查询: 销售额显示 在一段时间后书籍可能售完,这么管理员需要将这类书籍删除,以免误导用户,在图书删除后,用户在查询系统中将不会再查询到相关内容 娱乐类图书删除 学习类图书删除 管理员在实施完全部步骤后能够选择回到住界面,也能够选择退出系统 回到主界面选择: 退出系统选择: 六、 设计总结 (1)完成本课题花了很长时间,真正体会了作为一个程序员辛劳,而且必需含有细心、耐心品质,想要完成一项出色项目,必需精益求精,反复操作和实践。 (2)在做了本课程设计以后,我对C++了解更深了,很多知识得到了巩固,部分不懂知识也逐步明了!这其中关键是对指针使用收获很多,在指针使用过程中,对指针指向和对各函数中指针赋值会影响到整个程序运行;还有就是对文件输入输出流了解得更透彻了,知道了打开一个文件后必需还要对其关闭,不然程序无法运行,对多种文件输入输出控制符全部能基础融会贯通。 (3)即使本课题已完成,可是还是存在部分问题,比如说界面还不够好看,为了用户用得舒适,界面是很关键。 参考文件 郑莉等编著.《C++语言程序设计》.清华大学出版社 郑莉等编著.《C++语言程序设计习题和试验指导》.清华大学出版社 张基温编著.《C++程序设计基础例题和习题》.高等教育出版社 黄明等编著.《面向对象程序设计习题详解》.机械工业出版社 附录 源代码: #include <iostream> #include <iomanip> #include <string> #include <fstream> using namespace std; const int Maxr=100; const int Maxb=100; const int Maxbor=5; class Reader { private: int tag; int no; char name[10]; int borbook[Maxbor]; public: 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; strcpy(name,na); for(int i=0;i<Maxbor;i++) borbook[i]=0; } void borrowbook(int bookid) { for(int i=0;i<Maxbor;i++) { if (borbook[i]==0) { borbook[i]=bookid; return; } } } int retbook(int bookid) { for(int i=0;i<Maxbor;i++) { if(borbook[i]==bookid) { borbook[i]=0; return 1; } } return 0; } void disp() { cout << setw(5) << no <<setw(10) << name<<"借书编号:["; for(int i=0;i<Maxbor;i++) if(borbook[i]!=0) cout << borbook[i] << "|"; cout << "]"<<endl; } }; class RDatabase { private: int top; Reader read[Maxr]; public: RDatabase() { Reader s; top=-1; fstream file("reader.txt",ios::in); while (1) { file.read((char *)&s,sizeof(s)); if (!file)break; top++; read[top]=s; } file.close(); } void clear() { top=-1; } int addreader(int n,char *na) { Reader *p=query(n); if (p==NULL) { top++; read[top].addreader(n,na); return 1; } return 0; } Reader *query(int readerid) { for (int i=0;i<=top;i++) if (read[i].getno()==readerid && read[i].gettag()==0) { return &read[i]; } return NULL; } void disp() { for (int i=0;i<=top;i++) read[i].disp(); } void readerdata(); ~RDatabase() { fstream file("reader.txt",ios::out); for (int i=0;i<=top;i++) if (read[i].gettag()==0) file.write((char *)&read[i],sizeof(read[i])); file.close(); } }; void RDatabase::readerdata() { char choice; char rname[20]; int readerid; Reader *r; while (choice!='0') { cout <<"******欢迎使用图书销售管理系统终极版******”<<endl; cin >> choice; switch (choice) { case '1': cout << "******操作菜单******:"; cin >> readerid; cout << "******收银员******"; cin >> rname; addreader (readerid,rname); break; case '2': cout << "******管理员******:"; cin >> readerid; r=query(readerid); if (r==NULL) { cout << " ******用户****** "<<endl; break; } cout << "输入新姓名:"; cin >> rname; 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) { cout <<"该图书不存在"<< endl; break; } r->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<"输入错误,请从新输入:";break; } } } class Book { private: int tag; int no; char name[20]; int onshelf; public: Book(){} char *getname() { return name; } int getno(){ return no; } int gettag(){ 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 << setw(10) <<(onshelf==1? "缺货") <<endl; } }; class BDatabase { private: int top; Book book[Maxb]; public: BDatabase() { Book b; top=-1; fstream file("book.txt",ios::in); while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); } void clear() { top=-1; } int addbook(int n,char *na) { Book *p=query(n); if (NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; } Book *query(int bookid) { for (int i=0;i<=top;i++) if (book[i].getno()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL; } void bookdata(); void disp() { for (int i=0;i<=top;i++) if (book[i].gettag()==0) book[i].disp(); } ~BDatabase() { fstream file("book.txt",ios::out); for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } }; void BDatabase::bookdata() { char choice; char bname[40]; int bookid; Book *b; while (choice!='0') { cout <<"\n\n\n\t\t\t图 书 维 护 "<<endl<<endl; cin >> choice; switch (choice) { case '1': cout << "输入图书编号:"<<endl; cin >> bookid; cout << "输入图书书名:"<<endl; cin >> bname; addbook(bookid,bname); break; case '2': cout << "输入图书编号:"<<endl; 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 <<" 该图书缺货" << endl; break; } b->delbook(); break; case '4': cout << " 读入图书编号:"<<endl; cin >> bookid; b=query(bookid); if (b==NULL) { cout <<" 该图书不存在"<< endl; break; } b->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<"输入错误,请从新输入:"; } } } void main() { char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!='0') { cout <<endl<<endl<<"\t\t\t 图 书 销售管 理 系 统\n\n\n"; cin >> choice; switch (choice) { case '1': cout <<" 买书 图书编号:"; cin >>readerid; cout <<" 图书编号: "; cin >>bookid; r=ReaderDB.query(readerid); if (NULL==r) { cout <<" 不存在该图书,不能买书"<< endl; break; } b=BookDB.query(bookid); if (b==NULL) { cout <<" 不存在该图书,不能买书"<< endl; break; } if (b->borrowbook()==0) { cout << " 该图书已售完,不能买书"<< endl; break; } r->borrowbook(b->getno()); break; case '2': cout<<"买书\n 图书编号:"; cin >>readerid; cout << " 图书编号:"; cin >>bookid; r=ReaderDB.query(readerid); if (r==NULL) { cout <<" 不存在该图书,不能买书" << endl; break; } b=BookDB.query(bookid); if (b==NULL) { cout <<" 不存在该图书,不能买书" <<endl; break; } b->retbook(); r->retbook(b->getno()); break; case '3': BookDB.bookdata(); break; case '4': ReaderDB.readerdata(); break; default:cout<<"输入错误,请从新输入:"; } } }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业 课程设计 图书 销售 标准 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文