收藏 分销(赏)

C图书标准管理系统实验报告.docx

上传人:w****g 文档编号:3030209 上传时间:2024-06-13 格式:DOCX 页数:14 大小:40.83KB 下载积分:8 金币
下载 相关 举报
C图书标准管理系统实验报告.docx_第1页
第1页 / 共14页
C图书标准管理系统实验报告.docx_第2页
第2页 / 共14页


点击查看更多>>
资源描述
面向对象程序设计(C++语言)课程设计 设计说明书 图书管理系统设计和实现 起止日期: 年 月 日 至 年 月 日 学生姓名 班级 学号 成绩 指导老师(签字) 计算机和通信学院 年 月 日 图书管理系统 一.需求分析 图书馆是现在生活中除了网络外另一个获取知识关键场所。利用图书管理系统对图书统计进行统一管理,包含新增图书统计,更改图书统计,删除图书统计等功效,实现图书管理工作系统化,规范化和自动化,为图书管理提供便利。同时是学习完《面向对象程序设计》课程后进行一次全方面综合练习。有利于加深对面向对象程序设计中基础理论和基础知识了解,培养了实践能力,促进理论和实践结合。 二.设计要求: 1.图书信息包含:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功效: 2.系统以菜单方法工作v 3.图书信息录入功效(图书信息用文件保留)--输入v 4.图书信息浏览功效--输出v 5.查询和排序功效:(最少一个查询方法)--算法v 6.按书名查询 7.按作者名查询 8.图书信息删除和修改(可选项)v 三.概要设计 1、类设计 ①、Book类设计(内部函数步骤图): Class Book 获取图书类型 获取书名 获取图书编号 获取删除标志 设置书名 设置类型 删除图书 增加图书 输出图书 ②、BDatabase类设计: Class BDatabase 图书统计 删除全部统计 增加统计 查找图书统计 图书库(函数) ③、主函数步骤图: 4多态实现 class People { public: virtual void card(){cout<<"card people"<<endl;} }; class Student:public People { public: virtual void card(){cout<<"card student"<<endl;} }; 四、具体设计: #define StrNum 20 #define Type 20 #include <iostream> #include <iomanip> #include <string> #include <fstream> //输入/输出文件流类 using namespace std; const int Maxb=100; //最多可存放图书 class People { public: virtual void card(){cout<<"card people"<<endl;} }; class Student:public People { public: virtual void card(){cout<<"card student"<<endl;} }; class Book { private: int lab; //删除标识 int num; //图书编号 int add; //增加标识 char number[StrNum]; //编号 char bookname[StrNum]; //书名 char bookkind[Type]; //图书类型 public: Book(){} char getkind() //获取图书类型 { return bookkind[Type]; } char getname() //获取书名 { return bookname[StrNum]; } int getnum() //获取图书编号 { return num; } int getlab() //获取删除标识 { return lab; } void setname(char na[]) //设置书名 { strcpy(bookname,na); } void setkind(char kin[]) //设置类型 { strcpy(bookkind,kin); } void delbook() //删除图书 { lab=1; } void addbook(int n,char *na,char *kin) //增加图书 { lab=0; num=n; strcpy(bookname,na); strcpy(bookkind,kin); } void disp() //输出图书 { cout.flags (ios::left); //设置对齐标志位为左 cout<<setw(15)<<num<<setw(20)<<bookname<<setw(15)<<bookkind<<endl; } }; class BDatabase { private: int top; Book book[Maxb]; //图书统计 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) break; top++; book[top]=b; } file.close(); } void clear() //全删 { top=-1; } int addbook(int n,char *na,char *kin) //增加图书 { Book *p=query(n); if(NULL==p) { top++; book[top].addbook(n,na,kin); return 1; } return 0; } Book *query(int bookid) //查找图书 { for (int i=0;i<=top;i++) if (book[i].getnum()==bookid &&book[i].getlab()==0) { return &book[i]; } return NULL; } void disp() //图书库 { for (int i=0;i<=top;i++) if (book[i].getlab()==0) book[i].disp(); } ~BDatabase() //析构函数,将book[]写到book.txt文件中,实现文本写入 { fstream file("book.txt",ios::out); for (int i=0;i<=top;i++) if (book[i].getlab()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } }; void main() { BDatabase BookDB; char choice; char bname[40]; char bkind[40]; char newType[20]; int bookid; 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<<"\t\t\t7 人员\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; BookDB.addbook(bookid,bname,newType); break; case '2': cout<<"输入图书编号:"<<endl; cin>>bookid; b=BookDB.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=BookDB.query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } char tg1; cout<<"确定要删除此统计吗?(Y/N)"<<endl; cin>>tg1; if(tg1!='n'&&tg1!='N') { b->delbook(); cout<<"已成功删除该书统计!"<<endl; break; } case '4': cout<<"读入图书编号:"<<endl; cin>>bookid; b=BookDB.query(bookid); if (b==NULL) { cout<<"该图书不存在"<<endl; break; } cout<<"图书编号 图书名称 图书类型 \n"; b->disp(); break; case '5': cout<<"图书编号 图书名称 图书类型 \n"; b=BookDB.query(bookid); b->disp(); break; case '6': char tg2; cout<<"确定要清空全部统计吗?(Y/N)"<<endl; cin>>tg2; if(tg2!='n'&&tg2!='N') { BookDB.clear(); cout<<"已成功清空统计!"<<endl; break; } case '0': break; default:cout<<"输入错误,请从新输入(数字为0~6):"; case'7': Student student; People *ppeople=&student; People &ref=student; ppeople->card(); ref.card(); break; } } } 五.用户使用说明 本系统实现了图书管理系统经典功效,包含查询全部统计信息,添加查找等功效,基础符合设计要求,利用类封装实现了一定安全性,函数实现和调用在主函数中实现。 但在统计查询上仍有缺点,有待于完善。 六、试验心得: 1、经过试验加深了对c++了解,在程序设计上提升了自己动手能力,在实践中增强了自己编程水平。 2、不过因为自己独立完成且能力有限,还有部分功效未能完善,比如对书名,编号排序等等,这些不足全部是有待逐步完善方面。 3、而且经过这次课程设计,我培养了自己对C++编程爱好,编程能力也有所提升,但仍存在很多不足,不能独自写出功效很齐全代码,写代码要参考很多资料,所以以后应培养自己独立写代码能力。
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服