邱进强C++课程设计报告数据库应用的图书管理系统 2.docx
- 文档编号:10798971
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:33
- 大小:230.84KB
邱进强C++课程设计报告数据库应用的图书管理系统 2.docx
《邱进强C++课程设计报告数据库应用的图书管理系统 2.docx》由会员分享,可在线阅读,更多相关《邱进强C++课程设计报告数据库应用的图书管理系统 2.docx(33页珍藏版)》请在冰豆网上搜索。
邱进强C++课程设计报告数据库应用的图书管理系统2
中国矿业大学银川学院
面向对象程序设计课程设计报告
(2011/2012学年第二学期)
题目名称图书管理系统
系部机电动力与信息工程系
专业计算机科学与技术
班级10计算机
学生邱进强120100510018
完成时间2011年6月
指导老师石晓山
引言
当今时代是飞速发展的的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的原因。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本,表格等纸介质的手工处理,对于图书借阅情况(如借书天数,超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限,以及借阅天数等用人工计算,手抄进行。
数据处理工作量大,容易出错。
由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统规范的信息管理手段。
尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基于环境。
基于这个问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时,准确,有效的查询和修改图书情况。
目录
引言1
1.课程设计目的和意义3
2.详细设计4
2.1需求描述4
2.2功能描述4
2.3程序运行说明10
3.课程设计总结13
3.1编程日志13
3.2测试报告13
4、心得体会14
5.参考文献15
6、程序原代码16
1.课程设计目的和意义
《面向对象程序设计》课程设计是实践性教学环节之一,是《面向对象程序设计》课程的辅助教学课程。
该课程设计要求学生综合运用在《面向对象程序设计》课程中学到的面向对象技术与实际编程相结合,独立完成一项较为完整、并具有一定实际功能的课程设计任务,同时加深学生对面向对象和C++编程技术的理解和掌握,培养实际的应用程序开发能力。
在课程设计过程中,使学生养成良好的程序设计风格,并掌握C++应用程序的设计开发过程和编程方法、测试方法。
2.详细设计
2.1需求描述
一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。
在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。
以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。
利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。
我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。
为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写本程序以提高图书馆的管理效率。
使用该程序之后,工作人员可以查询某位读者的借阅情况,还可以对当前图书馆内图书进行查看,新书上架,旧书下架,删除所有信息等操作。
本次作业设计题目:
“图书管理系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。
图书管理系统是一种基于集中统一规划的数据库数据管理新模式。
在对图书、读者的管理,其实是对图书、读者数据的管理。
本系统的建成无疑会为管理者对图书管理系统提供极大的帮助
2.2功能描述
1、图书维护功能
voidBDatabase:
:
bookdata()
{
charchoice;
charbauthor[10];
intbprice;
charbname[40];
intbookid;
Book*b;
while(choice!
='0')
{
cout<<"\n\n\n\t\t\t图书维护"< cout<<"\t\t1新增\n\t\t2更改\n\t\t3删除\n\t\t4查找\n\t\t5显示\n\t\t6全删\n\t\t0退出"< cin>>choice; switch(choice) { case'1': cout<<"输入图书编号: "< cin>>bookid; cout<<"输入图书书名: "< cin>>bname;cout<<"输入作者名: "; cin>>bauthor; cout<<"输入价格: "; cin>>bprice; addbook(bookid,bname,bauthor,bprice); break;//结束循环 case'2': cout<<"输入图书编号: "< cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } cout<<"输入新的书名: "< cin>>bname; b->setname(bname); break; case'3': cout<<"读入图书编号: "< cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } b->delbook(); break; case'4': cout<<"读入图书编号: "< cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } b->disp(); break; case'5': disp(); break; case'6': clear(); break; default: cout<<"输入错误,请从新输入: "; } } } 通过一个BDatabase类对图书馆图书书号进行管理,可以有多个书号,并且能删除。 通过这个管理功能实现对存储图书账号的注册、注销、修改、删除等操作 2、书库信息管理功能: classBook//定义Book类 { private: intprice; charauthor[10]; inttag; intno; charname[20]; intonshelf; public: Book(){} char*getname(){returnname;} intgetno(){returnno;} intgettag(){returntag;} char*getauthor(){returnauthor;} chargetprice(){returnprice;} voidsetname(charna[]) { strcpy(name,na); } voidsetauthor(charau[]) { strcpy(author,au);} voiddelbook(){tag=1;} voidaddbook(intn,char*na,char*au,intpr) { tag=0; no=n; price=pr; strcpy(author,au); strcpy(name,na); onshelf=1; } intborrowbook() { if(onshelf==1) { onshelf=0; return1; } return0; } voidretbook() { onshelf=1; } voiddisp() { cout< "< "< "< "< <<(onshelf==1? "在架": "已借")< } } 通过一个Book类对图书馆书籍进行管理。 通过这个管理功能实现对学校书库中书籍的管理,如显示全部图书信息、新书上架、旧书下架、书籍查询、清除书库等操作 3、读者管理功能 voidaddreader(intn,char*na)//增加读者信息 { tag=0; no=n; strcpy(name,na); for(inti=0;i borbook[i]=0; } : 通过一个Reader类对图书馆读者进行管理。 通过这个管理功能实现对学校读者中读者记录的管理,如显示全部读者信息、读者注册、读者注销、通过学号查询读者信息并显示借阅信息、清除所有读者信息等操作 4、借书还书功能: voidborrowbook(intbookid)//定义借书函数,且借图书编号为整型 { for(inti=0;i { if(borbook[i]==0) { borbook[i]=bookid; return; } } } //还书功能 intretbook(intbookid) { for(inti=0;i { if(borbook[i]==bookid) { borbook[i]=0; return1; } } return0; } 通过一个reader类对读者借还书进行管理。 2.3程序运行说明 1、登录初始化界面如下图1所示 图1 2、读者维护初始化界面如下图2所示 图2 3、图书维护界面如下图3所示 图3 4、借书成功界面如下图4所示 图4 5、还书成功界面如下图5所示 图5 6、离开界面如下图6所示 图6 3.课程设计总结 3.1编程日志 时间 工作安排 6.11—6.13 认真阅读课程设计指导书,从客户角度详细分析软件所要满足的功能,查阅资料,决定所用工具。 6.14—6.16 从功能入手,编写大概程序,查阅资料,借鉴别人的经验,程序基本成型。 6.18—6.20 调试并不断完善程序,完成《课程设计实验报告》。 3.2测试报告 在程序运行中遇到到的问题: 在程序修改的差不多的时候,用Cfree5.0运行编译的时候出现了如下图的错误提示。 我在查阅资料之后,把程序主函数的返回类型从void改为int之后,程序运行编译通过。 之后,在考虑到图书信息,读者信息的存储是在一维数组中进行的,故此,我在文件中加了如下代码; ~BDatabase() {fstreamfile("book.txt",ios: : out);//使文件流与book.txt文件建立关联 for(inti=0;i<=top;i++) if(book[i].gettag()==0) file.write((char*)&book[i],sizeof(book[i])); file.close(); } 在加入此语句之后,该系统就可以存储大量的信息到文件中。 4、心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。 因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师的辛勤指导下,终于游逆而解。 同时,在李老师的身上我学得到很多实用的知识,在次我表示感谢! 同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 5.参考文献 [1]徐孝凯c++语言基础教程(第二版)清华大学出版社 [2]陈维兴陈昕林小茶c++面向对象程序设计教程(第三版)清华大学出版社 [3]朱晴婷黄海鹰陈莲军VisualC++程序设计——基础与实例分析清华大学出版社 6、程序原代码 #include #include #include #include usingnamespacestd; constintMaxr=100; constintMaxb=100; constintMaxbor=5;//以上三行声明Maxr、Maxb、Maxbor为常数据成员 classReader//声明类类型为读者 { private: //声明以下部分为私有的 inttag;// intno;//定义编号为整型 charname[10];//定义长度为10的名字数组字符串 intborbook[Maxbor];//定义整型借书数组 public: //声明以下部分为公用的 Reader(){}//Reader类构造函数 char*getname(){returnname;}//虚函数,返回name intgettag(){returntag;}//虚函数,返回tag intgetno(){returnno;}//虚函数,返回No. voidsetname(charna[])//设置读者姓名函数 { strcpy(name,na);//复制字符串 } voiddelbook(){tag=1;}//删去图书信息 voidaddreader(intn,char*na)//增加读者信息 { tag=0; no=n; strcpy(name,na); for(inti=0;i borbook[i]=0; } voidborrowbook(intbookid)//定义借书函数,且借图书编号为整型 { for(inti=0;i { if(borbook[i]==0) { borbook[i]=bookid; return; } } } intretbook(intbookid) { for(inti=0;i { if(borbook[i]==bookid) { borbook[i]=0; return1; } } return0; } voiddisp()//成员函数,输出基类数据成员 { cout< [";/*设置编号字段宽度为5位,设置名字字段宽度为10位*/ for(inti=0;i if(borbook[i]! =0) cout< cout<<"]"< } }; classRDatabase//定义RDatabase类 { private: inttop; Readerread[Maxr]; public: RDatabase()//构造函数 { Readers; top=-1; fstreamfile("reader.txt",ios: : in);//在reader.txt以输入方式打开文件 while (1) { file.read((char*)&s,sizeof(s)); if(! file)break;//如果非file,结束循环 top++; read[top]=s; } file.close(); } voidclear() { top=-1; } intaddreader(intn,char*na) { Reader*p=query(n); if(p==NULL) { top++; read[top].addreader(n,na); return1; } return0; } Reader*query(intreaderid)//定义query指针,且读者编号为整型 { for(inti=0;i<=top;i++) if(read[i].getno()==readerid&& read[i].gettag()==0) { return&read[i];//指向read[i] } returnNULL; } voiddisp() { for(inti=0;i<=top;i++) read[i].disp(); } voidreaderdata(); ~RDatabase() { fstreamfile("reader.txt",ios: : out);//使用文件与reader.txt文件建立关联 for(inti=0;i<=top;i++) if(read[i].gettag()==0) file.write((char*)&read[i],sizeof(read[i])); file.close(); } }; voidRDatabase: : readerdata() { charchoice; charrname[20]; intreaderid; Reader*r; while(choice! ='0') { cout<<"\n\n\t\t\t读者维护\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3删除\n\n\t\t4查找\n\n\t\t5显示\n\n\t\t6全删\n\n\t\t0退出"< 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<<"该读者不存在"< break; } cout<<"输入新的姓名: "; cin>>rname; r->setname(rname); break; case'3': cout<<"输入读者学号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } r->delbook(); break; case'4': cout<<"读入读者学号: "; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } r->disp(); break; case'5': disp(); break; case'6': clear(); break; default: cout<<"输入错误,请重新输入: ";break; } } } classBook//定义Book类 { private: intprice; charauthor[10]; inttag; intno; charname[20]; intonshelf; public: Book(){} char*getname(){returnname;} intgetno(){returnno;} intgettag(){returntag;} char*getauthor(){returnauthor;} chargetprice(){returnprice;} voidsetname(charna[]) { strcpy(name,na); } voidsetauthor(charau[]) { strcpy(author,au);} voiddelbook(){tag=1;} voidaddbook(intn,char*na,char*au,intpr) { tag=0; no=n; price=pr; strcpy(author,au); strcpy(name,na); onshelf=1; } intborrowbook() { if(onshelf==1) { onshelf=0; return1; } return0; } voidretbook() { onshelf=1; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 邱进强C+课程设计报告数据库应用的图书管理系统 邱进强 C+ 课程设计 报告 数据库 应用 图书 管理 系统