版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法与数据结构课程设计实验报告设计题目:图书管理 专业: 计算机科学与技术 班级: 学生姓名: 学号: 指导教师: 2011 年 7 月烟台大学计算机学院一 题目要求1 目的要求本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。2、题目要求实现图书管理信息系统的设计。要求实现图书添加、显示全部图书、查询、借阅和归还。主要考查利用文件的操作!二 总体设计图书数据:书号,书名,图书ID,图书状态,借阅次数1. 借书模块:输入图书ID如果存在提示借阅成
2、功,如果没有或已借出提示借阅失败2.还书模块:输入图书ID进行还书操作3.图书管理:对书库中书进行管理 新书入库 对库存量进行统计和查询4.查询模块:对书库中书进行查询 根据图书ID进行查询三 编码实现定义图书结构体struct Bookint id;/图书的编号char name20;/图书名字int type;/图书类型int status; /图书现在状态int count; / 图书借出的次数;定义图书类型 typedef struct Book Book;Book dataMax;int all = 0;/ 添加图书类型,用户信息显示 char BookTypes32 =文学,中文社
3、科,自然科学,计算机,报刊/杂志,;添加图书状态 char BookStatus32 =在架上,已借出,;图书管理菜单char BookMenu32 = 添加图书,列出图书,查找图书,借书,还书,退出,; 实现程序对文件的读取 void Read() int i=0;int j=0;ifstream in(Libra.txt,ios:out);ini;all=i;if(i0&i=Max)for(j=1;dataj.typedataj.statusdataj.count;in.close();对写入信息进行保存void Save()int i=0;ofstr
4、eam outfile; /在Libra.txt文件中输入数据outfile.open(Libra.txt,ios:trunc); outfileall0;all-) i+;outfiledatai.idt;t;outfiledatai.typet;outfiledatai.statust;outfiledatai.countn;coutendl你已成功保存数据!endlendl;outfile.close();/exit(1);Main函数int main()int ch = 0,i,loop = 1;while(loop)Read();print_menu
5、(BookMenu);scanf(%d,&ch);if (ch 6)printf(n没有所输选项,请确定所输入选项为1-6中的选项!n);printf(n); switch(ch)case 1:/添加图书信息PutInfor();break;case 2:Read();Printall();break;case 3:system(cls);Read();searchBook();break;case 4:system(cls);Read();Borrow();break;case 5:system(cls);Read();Return();break;case 6:loop=0;break;d
6、efault:break; printf(n-分割线-nn);return 0;四 调试与测试主菜单生成的文件内信息五 心得体会首先,写程序应先确定目标要求,所用平台和工具,不求最好,但求最适合自己。开始时决定用MFC 但是我对MFC的了解就像它对我的了解一样多,一天之后果断和它说再见,我不想把仅有时间用在学习一门工具上。其次是代码的编写,最主要的的是编程思想,语言其实不是太重要,思路最重要!在此感谢一下在我卡壳时帮助我的同学和解答的老师,虽然我没问什么,还是要感谢一下!附录:源代码 1此代码为此报告所用代码,有文件操作,运行后会生成一Libra.txt文件#include #include
7、#include #include#include #include #include #include #include#define BORROWED 1#define NOBORROW 0#define Max 100void Save();void Read();int BinSearch(int key);/定义图书结构体struct Bookint id;/图书的编号char name20;/图书名字int type;/图书类型int status; /图书现在状态int count; / 图书借出的次数;/ 定义图书类型 typedef struct Book Book;Book
8、 dataMax;int all = 0;/ 添加图书类型,用户信息显示 char BookTypes32 =文学,中文社科,自然科学,计算机,报刊/杂志,;/ 添加图书状态 char BookStatus32 =在架上,已借出,;/图书管理菜单char BookMenu32 = 添加图书,列出图书,查找图书,借书,还书,退出,;/菜单输出void print_menu(char menus32 ) int n = 0;printf(请输入所需选项:n);while(strlen(menusn)printf(%d %sn,n+1,menusn);+n;printf(请选择();while(n)
9、printf(%d|,n-);printf();void Read() int i=0;int j=0;ifstream in(Libra.txt,ios:out);ini;all=i;if(i0&i=Max)for(j=1;dataj.typedataj.statusdataj.count;in.close();void PutInfor() /信息输入函数 all+;cout输入图书ID:dataall.id;cout输入图书名字:;cout输入图书类别:dataall.type;Save();Read();cout输入完成!e
10、ndl; void Borrow() /借阅图书 int k=0;Book B;cout输入所要借阅图书ID:B.id;k=BinSearch(B.id);if(k=0)cout* 无此书信息,可能是输入错误! *endl;elseofstream outfile; /在Libra.txt文件中输入数据outfile.open(Libra.txt,ios:trunc); outfilealln;datak.status=1;for(int i=1;i=all;i+)if (i=k)datak.status=1;datak.count+;outfiledatai.idt;outfiledatai
11、.namet;outfiledatai.typet;outfiledatai.statust;outfiledatai.countn; elseoutfiledatai.idt;t;outfiledatai.typet;outfiledatai.statust;outfiledatai.countn;outfile.close();for(int j=k;jall;j+)dataj=dataj+1;all-;Read();printf(借阅成功!);void Return() /还书 int k=0;Book B;cout输入所要归还图书ID:B.id;k=B
12、inSearch(B.id);if(k=0)cout* 无此书信息,可能是输入错误! *endl;elseofstream outfile; /在Libra.txt文件中输入数据outfile.open(Libra.txt,ios:trunc); outfilealln;datak.status=1;for(int i=1;i=all;i+)if (i=k)datak.status=0;outfiledatai.idt;t;outfiledatai.typet;outfiledatai.statust;outfiledatai.countn; elseoutf
13、iledatai.idt;t;outfiledatai.typet;outfiledatai.statust;outfiledatai.countn;outfile.close();for(int j=k;jall;j+)dataj=dataj+1;all-;Read();printf(归还成功!);int BinSearch(int key)int low,high,mid;low=1;high=all;while(low=high)mid=(low+high)/2;if(key=datamid.id)return mid;else if(keydatami
14、d.id)high=mid-1;elselow=mid+1;return 0;void Save()int i=0;ofstream outfile; /在Libra.txt文件中输入数据outfile.open(Libra.txt,ios:trunc); outfileall0;all-) i+;outfiledatai.idt;t;outfiledatai.typet;outfiledatai.statust;outfiledatai.countn;coutendl你已成功保存数据!endlendl;outfile.close();/exit(1);voi
15、d searchBook() int num,i;printf(请输入所要查找的图书ID:);scanf(%d,&num);i = BinSearch(num);if (i=0)printf(输入有误,请重新输入!); elseprintf(-n);printf(ID| 书名| 图书分类| 现在状态| 借出次数|n);printf(-n);printf(%2d| %17s|%15s|%12s|%10d| n,datai.id, , BookTypesdatai.type-1,BookStatusdatai.status, datai.count);void Printall
16、() /输出信息printf(-n);printf(ID| 书名| 图书分类| 现在状态| 借出次数|n);printf(-n);for(int i=1;i=all;i+) if(!=NULL)printf(%2d| %17s|%15s|%12s|%10d| n,datai.id, , BookTypesdatai.type-1,BookStatusdatai.status, datai.count);int main()int ch = 0,i,loop = 1;while(loop)Read();print_menu(BookMenu);scanf(
17、%d,&ch);if (ch 6)printf(n没有所输选项,请确定所输入选项为1-6中的选项!n);printf(n); switch(ch)case 1:/添加图书信息PutInfor();break;case 2:Read();Printall();break;case 3:system(cls);Read();searchBook();break;case 4:system(cls);Read();Borrow();break;case 5:system(cls);Read();Return();break;case 6:loop=0;break;default:break; pri
18、ntf(n-分割线-nn);return 0;文件内容格式为ID| 书名| 图书分类| 现在状态| 借出次数|例如第七行 6 为图书ID 英语 为图书名字 1 为图书分类 0 为现在状态 0 为借阅次数图书分类 1: 文学, :2: 中文社科, :3:自然科学, :4: 计算机, :5: 报刊/杂志,图书状态 0 在架上 1 已借出源代码2 此代码无文件操作,不会生成txt文件 只能在控制台运行 #include #include #include #define BORROWED 1#define NOBORROW 0/定义图书结构体struct Bookint id;/图书的唯一编号cha
19、r name20;/图书名字int type;/图书类型int status; /图书现在状态int count; / 图书借出的次数 struct Book* next;/ 下一本书 struct Book* prev;/ 上一本书;/ 定义图书类型 typedef struct Book Book;/ 添加图书类型,用户信息显示 char BookTypes32 =文学,中文社科,自然科学,计算机,报刊/杂志,;/ 添加图书状态 char BookStatus32 =在架上,已借出,;/图书管理菜单char BookMenu32 = 添加图书,列出图书,查找图书,借书,还书,退出,;/搜索
20、目录char bookSearchMenu32 = 按书名查找,按类型查找,;/增加图书int addBooks(Book* head,Book* bookAdd)Book* p = head;if (!p)return -1;while(p-next)p = p-next;p-next = bookAdd;bookAdd-id = p-id+1;bookAdd-prev = p; bookAdd-next = NULL; bookAdd-count = 0; bookAdd-status = 0;return 0;/图书信息链表Book* creatList(Book* bookHead)i
21、f (bookHead)bookHead-prev = bookHead;bookHead-next = NULL; bookHead-id = 1; bookHead-count = 0; bookHead-status = 0;return bookHead;/ 释放链表 void freeList(Book* book_head) Book *p, *p1; p = book_head; while(p) p1 = p-next; free(p); p = p1; /菜单输出void print_menu(char menus32 ) int n = 0;printf(请输入所需选项:n
22、);while(strlen(menusn)printf(%d %sn,n+1,menusn);+n;printf(请选择();while(n)printf(%d|,n-);printf();/输出图书信息 void print_book(Book* book) printf(%2d| %17s|%15s|%12s|%10d| n,book-id, book-name, BookTypesbook-type,BookStatusbook-status, book-count);printf(-n);/列出全部图书void listBooks(Book* bookHead) Book* p =
23、bookHead; while (p) print_book(p); p = p-next; /借书,如果书存在返回此书指针,如果不存在返回空Book* borrowBooks( Book* book_head, int _id ) Book* p = book_head; while (p) if (p-id = _id) break; p = p-next; if (!p) /图书不存在 printf(您所借图书不存在,请重新输入!n);return NULL; if (p-status != 0) /图书已借出printf(您所借图书已借出,请重新输入新的图书!n);return NUL
24、L; p-status = 1;/图书是否借出状态 p-count+; /借出次数+1 return p; /还书,正常归还就返回该书的指针,否则就返回NULL Book* returnBooks(Book* book_head, int _id) Book* p = book_head; while (p) if (p-id = _id & p-status != 0) p-status = 0; /图书归还时状态改变 break; p = p-next; return p;/按图书名字查找int searchBookByName( Book* book_head, char* _name
25、) int count = 0; Book* p = book_head; while (p) if (strcmp(p-name, _name) = 0) print_book(p); +count; p = p-next; return count;/查找书类型,返回查找到的数量int searchBooksByType(Book* book_head, int _type) int count = 0; Book* p = book_head; while (p) if (p-type = _type ) print_book(p); +count; p = p-next; return
26、 count;int main()int ch = 0,loop = 1;char information100;/定义图书Book FBooks,*pBooks,*pTemp;/初始化第一本图书名字为数据结构strcpy(FB, 数据结构);FBooks.type = 0;FBooks.status = 0;pBooks = creatList(&FBooks);while(loop)print_menu(BookMenu);scanf(%d,&ch);if (ch 6)printf(n没有所输选项,请确定所输入选项为1-6中的选项!n);printf(n); switch
27、(ch)case 1:/添加图书信息pTemp = (Book*)malloc(sizeof(Book);if(pTemp) printf(请输入图书的名字:);scanf(%s,information);strncpy(pTemp-name,information,31);print_menu(BookTypes);scanf(%d,&ch);if (ch (sizeof(BookTypes)/32)ch = 1;pTemp-type = ch - 1;addBooks(pBooks,pTemp);break;case 2:/列出全部图书printf(-n);printf(ID| 书名| 图书分类| 现在状态| 借出次数|n);printf(-n);listBooks(pBooks);break;case
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机操作入门教程
- 神经外科患者的呼吸道管理与护理
- 护理计划制定与实施
- 统编版五年级下册语文《祖父的园子》教案2课时(含反思)
- 2026年健康活力区与护理区联动销售策略方案
- 2026年基于多维动态模型的数据资产定价机制深度解析
- 2026年跨境电商海外仓9810模式出口退税预退税核算操作手册
- 电力生产问题的分配方案
- 安宁护理:生命教育在疗护中的应用
- 2026年新就业形态劳动者职业伤害防护与权益维护
- 无创呼吸机使用安全操作流程
- 白头翁皂苷B4对雄激素致小鼠脱发的治疗效果研究
- 【新疆、西藏】2025年高考全国卷理综化学高考真题+答案
- 长期血透导管的居家护理
- 警车日常工作科普知识培训课件
- 海外项目质量管理体系的实施要求与案例分析
- 仔猪供货方案模板(3篇)
- 一例肺炎患者的个案护理
- 文明实践健康义诊活动策划
- 2025年内蒙古自治区中考物理试题(原卷版)
- 2024司法考试试题及答案
评论
0/150
提交评论