欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

数据结构图书管理系统

  • 资源ID:99352756       资源大小:74.92KB        全文页数:15页
  • 资源格式: DOC        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

数据结构图书管理系统

数 据 结 构课 程 设 计 说 明 书   学生姓名:学 号:学 院:专 业:题 目:成绩指导教师     年 月 日1 设计目的(小标题黑体五号字)设计一个计算机管理系统完成图书管理基本业务(数据可以存储在一个数据文件中,数据结构、具体数据自定)。2. 设计内容和要求具体功能有:1)每种书的登记内容包括书号、书名、著作者、出版单位、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;4)借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;5)归还:注销对借阅者的登记,改变该书的现存量。3本设计所采用的数据结构所用数据结构:线性表、查找、排序链表:用一组地址任意的存储单元存放线性表中的数据元素。以元素(数据元素的映象) + 指针(指示后继元素存储位置)= 结点(表示数据元素 或 数据元素的映象)以“结点的序列”表示线性表称作线性链表(单链表)单链表是一种链式存取的结构,为找第 i 个数据元素必须先找到第 i-1 个数据元素。因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i。(1)malloc(size)在内存的动态存储区申请一个长度为size字节的连续空间。(2)calloc(n,size)在内存的动态存储区申请n个长度为size字节的连续空间,函数返回值为分配空间的首地址。若此函数未被成功执行,函数返回值为0。(3)free(p)释放由指针p所指向的存储单元,而存储单元的大小是最近一次调用malloc()或calloc()函数时所申请的存储空间。运用了单链表的插入、删除、排序、修改等一些操作!4 功能模块详细设计4.1 详细设计思想(一) 基本思想:(二) 图书信息录入、图书信息的查询、图书信息的排序、图书信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统。(三) 程序中的主要函数有:void main() /主函数int CreateListR(LinkList *L) /尾插法建表void LocateElem(LinkList *L) /查询 int Sort(LinkList *L) /递增有序排序(直接插入排序法)void Display(LinkList *L) /输出排序结果ModifyList(LinkList *L) /修改int ListDelete(LinkList *L) /删除 void Borrow(LinkList *L) /借阅void Return(LinkList *L) /归还图书信息的录入添加图书信息的查询模块图书信息的排序模块图书信息的修改模块图书信息的删除模块图书的借阅模块图书的归还模块退出图书管理系统图 书 管 理 系 统主 程 序 模 块4.2 核心代码#include <stdio.h>#include <string.h>#include<stdlib.h>#include<malloc.h>typedef struct int num;char name20;char author20;char press20;int count;char price10; ElemType;typedef struct LNode/定义单链表结点类型ElemType data;struct LNode *next; LinkList;void InitList(LinkList *L) /初始化线性表L = (LinkList *) 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 = (LinkList *) 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("录入成功!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->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 name110, author110, press110;printf(" 1 按书名查询:n");printf(" 2 按作者名查询: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(name1, p->data.name) != 0) /查找图书书名p = p->next;else printf("书号 书名 作者 出版社名称 存馆数量 定价n");printf("%dt%st%st%st%dt%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 2:printf("请输入图书作者:n");scanf("%s", author1);while (p != NULL ) if (strcmp(author1, p->data.author) != 0) /查找图书作者p = p->next;else printf("书号 书名 作者 出版社名称 存馆数量 定价n");printf("%dt%st%st%st%dt%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");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->data.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 != 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->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 t %st %st%dt %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 name110;printf("请输入要修改的图书的书名:n");scanf("%s", name1);while (p != 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");return 0;p = p->next;printf("不存在此图书n");return 0;int ListDelete(LinkList *L) /删除LinkList *p = L->next, *q = L;char name110;if (p != NULL ) printf("请输入要删除的书名:");scanf("%s", name1);while (p->next != NULL && strcmp(p->data.name, name1) != 0) p = 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 = NULL;printf("删除成功!n");return 0;void Borrow(LinkList *L) /借阅LinkList *p = L->next;char name110;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->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 name110;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->data.name) != 0)printf("错误!此图书不存在!n");else if (strcmp(name1, p->data.name) = 0) printf("该书归还成功!n");p->data.count+;void menu() /菜单函数printf("- n");printf(" 欢迎光临图书管理系统! n");printf("- n");printf("1.图书信息录入添加功能:n");printf("2.图书信息查询功能:n");printf("3.图书信息排序功能: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("请输入编号: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:Borrow(L);break;case 7:Return(L);break;case 0:printf("谢谢使用n");break;scanf("%d", &s);return 0;(此页附在说明书后,请在验收前填好)班级:11060141题目:图书馆管理系统学号姓名设计模块成绩1106014106王烨资料收集 修改和删除1106014122张艳明需求分析 任务书 查询和排序1106014130张攀程序调试 主函数跟借还

注意事项

本文(数据结构图书管理系统)为本站会员(nu****n)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!