版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Dataorganizationcurriculmproject数据结构实验报告实验题目:图书管理系统专业班级:09信管5班学生学号:学生姓名:指导老师:叶妙老师完成时间:2011/5/20目录问题描述……………….1页基本要求………………..1页程序设计思想………1---2页软件模块结构图………..2页程序流程图……………..3页源程序………………4---7页调试分析……………8---9页测试数据…………..9---10页心得体会…………11---12页一.问题描述设计一个计算机管理系统完成图书管理基本业务。
二.基本要求1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;
*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
*归还:注销对借阅者的登记,改变该书的现存量。三.程序设计思想1.分析题目。每天吃当前桃子数目的一半再加一个,所以桃子数目肯定为偶数。用我们所熟悉的函数来表示,即:f(x+1)=f(x)/2-1;其中x代表第多少天。:猴子摘桃子的那天也就是第一天就吃了所摘桃子的一半加一个,所以桃子总数应该为第一天加1再乘以2,等效为f(0)。2.实现方法。最容易想到的也是最简单的就是运用函数的递归。给出了边界条件与递归函数,直接调用就可以了。用数组实现,先定义一个一维数组,然后结合循环,也可以求解。如果用链表的话,相对来说要复杂点。先要构建一个动态链表,将头指针赋值给p,p赋值给q,使p,q同时指向链表头,将第十天的桃子数放在链表第一个数据域中,然后移动p,q使后一个数据域中存放的是前一个加1的2倍,即倒过来存放数据。四.软件模块结构图书库管理系统书库管理系统采编入库借阅归还五.程序流程图六.源程序#include"stdio.h"#include<stdlib.h>#include<conio.h>typedefstructbook{ intnum;/*书号*/ charbookname[20];/*书名*/ charwriter[20];/*作者*/ intxchun;/*现存量*/ intkchun;/*库存量*/ structbook*next;}Book;typedefstructborrow{ intnumber;/*证件号*/ inttime;/*期限*/ intnum;/*借的书号*/ structborrow*next;}Borrow;/*======本程序所输入的书名与借书人证件号都为整形========*/Borrow*head1;Book*head2;Book*input()/*图书信息输入函数,使用尾插法建立图书链表*/{ Book*s,*h,*r; intt,tag; printf("输入结束标志:"); scanf("%d",&tag); h=(Book*)malloc(sizeof(Book)); r=h; printf("继续输入请按任意键,若想结束请输入结束标志:"); scanf("%d",&t); while(t!=tag) { s=(Book*)malloc(sizeof(Book)); printf("\n请输入书号:"); scanf("%d",&s->num); printf("\n请输入书名:"); scanf("%s",s->bookname); printf("\n请输入作者:"); scanf("%s",s->writer); printf("\n请输入图书现存量:"); scanf("%d",&s->xchun); printf("\n请输入图书库存量:"); scanf("%d",&s->kchun); r->next=s; r=s; printf("继续输入请按任意键,若想结束请输入结束标志:"); scanf("%d",&t); } r->next=NULL; returnh;}chaibian(Book*h)/*采编入库函数*/{ inta; Book*s,*p,*r; s=(Book*)malloc(sizeof(Book)); printf("\n输入新书的书号:"); scanf("%d",&a); p=h; while(p->num!=a&&(p!=NULL)) { r=p; p=p->next; } if(p==NULL) { printf("\n这种书是一种新书,请输入这种书的其他信息:"); s->num=a; printf("\n请输入书名:"); scanf("%s",s->bookname); printf("\n请输入作者:"); scanf("%s",s->writer); printf("\n请输入图书现存量:"); scanf("%d",&s->xchun); printf("\n请输入图书库存量:"); scanf("%d",&s->kchun); r->next=s; s->next=NULL; } else { printf("\n这种书已存在,现更新这种书的现有量与库存量......\n更新信息完成!"); p->xchun++; p->kchun++; } getch();}borrow(Borrow*h,Book*p)/*借书函数*/{ intx; Book*t; Borrow*m,*g; a:printf("\n请输入要借的书的书号:");/*设置返回标志a*/ scanf("%d",&x); t=p; g=h; while(t->num!=x&&(t!=NULL)) { t=t->next; } if(t==NULL) { printf("\n没有这种书,请重新确认书号."); gotoa; } else { while(g->next!=NULL) {g=g->next;} if(t->xchun>=1) { m=(Borrow*)malloc(sizeof(Borrow)); printf("\n请输入借书人的证件号:"); scanf("%d",&m->number); printf("\n请输入归还期限(天数):"); scanf("%d",&m->time); m->num=t->num; g->next=m; m->next=NULL; t->xchun--; printf("已完成借书事项!"); } elseprintf("此书已被借完,请按任务键继续。"); } getch();}returned(Borrow*h,Book*p)/*还书函数*/{ intx,y; Book*t; Borrow*m,*n;/*设置两个Borrow指针变量m、n,用以删除结构体Borrow中,已还完书人的结点*/ m=h; t=p; n=m->next; printf("\n请输入还书人的证件号:"); scanf("%d",&x); printf("请输入要还的书的书号:"); scanf("%d",&y); while(n->number!=x&&n->num!=y&&n!=NULL) { m=m->next; n=n->next; } if(n!=NULL) { x=n->num; while(t->num!=y&&t!=NULL) {t=t->next;} if(t!=NULL) { t->xchun++; } m->next=n->next; printf("\n归还成功!"); } elseprintf("没有此人借书记录!请按任意键继续。"); getch();}scan(Book*h)/*浏览图书总体信息函数*/{ Book*t; t=h; printf("书号\t书名\t作者\t现存量\t库存量"); while(t!=NULL) { printf("\n%d\t%s\t%s\t%d\t%d",t->num,t->bookname,t->writer,t->xchun,t->kchun); t=t->next; } getch();}voidwelcome(){ intx,y;gotoxy(x,y++);printf("☆★☆★☆★☆****************(^o^)***************☆★☆★☆★☆\n");gotoxy(x,y++);printf("【书*库*管*理*系*统】\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("@@@@@@@@@\n");gotoxy(x,y++);printf("@@@@@@\n");gotoxy(x,y++);printf("@@@@@\n");gotoxy(x,y++);printf("@欢@迎使用@\n");gotoxy(x,y++);printf("@@@\n");gotoxy(x,y++);printf("@@@@\n");gotoxy(x,y++);printf("@@@@\n");gotoxy(x,y++);printf("@@\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("第12组\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("【学院】:管理学院\n");gotoxy(x,y++);printf("【专业班级】:09信息管理与信息系统5班\n");gotoxy(x,y++);printf("【组员】:林森旭、李宏波、林营、陈洁华\n");gotoxy(x,y++);printf("王广浩、刘振琪\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("〓〓〓〓〓〓〓〓O(∩_∩)O〓〓O(∩_∩)O〓〓〓〓〓〓〓〓〓\n");}voidmenu(){ inti; intx=20,y=5; gotoxy(10,3); for(i=0;i<13;i++) { printf("⊙o⊙"); } gotoxy(x,y++);printf("1.输入基本的图书信息"); gotoxy(x,y++);printf("2.新采购一种书"); gotoxy(x,y++);printf("3.借书"); gotoxy(x,y++);printf("4.还书"); gotoxy(x,y++);printf("5.浏览图书总体情况"); gotoxy(x,y++);printf("0.退出"); gotoxy(10,23); for(i=0;i<13;i++) { printf("⊙o⊙"); } gotoxy(x,17);printf("pleaseselectthemenu:");}voidmain(){ inta; head1=NULL; head2=NULL;clrscr(); welcome(); getch(); while(1) { do { clrscr(); menu(); scanf("%d",&a); system("cls"); }while(a<0||a>5); switch(a) { case1:head2=input();break; case2:chaibian(head2);break; case3:borrow(head1,head2);break; case4:returned(head1,head2);break; case5:scan(head2);break; case0:exit(0); } getchar(); }}七.调试分析分块测试1.采编入库:没有出错,可以得到正确结果。2.借阅运行出错:原因在于输入变量时忘了加&;if判断语句中用的应该是==却用成了赋值语句。改正后得到正确结果。3.用链表实现运行出错,出错原因在于:第一个大括号后面忘了加“;”;没有在main()主函数中声明taoshu()函数的话,其定义就必须放在main()主函数前面,修改后,程序能正确运行。八.测试数据程序运行界面程序运行的欢迎界面和初始界面2、选择1运行界面:3.选择2运行界面4.选择3运行界面选择4运行界面6.选择5运行界面:九.心得体会终于挨到了写心得和体会的时候了,也就意味着这个课程设计接近了尾声,的确令人兴奋,看着自己的劳动成果,内心真的很激
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 渠道费用合同范本
- 蒙牛合作协议书
- 融资写合同范本
- 视频通信协议书
- 认购书合同范本
- 设备保固协议书
- 设备招标协议书
- 设计炒更协议书
- 试住协议书模板
- 请人办证协议书
- 2025年葫芦岛市总工会面向社会公开招聘工会社会工作者5人备考题库及参考答案详解
- 2026班级马年元旦主题联欢晚会 教学课件
- 2025年沈阳华晨专用车有限公司公开招聘备考笔试题库及答案解析
- 2025年云南省人民检察院聘用制书记员招聘(22人)笔试考试参考试题及答案解析
- 2025年乐山市商业银行社会招聘笔试题库及答案解析(夺冠系列)
- 高层建筑消防安全教育培训课件(香港大埔区宏福苑1126火灾事故警示教育)
- 学堂在线 雨课堂 学堂云 研究生学术与职业素养讲座 章节测试答案
- 全口义齿人工牙的选择与排列 28-全口义齿人工牙的选择与排列(本科终稿)
- 开放系统11848《合同法》期末机考真题(第17套)
- 内科学 泌尿系统疾病总论
- TWSJD 002-2019 医用清洗剂卫生要求
评论
0/150
提交评论