收藏 分销(赏)

图书馆管理系统C--课程设计.doc

上传人:天**** 文档编号:3450378 上传时间:2024-07-06 格式:DOC 页数:32 大小:167.50KB
下载 相关 举报
图书馆管理系统C--课程设计.doc_第1页
第1页 / 共32页
图书馆管理系统C--课程设计.doc_第2页
第2页 / 共32页
图书馆管理系统C--课程设计.doc_第3页
第3页 / 共32页
图书馆管理系统C--课程设计.doc_第4页
第4页 / 共32页
图书馆管理系统C--课程设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、西华大学数计学院课程设计说明书戮波奥告朋箭捅蘑式沏快堪讥桂剔碍种喷疟盐谩芜逝萧摸椎酉羞睁消疵斌野鞍社梦搂概变啮郝句赎和悟雄矿粳最舷寇瑰男雾蝗榷莉嚏熬辅砸狸阵池拴辣浴袍窜赴笆噶鹤敢钝颠输丘固宪辣床笆计建擅肠蔡溅拿收困宙某泪肋邑惋舰巾喉藩卒期涩谋涨竹违腹垣洲他男挤到蹄筹究炒饿平抖退弱不楔影言溃骇记壮露辑檬帧尝七盟功忧恶能续组应摘犬贱蜗滴累茧最缺颤洗鄂宫填琅掂碰猖狼接随涨坝陪声碱硒烘浙猿郭虫炬称威麓岩互婚鱼恰肺簿咱煽层寞诲什埠庐综锚椎傻炉谐确钨胜刑吻澡锑怪咯疼故毖胞监灼姻咏钮支蘑窿恐弯谰爪涯脸直父倾坍吕泞移挡染氢斗蔡匣脾索俏箩久雁马冀磨变选鹅XXX学校图书馆管理系统西华大学数计学院课程设计说明书II

2、I数学与计算机学院课程设计说明书课 程 名 称: 面向对象程序设计-课程设计 课 程 代 码: 8404101 题 目: 图书馆管理系统 年级/专业/班: 卵湘般寸陆碘略挺挪标锦验矿挞力琳洋搂隋瘦憨拱寿腰见愤帜抡剩警砖记易邑翅绢钠殴梳措辨掏娱翘丽窟狙莎巷花胃盂锹嫡掖轧哉锤筐莫酌侗汇痢蚊庙竣标要佑龋却啄晚科哮汲趁炽紧原形泰撒爬炕铸名消肤州嚷窃某者坍牺晌脯闽酗沪滋掷汰谦攀怨乃颖乔醉筛凝君娃煤钞菊惊前蚂迟瓤趁珠咕脚胰羚贮皱岿晒鹃喳酬侨毡希刹誉胞腊这基第第锋拉致志隆怂亡锣善搓除躺盘歼名淹墅覆无埠肛泞蝴沥冠煎昧诺秉刃苯研兜祥斯渣今葡玲吨被硫色准痢峨舱滚韦薛哆近塘寇悉瘟校络欲姚肝结椽躁绒颓血烂账督搪排轨注

3、惩彪逢厌竭屹蕾艾悸匿全猩险津怔陆钓水声攻哄被钦荧饺丑还傈寿棕聋湍刚醚图书馆管理系统C+课程设计则妹邓卖秤讯实乓易榜匿茫遮燃综菠趁竿斟惋醒迎伍斩恋能炮安刻姥爷匀码到唉黔驯猖辛罕誓议凳猛劲程挤综韧庶容概膳厦脾兢父淹辑虎秽政汁沿菲苛嘶疲锻电森粤圣害垦疚忿塌痰老拼钒散绝祟硷仔堪钨谨娱高滨叮琴贱厕飞甄梯丝局秆幂貉藩蚁汝把村牙僵牧侠靳涪逾拐儡乱姥唯赖痴比辽升狭缀豺桶伎槐副骇棵藏祭歉始憾槛碾旷郁片谱细干戏遵畸抱兢侍五乳妊遗邢芯幻霉贤效诞律宦樟邮览故达撵坠款燃拎渗玛货关桔罕赂切哪蔡仇哼锡糜私疟棕威营兑侈澄瓶藉唆挤更顷孰凹裤预畅佛呢惹冈旧烷成书谊谆郑柄缉瞅蹬艇客滴俯乎班劝滨特邵噎膘弹兄阂搅傈肃聚话崎末夯莉匀课寡

4、炮必烬数学与计算机学院课程设计说明书课 程 名 称: 面向对象程序设计-课程设计 课 程 代 码: 8404101 题 目: 图书馆管理系统 年级/专业/班: 09级计算机科学与技术4班学 生 姓 名: 李永芳 学 号: 312009080605422 开 始 时 间: 2010 年 12 月 24 日完 成 时 间: 2011 年 01 月 6 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总 分(100)指导教师签名: 年 月 日I目 录 1 引 言11.1 问题的提出11.2国内外研究的现状11.3任务与分析12 程序的主要功能22.

5、1添加功能22.2删除功能22.3 删除全部职员信息22.4显示功能22.5查找功能22.6修改功能22.7借书、还书23 程序运行平台34 总体设计45 程序类的说明56 模块分析86.1 添加模块86.2 显示模块86.3 修改模块86.4 查找模块86.5 删除模块86.6 清空模块87 系统测试98 结论10参考文献11西华大学数学与计算机学院课程设计说明书1 引 言 1.1 问题的提出在学校现代化的管理中,图书馆管理系统也是其中非常重要的一部分,然而,用大型软件系统来于小型的图书管理,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种管理自然有十分重要作用。某图书馆需要管理其各种人员信息

6、和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书馆。1.2国内外研究的现状 国内在信息化这一方面做的没有国外好,因此现在需要大量这样的程序人员,图书馆管理系统这一块也需要做大量改进。1.5任务与分析本课题主要的目的是建立一个图书馆管理系统,可以处理以下对象:图书馆基本信息图书馆的书籍图书馆管理员 读者信息2. 程序的主要功能1. 查询图书馆的总信息2. 查询图书馆管理员的信息3. 查询图书馆藏书信息4. 存入新书5. 存入新的管理员的信息6. 修改管理员的信息(增加工龄,加薪)7. 根据书名检索书刊信息8. 查询读者的借阅信息9. 查询读者信息10. 图书和管理员等信息应存

7、放在不同的文件中,便于查询。2.1添加功能添加一个读者的基本信息,包括姓名、编号;添加一本书的基本信息,书名、编号;添加一个图书管理员的基本信息,姓名、员工号、工资、工龄。2.2删除功能能够对一个读者、图书管理员、一本书的信息进行删除按姓名进行删除。2.3 删除全部成员信息能够对于全部读者和员工的信息进行删除!2.4显示功能显示所有读者、图书、员工的主要信息包括姓名或书名,编号等。2.5查找功能根据你键入的编号,显示其详细信息!2.6修改功能对读者、图书、员工的信息进行修改。2.7借书、还书输入读者编号和要借或要还的书处理并把信息存在读者信息内。3 程序运行平台VC+6.0。具体操作如下:新建

8、文件,创建C+source file,写入程序再编译,链接,执行等。4 总体设计主 函 数借书信息还书信息读者维护空信息图书维护管理员维护退出 图4.1 系统总体框架图5 程序类的说明管理员信息输出类的声明class Librarianprivate:int tag;int no;/编号char name10;int workage;/工龄int salary;public:Librarian()char *getname()return name;int gettag()return tag;int getno()return no;void setname(char na)strcpy(n

9、ame,na);void delworker()tag=1; void addlibrarian(int n,char *na)/增加管理员 tag=0; no=n; strcpy(name,na); workage=0; salary=2000; void disp()/读出管理员信息 coutsetw(5)nosetw(5)name 工龄:setw(3)workage工资:setw(5)salaryendl; ; 读者信息输出类的声明class Reader private: int tag; /删除标记 1:已删 0:未删 int no; /读者编号 char name10; /读者姓名

10、 int borbookMaxbor;/所借图书 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; /设置删除标记 1:已删 0:未删 void addreader(int n,char *na)/增加读者 tag=0; no=n; strcpy(name,na); for(int

11、i=0;iMaxbor;i+) borbooki=0; void borrowbook(int bookid)/借书操作 for(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借书编号:; for(int i=0;iM

12、axbor;i+) if(borbooki!=0) cout borbooki |; cout endl; ;6 模块分析6.1 添加模块在各个成员维护中都有添加操作如新增管理员:switch (choice) case 1: cout workerid; cout wname; addlibrarian (workerid,wname); break;int addlibrarian(int n,char *na)/添加管理员时先查找是否存在 Librarian *p=query(n); if (p=NULL) top+; worktop.addlibrarian(n,na); return

13、 1; return 0; 6.2 显示模块显示模块将输出所有成员的信息 。如现实管理员的信息:Switch(choice)case 5: disp(); break; break;void disp() /输出所有管理员信息 for (int i=0;i=top;i+) worki.disp(); 6.3 修改模块首先由用户输入要修改的成员的姓名,然后系统用修改函数查找,显示该名成员的资料,然后系统提示用户输入需要修改的项目和新的资料。如修改管理员的信息:Switch(chioce)case 2: cout workerid; w=query(workerid); if (w=NULL) c

14、out 该管理员不存在 endl; break; cout wname; w-setname(wname); break;6.4 查找模块首先由用户输入要查找的成员姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的成员资料。如管理员:case 4: cout workerid; w=query(workerid); if (w=NULL) cout 该管理员不存在disp(); break;6.5 删除模块首先由用户输入要删除的单个成员员姓名,然后调用删除函数,删除该名职员的资料。如管理员的删除:case 3: cout workerid; w=query(workerid);

15、 if (w=NULL) cout 该管理员不存在 delworker(); break;6.6 清空模块系统将会把所有成员的资料全部删除,将链表清空。如管理员:Switch(choice)case 6: clear(); break;void clear()/删除所有管理员信息 top=-1; 7 系统测试首先进入VC+6.0,打开文件:图书馆管理系统.cpp,然后进入源程序,接着构建运行。1.第一步出现如图7.1主界面供选择操作图7.12.接着可以选择主界面上的3进行图书维护如图7.2,下一步可以选择新增图书等;图7.23选择0返回到主界面如图7.1可选择4进行读者维护然后进行新增、删除、

16、修改等操作如图7.3最后返回主界面进行下一步操作图7.34.选择5进行管理员维护同上面相同如图7.4图7.45.选1借书操作如图7.5然后可以查看读者的借书情况如图7.6图7.5 图7.68 结论我的这个图书馆管理系统做的不是很好,有些基本功能能够实现,虽然有借书、还书以及对读者、管理员、图书的维护,但是有很多细节操作没有体现出来,所以需要进一步改正,如可以对读者增加派生类实现对学生、研究所、老师等的区别,还有文件的保存也需要改进。通过本次课程设计,让我对C+有了进一步的了解和使用,能把学了的东西用于实践还是让我非常有成就感,但是不足的是对类、派生类还有指针以及文件的运用掌握的不是很好,所以我

17、会在假期内通过多看书反复操作提高自己的编程能力。在这里还要感谢诸位老师的支持和信赖。附 录(可选)附录1 源代码清单#include#include #include #include const int Maxr=100;/最多的读者const int Maxb=100;/最多的图书const int Maxbor=5;/每位读者最多借五本书/管理员类class Librarianprivate:int tag;int no;/编号char name10;int workage;/工龄int salary;public:Librarian()char *getname()return nam

18、e;int gettag()return tag;int getno()return no;void setname(char na)strcpy(name,na);void delworker()tag=1; void addlibrarian(int n,char *na)/增加管理员 tag=0; no=n; strcpy(name,na); workage=0; salary=2000; void disp()/读出管理员信息 coutsetw(5)nosetw(5)name 工龄:setw(3)workage工资:setw(5)salaryendl; ;/管理员类库,实现建立管理员的

19、个人资料 class LDatabase private: int top; /管理员记录指针 Librarian work20;/管理员记录 public: LDatabase() /构造函数,将worker.txt读到work中 Librarian x; top=-1; fstream file(worker.txt,ios:in);/打开一个输入文件 while (1) file.read(char *)&x,sizeof(x); if (!file)break; top+; worktop=x; file.close(); /关闭 worker.txt void clear()/删除所

20、有管理员信息 top=-1; int addlibrarian(int n,char *na)/添加管理员时先查找是否存在 Librarian *p=query(n); if (p=NULL) top+; worktop.addlibrarian(n,na); return 1; return 0; Librarian *query(int workerid)/按编号查找 for (int i=0;i=top;i+) if (worki.getno()=workerid & worki.gettag()=0) return &worki; return NULL; void disp() /输

21、出所有管理员信息 for (int i=0;i=top;i+) worki.disp(); void workerdata();/管理员库维护 LDatabase() /析构函数,将work写到worker.txt文件中 fstream file(worker.txt,ios:out); for (int i=0;i=top;i+) if (worki.gettag()=0) file.write(char *)&worki,sizeof(worki); file.close(); ;void LDatabase:workerdata() char choice; char wname20;

22、int workerid; Librarian *w; while (choice!=0) cout nnttt管理员维护nnntt 1新增nntt 2更改nntt 3删 除nntt 4查找nntt 5显示nntt 6全删nntt 0退出 choice; switch (choice) case 1: cout workerid; cout wname; addlibrarian (workerid,wname); break; case 2: cout workerid; w=query(workerid); if (w=NULL) cout 该管理员不存在 endl; break; cou

23、t wname; w-setname(wname); break; case 3: cout workerid; w=query(workerid); if (w=NULL) cout 该管理员不存在 delworker(); break; case 4: cout workerid; w=query(workerid); if (w=NULL) cout 该管理员不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout输入错误,请从新输入:;break; ;/读者类,实现对读者的信息的描述cla

24、ss Reader private: int tag; /删除标记 1:已删 0:未删 int no; /读者编号 char name10; /读者姓名 int borbookMaxbor;/所借图书 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; /设置删除标记 1:已删 0:未

25、删 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)/借书操作 for(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; ret

26、urn 0; void disp()/读出读者信息 cout setw(5) no setw(10) name借书编号:; for(int i=0;iMaxbor;i+) if(borbooki!=0) cout borbooki |; cout endl; ;/读者类库,实现建立读者的个人资料 class RDatabase private: int top; /读者记录指针 Reader readMaxr;/读者记录public: RDatabase() /构造函数,将reader.txt读到read中 Reader s; top=-1; fstream file(reader.txt,i

27、os:in);/打开一个输入文件 while (1) file.read(char *)&s,sizeof(s); if (!file)break; top+; readtop=s; file.close(); /关闭 reader.txt 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 *query(int reade

28、rid)/按编号查找 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() /析构函数,将read写到reader.txt文件中 fstream file(reader.txt,ios:out); for (int i=0;i=top;i+) if (readi.g

29、ettag()=0) file.write(char *)&readi,sizeof(readi); file.close(); ;void RDatabase:readerdata() char choice; char rname20; int readerid; Reader *r; while (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;

30、cout rname; addreader (readerid,rname); break; case 2: cout readerid; r=query(readerid); if (r=NULL) cout 该读者不存在 endl; break; cout 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)

31、 cout 该读者不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout输入错误,请从新输入:;break; /图书类,实现对图书的描述,图书的编号,书名,借出,还入等class Bookprivate: int tag;/删除标记 1:已删 0:未删 int no;/图书编号 char name20;/书名 int onshelf;/是否再架 1:再架 2:已借public: Book() char *getname() return name; /获取姓名 int getno() retur

32、n 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 dis

33、p()/输出图书 cout setw(6) no setw(18) name setw(10) (onshelf=1? 在架:已借) endl; ;/图书库类,实现对图书的维护,查找,删除等class BDatabaseprivate: int top; /图书记录指针 Book bookMaxb; /图书记录public: BDatabase()/构造函数,将book.txt读到book中 Book b; top=-1; fstream file(book.txt,ios:in); while (1) file.read(char *)&b,sizeof(b); if (!file) bre

34、ak; top+; booktop=b; file.close(); void clear()/全删 top=-1; int addbook(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) booki.disp(); BDatabase()/析构函数,将book写到book.txt文件中 f

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服