收藏 分销(赏)

图书管理系统C陈明明模板.doc

上传人:天**** 文档编号:9819223 上传时间:2025-04-09 格式:DOC 页数:18 大小:75.50KB 下载积分:8 金币
下载 相关 举报
图书管理系统C陈明明模板.doc_第1页
第1页 / 共18页
图书管理系统C陈明明模板.doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 东华理工大学信息工程学院 《面向对象程序设计》课程设计报告 图书馆管理系统 指导教师: 谢小林 姓名: 陈明明 学号: 40030117 班级: 1140301 1月10日 一、 需求分析: 建立一个图书馆管理系统,能够处理以下对象 .图书馆基本信息 .图书馆的书籍 .图书馆管理员 .读者信息 二、 程序的主要功能: 1.查询图书馆的总信息 2.查询图书馆管理员的信息 3.查询图书馆藏书信息 4.存入新书( 有管理员加入, 需进行身份验证) 5.旧书处理 6.存入新的管理员的信息 7.修改管理员的信息(增加工龄,加薪) 8.两所图书馆的最大藏书量之和 9.根据书名检索书刊信息 10.查询读者的借阅信息 11.查询读者信息( 包括借书情况, 到期时间, 罚款情况。) 12.管理员能够修改用户的欠款和交款的金额 13.读者氛围学生、 研究生和教师。所有学生的租期为1月, 所有教师的租期为2月。 三、 程序运行平台: 软件环境: w7 编程软件 VC++6.0 运行平台: Win32 硬件: 普通个人pc机 四、 系统总框架图 五、 程序类的说明: 类的设计 Book类的设计: (1)数据成员 charname[StrNum];用来存放书名。 charnumber[StrNum];用来存放图书的编号。 charkind[Type];用来存放图书的类型。 inttag;定义删除标记。 intnum;定义图书编号为整形。 intadd;增加标记。 (2)函数成员 Book(){}无参构造函数, 用于为书名和作者姓名设置默认值。 chargetkind()用于获取图书类型。 chargetname() 用于获取书名。 intgetnum()用于获取图书编号。 intgettag()用于获取删除标记。 voidsetname(charna[])用于设置书名。 voidsetkind(charkin[])用于设置类型。 voiddelbook()用于删除图书。 voidaddbook(intn,char*na,char*kin)用于增加图书。 voiddisp()用于输出图书。 六、 模块分析 classBDatabase{}图书管理类的设置, 实现对图书的添加, 查找, 删除等。 inttop;设置图书记录指针。 Bookbook[Maxb];设置图书记录( Maxb定义为最多可存储的图书数, 定义为整形) 。 voidclear()清空图书记录。 intaddbook(intn,char*na,char*kin)增加图书记录。 Book*query(intbookid)查找图书记录。 voidbookdata();定义图书库。 voiddisp()输出。 ~BDatabase()设置析构函数, 将book[]写到book.txt文件中 voidBDatabase::bookdata()由此函数开始对图书管理系统的主菜单进行调用与功能的实现。( 界面参看执行界面部分) 最后用main()函数的实现, 程序的主界面的引导 七、 比较有特色的函数 classBDatabase{}图书管理类的设置, 实现对图书的添加, 查找, 删除等。 inttop;设置图书记录指针。 Bookbook[Maxb];设置图书记录( Maxb定义为最多可存储的图书数, 定义为整形) 。 voidBDatabase::bookdata()由此函数开始对图书管理系统的主菜单进行调用与功能的实现。( 界面参看执行界面部分) 八、 存在的不足与对策 使用多关键字进行查询时, 我是使用以下语句: if(bname!=null){sqlStr+="andBnamelike'%"+bname+"%'";}, 实现判断是否为空, 从而利用给进条件实现查询, 粗看之下并没有什么错误, 可是在运行是却出现了异常, 在找了很久被找出错误之后, 我开始考虑是否是语法错误, 而是使用MySQL的命令行模式来进行调试, 在MySQL命令行中运行时却并没有出现错误, 完全正确的查询出我想要的结果, 在试了很久之后, 终于发现了上面的语句有两个小的细节错误, 第一个错误就是"andBname这里没有空格, 正确格式应该是"andBname, 第二个错误是'%"+bname+"%'"中含有多余的空格, 正确答案是'%"+bname+"%'"; 两个错误都是由于空格引起的, 一个是少了空格, 另一个是含有多余的空格。 九、 程序源代码 #defineStrNum20 #defineType20 #include<iostream> #include<iomanip> #include<string> #include<fstream>//输入/输出文件流类 usingnamespacestd; constintMaxb=100;//最多可存储的图书 classBook { private: inttag;//删除标记 intnum;//图书编号 intadd;//增加标记 charnumber[StrNum];//编号 charname[StrNum];//书名 charkind[Type];//图书类型 public: Book(){} chargetkind()//获取图书类型 { returnkind[Type]; } chargetname() //获取书名 { returnname[StrNum]; } intgetnum()//获取图书编号 { returnnum; } intgettag()//获取删除标记 { returntag; } voidsetname(charna[])//设置书名 { strcpy(name,na); } voidsetkind(charkin[])//设置类型 { strcpy(kind,kin); } voiddelbook()//删除图书 { tag=1; } voidaddbook(intn,char*na,char*kin)//增加图书 { tag=0; num=n; strcpy(name,na); strcpy(kind,kin); } voiddisp()//输出图书 { cout.flags(ios::left);//设置对齐的标志位为左 cout<<setw(15)<<num<<setw(20)<<name<<setw(15)<<kind<<endl; } }; /*****************************************************************************************/ classBDatabase { private: inttop;//图书记录指针 Bookbook[Maxb];//图书记录 public: BDatabase()//构造函数, 将book.txt读到book[]中 { Bookb; top=-1; fstreamfile("book.txt",ios::in); while(1) { file.read((char*)&b,sizeof(b)); if(!file)break; top++; book[top]=b; } file.close(); } voidclear()//全删 { top=-1; } intaddbook(intn,char*na,char*kin)//增加图书 { Book*p=query(n); if(NULL==p) { top++; book[top].addbook(n,na,kin); return1; } return0; } Book*query(intbookid)//查找图书 { for(inti=0;i<=top;i++) if(book[i].getnum()==bookid&&book[i].gettag()==0) { return&book[i]; } returnNULL; } voidbookdata();//图书库 voiddisp() { for(inti=0;i<=top;i++) if(book[i].gettag()==0) book[i].disp(); } ~BDatabase()//析构函数, 将book[]写到book.txt文件中 { fstreamfile("book.txt",ios::out); for(inti=0;i<=top;i++) if(book[i].gettag()==0) file.write((char*)&book[i],sizeof(book[i])); file.close(); } }; voidBDatabase::bookdata() { charchoice; charbname[40]; charbkind[40]; charnewType[20]; intbookid; Book*b; while(choice!='0') { cout<<"\t******************************************************************\n"; cout<<"\n\n"; cout<<"\t\t\t图书管理系统\n\n"; cout<<"\t\t\t1新增图书记录\n"; cout<<"\t\t\t2更改图书记录\n"; cout<<"\t\t\t3删除图书记录\n"; cout<<"\t\t\t4查找图书记录\n"; cout<<"\t\t\t5显示图书记录\n"; cout<<"\t\t\t6清空全部记录( 慎用) \n"; cout<<"\t\t\t0退出系统\n"; cout<<"\n\n"; cout<<"\t******************************************************************\n"; cout<<"请选择(1,2,3,4,5,6,0):"; cin>>choice; switch(choice) { case'1': cout<<"输入图书编号:"<<endl; cin>>bookid; cout<<"输入图书类型:"<<endl; cin>>newType; cout<<"输入图书书名:"<<endl; cin>>bname; addbook(bookid,bname,newType); break; case'2': cout<<"输入图书编号:"<<endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } cout<<"输入新的书名:"<<endl; cin>>bname; b->setname(bname); cout<<"输入新的类型:"<<endl; cin>>bkind; b->setkind(bkind); break; case'3': cout<<"读入图书编号:"<<endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } chartg1; cout<<"确定要删除此记录吗?(Y/N)"<<endl; cin>>tg1; if(tg1!='n'&&tg1!='N') { b->delbook(); cout<<"已成功删除该书记录! "<<endl; break; } case'4': cout<<"读入图书编号:"<<endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } cout<<"图书编号图书名称图书类型\n"; b->disp(); break; case'5': cout<<"图书编号图书名称图书类型\n"; disp(); break; case'6': chartg2; cout<<"确定要清空所有记录吗?(Y/N)"<<endl; cin>>tg2; if(tg2!='n'&&tg2!='N') { clear(); cout<<"已成功清空记录! "<<endl; break; } case'0': break; default:cout<<"输入错误, 请从新输入(数字为0~6):"; } } } //main()函数的实现, 程序的主界面的引导 voidmain() { charchoice; BDatabaseBookDB; while(choice!='0') {cout<<"\t******************************************************************\n"; cout<<"\n\n"; cout<<"\n\n\t\t\t欢迎使用图书管理系统\n\n"; cout<<endl<<endl<<"\t\t\t图书管理系统\n\n\n\n"; cout<<setw(83)<<"by( 姓名——) \n\n\n\n"; cout<<"\n\n"; cout<<"\t******************************************************************\n"; cout<<"\t\t\t1进入系统\n\n\t\t\t0离开"<<endl; cout<<"请选择:"; cin>>choice; switch(choice) { case'1': BookDB.bookdata(); break; case'0': cout<<"\n\n\t\t\t欢迎再次使用图书管理系统\n\n"; break; default:cout<<"输入错误, 请从新输入: "; } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服