ImageVerifierCode 换一换
格式:DOC , 页数:32 ,大小:247.54KB ,
资源ID:2492505      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2492505.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(图书馆管理系统C++课程设计.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

1、图书馆管理系统C++课程设计 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 数学与计算机学院

2、 课程设计说明书 课 程 名 称: 面向对象程序设计-课程设计 课 程 代 码: 8404101 题 目: 图书馆管理系统 年级/专业/班: 09级计算机科学与技术4班 学 生 姓 名: 李永芳 学   号: 312009080605422 开 始 时 间: 2010 年 12 月 24 日 完 成 时 间: 2011 年 01 月 6 日 课程设计成绩: 学习态度及平时成绩(30) 技术水平与实际能力

3、20) 创新(5) 说明书撰写质量(45) 总 分(100) 指导教师签名: 年 月 日 I 目 录 1 引 言 1 1。1 问题的提出 1 1.2国内外研究的现状 1 1.3任务与分析 1 2 程序的主要功能 2 2.1添加功能 2 2.2删除功能 2 2。3 删除全部职员信息 2 2.4显示功能 2 2.5查找功能 2 2。6修改功能 2 2.7借书、还书 2 3 程序运行平台 3 4 总体设计 4 5 程序类的说明 5 6 模块分析 8 6。1 添加模块 8

4、6.2 显示模块 8 6。3 修改模块 8 6。4 查找模块 8 6.5 删除模块 8 6.6 清空模块 8 7 系统测试 9 8 结论 10 参考文献 11 1 引 言 1。1 问题的提出 在学校现代化的管理中,图书馆管理系统也是其中非常重要的一部分,然而,用大型软件系统来于小型的图书管理,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种管理自然有十分重要作用.某图书馆需要管理其各种人员信息和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书馆。 1。2国内外研究的现状 国内在信息化这一方面做的没有国外好,因此现在需要大量这样的程序人员,图书馆

5、管理系统这一块也需要做大量改进。 1.5任务与分析 本课题主要的目的是……… 建立一个图书馆管理系统,可以处理以下对象: .图书馆基本信息 .图书馆的书籍 .图书馆管理员 .读者信息 2. 程序的主要功能 1。 查询图书馆的总信息 2。 查询图书馆管理员的信息 3. 查询图书馆藏书信息 4。 存入新书 5. 存入新的管理员的信息 6。 修改管理员的信息(增加工龄,加薪) 7。 根据书名检索书刊信息 8. 查询读者的借阅信息 9。 查询读者信息 10. 图书和管理员等信息应存放在不同的文件中,便于查询。 2.1添加功能 添加一个读者的基本信息,包括姓名、

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

7、source file……,写入程序再编译,链接,执行等. 4 总体设计 主 函 数 借书信息 还书信息 读者维护空信息 图书维护 管理员维护 退出 图4。1 系统总体框架图 5 程序类的说明 管理员信息输出类的声明 class Librarian { private: int tag; int no;//编号 char name[10]; int workage;//工龄 int salary; public: Librarian(){} char *getname(){re

8、turn name;} 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()//读出管理员信息 {

9、 cout〈

10、tname() {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)//增加读者

11、 { tag=0; no=n; strcpy(name,na); for(int i=0;i

12、i=0;i

13、dl; } }; 6 模块分析 6。1 添加模块 在各个成员维护中都有添加操作 如新增管理员:switch (choice) { case ’1’: cout << ”输入管理员编号:”; cin 〉〉 workerid; cout 〈< "输入管理员姓名:”; cin 〉> wname; addlibrarian (workerid,wname); break;} int addlibrarian(int n,char *na)//添加管理员时先查找是否存在 { Lib

14、rarian *p=query(n); if (p==NULL) { top++; work[top]。addlibrarian(n,na); return 1; } return 0; } 6。2 显示模块 显示模块将输出所有成员的信息 。 如现实管理员的信息: Switch(choice) {case '5’: disp(); break; break;} void disp() //输出所有管理员信息 { for (int i=0;i<=top;i++)

15、 work[i]。disp(); } 6。3 修改模块 首先由用户输入要修改的成员的姓名,然后系统用修改函数查找,显示该名成员的资料,然后系统提示用户输入需要修改的项目和新的资料。 如修改管理员的信息: Switch(chioce) {case '2': cout 〈〈 ”输入管理员编号:”; cin >> workerid; w=query(workerid); if (w==NULL) { cout 〈〈 ” 该管理员不存在 ”<〈endl; break; } cou

16、t << ”输入新的姓名:"; cin 〉〉 wname; w—〉setname(wname); break;} 6。4 查找模块 首先由用户输入要查找的成员姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的成员资料。 如管理员: case '4’: cout 〈〈 "读入管理员编号:"; cin 〉〉 workerid; w=query(workerid); if (w==NULL) { cout 〈〈”该管理员不存在"〈〈 endl; break; }

17、 w-〉disp(); break; 6。5 删除模块 首先由用户输入要删除的单个成员员姓名,然后调用删除函数,删除该名职员的资料。 如管理员的删除: case '3': cout <〈 " 输入管理员编号:”; cin 〉〉 workerid; w=query(workerid); if (w==NULL) { cout 〈〈" 该管理员不存在" << endl; break; } w-〉delworker

18、 break; …… 6.6 清空模块 系统将会把所有成员的资料全部删除,将链表清空。 如管理员: Switch(choice) {case '6’: clear(); break;} void clear()//删除所有管理员信息 { top=—1; }…… 7 系统测试 首先进入VC++6。0,打开文件:图书馆管理系统.cpp,然后进入源程序,接着构建运行. 1。第一步出现如图7.1主界面供选择操作 图7。1 2。接着可以选择主界面上的3进行图书维护如图7.2,下一步可以选择新增图书等; 图7.2 3.选择

19、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++有了进一步的了解和使用,能把学

20、了的东西用于实践还是让我非常有成就感,但是不足的是对类、派生类还有指针以及文件的运用掌握的不是很好,所以我会在假期内通过多看书反复操作提高自己的编程能力。在这里还要感谢诸位老师的支持和信赖. 附 录(可选) 附录1 源代码清单 #include #include #include 〈fstream。h> const int Maxr=100;//最多的读者 const int Maxb=100;//最多的图书 const int Maxbor=5;//每位读者最多借五本书 /

21、/管理员类 class Librarian { private: int tag; int no;//编号 char name[10]; int workage;//工龄 int salary; public: Librarian(){} char *getname(){return name;} int gettag(){return tag;} int getno(){return no;} void setname(char na[]) { strcpy(name,na); } void delworker(){tag=1

22、} void addlibrarian(int n,char *na)//增加管理员 { tag=0; no=n; strcpy(name,na); workage=0; salary=2000; } void disp()//读出管理员信息 { cout<

23、 private: int top; //管理员记录指针 Librarian work[20];//管理员记录 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++;

24、 work[top]=x; } file。close(); //关闭 worker.txt } void clear()//删除所有管理员信息 { top=-1; } int addlibrarian(int n,char *na)//添加管理员时先查找是否存在 { Librarian *p=query(n); if (p==NULL) { top++; work[top].addlibrarian(n,na); return 1; } return 0; } L

25、ibrarian *query(int workerid)//按编号查找 { for (int i=0;i<=top;i++) if (work[i].getno()==workerid && work[i]。gettag()==0) { return &work[i]; } return NULL; } void disp() //输出所有管理员信息 { for (int i=0;i〈=top;i++) work[i].disp(); } void workerdata();//管

26、理员库维护 ~LDatabase() //析构函数,将work[]写到worker。txt文件中 { fstream file(”worker.txt”,ios::out); for (int i=0;i〈=top;i++) if (work[i].gettag()==0) file.write((char *)&work[i],sizeof(work[i])); file.close(); } }; void LDatabase::workerdata() { char choice; char wnam

27、e[20]; int workerid; Librarian *w; while (choice!='0’) { cout 〈〈”\n\n\t\t\t管理员维护\n\n\n\t\t 1新增\n\n\t\t 2更改\n\n\t\t 3删 除\n\n\t\t 4查找\n\n\t\t 5显示\n\n\t\t 6全删\n\n\t\t 0退出"< choice; switch (choice) { case ’1’: cout 〈〈 ”输入管理员编号:”; cin 〉〉 workerid;

28、 cout <〈 ”输入管理员姓名:"; cin >> wname; addlibrarian (workerid,wname); break; case ’2’: cout 〈< ”输入管理员编号:"; cin >〉 workerid; w=query(workerid); if (w==NULL) { cout 〈< ” 该管理员不存在 "〈〈endl; break; } cout 〈〈 "输入新的姓名:”; ci

29、n 〉〉 wname; w—〉setname(wname); break; case ’3’: cout << " 输入管理员编号:"; cin 〉〉 workerid; w=query(workerid); if (w==NULL) { cout <〈” 该管理员不存在” 〈〈 endl; break; } w—〉delworker(); break; case ’4

30、': cout 〈< "读入管理员编号:”; cin >> workerid; w=query(workerid); if (w==NULL) { cout <<”该管理员不存在”<〈 endl; break; } w->disp(); break; case ’5’: disp(); break; case ’6': clear(); break; default:cout〈<"输入错误,请从新输入:”;break; }

31、 } }; //读者类,实现对读者的信息的描述 class Reader { private: int tag; //删除标记 1:已删 0:未删 int no; //读者编号 char name[10]; //读者姓名 int borbook[Maxbor];//所借图书 public: Reader() {} char *getname() {return name;} //获取姓名 int gettag() {return tag;} //获取删除标记

32、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 i=0;i

33、0; } void borrowbook(int bookid)//借书操作 { for(int i=0;i〈Maxbor;i++) { if (borbook[i]==0) { borbook[i]=bookid; return; } } } int retbook(int bookid)//还书操作 { for(int i=0;i

34、 } } return 0; } void disp()//读出读者信息 { cout 〈〈 setw(5) <〈 no 〈〈setw(10) 〈〈 name〈〈"借书编号:[”; for(int i=0;i〈Maxbor;i++) if(borbook[i]!=0) cout 〈< borbook[i] 〈〈 "|"; cout << ”]"<〈endl; } }; //读者类库,实现建立读者的个人资料 class RDatabase { private: int top; //

35、读者记录指针 Reader read[Maxr];//读者记录 public: RDatabase() //构造函数,将reader。txt读到read[]中 { Reader s; top=—1; fstream file("reader.txt",ios::in);//打开一个输入文件 while (1) { file。read((char *)&s,sizeof(s)); if (!file)break; top++; read[top]=s; } file.close(); //关闭

36、 reader.txt } void clear()//删除所有读者信息 { top=—1; } int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n); if (p==NULL) { top++; read[top].addreader(n,na); return 1; } return 0; } Reader *query(int readerid)//按编号查找 { for (int i=0;i<=

37、top;i++) if (read[i].getno()==readerid && read[i].gettag()==0) { return &read[i]; } return NULL; } void disp() //输出所有读者信息 { for (int i=0;i<=top;i++) read[i]。disp(); } void readerdata();//读者库维护 ~RDatabase() //析构函数,将read[]写到reader.txt文件中 {

38、 fstream file("reader。txt",ios::out); for (int i=0;i<=top;i++) if (read[i].gettag()==0) file.write((char *)&read[i],sizeof(read[i])); file。close(); } }; void RDatabase::readerdata() { char choice; char rname[20]; int readerid; Reader *r; while (choice!='0

39、') { cout <<"\n\n\t\t\t读 者 维 护\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 删 除\n\n\t\t 4 查 找\n\n\t\t 5 显 示\n\n\t\t 6 全 删\n\n\t\t 0 退 出”<〈endl; cin 〉> choice; switch (choice) { case ’1’: cout 〈< ”输入读者编号:"; c

40、in 〉> readerid; cout 〈< ”输入读者姓名:”; cin >〉 rname; addreader (readerid,rname); break; case '2': cout <〈 ”输入读者编号:”; cin >> readerid; r=query(readerid); if (r==NULL) { cout <〈 " 该读者不存在 ”〈〈endl; break; } cout 〈〈 ”输入新的姓名:”

41、 cin 〉〉 rname; r->setname(rname); break; case '3’: cout 〈〈 " 输入读者编号:”; cin 〉> readerid; r=query(readerid); if (r==NULL) { cout <〈" 该读者不存在" 〈< endl; break; } r-〉delbook(); break; ca

42、se '4': cout <〈 "读入读者编号:”; cin 〉> readerid; r=query(readerid); if (r==NULL) { cout <〈"该读者不存在”<〈 endl; break; } r—〉disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout〈〈”输入错误,请从新输入:”;break;

43、 } } } //图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Book { private: int tag;//删除标记 1:已删 0:未删 int no;//图书编号 char name[20];//书名 int onshelf;//是否再架 1:再架 2:已借 public: Book(){} char *getname() { return name; }//获取姓名 int getno(){ return no; }//获取图书编号 int gettag(){ return tag; }//获取删除标记

44、 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; } voi

45、d retbook()//还书操作 { onshelf=1; } void disp()//输出图书 { cout <〈 setw(6) <〈 no << setw(18) 〈< name <〈 setw(10) 〈<(onshelf==1? "在架”:"已借") 〈

46、//构造函数,将book。txt读到book[]中 { Book b; top=—1; fstream file("book。txt”,ios::in); while (1) { file。read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file。close(); } void clear()//全删 { top=—1; } int addbook(int n,char

47、 *na)//增加图书 { Book *p=query(n); if (NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; } Book *query(int bookid)//查找图书 { for (int i=0;i<=top;i++) if (book[i].getno()==bookid &&book[i]。gettag()==0) { return &book[i]; } return N

48、ULL; } void bookdata();//图书库维护 void disp() { for (int i=0;i〈=top;i++) if (book[i]。gettag()==0) book[i].disp(); } ~BDatabase()//析构函数,将book[]写到book.txt文件中 { fstream file(”book.txt”,ios::out); for (int i=0;i〈=top;i++) if (book[i]。gettag()==0) file。write

49、char *)&book[i],sizeof(book[i])); file.close(); } }; void BDatabase::bookdata() { char choice; char bname[40]; int bookid; Book *b; while (choice!='0') { cout <〈"\n\n\n\t\t\t图 书 维 护 ”<

50、 找\n\t\t5 显 示\n\t\t6 全 删\n\t\t0 退 出”<> choice; switch (choice) { case '1': cout 〈< "输入图书编号:”〈〈endl; cin >> bookid; cout << "输入图书书名:”<> bname; addbook(bookid,bname); break; case

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服