图书馆管理系统C课程研究设计.docx
- 文档编号:7921571
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:34
- 大小:113.81KB
图书馆管理系统C课程研究设计.docx
《图书馆管理系统C课程研究设计.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统C课程研究设计.docx(34页珍藏版)》请在冰点文库上搜索。
图书馆管理系统C课程研究设计
数学与计算机学院
课程设计说明书
课程名称:
面向对象程序设计-课程设计
课程代码:
8404101
题目:
图书馆管理系统
年级/专业/班:
09级计算机科学与技术4班
学生姓名:
李永芳
学 号:
312009080605422
开始时间:
2010年12月24日
完成时间:
2011年01月6日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
2.7借书、还书2
1引言
1.1问题的提出
在学校现代化的管理中,图书馆管理系统也是其中非常重要的一部分,然而,用大型软件系统来于小型的图书管理,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种管理自然有十分重要作用。
某图书馆需要管理其各种人员信息和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书馆。
1.2国内外研究的现状
国内在信息化这一方面做的没有国外好,因此现在需要大量这样的程序人员,图书馆管理系统这一块也需要做大量改进。
1.5任务与分析
本课题主要的目的是………
建立一个图书馆管理系统,可以处理以下对象:
.图书馆基本信息
.图书馆的书籍
.图书馆管理员
.读者信息
2.程序的主要功能
1.查询图书馆的总信息
2.查询图书馆管理员的信息
3.查询图书馆藏书信息
4.存入新书
5.存入新的管理员的信息
6.修改管理员的信息(增加工龄,加薪)
7.根据书名检索书刊信息
8.查询读者的借阅信息
9.查询读者信息
10.图书和管理员等信息应存放在不同的文件中,便于查询。
2.1添加功能
添加一个读者的基本信息,包括姓名、编号;添加一本书的基本信息,书名、编号;添加一个图书管理员的基本信息,姓名、员工号、工资、工龄。
2.2删除功能
能够对一个读者、图书管理员、一本书的信息进行删除按姓名进行删除。
2.3删除全部成员信息
能够对于全部读者和员工的信息进行删除!
2.4显示功能
显示所有读者、图书、员工的主要信息包括姓名或书名,编号等。
2.5查找功能
根据你键入的编号,显示其详细信息!
2.6修改功能
对读者、图书、员工的信息进行修改。
2.7借书、还书
输入读者编号和要借或要还的书处理并把信息存在读者信息内。
3程序运行平台
VC++6.0。
具体操作如下:
新建……文件,创建C++sourcefile……,写入程序再编译,链接,执行等。
4总体设计
图4.1系统总体框架图
5程序类的说明
管理员信息输出类的声明
classLibrarian
{
private:
inttag。
intno。
//编号
charname[10]。
intworkage。
//工龄
intsalary。
public:
Librarian(){}
char*getname(){returnname。
}
intgettag(){returntag。
}
intgetno(){returnno。
}
voidsetname(charna[])
{
strcpy(name,na)。
}
voiddelworker(){tag=1。
}
voidaddlibrarian(intn,char*na)//增加管理员
{
tag=0。
no=n。
strcpy(name,na)。
workage=0。
salary=2000。
}
voiddisp()//读出管理员信息
{
cout< "< "< } }。 ∙读者信息输出类的声明 classReader { private: inttag。 //删除标记1: 已删0: 未删 intno。 //读者编号 charname[10]。 //读者姓名 intborbook[Maxbor]。 //所借图书 public: Reader(){} char*getname(){returnname。 }//获取姓名 intgettag(){returntag。 }//获取删除标记 intgetno(){returnno。 }//获取读者编号 voidsetname(charna[])//设置姓名 { strcpy(name,na)。 } voiddelbook(){tag=1。 }//设置删除标记1: 已删0: 未删 voidaddreader(intn,char*na)//增加读者 { tag=0。 no=n。 strcpy(name,na)。 for(inti=0。 i i++) borbook[i]=0。 } voidborrowbook(intbookid)//借书操作 { for(inti=0。 i i++) { if(borbook[i]==0) { borbook[i]=bookid。 return。 } } } intretbook(intbookid)//还书操作 { for(inti=0。 i i++) { if(borbook[i]==bookid) { borbook[i]=0。 return1。 } } return0。 } voiddisp()//读出读者信息 { cout< ["。 for(inti=0。 i i++) if(borbook[i]! =0) cout< cout<<"]"< } }。 6模块分析 6.1添加模块 在各个成员维护中都有添加操作 如新增管理员: switch(choice) { case'1': cout<<"输入管理员编号: "。 cin>>workerid。 cout<<"输入管理员姓名: "。 cin>>wname。 addlibrarian(workerid,wname)。 break。 } intaddlibrarian(intn,char*na)//添加管理员时先查找是否存在 { Librarian*p=query(n)。 if(p==NULL) { top++。 work[top].addlibrarian(n,na)。 return1。 } return0。 } 6.2显示模块 显示模块将输出所有成员的信息。 如现实管理员的信息: Switch(choice) {case'5': disp()。 break。 break。 } voiddisp()//输出所有管理员信息 { for(inti=0。 i<=top。 i++) work[i].disp()。 } 6.3修改模块 首先由用户输入要修改的成员的姓名,然后系统用修改函数查找,显示该名成员的资料,然后系统提示用户输入需要修改的工程和新的资料。 如修改管理员的信息: Switch(chioce) {case'2': cout<<"输入管理员编号: "。 cin>>workerid。 w=query(workerid)。 if(w==NULL) { cout<<"该管理员不存在"< break。 } cout<<"输入新的姓名: "。 cin>>wname。 w->setname(wname)。 break。 } 6.4查找模块 首先由用户输入要查找的成员姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的成员资料。 如管理员: case'4': cout<<"读入管理员编号: "。 cin>>workerid。 w=query(workerid)。 if(w==NULL) { cout<<"该管理员不存在"< break。 } w->disp()。 break。 6.5删除模块 首先由用户输入要删除的单个成员员姓名,然后调用删除函数,删除该名职员的资料。 如管理员的删除: case'3': cout<<"输入管理员编号: "。 cin>>workerid。 w=query(workerid)。 if(w==NULL) { cout<<"该管理员不存在"< break。 } w->delworker()。 break。 …… 6.6清空模块 系统将会把所有成员的资料全部删除,将链表清空。 如管理员: Switch(choice) {case'6': clear()。 break。 } voidclear()//删除所有管理员信息 { top=-1。 }…… 7系统测试 首先进入VC++6.0,打开文件: 图书馆管理系统.cpp,然后进入源程序,接着构建运行。 1.第一步出现如图7.1主界面供选择操作 图7.1 2.接着可以选择主界面上的3进行图书维护如图7.2,下一步可以选择新增图书等; 图7.2 3.选择0返回到主界面如图7.1可选择4进行读者维护然后进行新增、删除、修改等操作如图7.3最后返回主界面进行下一步操作 图7.3 4.选择5进行管理员维护同上面相同如图7.4 图7.4 5.选1借书操作如图7.5然后可以查看读者的借书情况如图7.6 图7.5 图7.6 8结论 我的这个图书馆管理系统做的不是很好,有些基本功能能够实现,虽然有借书、还书以及对读者、管理员、图书的维护,但是有很多细节操作没有体现出来,所以需要进一步改正,如可以对读者增加派生类实现对学生、研究所、老师等的区别,还有文件的保存也需要改进。 通过本次课程设计,让我对C++有了进一步的了解和使用,能把学了的东西用于实践还是让我非常有成就感,但是不足的是对类、派生类还有指针以及文件的运用掌握的不是很好,所以我会在假期内通过多看书反复操作提高自己的编程能力。 在这里还要感谢诸位老师的支持和信赖。 附录(可选) 附录1源代码清单 #include #include #include #include constintMaxr=100。 //最多的读者 constintMaxb=100。 //最多的图书 constintMaxbor=5。 //每位读者最多借五本书 //管理员类 classLibrarian { private: inttag。 intno。 //编号 charname[10]。 intworkage。 //工龄 intsalary。 public: Librarian(){} char*getname(){returnname。 } intgettag(){returntag。 } intgetno(){returnno。 } voidsetname(charna[]) { strcpy(name,na)。 } voiddelworker(){tag=1。 } voidaddlibrarian(intn,char*na)//增加管理员 { tag=0。 no=n。 strcpy(name,na)。 workage=0。 salary=2000。 } voiddisp()//读出管理员信息 { cout< "< "< } }。 //管理员类库,实现建立管理员的个人资料 classLDatabase { private: inttop。 //管理员记录指针 Librarianwork[20]。 //管理员记录 public: LDatabase()//构造函数,将worker.txt读到work[]中 { Librarianx。 top=-1。 fstreamfile("worker.txt",ios: : in)。 //打开一个输入文件 while (1) { file.read((char*)&x,sizeof(x))。 if(! file)break。 top++。 work[top]=x。 } file.close()。 //关闭worker.txt } voidclear()//删除所有管理员信息 { top=-1。 } intaddlibrarian(intn,char*na)//添加管理员时先查找是否存在 { Librarian*p=query(n)。 if(p==NULL) { top++。 work[top].addlibrarian(n,na)。 return1。 } return0。 } Librarian*query(intworkerid)//按编号查找 { for(inti=0。 i<=top。 i++) if(work[i].getno()==workerid&&work[i].gettag()==0) { return&work[i]。 } returnNULL。 } voiddisp()//输出所有管理员信息 { for(inti=0。 i<=top。 i++) work[i].disp()。 } voidworkerdata()。 //管理员库维护 ~LDatabase()//析构函数,将work[]写到worker.txt文件中 { fstreamfile("worker.txt",ios: : out)。 for(inti=0。 i<=top。 i++) if(work[i].gettag()==0) file.write((char*)&work[i],sizeof(work[i]))。 file.close()。 } }。 voidLDatabase: : workerdata() { charchoice。 charwname[20]。 intworkerid。 Librarian*w。 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>>workerid。 cout<<"输入管理员姓名: "。 cin>>wname。 addlibrarian(workerid,wname)。 break。 case'2': cout<<"输入管理员编号: "。 cin>>workerid。 w=query(workerid)。 if(w==NULL) { cout<<"该管理员不存在"< break。 } cout<<"输入新的姓名: "。 cin>>wname。 w->setname(wname)。 break。 case'3': cout<<"输入管理员编号: "。 cin>>workerid。 w=query(workerid)。 if(w==NULL) { cout<<"该管理员不存在"< break。 } w->delworker()。 break。 case'4': cout<<"读入管理员编号: "。 cin>>workerid。 w=query(workerid)。 if(w==NULL) { cout<<"该管理员不存在"< break。 } w->disp()。 break。 case'5': disp()。 break。 case'6': clear()。 break。 default: cout<<"输入错误,请从新输入: "。 break。 } } }。 //读者类,实现对读者的信息的描述 classReader { private: inttag。 //删除标记1: 已删0: 未删 intno。 //读者编号 charname[10]。 //读者姓名 intborbook[Maxbor]。 //所借图书 public: Reader(){} char*getname(){returnname。 }//获取姓名 intgettag(){returntag。 }//获取删除标记 intgetno(){returnno。 }//获取读者编号 voidsetname(charna[])//设置姓名 { strcpy(name,na)。 } voiddelbook(){tag=1。 }//设置删除标记1: 已删0: 未删 voidaddreader(intn,char*na)//增加读者 { tag=0。 no=n。 strcpy(name,na)。 for(inti=0。 i i++) borbook[i]=0。 } voidborrowbook(intbookid)//借书操作 { for(inti=0。 i i++) { if(borbook[i]==0) { borbook[i]=bookid。 return。 } } } intretbook(intbookid)//还书操作 { for(inti=0。 i i++) { if(borbook[i]==bookid) { borbook[i]=0。 return1。 } } return0。 } voiddisp()//读出读者信息 { cout< ["。 for(inti=0。 i i++) if(borbook[i]! =0) cout< cout<<"]"< } }。 //读者类库,实现建立读者的个人资料 classRDatabase { private: inttop。 //读者记录指针 Readerread[Maxr]。 //读者记录 public: RDatabase()//构造函数,将reader.txt读到read[]中 { Readers。 top=-1。 fstreamfile("reader.txt",ios: : in)。 //打开一个输入文件 while (1) { file.read((char*)&s,sizeof(s))。 if(! file)break。 top++。 read[top]=s。 } file.close()。 //关闭reader.txt } 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)//按编号查找 { for(inti=0。 i<=top。 i++) if(read[i].getno()==readerid&& read[i].gettag()==0) { return&read[i]。 } returnNULL。 } voiddisp()//输出所有读者信息 { for(inti=0。 i<=top。 i++) read[i].disp()。 } voidreaderdata()。 //读者库维护 ~RDatabase()//析构函数,将read[]写到reader.txt文件中 { fstreamfile("reader.txt",ios: : out)。 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>>reade
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆管理系统C 课程研究设计 图书馆 管理 系统 课程 研究 设计