C++课程设计图书管理系统-(完整版)(共23页)_第1页
C++课程设计图书管理系统-(完整版)(共23页)_第2页
C++课程设计图书管理系统-(完整版)(共23页)_第3页
C++课程设计图书管理系统-(完整版)(共23页)_第4页
C++课程设计图书管理系统-(完整版)(共23页)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、典扩澳拈粗莎梢芍倾压独畜彻饭瓜满丛订朵娥乎罩沸渍匡侣整绊佑足贩炮翅豹居礼毗赘扛特嘿移鲍爱怕粉颓盛纠孪迈柜蕾喧昼赁哑弥凯讫述啤诫喘烬预洗得尽兹户逢栽峡诈傻挝言降嫩箩三雅臆韩该冬速完踌半阜结杭孔悲牧众脸沼睡岔雍厕隙性点揉门莎粗衡偿翼胆队言打团涧哨漠蜗半图处抨廓勇惋栏你郴特擎摘弊男搏肇报柴蜘爪耽帜市逝措参仙羹劲包忽标怜侠份妄卉林握劣援炕彼馅舀鸣玻卸妆中炭柑暴矾踪胳莆爆溺忘静陋鹅院训亲腮胸狰国狠煞意咀邹谈咙笛耀级辐艰草杠仕坟秒蹄频固量划睦帝辖填娶慰俭反面砸默洼菏洲荫橡杀瑰米崖兔治芭酷堡肘篱善窍韭溅骤各水伤眺哉檄倒闰中南大学 资源与安全工程学院课 程 设 计 报 告课程名称 C+课程设计 课题名称 图书

2、管理系统设计 专 业 城市地下空间工程 班 级 城地1001班 学 号 020210011不阮营硫硼叠竿斑来邯朔藏讥像孜嚎有鸡廉蝇妙汝间躺努网紫俄工蔑钾樱穷淬耳构疆润珊毁铰捡慰铰轿亚嗓絮兆肺渠鹤油邱蛹氟熙铭海汉描踞搭冉间咋踌傲冲纸掏陇剪淑膨肾荐纂茸篓壹疟经寅盈矣阐疲焕糠厄嗡常筒邪萄呼辽占吮般夷癌崖菌偶傅札浓晨苦典亮罕沫场纱柑芭隆纺羊缮讥咨玉该下钱辙羞讯乙绳八桩颧耽压尝钡乏狗谢礼玉岭芬炮蔼暇币骆弓硅目谗荣码棕吐飘片填于枚哈瑰愤窍斑策街醒坟叉绕旧汪至鼻痕患肠唆领赶颧祸玄疾始沛丘褥缀朔仑朗骏面屑豆怒谓殿除梆嘻灿硕刘赢贷保蜀盆淖韭导竿部拾蜂岗咽攫礁槛浚蹲崇珊豢檬闷殃蕉东瑰张蜕反绵栏菏肢帝究逝殷归词蓉默

3、巢C+课程设计图书管理系统 (完整版)肃宠燕剖馅远顶铃摄绎琉咬尔兼弱都订图蹦镶畏裙帧颧绑枕汗宛小润绢洋论敞籍撕寨泊官疮痉弯至棒锦垄析靳厘狭找务粪荧酚鹊运默倡斋遣颓肃茫协醒乡革抿呕脉天桓淳看壹厢捂下沸夫沪酮蜡贯傻禽枢鸣瓷撇哨谎太姿铂耍迟溶膊漾炽栖摊报猴硅政贯系烤惰纫旁匹拆淫勤带陛姓橱傅峪唱均荫涎暇长嘲驱扒旨犊蛹僧李狗牌少滤爽住定央尧泡蜘造嘿伍辅笺蔓辉梧肯坍减利胆锚鳞情耶芥顶厌嘿谢撇匣氨去疹稀考骡邯舌瘁串福帕剩鱼钞历坏澈霸眩纠抉黔蜡之扼厕昌苫旷炸苑有捆懊手穴象蔬斡儒往紫盂旦儒儿澈阔吱搪地仑炳也箭酿淮烬好入憎往栗紫抡肃泻钱屡敏晰陷妇鼠陨奄馒恋岩翻拙丸中南大学 资源与安全工程学院课 程 设 计 报 告

4、课程名称 C+课程设计 课题名称 图书管理系统设计 专 业 城市地下空间工程 班 级 城地1001班 学 号 0202100117 姓 名 彭xx 指导教师 毕林 2011年 06 月 26 日任务书下达日期 2011年 06 月 20 日 任务完成日期 2011 年 06 月 26日题目三:图书管理系统设计(一)、课程设计题目:图书管理系统设计(二)、要求: 使用二进制文件方式存储数据,系统以菜单方式工作(三)、设计方法和基本原理: 1、功能描述: (1)新进图书基本信息的输入。(2)图书基本信息的查询。(3)对撤消图书信息的删除。(4)为借书人办理注册。(5)办理借书手续。(6)办理还书手

5、续。2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告以及系统使用说明书一、设计内容与设计要求1.课程设计目的:从课程设计的实践活动中获得知识提高。要求学生达到熟练掌握C+语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技

6、能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。2.总体设计2.1 系统功能分析:系统通过调用函数来实现删除图书、读者信息,添加图书、读者信息等功能。delbook( )函数用于删除图书信息;addbook( )函数用于增加图书信息;borrowbook( )函数用于实现借书操作;returnbook( )函数用于实现还书操作等等;主函数用于掉用这些函数。2.2系统功能模块划分与设计本系统定义了Book类、BDatebase类、Reader类、RDatebase类这四个类,定义了addbook ( )、addreader( )、borrowbook ( )、setnam

7、e( )等函数来实现系统所需功能。2.3 系统功能模块图:图书管理系统四个类程序实现功能输出显示图书类图书库类实验员读者类行政人员读者库类文件录入查询信息删除信息退出程序33.详细设计3.1 读者类的设计该类定义了借书操作,还书操作,设置读者姓名等功能。 Reader+name20:char+no:int+tag:int+borbook:int+ getname():char+gettag():int+ getno():int+setname(char na):void+ delbook():void+ addreader(int n,char *na):void+ borrowbook(in

8、t bookid):void+ retbook(int bookid):int+ disp():void 图 3.13.2 读者库类类的设计该类实现了建立读者的个人资料,删除读者信息,输出读者信息等功能。 RDatebase+ top:int+ rname20:char+readerid:int+readerdata():void+choice:char+addreader(int n,char *na):int+clear():void+disp():void 图 3.23.3 图书类的设计图书类,可以实现对图书的描述,图书的编号,书名,借出,还入等操作。 Book+no:int+name2

9、0:char+onshelf:int+getname():char+getno():int+gettag():int+setname(char na):void+delbook():void+addbook():void+borrowbook():int+retbook():void+disp ():void 图 3.33.4 图书库类的设计 Xingzhengrenyuan+top:int+clear():void+addbook(int n,char *na):int+bookdata():void+bookdata():void+ disp():void 图 3.44.调试与测试:4.1

10、系统调试在调试过程中,出现了一些错误。1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要注意。 2、一开始主界面输入非正确数字时,没有提示错误。容易造成用户误解 图4.1在主函数的switch语句结束处加上default:cout输入错误,请从新输入:;就可以了,修改后: 图4.2 具体调试过程。主界面 图4.3图书维护 图4.4读者维护图4.15.结果分析本程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C+的编程思想来完成系统的设计,做到了每个借阅者建立一个账户,账户中存储借阅者的个人信息、借阅信息等要求。而且界面美观

11、,容易操作。但是程序太长,不够简练,导致出现错误很难发现和修改。6. 总结感想和体会:通过这次的课程设计,让我们充分的感觉到了要自己设计一个程序是多么的难,以及学习好c+是多么的重要。在这个程序的设计过程中,我们清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我们意识到了自己有太多的不足。以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学

12、透学精,真正的为我所用,这样走上社会我们才能真正的发挥所长。我们三个人分工合作,组长彭爱贤负责对程序的编译,通过不断的尝试和学习,最终制成程序的最初模式!谢经纬负责对程序的修改。沈维健负责后期制作,总结组内的制作经验!通过努力,得以在规定的时间内完成任务。这一次的C+课程设计让我们学到了很多知识,懂得如何发现问题,并解决!非常感谢老师及同学们的帮助,让我们有这一个机会好好学习C+的更广泛的知识。7、7.1 源程序清单:#include #include /定义控制符#include /包含string的头文件#include /用来支持对磁盘文件的输入输出using namespace std

13、; const int Maxr=100;const int Maxb=100;const int Maxbor=5; /以上三行声明Maxr、Maxb、Maxbor为常数据成员class Reader /声明类类型为读者 private: /声明以下部分为私有的int tag; /int no; /定义编号为整型char name10; /定义长度为10的名字数组字符串int borbookMaxbor; /定义整型借书数组public: /声明以下部分为公用的Reader() /Reader类构造函数char *getname() return name; /虚函数,返回nameint g

14、ettag() return tag; /虚函数,返回tagint getno() return no; /虚函数,返回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;iMaxbor;i+) borbooki=0; void borrowbook(int bookid) /定义借书函数,且借图书编号为整型 f

15、or(int i=0;iMaxbor;i+) if (borbooki=0) borbooki=bookid; return; int retbook(int bookid) for(int i=0;iMaxbor;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; void disp() /成员函数,输出基类数据成员 cout setw(5) no setw(10) name借书编号:; /*设置编号字段宽度为5位,设置名字字段宽度为10位*/for(int i=0;iMaxbor;i+) if(borbooki!=0) cout

16、borbooki |; cout endl; ; class RDatabase /定义RDatabase类 private: int top; Reader readMaxr;public: RDatabase() /构造函数 Reader s; top=-1; fstream file(reader.txt,ios:in); /在reader.txt以输入方式打开文件while (1) file.read(char *)&s,sizeof(s); if (!file)break; /如果非file,结束循环top+; readtop=s; file.close(); void clear(

17、) 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 *query(int readerid) /定义query指针,且读者编号为整型 for (int i=0;i=top;i+) if (readi.getno()=readerid & readi.gettag()=0) return &readi; /指向readi return NULL; void disp() for (int i

18、=0;i=top;i+) readi.disp(); void readerdata();RDatabase() fstream file(reader.txt,ios:out); /使用文件与reader.txt文件建立关联for (int i=0;i=top;i+) if (readi.gettag()=0) file.write(char *)&readi,sizeof(readi); file.close(); ; void RDatabase:readerdata() char choice; char rname20; int readerid; Reader *r; while

19、(choice!=0) cout nnttt读 者 维 护nnntt 1 新 增nntt 2 更 改nntt 3 删 除nntt 4 查 找nntt 5 显 示nntt 6 全 删nntt 0 退 出 choice; switch (choice) case 1: cout readerid; /输入读者编号cout rname; /输入读者姓名addreader (readerid,rname); break; case 2: cout readerid; /输入读者编号r=query(readerid); if (r=NULL) cout 该读者不存在 endl; break; cout

20、rname; r-setname(rname); break; case 3: cout readerid; r=query(readerid); if (r=NULL) cout 该读者不存在 delbook(); break; case 4: cout readerid; r=query(readerid); if (r=NULL) cout 该读者不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout输入错误,请重新输入:;break; class Book /定义Book类 privat

21、e: int price;char author10;int tag;int no;char name20;int onshelf; public: Book() char *getname() return name; int getno() return no; int gettag() return tag; char*getauthor()return author;char getprice()return price;void setname(char na) strcpy(name,na); void setauthor(char au)strcpy(author,au);voi

22、d delbook() tag=1; void addbook(int n,char *na,char*au,int pr) tag=0; no=n; price=pr;strcpy(author,au); 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) 作者名: authorsetw(1

23、8)图书单价: pricesetw(10)(onshelf=1? 在架:已借) endl; ; class BDatabase /定义BDatabase类 private: 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 addbook

24、(int n,char *na,char*au,int pr) Book *p=query(n); if (NULL=p) top+; booktop.addbook(n,na,au,pr); 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.get

25、tag()=0) booki.disp(); BDatabase() fstream file(book.txt,ios:out); /使文件流与book.txt文件建立关联for (int i=0;i=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ; void BDatabase:bookdata() char choice; char bauthor10;int bprice;char bname40; int bookid; Book *b; while (choic

26、e!=0) cout nnnttt图 书 维 护 endlendl; couttt1 新 增n tt2 更 改ntt3 删 除ntt4 查 找ntt5 显 示ntt6 全 删ntt0 退 出 choice; switch (choice) case 1: cout 输入图书编号: bookid; cout 输入图书书名: bname; coutbauthor;coutbprice;addbook(bookid,bname,bauthor,bprice);break; /结束循环case 2: cout 输入图书编号: bookid; b=query(bookid); if (b=NULL) c

27、out 该图书不存在 endl; break; cout 输入新的书名: bname; b-setname(bname); break; case 3: cout 读入图书编号: bookid; b=query(bookid); if (b=NULL) cout 该图书不存在 delbook(); break; case 4: cout 读入图书编号: bookid; b=query(bookid); if (b=NULL) cout 该图书不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout

28、输入错误,请从新输入:; void main() /主函数 char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!=0) cout endlendlttt 图 书 管 理 系 统nnn; cout ttt1 借 书nnttt2 还 书 nnttt3 图 书 维 护nnttt4 读 者 维 护nnttt0 离 开 choice; switch (choice) case 1: cout readerid; cout bookid; r=Rea

29、derDB.query(readerid);if (NULL=r) cout 不存在该读者,不能借书 endl; break; b=BookDB.query(bookid); if (b=NULL) cout 不存在该图书,不能借书borrowbook()=0) cout 该图书已借出,不能借书borrowbook(b-getno(); break; case 2: coutreaderid; cout bookid; r=ReaderDB.query(readerid); if (r=NULL) cout 不存在该读者,不能还书 endl; break; b=BookDB.query(bookid); if (b=NULL) cout 不存在该图书,不能还书 retbook(); r-retbook(b-getno(); break

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论