《面向对象程序设计》课程设计报告书.docx
- 文档编号:10844439
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:27
- 大小:293.63KB
《面向对象程序设计》课程设计报告书.docx
《《面向对象程序设计》课程设计报告书.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计报告书.docx(27页珍藏版)》请在冰豆网上搜索。
《面向对象程序设计》课程设计报告书
河南城建学院
《面向对象程序设计》课程设计报告书
设计题目:
书店图书管理系统
指导老师:
崔雪冰张妍琰蔡照鹏
学生学号:
083410237
学生姓名:
田伟涛
同组人员:
张华东王博凯董登科
时间:
2011年12月30日
参考文献…………………………………………………………………………………18
第1章选题
1.1题目背景
随着信息时代的到来和全社会信息化、网络化建设的兴起,传统的书店图书管理模式和操作方法越来越不能满足用户的需要.智能化、网络化、信息化的书店图书管理系统应用势在必行。
电子时代的到来,很多网购盛行,网上的购物很流行,知识分子的网上购书,当然也是潮流的前沿,网上的书店图书管理系统也是应运而生,实现买卖双方的交流,与书库的自动化管理,便于书店老板的经营。
1.2系统实现的具体分工
系统分为顾客购书类、订单类、收银类、图书库类以及主函数等几大模块,其中顾客购书类实现顾客对图书的选购,订单类实现对顾客订单的管理及查询,收银类实现对订单的收银,图书库类实现对书店图书库图书信息的描述及管理,main()函数实现对程序主界面的引导。
1.2.1标题
书店图书管理系统的设计与实现
1.3开发环境
开发软件:
VisualC++6.0
处理器名称:
Pentium(R)Dual-CoreCPUE6500@2.94GHz2.94GHz
硬盘驱动器:
WDCWD1600AAJS-22WAAO
系统内存:
金士顿内存2GB
显示卡:
NVIDIAGeFORCE9400GT
显示器:
LGGSM4EB3
操作系统:
MicrosoftWindowsXPProfessional
第2章设计内容
2.1实现功能
系统主要包括书店顾客对图书的选购,书店工作人员对订单的收银以及对本店书库图书信息的管理。
顾客只需进入图书选购模块便可对图书进行选购、下单。
书店工作人员输入相应模块密码后可实现收银以及对本店图书信息的管理。
2.2概要设计(系统流程图)
图2-1系统结构图
2.3设计与分工
在这次书店管理系统开发过程中,我主要负责书库管理模块的设计与开发。
作为整个系统的核心,其他模块都是围绕这个模块进行的,所以只有做好了这个模块,才能确保其他模块的功能实现。
本模块才用二进制文件存储图书信息,不仅方便,而且保证了书库数据的安全。
另外,因为书库管理模块为书店工作人员管理图书所用,所以顾客或者其他人是没有权限进入的。
为此,我设置了管理员密码(Adminster)。
只有输入密码,才能进行操作。
2.3.1结构设计
结构设计也称概念设计(ConceptualDesign),是界面设计的骨架。
该书店管理系统运行时界面上的目录体系和词语定义易于用户理解和操作,例如主界面的目录体系包括1.顾客选购模块2.收银模块3.报表模块4.书库管理模块0.退出程序。
其中书库管理模块又下分目录1.显示所有图书2.查找书3.修改书4.增加书5.删除书6.返回主菜单。
显示所有图书一栏中详细列出了书库中所存书本的ISBN号、书名、作者、售价、库存量等信息,使管理者对图书信息一目了然,充分体现了结构化、简明化的界面设计理念。
2.3.2类设计
书库管理模块开发过程中采用类封装技术,让程序更能清晰的表达出其含义,类丰富了语言的自定义数据类型以及含义。
而且,面向对象编程更容易系统的维护和扩展,同时避免本模块数据与其他模块数据混淆参杂,使程序代码简单明了,增强了程序的稳定性,可塑性。
本模块共设计两个类,分别为图书信息类(bookdata)、图书管理类(bookbase)。
其中,图书信息类存储图书的各种信息,包括ISBN(isbn)、书名(booktitle)、出版社(publisher)、作者(author)、库存量(qtyonhand)、进书日期(dateadded)、批发价(wholesale)、零售价(retail)等信息。
图书管理类实现对书库的各种操作,包括显示所有图书信息(showallbook)、查找书(searchbook)、修改书(amendbook)、增加书(addbook)、删除书(deletebook)以及本模块操作菜单(menubook)等。
本模块的类关系图如下页图2-2所示:
图2-2图书管理模块结构图
第3章系统实现
3.1涉及知识点
类封装、面向对象程序设计、文件的读取操作、循环语句的使用、过程化设计的思想等。
3.2系统运行(主要运行界面抓图)
下面的几个图为系统运行的主要运行界面,界面清晰,结构鲜明。
图3-2书库管理模块菜单
图3-3显示所有图书信息
图3-4返回主菜单
3.3源程序清单(书库管理模块)
主菜单
main.cpp
#include
usingnamespacestd;
#include
#include
#include
#include"bookdata.h"
#include"Cash.h"
#include"bookbase.h"
#include"booklist.h"
#include"Shop.h"
intmain()
{
bookbasebase;
booklistlist;
Cashcash;
Shopshop;
intchoice;
charc;
cout<<"★★★★★★★★★欢迎使用书店管理系统★★★★★★★★★\n"< do{ cout<<"\n\t======================================================"< cout<<"\n\t********主菜单********"< cout<<"\n\t\t\t1: 顾客选购模块\n\n\t\t\t2: 收银模块\n\n\t\t\t3: 报表模块\n\n\t\t\t4: 书库管理模块\n\n\t\t\t0: 退出程序"< cout<<"\t======================================================"< cout<<"\n\t输入选择: "; cin>>choice; switch(choice) { case1: shop.Search();//顾客选购模块 break; case2: cash.CashOperate();//收银模块 break; case3: list.menubooklist();//报表模块 break; case4: base.menubook();//书库管理模块 break; case0: exit(0); } }while (1); return0; } 书库管理模块 图书信息类bookdata.h #ifndefBOOKDATA_H #defineBOOKDATA_H classbookdata { protected: charisbn[31];//isbn号 charbooktitle[100];//书名 charauthor[51];//作者 charpublisher[100];//出版社 chardateadded[11];//进书日期 intqtyonhand;//库存量 doublewholesale;//批发价 doubleretail;//零售价 intflag;//删除标记1: 未删除0: 删除 public: voidsetinfo(char*is,char*bo,char*au,char*pu,char*da,intqt,doublewh,doublere)//设置书的信息 { strcpy(isbn,is); strcpy(booktitle,bo); strcpy(author,au); strcpy(publisher,pu); strcpy(dateadded,da); qtyonhand=qt; wholesale=wh; retail=re; } voidshowinfo()//显示书的信息 { cout<<"\tISBN号: "< cout<<"\t书名: "< cout<<"\t作者: "< cout<<"\t出版单位: "< cout<<"\t进书日期: "< cout<<"\t库存量: "< cout<<"\t批发价: "< cout<<"\t零售价: "< } voidsetflag(intf=1)//设置删除标记 { flag=f; } intgetflag() {returnflag;} char*getisbn() {returnisbn;} char*getbooktitle() {returnbooktitle;} char*getauthor() {returnauthor;} char*getpublisher() {returnpublisher;} char*getdateadded() {returndateadded;} intgetqtyonhand() {returnqtyonhand;} doublegetwholesale() {returnwholesale;} doublegetretail() {returnretail;} voidsetqtyOnHand(intnum)//设置库存量 { qtyonhand=num; } }; #endif 图书管理类bookbase.h #ifndefBOOKBASE_H #defineBOOKBASE_H #include"bookdata.h" classbookbase: publicbookdata { protected: inttop; bookdatabook[100]; public: bookbase()//构造函数,打开书库信息 { bookdatas; top=-1; fstreamfile; file.open("bookinfo.dat",ios: : in|ios: : binary); while(! file.eof()) { file.read((char*)&s,sizeof(s)); if(file.fail()) break; top++; book[top]=s; } file.close(); } voidupdatedat()//刷新书库信息 { fstreamfile("bookinfo.dat",ios: : out|ios: : binary); for(inti=0;i<=top;i++) if(book[i].getflag()==1) file.write((char*)&book[i],sizeof(book[i])); file.close(); } voidshowallbook()//显示所有图书信息 { cout<<"\n下面显示所有图书信息: "< for(inti=0;i<=top;i++) { book[i].showinfo(); cout< } } voidaddbook()//增加图书 { inti,n; charis[31],bo[100],au[51],pu[100],da[11]; intqt; doublewh,re; cout<<"请输入要增加书的数量: "; cin>>n; cout<<"请输入下列信息: "< for(i=0;i { cout<<"ISBN: "; cin>>is; cout<<"书名: "; cin>>bo; cout<<"作者: "; cin>>au; cout<<"出版社: "; cin>>pu; cout<<"进书日期(请按年月日顺序输入,如: 2011年1月1日请输入20110101): "; cin>>da; cout<<"库存量: "; cin>>qt; cout<<"批发价: "; cin>>wh; cout<<"零售价: "; cin>>re; top++; book[top].setinfo(is,bo,au,pu,da,qt,wh,re); book[top].setflag (1); } updatedat(); cout<<"增加完成! "< } voidsearchbook()//查找图书 { intx=1; charname[100],again; do { cout<<"请输入要查找书的ISBN号或书名: "; cin>>name; for(inti=0;i<=top;i++) if(! strcmp(book[i].getisbn(),name)||! strcmp(book[i].getbooktitle(),name)) { cout<<"\n书的信息已找到,下面输出该书信息: \n"; book[i].showinfo(); x=0; } if(x) cout<<"\n未找到该书信息! \n"; cout<<"还要再查找一本书的信息吗? (y/n): "; cin>>again; }while(again=='y'); } voidamendbook()//修改图书信息 { intx=1; charchoice,name[100],again; charis[31],bo[100],au[51],pu[100],da[11]; intqt; doublewh,re; do{ cout<<"请输入要修改书的ISBN号或书名: "; cin>>name; for(inti=0;i<=top;i++) if(! strcmp(book[i].getisbn(),name)||! strcmp(book[i].getbooktitle(),name)) { cout<<"\n书的信息已找到,下面输出该书信息: \n"; book[i].showinfo(); x=0; cout<<"\t确定要修改该书信息? (y/n): "; cin>>choice; if(choice=='y') { cout<<"请输入下列信息: "< cout<<"ISBN: "; cin>>is; cout<<"书名: "; cin.ignore(); cin.getline(bo,100); cout<<"作者: "; cin.getline(au,51); cout<<"出版社: "; cin.getline(pu,100); cout<<"进书日期(请按年月日顺序输入,如: 2011年1月1日请输入20110101): "; cin>>da; cout<<"库存量: "; cin>>qt; cout<<"批发价: "; cin>>wh; cout<<"零售价: "; cin>>re; book[i].setinfo(is,bo,au,pu,da,qt,wh,re); book[top].setflag (1); updatedat(); cout<<"修改完成! "< } } if(x) { cout<<"\n未找到该书信息,是否将该书信息增加到书库? (y/n): ";//将未找到的图书信息添加到书库 cin>>choice; if(choice=='y') { cout<<"请输入下列信息: "< cout<<"ISBN: "; cin.getline(is,51); cout<<"书名: "; cin.getline(bo,100); cout<<"作者: "; cin.getline(au,51); cout<<"出版社: "; cin.getline(pu,100); cout<<"进书日期(请按年月日顺序输入,如: 2011年1月1日请输入20110101): "; cin>>da; cout<<"库存量: "; cin>>qt; cout<<"批发价: "; cin>>wh; cout<<"零售价: "; cin>>re; book[i].setinfo(is,bo,au,pu,da,qt,wh,re); book[top].setflag (1); updatedat(); cout<<"增加完成! "< } } cout<<"还要再修改一本书的信息吗? (y/n): "; cin>>again; }while(again=='y'); } voiddeletebook()//删除图书 { intx=1; charname[100],choice,again; do{ cout<<"请输入要删除的书的ISBN或书名: "; cin>>name; for(inti=0;i<=top;i++) if(! strcmp(book[i].getisbn(),name)||! strcmp(book[i].getbooktitle(),name)) { cout<<"\n书的信息已找到,下面输出该书信息: \n"; book[i].showinfo(); x=0; cout<<"是否确认删除该书的信息? (y/n): "; cin>>choice; if(choice=='y') { book[i].setflag(0);//设置删除标记 updatedat(); cout<<"\t删除成功! \n"; } } if(x) cout<<"\n未找到有关该书的信息! \n"; cout<<"还要再删除一本书的信息吗? (y/n): "; cin>>again; }while(again=='y'); } voidmenubook()//书库管理模块主菜单 { intchoice,a; bookbasebook1; charadminster[51],code[]="tianweitao",again; cout<<"\n*****此模块只有管理员才能进入,请输入管理员密码: "; cin>>adminster; a=strcmp(adminster,code); while(a! =0) { cout<<"密码错误,请重新输入: "; cin>>adminster; a=strcmp(adminster,code); } do{ cout<<"\n\t======================================================"< cout<<"\n\t********书库管理模块********"< cout<<"\n\n\t\t\t1.显示所有图书\n\n"<<"\t\t\t2.查找书\n\n"<<"\t\t\t3.修改书\n\n" <<"\t\t\t4.增加书\n\n"<<"\t\t\t5.删除书\n\n"<<"\t\t\t6.返回主菜单\n"; cout<<"\n\t======================================================"< cout<<"\t请输入你的选择: "; cin>>choice; switch(choice) { case1: showallbook();break; case2: searchbook();break; case3: amendbook();break; case4: addbook();break; case5: deletebook();break; case6: return; } cout<<"还要继续操作吗? (y/n): "; cin>>again; }while(again=='y'); } }; #endif 第4章结束语 一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。 在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。 学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 对于此次课程设计,我感慨颇多,起初在选题时,做出决定是非常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 课程设计 报告书