




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. 精选文档 沈航北方科技学院沈航北方科技学院 课程设计说明书课程设计说明书 课程名称课程名称 c c 语言课程设计语言课程设计 教教 学学 部部 机械工程系机械工程系 专专 业业 数控数控 班班 级级 B042111B042111 学学 号号 B04211123B04211123 学生姓名学生姓名 田文田文 指导教师指导教师 赵小磊赵小磊 _ _ 20122012 年年 6 6 月月 . 精选文档 链表实现图书信息操作链表实现图书信息操作 田文田文 目录 摘摘 要要 .1 1 1 1 绪论绪论.1 1 2 2 系统分析系统分析.1 1 2.1 功能需求.1 2.2 数据需求.2 2.3 性能需求.2 3 3 总体设计总体设计.2 2 3.1 功能模块设计.2 3.2 系统设计方案.6 4 4 详细设计详细设计.7 7 4.1 登录模块.7 4.2 借书管理模块.8 4.3 还书管理模块.9 5 5 调试与测试调试与测试.1010 5.1 调试.10 . 精选文档 5.2 测试.11 6 6 结论结论.1212 结束语结束语.1212 参考文献参考文献.1212 附录附录 1 1用户手册用户手册(另起一页)(另起一页).1313 附录附录 2 2源程序源程序(另起一页)(另起一页).1515 摘摘 要要 经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块, 其中每一个模块对应一个函数,他们的功能分别是:图书信息输入函数 input(), 借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search),以 及归还图书信息函数(giveback)。在这些函数当中,这四个函数的实现严格按照 题目的要求。 1、图书信息输入函数 主要功能是从键盘输入图书信息并将其写入文件中, 作为图书馆的书库,以便对下面的函数进行运行,此函数是基础. . 精选文档 2、图书借阅函数 主要借阅图书的功能和录入学生应该还书的时间; 3、图书归还函数 主要实现借阅图书后,归还图书的功能,并把应该还书的时 间和实际还书的时间进行比较过期时输出学生的信息,也是该程序的的 一个重点 4、增加删除图书函数 实现的功能是实现对图书的删除; 5、图书查询函数 允许按照图书编号,书名,作者,出版社进行查询,并将查询 信息输出; 6、退出函数 该函数主要实现退出运行界面的功能. 除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当 中循环执行所有的功能,并根据需要终止程序的执行。 每一个图书记录都包含:图书编号,名称,出版社,作者,现有数量和总量在程序当中, 将图书记录类型定义为结构体类型,并把它写入 d:liuyan.txt 中,其他函数每 次对图书记录的访问,其数据来源都是 d:liuyan.txt 文件,这样做不但可以保 证图书数据的一致性,而且可以对图书数据进行永久保存,保证每次运行程序 都可以采用原来的数据。 1 1 绪论绪论 整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数, 他们的功能分别是:图书信息输入函数 input(),借阅图书函数(borrow),增加删除 图书函数(adddelet),图书查询函数(search),以及归还图书信息函数(giveback)。 在这些函数当中,这四个函数的实现严格按照题目的要求。 . 精选文档 2 2 系统分析系统分析 2.12.1 功能需求功能需求 设计一个通过链表实现对图书信息进行管理的程序,要求完成以下功能: 1. 建立一个链表,每个结点应包含以下信息:图书号、书名及出版社、价 格、ISBN、作者、册数; 2. 将输入信息按图书号进行从小到大的排序; 3. 实现查询功能输入书名,查询输出相关信息; 4. 实现插入功能输入图书信息并插入有序链表中; 5. 实现删除功能输入书名或书号,可将其信息从链表中删除; 6. 统计链表中图书总价值,并在屏幕上输出; 7. 统计该链表中价值超过某一数目的图书总数,并在屏幕上输出。 8. 有界面友好易于使用的菜单。 2.22.2 数据需求数据需求 需要向系统输入图书号、书名及出版社、价格、ISBN、作者、册数 2.32.3 性能需求性能需求 在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统 稳定性好,安全,可靠。 3 3 总体设计总体设计 3.13.1 功能模块设计功能模块设计 根据分析整个系统主要划分为 4 个功能模块,分别执行要求中的功能。该系统需要有 添加,删除,查询,修改,累加,循环显示主菜单,保存信息功能,能将会员卡进行注销, 利用显示函数将会员卡内所有信息显示。要求有循环显示菜单工能。功能模块图如图 1 所 示。(1)输入读者 输入相关读者信息至内存中; (2) 输入书籍 输入书籍号,对已存的书籍信息进行查询; (3) 书籍管理模块 输入相应代码,对相关信息进行查询; . 精选文档 (4) 退出管理模块 主菜单中输入 0 退出系统登录; 图书管理系统 输 入 读 者 输 入 书 籍 书 籍 管 理 退 出 系 统 登 录 图图 1 1 图书管理系统流程图图书管理系统流程图 管管理理员员版版图图书书管管理理系系统统 新新 书书 入入 库库 查查 询询 借借 书书 登登 记记 书书 籍籍 数数 量量 书书 籍籍 信信 息息 修修 改改 还还 书书 管管 理理 书书 籍籍 信信 息息 查查 询询 图图 2 2 管理员版图书管理系统流程图管理员版图书管理系统流程图 . 精选文档 退退 出出 查查 询询 按按 照照 读读 者者 姓姓 名名 查查 询询 按按 照照 读读 者者 编编 号号 查查 询询 按按 照照 图图 书书 作作 者者 查查 询询 按按 照照 图图 书书 名名 查查 询询 按按 照照 图图 书书 编编 号号 查查 询询 图图书书查查询询系系统统主主界界面面 图图 3 3 图书查询主界面流程图图书查询主界面流程图 3.23.2 系统设计方案系统设计方案 设计一个总菜单,1 登录信息,2 查询管理,3 书籍管理系统,4 退出系统。 基本功能的实现都将体现在这几个菜单选项中。 struct reader *next; RD; BK *h_book; RD *h_reader; void Login(); /*登陆*/ int Menu(); /*主菜单*/ void Menu_select(); /*主菜单选择函数*/ void Init(); /*初始化*/ void Init_reader(); /*初始化读者*/ void Init_book(); /*初始化图书*/ void Insert_New_Book(); /*新书入库*/ . 精选文档 int Find(); /*查找菜单*/ void Find_Select(); /*查找菜单选择函数*/ void Find_Reader(); /*查找读者信息*/ void Find_Book(); /*查找图书信息*/ void Print_reader(); /*打印读者信息*/ void Print_book(); /*打印图书信息*/ void Borrow_Book(); /*借书函数*/ void Return_Book(); /*还书函数*/ void Save(); /*保存信息*/ void Save_Reader(); /*保存读者信息*/ void Save_Book(); /*保存图书信息*/ void Load(); /*加载信息*/ void Load_Reader(); /*加载读者信息*/ void Load_Book(); /*加载图书信息*/ void Login()/*登陆*/ system(cls); printf(nnnttt 欢迎登陆本系统n); printf(nntt 系统版权所有nnnnnnn); printf(nnntt 按 任 意 键 进 入 系 统 .); getchar(); system(cls); . 精选文档 int Menu() /*主菜单*/ int sn; printf(ntt 图书管理系统主菜单n); printf(= =n); printf(*t0-退出系统 *n); printf(*t1-新书入库 *n); printf(*t2- 查询 *n); printf(*t3-借书登记 *n); printf(*t4-还书管理 *n); printf(= =n); printf(请选择相应代码:); . 精选文档 4 4 详细设计详细设计 4.14.1 登录模块登录模块 开始 intj=1,m; m=1 !InsertLinklist(Linklist)L) printf(t输入下一个读者信息?n); printf(内存已满n);exit(OVERFLOW); 结束 图图 4 4:输入读者信息:输入读者信息 . 精选文档 开始 intj=1,m; m=1 !InsertLinklist(Linklist)L) printf(内存已满n);exit(OVERFLOW); 结束 printf(t输入下一个书籍信息?n); 图图 5 5:输入书籍信息:输入书籍信息 4.24.2 借书管理模块借书管理模块 主菜单中输入读者和书籍信息后,对已存的书籍进行借阅,程序流程如图 4 所示。 . 精选文档 开开始始 读读方方式式打打开开文文件件不不成成功功? 输输入入你你的的学学号号和和要要借借书书的的名名 循循环环变变量量 i i0? 输输出出 borrow success 和和输输入入应应还还书书的的日日期期 输输入入应应书书日日期期 关关闭闭文文件件! 结结束束 borrow failed return Y N N Y Y N N N N Y Y 图图 6 6 借书模块流程图借书模块流程图 4.34.3 还书管理模块还书管理模块 对于已还书籍进行管理,程序流程如图 4 所示。 . 精选文档 开开始始 以以读读取取方方式式打打开开 文文件件不不成成功功 输输入入读读者者信信息息 输输入入书书籍籍信信息息 循循环环变变量量i i i i reader_num); printf(ReaderName:); /*输入读者姓名(不唯一)*/ scanf(%s,p0-reader_name); p0-right=0; for(i=0;iborrowi.borrow_book_num,0); /*所借图书直接置为 0(即没有借书)*/ strcpy(p0-borrowi.limit_date,0); p0-next=NULL; printf(n 读者信息初始化完毕!按任意键继续下一步操作.n); getchar(); system(cls); void Init_book() /*初始化图书信息*/ BK *p0; printf(n 图书初始化开始,请输入图书信息.n 包括编号.书名.数量.n); p0=(BK*)malloc(sizeof(BK); h_book=p0; printf(n 请输入图书信息:n); printf(BookNo.:); /*输入图书编号(唯一)*/ scanf(%s,p0-book_num); printf(BookName:); /*输入图书名称*/ scanf(%s,p0-book_name); printf(BookWriter:); /*输入图书作者*/ scanf(%s,p0-book_writer); printf(Number:); /*输入图书数量*/ scanf(%d, p0-book_xy=p0-book_kc; /*开始时图书现有量和库存量相等*/ p0-next=NULL; printf(n 图书信息初始化完毕!按任意键继续下一步操作.n); getchar(); system(cls); void Insert_New_Book()/*新书入库*/ BK *p,*p0,*p1; . 精选文档 p=p1=h_book; printf(n 新书入库模块.n); printf(n 请输入新书信息.n 包括书号.书名.数量.n); p0=(BK *)malloc(sizeof(BK); printf(BookNo.:); scanf(%s,p0-book_num); while(strcmp(p0-book_num,p1-book_num)!=0 if(strcmp(p0-book_num,p1-book_num)=0) /*此处分两种情况,若图书编号存在,则直接 进库,只须输入书的数量*/ printf(n 此编号图书已存在!直接入库!n); printf(Number:); scanf(%d, p1-book_kc+=p0-book_kc; p1-book_xy+=p0-book_kc; else/*若不存在,则需要输入其他的信息 ,然后在进行插入操作*/ printf(BookName:); scanf(%s,p0-book_name); printf(BookWriter:); scanf(%s,p0-book_writer); printf(Number:); scanf(%d, while(p-next) p=p-next; if(h_book=NULL) h_book=p0; /*此处分两种情况,链表中没有数据,head 直接指向 p0 处*/ else p-next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的 next 指向 p0 处*/ p0-next=NULL; p0-book_xy=p0-book_kc; printf(n 新书入库完毕!按任意键继续下一步操作.n); getchar(); system(cls); int Find() /*查找菜单*/ int sn; . 精选文档 printf(ntt 信息查询菜单n); printf(=n); printf(*t0-返回上级 t*n); printf(*t t*n); printf(*t1-查找图书 2-查找读者 t*n); printf(*t t*n); printf(*t3-打印图书 4-打印读者 t*n); printf(=n); printf(请选择相应代码:); for(;) /*循环调用模式,保证能进行重复操作*/ scanf(%d, fflush(stdin); if(sn4) printf(n 错误!请重新输入:); else break; return sn; void Find_Select() /*查找菜单选择函数*/ system(cls); for(;) /*循环调用模式,保证能进行重复操作*/ switch(Find() /*功能选择*/ case 0:system(cls); Menu_select(); break; case 1:Find_Book();break; case 2:Find_Reader();break; case 3:Print_book();break; case 4:Print_reader();break; default:printf(n 错误!);exit(0); void Find_Reader() /*查找读者信息*/ RD *p; int i; char find_reader10; p=h_reader; printf(n 读者信息查询模块n); printf(n 请输入你要查询读者编号:); scanf(%s,find_reader); . 精选文档 while(strcmp(p-reader_num,find_reader)!=0 if(strcmp(p-reader_num,find_reader)=0) printf(n 读者编号:%s 的信息为:n,find_reader); printf(ReaderNo.tReaderName); /*此处这样处理,是为了能实现一个读者能借多本书 Max 可以改*/ printf(n); printf(t%stt%s,p-reader_num,p-reader_name); for(i=0;iborrowi.borrow_book_num); printf(tt%s,p-borrowi.limit_date); printf(n); else printf(n 此读者编号不存在,请核对!按任意键返回.); getchar(); system(cls); void Find_Book() /*查找图书信息*/ BK *p; char find_book10; /*功能很简单,读者编号唯一,查找只须一次遍历*/ p=h_book; printf(n 图书信息查询模块n); printf(n 请输入你要查询图书编号:); scanf(%s,find_book); while(strcmp(p-book_num,find_book)!=0 if(strcmp(p-book_num,find_book)=0) /*找到了就打印,否则提示不存在,或出错*/ printf(n 图书编号:%s 的信息为:n,find_book); printf(nBookNo.ttBookNametBookWritertXianYou tKuCunn); printf(%stt%stt%stt%dtt%dn,p-book_num,p-book_name,p-book_writer,p- book_xy,p-book_kc); else . 精选文档 printf(n 此图书编号不存在,请核对!按任意键返回.); getchar(); system(cls); void Print_reader() /*打印读者信息*/ RD *p; int i; p=h_reader; printf(n 读者信息如下:nn); printf(ReaderNo.tReaderName); /*此处这样处理,是为了能实现一个读者能借多本书 Max 可以改*/ printf(n); while(p!=NULL) /*遍历链表一次就可以了*/ printf(t%stt%s,p-reader_num,p-reader_name); for(i=0;iborrowi.borrow_book_num); printf(tt%s,p-borrowi.limit_date); printf(n); p=p-next; printf(n 读者信息打印完毕!按任意键继续下一步操作.); getchar(); system(cls); void Print_book() /*打印图书信息*/ BK *p; p=h_book; printf(n 图书信息如下:nn); printf(BookNo.ttBookNametBookWritertXianYou tKuCunn); /*直接打印所有图书的信息,遍历链表一次就可*/ while(p!=NULL) printf(%stt%stt%stt%dtt%dn,p-book_num,p-book_name,p-book_writer,p- book_xy,p-book_kc); p=p-next; . 精选文档 printf(n 图书信息打印完毕!按任意键继续下一步操作.); getchar(); system(cls); void Borrow_Book() /*借书模块*/ BK *p0; RD *p1; char bo_num10,rea_num10,lim_date8; int i; p0=h_book; p1=h_reader; printf(n 借书模块.n); printf(n 请输入借书的读者编号:); /*先输入借书的读者信息*/ scanf(%s,rea_num); while(p1-next!=NULL if(p1-next=NULL goto END; printf(n 请输入你要借的书的编号:); scanf(%s,bo_num); while(strcmp(bo_num,p0-book_num)!=0 if(p0-next=NULL else if(p0-book_xyright=Max) /*判断此读者借书权限是否已达最大*/ printf(n 不好意思,借书数目已满!不能借书!n 按任意键返回.); else if(strcmp(p1-borrow0.borrow_book_num,0)!=0) /*此读者若已经借书,再判 断此读者是否要借两本一样的书*/ for(i=0;iborrowi.borrow_book_num,bo_num)=0) printf(n 抱歉!同一个读者不能同借两本相同的书
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年继电保护及自动化设备行业当前发展趋势与投资机遇洞察报告
- 2025年服装服饰行业当前发展趋势与投资机遇洞察报告
- 收纳师行业知识培训内容课件
- 撰写培训课件
- 2024年保育员保育资格证考试题(附含答案)
- 2025年医院三基及临床诊断知识考试题库(附含答案)
- 2025小学语文教师专业考试试题库(含答案)
- 【2025年】安徽省滁州市会计从业资格会计基础预测试题含答案
- 2025年社会工作者之初级社会综合能力能力测试试卷B卷附答案
- (2025年)海南省三亚市中级会计职称经济法预测试题含答案
- 个人征信查询授权书范本
- 2024新版实习律师协议
- 县乡教师选调进城考试《教育心理学》题库含完整答案【全优】
- 2024年莆田辖区新华书店招聘笔试参考题库附带答案详解
- 初中化学酸碱中和反应省公开课一等奖全国示范课微课金奖课件
- JTG-T 3331-04-2023 多年冻土地区公路设计与施工技术规范
- 营销优化策略研究方法
- 中国石油开采业发展现状与前景分析
- 断指再植科普讲座课件
- 《儿童孟氏骨折》课件
- 《鸡防疫程序》课件
评论
0/150
提交评论