




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计 面向对象程序设计 C C 安徽工业大学安徽工业大学 面向对象程序设计语言面向对象程序设计语言 课程设计报告课程设计报告 图书管理系统图书管理系统 学号 姓名 李家景 目目 录录 1 1问题分析与功能定义问题分析与功能定义 2 2 对象 类 设计及实现对象 类 设计及实现 3 3 核心控制设计核心控制设计 4 4 测试分析测试分析 5 5 心得体会心得体会 6 6 源程序代码源程序代码 项目名称 图书管理系统设计项目名称 图书管理系统设计 一 一 问题分析与功能定义问题分析与功能定义 二十一世纪是信息的社会 信息作为社会最主要的资源 将成为战略资 源引起人们广泛的关注 如何获取信息 图书是我们最好的获取信息的方式 但由于图书馆图书收藏量大大增加 使传统的图书管理员的工作日益繁重起来 迫使人们起用新的管理方法来管理图书 但如何把图书管理员从繁重的工作中 解脱出来呢 科学技术日新月异的进步 让人类生活发生了巨大的变化 计算机技术 的飞速发展 使各行各业在计算机技术应用方面得到了广泛的普及和使用 信 息化时代的到来成为不可抗拒的潮流 人类文明正在进入一个崭新的时代 因 此 图书管理系统也以方便 快捷 费用低的优点正慢慢地进入人们的生活 将传统的图书管理方式彻底的解脱出来 提高效率 减轻工人人员以往繁忙的 工作 减小出错的概率 使读者可以花更多的时间在选择书和看书上 从而使 人们有更多时间来获取信息 了解信息 掌握信息 1 设计内容及要求 设计一个图书馆管理系统 完成图书管理和读者管理的功能 并能对借阅 信息进行管理 要求完成一下功能 图书资料管理 可以添加 修改 删除 查询书籍信息 读者资料管理 可以添加 修改 删除 查询读者信息 借书 管理 可以进行添加借书信息 还书管理 可以进行还书信息 该项目是在 Visual C 6 0 的平台下用 c 语言实现 创建对象 程序运 行开始 打开文件并将其分别链入链表之中 程序结束关闭并保存文件 整体 系统功能全部由链表实现 2 模块图 图书馆管 理系统 借书读者维 护 图书维护还书 离开 二 对象 类 设计及实现二 对象 类 设计及实现 1 概要设计 Reader 读者类 RDatabase 读者库类 Book 图书类 BDatabase 图书库类 class RDatabase 读者库类 int top 读者记录指针 Reader read Maxr 读者记录 RDatabase 构造函数 将 reader txt 读到 read 中 void clear 删除所有读者信 息 int addreader int n char na 增 添读者信息 Reader query int readerid 按编 号查找 void disp 输出所有读者信息 2 详细设计 1 类的原型描述 class Reader 读者类 int tag 删除标记 1 已删 0 未 删 int no 读者编号 char name 10 读者姓名 int borbook Maxbor 所借图书 Reader char getname 获取姓名 int gettag 获取删除标记 int getno 获取读者编号 void setname char na 设置姓 名 void delbook 设置删除标记 void addreader int n char na 增加读者 void borrowbook int bookid 借书操作 int retbook int bookid 还书操 作 void disp 输出读者信息 class Book 图书类 int tag 删除标记 1 已删 0 未删 int no 图书编号 char name 20 书名 int onshelf 是否在架 1 在架 0 已借 Book char getname 获取姓名 int getno 获取图书编号 int gettag 获取删除标记 void setname char na 设置书名 void delbook 删除图书 void addbook int n char na 增加图 书 int borrowbook 借书操作 void retbook 还书操作 void disp 输出图书 3 3 核心控制设计核心控制设计 1 在主函数中我们要做的操作包括 int Readernum 记录读者信息 void readerdata 读者库维护 RDatabase 析构函数 将 read 写入 reader txt 文件中 class BDatabase 图书库类 int top 图书记录指针 Book book Maxb 图书记录 BDatabase 构造函数 将 book txt 读到 book 中 void clear 全删 int addbook int n char na 增加 图书 Book query int bookid 查找图 书 void disp 输出所有图书信息 void bookdata 图书库维护 BDatabase 析构函数 将 book 写入 book txt 文件中 1 建立 1 个 Reader 读者类 1 个 RDatabase 读者库类 1 个 Book 图书类 1 个 BDatabase 图书库类 2 建立菜单界面 完成以下内容 进入功能必须打开菜单 然后用户根据菜单选择相应的操作方式 如查 看数据 编辑图书数据以及修改图书数据 维护图书的采购信息 添加 删除 查看读者个人信息 浏览图书信息 能够对图书基本信息 图书采购信息 图书的借阅人信息进行统计 统 计的结果能够以表格的形式来表示 3 将图书基本信息 图书采购信息 图书的借阅人信息存储在相应的文件中 4 系统界面友好 易操作 2 本程序应具备的功能 A 添加 借阅 还书功能 1 添加读者和图书信息 2 借阅尚在架的图书 3 读者归还的图书 B 查找功能 1 根据图书的编号查找图书信息 2 根据读者的编号查找读者的信息 C 系统的操作 1 系统在进入时 要有菜单提示 2 系统在用户退出时 有一定的提示 3 算法分析 1 添加操作 读者信息的添加与图书信息的添加类似 包括两个部分 先通过输入设备输入信息 系统获取 然后添加入读者数据 库 read txt 文件中 获取信息 void Reader addreader int n char na 增加读者 tag 0 no n strcpy name na for int i 0 i Maxbor i borbook i 0 int RDatabase addreader int n char na 增添读者信息 der p query n int i 0 i Maxbor borbook i 0 i 输入 n 和 na tag 0 no n no n strcpy name na if p NULL top read top addreader n na cout 读者添加成功 endl return 1 return 0 流程图 析构函数写入新读者的编号跟姓名 RDatabase RDatabase fstream file reader txt ios out for int i 0 i top i if read i gettag 0 file write char else file close 流程图 der p query n p NULL Y return 0 top read top addreader n na cout 读者添加成功 endl return 1 N fstream file reader txt ios out 当 i top i read i gettag 0 Y N int i 0 file close file write char 2 借书操作 利用 for 语句和 if 语句 通过判断图书的 borbook 的编号是否为 0 来判断图书是否未被借走或还没有被借完 void Reader borrowbook int bookid 借书操作 for int i 0 i Maxbor i if borbook i 0 borbook i bookid return 流程图 3 还书操作 利用 for 语句和 if 语句 通过判断图书的 borbook 的编号是否为 要还书的编号 来判断是否借出此书 int Reader retbook int bookid 还书操作 for int i 0 i Maxbor i if borbook i bookid borbook i 0 return 1 else int i 0 当 i Maxbor borbook i 0 Y N i borbook i bookid return int i 0 当 i Maxbor borbook i bookid Y N i continueborbook i 0 return 1 continue 流程图 4 查找功能 利用 for 语句和 if 语句 寻找与要查询的编号相同的读者编号或 图书编号 如果找到 向系统返回相应的编号 输出相应的信息 读者的查 找与图书查找类似 Reader query int readerid 按编号查找 for int i 0 i top i if read i getno readerid return NULL 流程图 四 测试分析 一 此系统存在问题 1 未设登录密码保护系统 是整个图书管理系统失去了一定的安全性 2 程序运行界面 当 i top read i getno readerid Y i return NULL 此界面运行时选择 4 有时会出现内存读取错误 1 当输入错的数据类型时 可能导致内存错误 2 读者 图书信息不完善 3 命名不是很规范 4 信息存储有限 5 5 心得体会心得体会 通过这次课程设计让我逐步学会了如何运用 C 面向对象程序设计的设计 思想和方法来解决实际问题 比如这次设计图书管理系统 首先我考虑是在实际应用时用户一般进行什 么操作 对哪些对象进行操作 很显然我需要建立两个类 包括图书类和读者 类 同时考虑到图书和读者不止一个 所以还需两个类 图书库类和读者库类 这两个类分别将其信息传递给图书类和读者类 确定了类之后 则需要对类的 内容进行扩充 由于我需要这个系统完成对图书管理和读者管理的功能 并能 对借阅信息进行管理 要求完成一下功能 图书资料管理 可以添加 修改 删除 查询书籍信息 读者资料管理 可以添加 修改 删除 查询读者信息 借书管理 可以进行添加借书信息 还书管理 可以进行还书信息 所以在对 应的类下建立相应功能函数 建立功能函数后就是构造主函数 主函数的作用 就是通过向对象发送信息 对象接受信息启动相应的方法来实现相应的操作 当然在这些过程中要保证面向对象程序设计的抽象 封装 多态和继承的 特点 在设计本系统中虽然综合考虑到了图书管理的各个方面 界面设计简洁 数据库设计合理 但依然还有一些不足 为了能够较好地完成本次课程设计 我详细阅读教材 以及网上搜索 和 到图书馆查找相关资料等 在做课程设计的过程中 我在利用所学的知识同时 又学到了很多实例化的理论知识和软件工程的一些实践 总结了一些经验和方 法强化了我的实际动手能力 同时也找到自己的不足 我一定会继续学习增加 自己的编程能力和调试能力 在今后的学习中我将会更加的努力 增加自己的 知识储备 拓宽自己的知识面 锻炼自己的能力 使我的综合素质得到较大的 提高 在这设计的过程中我也出现过一些比较严重的错误 后来在同学的指点下 我改正了自己的错误 并最终成功调试除了程序 当程序调试出来的那一瞬间 我感觉自己完成了一件非常了不起的事 好有成就感 在以后的日子 我将会 继续我的兴趣继续深入学习程序设计 相信在越来越多的尝试之后 自己会不 断进步不断提高的 最后感谢老师的指导与同学的帮助 使我能顺利完成这次程序设计 六 源程序代码六 源程序代码 include include include include 输入 输出文件流类 using namespace std const int Maxr 100 最多的读者 const int Maxb 100 最多的图书 const int Maxbor 5 每位读者最多借五本书 读者类 实现对读者的信息的描述 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 获取删除标记 int getno return no 获取读者编号 void setname char na 设置姓名 strcpy name na void delbook 设置删除标记 tag 1 void addreader int n char na 增加读者 void borrowbook int bookid 借书操作 int retbook int bookid 还书操作 void disp 输出读者信息 void Reader addreader int n char na 增加读者 tag 0 no n strcpy name na for int i 0 i Maxbor i borbook i 0 void Reader borrowbook int bookid 借书操作 for int i 0 i Maxbor i if borbook i 0 borbook i bookid return int Reader retbook int bookid 还书操作 for int i 0 i Maxbor i if borbook i bookid borbook i 0 return 1 else continue return 0 void Reader 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 读者记录指针 Reader read Maxr 读者记录 public RDatabase 构造函数 将 reader txt 读到 read 中 void clear 删除所有读者信息 top 1 int addreader int n char na 增添读者信息 Reader query int readerid 按编号查找 for int i 0 i top i if read i getno readerid return NULL void disp 输出所有读者信息 int Readernum 得到读者编号 void readerdata 读者库维护 RDatabase 析构函数 将 read 写入 reader txt 文 件中 RDatabase RDatabase 构造函数 将 reader txt 读到 read 中 Reader s top 1 fstream file reader txt ios in while 1 file read char if file break top read top s file close RDatabase RDatabase 析构函数 将 read 写入 reader txt 文件中 fstream file reader txt ios out for int i 0 i top i if read i gettag 0 file write char else file close int RDatabase addreader int n char na 增添读者信息 Reader p query n if p NULL top read top addreader n na cout 读者添加成功 endl return 1 return 0 void RDatabase disp 输出所有读者信息 for int i 0 i top i read i disp int RDatabase Readernum return top void RDatabase readerdata 读者库维护 char choice char rname 100 读者姓名 int readerid Reader r do 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 readerid cout rname addreader readerid rname break case 2 cout readerid r query readerid if r NULL cout 该读者不存在 endl break cout rname r setname rname break case 3 cout readerid r query readerid if r NULL cout 该读者不存在 delbook break case 4 cout readerid r query readerid if r NULL cout 该读者不存在 disp break case 5 disp break case 6 clear break default if choice 0 cout 输入错误 请从新输入 break while choice 0 图书类 实现对图书的描述 图书的编号 书名 借出 还入等 class Book private int tag 删除标记 1 已删 0 未删 int no 图书编号 char name 20 书名 int onshelf 是否再架 1 再架 0 已借 public Book char getname return name 获取姓名 int getno return no 获取图书编号 int gettag return tag 获取删除标记 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 void retbook 还书操作 onshelf 1 void disp 输出图书 cout setw 6 no setw 18 name setw 10 onshelf 1 在架 已借 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 if file break top book top b file close void clear 全删 top 1 int addbook int n char na 增加图书 Book query int bookid 查找图书 for int i 0 i top i if book i getno bookid return NULL void bookdata 图书库维护 void disp 输出图书 for int i 0 i top i if book i gettag 0 book i disp BDatabase 析构函数 将 book 写到 book txt 文件中 int BDatabase addbook int n char na 增加图书 Book p query n if NULL p top book top addbook n na return 1 return 0 BDatabase BDatabase 析构函数 将 book 写到 book txt 文件中 fstream file book txt ios out for int i 0 i top i if book i gettag 0 file write char file close void BDatabase bookdata char choice char bname 40 int bookid Book b do cout n n n t t t 欢迎进入图书维护界面 endl endl cout t t1 新 增 n t t2 更 改 n t t3 删 除 n t t4 查 找 n t t5 显 示 n t t6 全 删 n t t0 退 出 choice switch choice case 1 cout 输入图书编号 bookid cout 输入图书书名 bname addbook bookid bname break case 2 cout 输入图书编号 bookid b query bookid if b NULL cout 该图书不存在 endl break cout 输入新的书名 bname b setname bname break case 3 cout 读入图书编号 bookid b query bookid if b NULL cout 该图书不存在 delbook break case 4 cout 读入图书编号 bookid b query bookid if b NULL cout 该图书不存在 disp break case 5 disp break case 6 clear break default if choice 0 cout 输入错误 请从新输入 while choice 0 void showmenu cout cout endl cout cout 设计者 童安蓉 杨丹 刘蕙娟 邓小伟 完成时间 2010 年 12 月 28 日 endl cout cout 图 书 管 理 系 统 endl cout cout endl cout cout 1 借 书 endl cout cout 2 还 书 endl cout cout 3 图 书 维 护 endl cout cout 4 读 者 维 护 endl cout cout 0 退出 将数据保存到磁盘 endl cout cout endl void showtip cout n t t 操作完成 endl cout t t 选择 0 5 继续 endl cout cout endl cout cout 1 借 书 endl cout cout 2 还 书 endl cout cout 3 图 书 维 护 endl cout cout 4 读 者 维 护 endl cout cout 0 退出 将数据保存到磁盘 endl cout cout endl main 函数的实现 程序的主界面的引导 int main char choice int bookid readerid 图书编号 读者编号 RDatabase ReaderDB 读者库 Reader r 读者 BDatabase BookDB 图书库 Book b 图书 cout 正在打开系统 请稍后 endl showmenu 显示菜单 cout choice while choice 0 switch choice case 1 输入读者编号和要借的图书 cout readerid cout bookid r ReaderDB query readerid 按编号查找 if NULL r cout 不存在该读者 不能借书 endl break b BookDB query bookid if b NULL cout 不存在该图书 不能借书 borrowbook 0 cout 该图书已借出 不能借书 borrowbook b getno break case 2 还书操作 cout readerid cout bookid r ReaderDB query readerid 按编号查找 if r NULL cout 不存在该读者 不能还书 endl break b BookDB query bookid if b NULL cout 不存在该图书 不能还书 retbook r retbook b getno break case 3 图书维护 BookDB bookdata break case 4 读者维护 ReaderDB readerdata break default if choice 0 cout choice cout 谢谢您的使用 再见 m ISBN m pSet DDX FieldText pDX IDC EDIT2 m pSet m name m pSet DDX FieldText pDX IDC EDIT3 m pSet m writer m pSet DDX FieldText pDX IDC EDIT4 m pSet m publish m pSet DDX FieldText pDX IDC EDIT5 m pSet m publish time m pSet DDX FieldText pDX IDC EDIT6 m pSet m price m pSet AFX DATA MAP BOOL CMyView PreCreateWindow CREATESTRUCT void CMyView OnInitialUpdate m pSet CRecordView OnInitialUpdate GetParentFrame RecalcLayout ResizeParentToFit CMyView printing BOOL CMyView OnPreparePrinting CPrintInfo pInfo default preparation return DoPreparePrinting pInfo void CMyView OnBeginPrinting CDC pDC CPrintInfo pInfo TODO add extra initialization before printing void CMyView OnEndPrinting CDC pDC CPrintInfo pInfo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年同济大学附属东方医院胶州医院招聘人才(100人)考前自测高频考点模拟试题及答案详解(历年真题)
- 上海市人民医院医疗卫生政策趋势分析与医院应对策略
- 张家口市中医院消毒灭菌学原理与监测方法进阶试题
- 2025湖南湘潭市韶山思政教育实践中心公开招聘教师2人模拟试卷及完整答案详解
- 衡水市人民医院心电图机维护保养考核
- 沧州市人民医院脊柱内镜下椎间盘切除技术资格认证
- 上海市中医院皮秒激光技术专项考核
- 2025江苏师范大学招聘工作人员78人(第一批)模拟试卷及参考答案详解
- 2025广东省第二中医院招聘皮肤科医师2人模拟试卷及答案详解(名校卷)
- 张家口市中医院护理科研文化建设考核
- 高等数学(经济类)第5版课件:数列的极限
- 2025年上海市高考英语热点复习:六选四句子还原之说明文(上)
- 老年病人误吸预防及护理
- 吉林地区普通高中2023-2024学年高三年级上学期数学第一次模拟试卷(含答案)
- 初中物理实验探究式教学策略研究结题报告
- 安徽省宣城市2023-2024学年高二上学期期末考试 英语 含答案
- 2024年秋季新教材三年级上册PEP英语教学课件:含视频音频U3-第1课时-A
- 公安涉警舆情课件
- 医院培训课件:《类风湿关节炎的治疗与康复》
- DB34∕T 3790-2021 智慧药房建设指南
- 实验小学六年级上学期素养竞赛语文试卷(有答案)
评论
0/150
提交评论