ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:58.50KB ,
资源ID:3599135      下载积分:7 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(数据结构图书管理系统.doc)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据结构图书管理系统.doc

1、 数 据 结 构 课 程 设 计 说 明 书       学生姓名: 学 号: 学 院: 专 业: 题 目: 成绩 指导教师        年 月 日 1 设计目的(小标题黑体五号字) 设计一个计算机管理系统完成图书管理基本业务(数据可以存储在一个数据文件中,数据结构、具体数据自定)。 2. 设计内容和要求 具体功能有:1)每种书的登记内容包括书号、书名、著作者、出版单位、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)采编入

2、库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;4)借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;5)归还:注销对借阅者的登记,改变该书的现存量。 3.本设计所采用的数据结构 所用数据结构:线性表、查找、排序 链表:用一组地址任意的存储单元存放线性表中的数据元素。 以元素(数据元素的映象) + 指针(指示后继元素存储位置) = 结点(表示数据元素 或 数据元素的映象) 以“结点的序列”表示线性表称作线性链表(单链表) 单链表是一种链式存取的结构,为找第 i 个数据元素必须先找到第 i-1 个数据元素。

3、因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i。 (1)malloc(size) 在内存的动态存储区申请一个长度为size字节的连续空间。 (2)calloc(n,size) 在内存的动态存储区申请n个长度为size字节的连续空间,函数返回值为分配空间的首地址。若此函数未被成功执行,函数返回值为0。 (3)free(p) 释放由指针p所指向的存储单元,而存储单元的大小是最近一次调用malloc()或calloc()函数时所申请的存储空间。 运用了单链表的插入、删除、排序、修改等一些操作! 4. 功能模块详细设计 4.1 详细设计思想 (一) 基本思想:

4、 (二) 图书信息录入、图书信息的查询、图书信息的排序、图书信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统。 (三) 程序中的主要函数有: void main() //主函数 int CreateListR(LinkList *L) //尾插法建表 void LocateElem(LinkList *L) //查询 int Sort(LinkList *L) //递增有序排序(直接插入排序法) void Display(LinkList *L) //输出排序结果 ModifyList(LinkList

5、L) //修改 int ListDelete(LinkList *L) //删除 void Borrow(LinkList *L) //借阅 void Return(LinkList *L) //归还 图书信息的录入添加 图书信息的查询模块 图书信息的排序模块 图书信息的修改模块 图书信息的删除模块 图 书的 借阅模块 图书的归还模块 退出图书管理系统 图 书 管 理 系 统 主 程 序 模 块 4.2 核心代码 #include #include #include

6、 #include typedef struct { int num; char name[20]; char author[20]; char press[20]; int count; char price[10]; } ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; } LinkList; void InitList(LinkList *L) //初始化线性表 { L = (L

7、inkList *) malloc(sizeof(LinkList)); //创建头结点 L->next = NULL; } int CreateListR(LinkList *L) //尾插法建表 { int i, n; LinkList *s, *q, *p; p = L; while (p->next != NULL ) p = p->next; printf("请输入需要录入的图书信息的个数:n="); scanf("%d", &n); for (i = 1; i < n + 1; i++) { s = (LinkLis

8、t *) malloc(sizeof(LinkList)); printf("书号 书名 作者 出版社名称 存馆数量 定价\n"); scanf("%d%s%s%s%d%s", &s->data.num, s->data.name, s->data.author, s->data.press, &s->data.count, s->data.price); q = L->next; if (q == NULL ) { p->next = s; p = s; p->next = NULL; printf("录入成

9、功!\n"); continue; } while (q != NULL ) { if (strcmp(s->data.name, q->data.name) == 0) { printf("此图书已存在!"); printf("请重新输入:\n"); scanf("%d%s%s%s%d%s", &p->data.num, p->data.name, p->data.author, p->data.press, &p->data.count, p->data.price); } q = q->

10、next; } p->next = s; p = s; p->next = NULL; printf("录入成功!\n"); } return 0; } void LocateElem(LinkList *L) //查询 { LinkList *p = L->next; //p指向第一个数据结点 int c; int x = 0; char name1[10], author1[10], press1[10]; printf(" 1 按书名查询:\n"); printf(" 2

11、 按作者名查询:\n"); printf(" 3 按出版社名称:\n"); printf(" 4 返回\n"); printf(" 请选择1--4进行操作:\n"); scanf("%d", &c); if (c > 4 || c < 1) { printf("您的输入有误!\n"); scanf("%d", &c); } switch (c) { case 1: printf("请输入图书书名: \n"); scanf("%s", name1); while (p != NULL ) { if (strcmp(

12、name1, p->data.name) != 0) //查找图书书名 p = p->next; else { printf("书号 书名 作者 出版社名称 存馆数量 定价\n"); printf("%d\t%s\t%s\t%s\t%d\t%s", p->data.num, p->data.name, p->data.author, p->data.press, p->data.count, p->data.price); printf("\n"); p = p->next; x++;

13、 } } if (p == NULL && x == 0) printf("对不起,不存在此图书!\n"); break; case 2: printf("请输入图书作者:\n"); scanf("%s", author1); while (p != NULL ) { if (strcmp(author1, p->data.author) != 0) //查找图书作者 p = p->next; else { printf("书号 书名 作者 出版社名称 存馆数量 定价\n"); prin

14、tf("%d\t%s\t%s\t%s\t%d\t%s", p->data.num, p->data.name, p->data.author, p->data.press, p->data.count, p->data.price); printf("\n"); p = p->next; x++; } } if (p == NULL && x == 0) printf("对不起,不存在此图书!\n"); break; case 3: printf("请输入图书的出版社名称: \n");

15、scanf("%s", press1); while (p != NULL ) { if (strcmp(press1, p->data.press) != 0) //查找图书出版社名称 p = p->next; else { printf("书号 书名 作者 出版社名称 存馆数量 定价\n"); printf("%d %s %s %s %d %s", p->data.num, p->data.name, p->data.author, p->d

16、ata.press, p->data.count, p->data.price); printf("\n"); p = p->next; x++; } } if (p == NULL && x == 0) printf("对不起!不存在此图书\n"); break; case 4: break; } } int Sort(LinkList *L) //递增有序排序(直接插入排序法) { LinkList *p = L->next, *q, *r; //p指向第一个数据结点 if (p !=

17、NULL ) //若原单链表中有一个或以上的数据结点 { r = p->next; //r保存*p结点直接后继结点的指针 p->next = NULL; //构造只含一个数据结点的有序表 p = r; while (p != NULL ) { r = p->next; //r保存*p结点的直接后继结点的指针 q = L; while (q->next != NULL && q->next->data.num < p->data.num) q = q->

18、next; //在有序表中找插入*p的直接前驱结点*q的位置 p->next = q->next; //将*p插入到*q之后 q->next = p; p = r; //扫描原单链表余下的结点 } } return 0; } void Display(LinkList *L) //输出排序结果 { LinkList *p = L->next; while (p != NULL ) { printf("书号 书名 作者 出版社名称 存馆数量 定价\n"); printf("%d \t %s \

19、t %s\t %s\t%d\t %s", p->data.num, p->data.name, p->data.author, p->data.press, p->data.count, p->data.price); printf("\n"); p = p->next; } } int ModifyList(LinkList *L) //修改 { LinkList *p = L; char name1[10]; printf("请输入要修改的图书的书名:\n"); scanf("%s", name1); while (p !=

20、 NULL ) { if (strcmp(name1, p->data.name) == 0) //查找所要修改的书名 { printf("请输入修改后的信息!\n"); printf("书号 书名 作者 出版社名称 存馆数量 定价\n"); scanf("%d%s%s%s%d%s", &p->data.num, p->data.name, p->data.author, p->data.press, &p->data.count, p->data.price); printf("修改成功!\n"); ret

21、urn 0; } p = p->next; } printf("不存在此图书\n"); return 0; } int ListDelete(LinkList *L) //删除 { LinkList *p = L->next, *q = L; char name1[10]; if (p != NULL ) { printf("请输入要删除的书名:"); scanf("%s", name1); } while (p->next != NULL && strcmp(p->data.name, name1) != 0) { p

22、 = p->next; q = q->next; } if (p->next != NULL ) //如果p此时不是最后一个节点,说明此时已经找到书 { q->next = p->next; printf("删除成功!\n"); return 0; } if (p->next == NULL && strcmp(name1, p->data.name) != 0) //如果p此时为最后一个结点并且没有找到与之相符的书名 { printf("你输入的书名不存在,请核实后重新输入!\n"); } else { q->next

23、 NULL; printf("删除成功!\n"); } return 0; } void Borrow(LinkList *L) //借阅 { LinkList *p = L->next; char name1[10]; printf("请输入要借阅的图书的书名:\n"); scanf("%s", name1); while (p->next != NULL && strcmp(name1, p->data.name) != 0) p = p->next; if (p->next == NULL && strcmp(name1, p->

24、data.name) != 0) printf("此图书不存在!\n"); else if (p->data.count < 1) printf("此书已借完!\n"); else if (strcmp(name1, p->data.name) == 0) { printf("借书成功!\n"); p->data.count--; } } void Return(LinkList *L) //归还 { LinkList *p = L->next; char name1[10]; printf("输入归还书的书名: \n"); s

25、canf("%s", name1); while (p->next != NULL && strcmp(name1, p->data.name) != 0) p = p->next; if (p->next == NULL && strcmp(name1, p->data.name) != 0) printf("错误!此图书不存在!\n"); else if (strcmp(name1, p->data.name) == 0) { printf("该书归还成功!\n"); p->data.count++; } } void menu() {

26、 //菜单函数 printf("---------------------------------------------------------- \n"); printf(" 欢迎光临图书管理系统! \n"); printf("----------------------------------------------------------- \n"); printf("1.图书信息录入添加功能:\n"); printf("2.图书信息查询功能:\n"); printf("3.图书信息

27、排序功能:\n"); printf("4.图书的修改功能:\n"); printf("5.图书的删除功能:\n"); printf("6.图书借阅功能:\n"); printf("7.图书归还功能:\n"); printf("0.退出系统:\n"); printf("请选择你需要的操作:\n"); } int main() //主函数 { int s; LinkList *L; L = (LinkList *) malloc(sizeof(LinkList)); InitList(L); menu(); printf("请输入编号:

28、\n"); scanf("%d", &s); while (s != 0) { switch (s) { case 1: CreateListR(L); break; case 2: LocateElem(L); break; case 3: Sort(L); Display(L); break; case 4: ModifyList(L); break; case 5: ListDelete(L); break; case 6: Borro

29、w(L); break; case 7: Return(L); break; case 0: printf("谢谢使用\n"); break; } scanf("%d", &s); } return 0; } (此页附在说明书后,请在验收前填好) 班级:11060141 题目:图书馆管理系统 学号 姓名 设计模块 成绩 1106014106 王烨 资料收集 修改和删除 1106014122 张艳明 需求分析 任务书 查询和排序 1106014130 张攀 程序调试 主函数跟借还 THANKS !!! 致力为企业和个人提供合同协议,策划案计划书,学习课件等等 打造全网一站式需求 欢迎您的下载,资料仅供参考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服