ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:261.92KB ,
资源ID:18463840      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18463840.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计模板Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计模板Word文档格式.docx

1、此外对于借书及还书过程中,为保障操作无误,则在用户选择后,对用户的操作进行输出,并请用户进行确认;在对话式输入中,对于非法输入,程序显示的提示信息采用下划线进行强调,以引起用户的注意。1.4 测试数据分析书籍登记入库操作中如果书籍登录号超过六位则应提示”格式错误”;如果书号或书名已存在,则应提示”书籍已存在”。如果操作正确,则提示“书籍已登记入库”。在书刊检索中,如果书刊存在则应显示书籍信息,如果不存在则应提示“书籍不存在”。在读者信息登记操作中,如果读者以存在,则应提示”读者已存在”.否则,提示“成功添加读者”。在读者登录过程中,如果读者信息错误,则提示“用户名或密码错误”,否则登录操作。借

2、书还书中的输出类似于检索中的提示。2 概要设计2.1 结构体类型及函数声明(1)结构体图书信息结构体类型 BOOK 读者信息结构体类型 READER 日期结构体类型 DATE索引项结构体类型 IDXTYPE索引表结构体类型 ISXLIST(2)函数声明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 R

3、Save(READER *R) /读者信息导出函数int RLoad(READER *R) /读者信息导入函数READER* 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(DAT

4、E *time) /判断时间循环是否停止函数DATE* RTIME() /还书日期函数int Lend(READER *tp,BOOK *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) /读者

5、信息插入函数int Teacher(READER *R) /管理员登录主调函数int Library_menu(void) /管理函数主菜单int WELCOME() /系统欢迎菜单int Show_all(BOOK *B) /藏书一览函数int CHOICE(BOOK *B,READER *R) /函数主调菜单2.2 主程序流程(1)主程序调用模块图主程序利用switch()语句实现各个模块的调用,主函数调用如图1所示。图1 主程序调用模块图2.3 模块流程说明主函数对各主要模块进行调用,各个主要模块又分别调用其他子模块。下面用简要流程图对各主要模块进行说明。(1) 登记入库主模块如图2所示

6、,为登记入库模块。先通过键盘读取书记信息,再调用Info_show()函数显示该书籍信息,用户确认信息无误,调用Store_in_lib函数登记入库,如用户不希望此次操作,则放弃退出,返回上级目录。图2 登记入库模块(2)用户登录主模块如图3所示为用户登录流程图。录入借书号及密码,判断合法则登陆,否则结束。图3用户登录模块(3)书刊检索主模块如图4为书刊检索流程图。首先录入读者需要按照哪种方式进行检索,系统判断检索方式,调用相应的函数查找,并返回检索的结果。图4书刊检索主模块(4)管理员登录模块如图5所示为管理员登陆流程图。首选录入管理员账号及密码,系统调用TEACHER_LOG()函数,判断

7、账号的合法性,如合法,管理员履行管理功能,不合法提示错误,退出。图5管理员登录模块3 详细设计3.1 数据类型实现 图书信息结构体 typedef struct BOOK_INFO char B_num20;char B_name20;char B_writer20;char B_publer20;char B_ptime20; int Now_store;int Total_store;struct BOOK_INFO *next; BOOK;读者信息结构体 typedef struct READERchar Rea_name20;char Rea_code20;char Rea_num20

8、;char BOOK lenb5;DATE Rtime5;struct READER *next;READER;还书日期结构体 typedef struct int year; int month; int day; DATE;索引表结构体Typedef struct IDXTYPE idxterm100;int len;IDX_LIST;索引项结构体typedef struct IDX_TERMchar num8; int len; BOOK *P; IDXTYPE;3.2 程序代码 int Y_N()/根据读取的字符给flag赋不同值,并返回flag的值 scanf(ch); if(ch0

9、=Y|ch0=y) flag=1; if(ch0!=&ch0!nN) flag=0;) flag=-1;int Store_in_lib(BOOK *B)/读取书籍信息并经用户确认后插入书籍链表B中 q=B; do if(!(tp=(BOOK*)malloc(sizeof(BOOK) return error; *tp=NULB;/所用信息都为空的书籍宏定义 do scanf(tp-B_num); while(strlen(tp-B_num)!=6); for(exit=B-next;exit&strcmp(exit-B_num,tp-exit=exit-next);/判断书号是否已经存在 i

10、f(!exit) scanf(tp-B_name); for(exit=B-B_name,tp-/判断书是否已经存在 if(exit) exit-Now_store+;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);/插入链表 if(flag=-1) free(tp);/释放空间 do/确认是否继续 flag=Y_N(); while(! while(flag=1); return 0;BOO

11、K* Search_writer(BOOK *B)/从键盘读取著作者的名字,在书籍链表中查找,如果存在则返回满足/条件的指针,否则返回空指针 scanf(writer); p=B- while(p)(strcmp(p-B_writer,writer) break; p=p- if(p) Info_show(p,0); return p; BOOK* Search_name(BOOK *B)/从键盘读取书籍名称,如果书籍存在,则返回书记信息指针,否则返/回空指针 scanf(name); p=B;B_name,name) p-IDX_LIST* IDX_FORM(BOOK *B)/根据书籍信息链

12、表B建立书号索引表,并返回索引表的头指针(List=(IDX_LIST*)malloc(sizeof(IDX_LIST) return NULL; List-len=0;idxterm0.len=0;/初始化 tp=B- if(tp) if(i=0&List-idxterm0.len=0) strcpy(List-idxtermi.num,tp- memcpy(flag,tp-B_num,2); List-idxtermi.len=1;len=1; tp=tp- continue;/将第一本书的书号做为索引表的第一项并以第一项/的前两个字符作为关键字memcpy(temp,tp-/将tp-B_

13、num的前两个字符赋值/给temp if(strcmp(flag,temp) i+; /增加新的索引项 elseidxtermi.len+;/记录关键字相同的数量 List-len=i+1; tp=tp- while(tp); return List;BOOK* Search_num(BOOK *B,int n)/根据书号查找书籍,如果找到则返回书籍指针,并使书籍的现存量n;/否则返回空指针 BOOK *tp; int i,j,Len=0,flag=0; char num8; IDX_LIST *IList; if(!(IList=(IDX_LIST*)malloc(sizeof(IDX_LI

14、ST) return NULL; IList- tp=B- if(tp) IList=IDX_FORM(B); else tp=NULL; return tp; scanf(num); for(i=0;ilen&!flag;i+)if(strcmp(num,IList-idxterm0.num)idxtermi+1.num)len-1)/比较与索引表下一项的大小 for(j=0;jidxtermj.len;/计算指针移动的次数 for(j=1;=Len;/移动指针=IList-idxtermi.len; if(!strcmp(tp-B_num,num) if(!(nNow_store=0) t

15、p-Now_store+=n;/根据主调函数改变现存量 flag=1; break; if(j-1=IList-idxtermi.len&flag)/没找到 tp=NULL; return tp; return tp;int Search_menu(BOOK *B)/根据用户的选择对书籍信息链表B进行不同方式的查找 op=atoi(ch); while(op3); switch(op) case 1: Search_num(B,0);break; case 2: Search_name(B); case 3: Search_writer(B); return 0;int If_stop(DAT

16、E *time)/判断时间time是否符合实际 if(time-month=4|time-month=6|time-month=9|time-month=11) if(time-dayyear%4)&year%100)|year%400) num=29; num=28;/判断2月的天数 if(time-month=2&time-=num) return 0; else if(time-=31) return 1;DATE* RTIME()/计算机还书日期,放回日期结构体类型的指针 time_t nowtime; struct tm *timeinfo; DATE *rtime; rtime=(

17、DATE*)malloc(sizeof(DATE); time( &nowtime ); timeinfo=localtime( & y=timeinfo-tm_year+1900; m=timeinfo-tm_mon+1; d=timeinfo-tm_mday; rtime-year=y;month=m;day=d;day+=60; do switch(rtime-month) case 4: case 6: case 9: case 11: if(rtime-day30) rtime-month+;day-=30; case 2:if(!(rtime-year%100)|! num=29;

18、 else num=28; if(rtime-num)day-=num; default:if(rtime-31)day-=31; if(rtime-month12) rtime-year+;month-=12; while (If_stop(rtime); return rtime;int Lend(READER *tp,BOOK *B)/在图书链表B中查找用户的书籍,找到后将书籍登记到读者tp名下/并将书籍存量减一 BOOK *btp=NULL; int i=0; while(strcmp(tp-lenbi.B_num,NUL)&5) i+; if(i=5) return 0;/判断是否达

19、到借书上限 btp=Search_num(B,-1); if(btp) if(btp-Now_store!=0)lenbi=*btp;Rtimei=*RTIME();int Return(READER *tp,BOOK *B)/在图书链表B中查找用户的书籍,找到后将书籍从读者tp名下删除 BOOK *p; p=Search_num(B,1); while(strcmp(p-lenbi.B_num) if(ilenbi+1;Rtimei=tp-Rtimei+1; tp-lenb4=NULB;READER* REA_SORT(READER *R,READER *p) READER *tp; tp=

20、R; while(tp-next) if(strcmp(p-Rea_num,tp-next-Rea_num)int TEACHER_LOG()/教师登录验证,通过则返回0,否则返回1 scanf(code);strcmp(name,李云高strcmp(code,121513) else return 1;int REA_INSERT(READER *R)/从键盘录入读者信息,并以指针存放,经用户确认后插入读者信息链/表R中 do p=R; while(p- p=p-(tp=(READER*)malloc(sizeof(READER) return error; scanf(tp); tp- p=REA_SORT(R,tp);next=p- p-next=tp; do flag=Y_N(); while(! while (flag=1); return 0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1