数据结构课程设计报告(共22页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构课程设计报告(共22页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告(共22页).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上湖南科技大学课 程 设 计 报 告题目: 图书馆管理基本业务模拟 院 系: 计算机学院 专业年纪: 0 学 号: 学生姓名: 指导老师: 2010年12月30日目 录1设计任务书31.1题目与要求31.2涉及知识点31.3输入输出分析31.4测试数据分析32概要设计4 2.1结构体类型定义及函数声明4 2.2主程序流程5 3详细设计73.1数据类型实现73.2程序伪码3.3程序主要流程图4调试分析 4.1问题分析及回顾 4.2算法时空分析 4.3设想改进 4.4经验和体会5用户使用说明 5.1操作说明及详细步骤6测试结果 6.1测试数据及结果7参考文献8致谢1、 设计
2、任务书1.1题目与要求 题目:编写程序实现图书馆管理业务的模拟。 要求:书的登记内容包括书号、书名、著作者、出版社、现存量和库存量。并且按书号建立索引表以提高索引效率。程序要能够实现一下功能:a.采编入库:新购一本书,确定书号后,则登记到图书账目中,如果表中以有,则只将库存增加。b.借阅:如果书的库存量大于0,则借出一本书,登记借阅者的借书证号和归还日期,改变现存量。C.归还:注销对借阅者的登记,改变书的现存量。1.2设计知识点 系统时间函数、系统调用库函数、索引表建立、文件、结构体、指针、链表、数组、循环语句、选择语句、输入输出控制、宏定义、自定义类型等。1.3输入输出分析 普通输入:对于书
3、籍内容登记及读者信息宜采用结构体进行存储,其中的具体单项信息则采用字符数组或整形变量直接存续,考虑到书籍及读者信息的具体内容,字符数组长度为20较为合适。 对话式输入:为便于转换及比较,对话式输入采用字符数组进行存储.为保障程序的健壮性,同时限制对话式输入的格式,对于非法的会话式输入则提示用户操作失败的原因;此外为保障用户在任意一步回话操作中都能任意退出,在程序中设计一“特殊按键”,当输入时,则程序返回上一层。程序输出:对于书籍信息及读者借阅信息的显示,考虑到美观及直观的因素,则采用表格的形式进行显示;此外对于借书及还书过程中,为保障操作无误,则在用户选择后,对用户的操作进行输出,并请用户进行
4、确认;在对话式输入中,对于非法输入,程序显示的提示信息采用下划线进行强调,以引起用户的注意。1.4测试数据分析书籍登记入库操作中如果书籍登录号超过六位则应提示”格式错误”;如果书号或书名已存在,则应提示”书籍已存在”。如果操作正确,则提示“书籍已登记入库”。在书刊检索中,如果书刊存在则应显示书籍信息,如果不存在则应提示“书籍不存在”。在读者信息登记操作中,如果读者以存在,则应提示”读者已存在”.否则,提示“成功添加读者”。在读者登录过程中,如果读者信息错误,则提示“用户名或密码错误”,否则登录操作。借书还书中的输出类似于检索中的提示。2、 概要设计2.1结构体类型及函数声明结构体: 图书信息结
5、构体类型 BOOK 读者信息结构体类型READER 日期结构体类型 DATE索引项结构体类型IDXTYPE 索引表结构体类型 ISXLIST函数声明:int Info_show(BOOK *p,int n)/书籍信息显示函数int BSave(BOOK *L)/书籍信息导出函数int BLoad(BOOK *L)/书籍信息导入函数int BOOK_SORT(BOOK *B,BOOK *P)/按照书号排序函数int Store_in_lib(BOOK *B)/书籍登记入库函数int RSave(READER *R)/读者信息导出函数 int RLoad(READER *R)/读者信息导入函数RE
6、ADER* Search_r(READER *R,READER T)/查找读者函数BOOK* Search_writer(BOOK *B)/按作者查找函数BOOK* Search_name(BOOK *B,int n)/按书名查找函数IDX_LIST* IDX_FORM(BOOK *B)/索引表生成函数BOOK* Search_num(BOOK *B,int n)/按书号查找函数int Search_menu(BOOK *B)/书籍检索菜单int If_stop(DATE *time)/判断时间循环是否停止函数DATE* RTIME()/还书日期函数int Lend(READER *tp,BO
7、OK *B)/借书函数int Return(READER *tp,BOOK *B)/还书模块int Log_menu(READER *R,READER *tp,BOOK *B)/读者登录函数int Log_in(READER *R,BOOK *B)/读者登录模块READER* REA_SORT(READER *R,READER *p)/读者排序函数int TEACHER_LOG()/管理员登录函数int REA_INSERT(READER *R)/读者信息插入函数int Teacher(READER *R)/管理员登录主调函数int Library_menu(void)/管理函数主菜单int
8、WELCOME()/系统欢迎菜单int Show_all(BOOK *B)/藏书一览函数int CHOICE(BOOK *B,READER *R)/函数主调菜单2.2主程序流程2.2.1主程序利用switch()语句实现各个模块的调用,主函数调用如下图所示。主程序根据不同值主调函数1调用登记入库函数3调用书刊检索模块4调用教师登录模块5调用书籍显示模块6退出系统2调用读者登录模块2.3各模块的层次关系 主函数对各主要模块进行调用,各个主要模块又分别调用其他子模块。下面用各主要模块简要流程图表示说明。询问读者是否继续此操作用户确认后调用BOOK_SORT()函数调用Info_show()函数由键
9、盘读取书籍信息登记入库主模块 登记入库主模块 用户登录主模块录入借书号及密码,并保存在读者指针中用户登录主模块 调用Search_r()函数,如存在则返回读者指针验证用户后调用Log_menu()函数,再根据用户操作,调用Lend(),Rturn(),及Search_num()等函数真书刊检索主模块录入读者的检索方式,并返回选项书刊检索主函数根据读者的选择,分别调用Search_num(),Search_name(),Search()等书刊检索函数,如找到则返回指针,否则返回空指针;在每个函数中分别调用Info_show()函数教师登录模块调用REA_INSERT()函数,进行添加读者操作调用
10、TEACHER_LOG(),确认用户权限,如果认证通过,则返回1,否则返回0管理员登录模块真3、 详细设计3.1数据类型实现 专心-专注-专业图书信息结构体 读者信息结构体typedef struct BOOK_INFO typedef struct READERchar B_num20; char Rea_name20; char B_name20; char Rea_code20;char B_writer20; char Rea_num20;char B_publer20; BOOK lenb5; char B_ptime20; DATE Rtime5;int Now_store; st
11、ruct READER *next;int Total_store; READER; struct BOOK_INFO *next; BOOK;还书日期结构体 索引表结构体typedef struct typedef struct int year; IDXTYPE idxterm100; int month; int len; int day; IDX_LIST; DATE;索引项结构体typedef struct IDX_TERMchar num8; int len; BOOK *P; IDXTYPE;3.2程序伪码 int Y_N()/根据读取的字符给flag赋不同值,并返回flag的值
12、scanf(ch);if(ch0=Y|ch0=y) flag=1;if(ch0!=y&ch0!=Y&ch0!=n&ch0!=N)flag=0;if(ch0=N|ch0=n) flag=-1;int Store_in_lib(BOOK *B)/读取书籍信息并经用户确认后插入书籍链表B中q=B;doif(!(tp=(BOOK*)malloc(sizeof(BOOK)return error;*tp=NULB;/所用信息都为空的书籍宏定义doscanf(tp-B_num);while(strlen(tp-B_num)!=6); for(exit=B-next;exit&strcmp(exit-B_n
13、um,tp-B_num);exit=exit-next);/判断书号是否已经存在 if(!exit) scanf(tp-B_name); for(exit=B-next;exit&strcmp(exit-B_name,tp-B_name);exit=exit-next);/判断书是否已经存在 if(exit) exit-Now_store+; exit-Total_store+; else scanf(tp);tp-next=NULL;Info_show(tp,0);do/确认是否登记入库Flag=Y_N();while(!flag);if(flag=1)BOOK_SORT(B,tp);/插入
14、链表if(flag=-1) free(tp);/释放空间do/确认是否继续flag=Y_N();while(!flag);while(flag=1);return 0;BOOK* Search_writer(BOOK *B)/从键盘读取著作者的名字,在书籍链表中查找,如果存在则返回满足/条件的指针,否则返回空指针scanf(writer);p=B-next;while(p)if(!(strcmp(p-B_writer,writer)break;p=p-next;if(p)Info_show(p,0);return p; BOOK* Search_name(BOOK *B)/从键盘读取书籍名称,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 22
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内