数据结构课程设计-图书管理.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 图书 管理
- 资源描述:
-
数据结构课程设计报告 题目:6。3图书管理 学 院 计算机学院 专 业 软件工程 年级班别 2012级2班 学 号 3112006200 学生姓名 林迅玄 指导教师 李藜 难度 选做 独立完成率% 自评 5 有 成 绩 2014年7月1日 一、需求分析 【设计任务描述】设计一个计算机管理系统完成图书管理基本业务. 图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。 【输入的形式和输入值的范围】 进入管理界面输入整型数据0—7选择需要的操作 书号、现存量、总存量为大于零的整型数据,输入值的范围由系统整型数据范围而定。 书名、作者名、出版社名称为字符串类型数据,长度不大于20。 借书证号码,归还时间均先由字符串输入再由函数转换为整型数据,借书证号码 长度不大于5位字符,归还时间长度不大于8位。 【程序所能达到的主要功能】 1. 图书信息录入功能:每种书的登记内容包括书号、书名、著作者、出版社名称、现存量和总存量等。 2. 图书查询功能:分别可按书号、书名、作者、出版社名称查询图书,还可查询图书的当前借阅信息。 3. 排序功能:对书库中的图书按书号排序。 4. 图书修改功能:对选定图书信息进行修改. 5. 图书删除功能:某本书已无保留价值,将其从书库中注销。 6. 图书借阅功能:若图书现存量大于零,登记借阅者图书证号和归还日期,图书现存量减1. 7. 图书归还功能注销对借阅者的登记,改变该书的现存量. 【测试数据】 输入1进入图书录入信息: 输入需要录入的图书信息的个数,依次录入以下信息 书号 书名 作者 出版社名称 现存量 总存量 1 w e g 5 5 4 x h j 4 4 7 y e z 9 9 2 s a p 16 16 6 r e j 10 10 8 i f t 20 20 3 d f g 18 18 5 c l g 17 17 11 m l g 13 13 9 q a t 14 14 10 b o p 8 8 成功则输出“录入成功"错误则输出“此图书已存在!”、“请重新输入" 输入2进入图书查询: 1. 按书号查询 输入2 成功则输出 书号 书名 作者 出版社名称 现存量 总存量 2 s a p 16 16 错误则输出“对不起,不存在此图书!” 2. 按书名查询 输入c 成功则输出 书号 书名 作者 出版社名称 现存量 总存量 5 c l g 17 17 错误则输出“对不起,不存在此图书!" 3. 按作者名查询 输入e 成功则输出 书号 书名 作者 出版社名称 现存量 总存量 1 w e g 5 5 6 r e j 10 10 7 y e z 9 9 错误则输出“对不起,不存在此作者的图书!" 4。按出版社名称查询 输入g 成功则输出 书号 书名 作者 出版社名称 现存量 总存量 1 w e g 5 5 3 d f g 18 18 5 c l g 17 17 11 m l g 13 13 错误则输出“对不起,不存在此出版社出版的图书!” 输入4进入图书修改 输入w 正确则重新录入该书信息 书号 书名 作者 出版社名称 现存量 总存量 1 w e g 6 6 错误则输出“不存在此图书” 输入5进入图书删除 输入d 成功则输出“删除成功” 错误则输出“你输入的书名不存在,请核实后重新输入!” 输入3进入图书排序 输出 书号 书名 作者 出版社名称 现存量 总存量 1 w e g 6 6 2 s a p 16 16 4 x h j 4 4 5 c l g 17 17 6 r e j 10 10 7 y e z 9 9 8 i f t 20 20 9 q a t 14 14 10 b o p 8 8 11 m l g 13 13 输入6进入图书借阅 输入w 成功则继续输入 错误则输出“此图书不存在!" 输入15 成功则继续输入 错误则输出“输入有误,请重新输入" 输入20140101 成功输出“借书成功!" 错误则输出“此图书不存在!”、“不好意思,此书已借完!"、“你已经借了 这本书,不能够重复借!” 输入6进入图书借阅 重复输入w 17 20140715 w 25 20141109 输入2进入图书查询 输入2按书名查询 输入w 成功则输出 书号 书名 作者 出版社名称 现存量 总存量 1 w e g 3 6 错误则输出“对不起,不存在此图书!” 输入2进入图书查询 输入5查询图书借阅信息 输入w 成功则输出 借阅者图书证号 归还时间 15 20140101 17 20140715 25 20141109 错误则输出“不存在此图书” 输入7进入图书归还 输入w 成功则继续输入 错误则输出“此图书不存在!” 输入17 成功则输出“该书归还成功!”错误则输出“你输入的图书证号不正确!请重 新操作!” 输入2进入图书查询 输入5查询图书借阅信息 输入w 成功则输出 借阅者图书证号 归还时间 15 20140101 25 20141109 错误则输出“不存在此图书” 输入0退出系统 成功则输出“谢谢使用" 二、 概要设计 所用数据结构:线性表、查找、排序 借阅者的存储结构体数据类型是无表头单链表. typedef struct User{ //借阅者的存储结构体 int number; //借书证号码 int limitdate; //归还时间 struct User *next; //下一个借阅者 }User; //定义用户的的信息 图书信息的存储结构是带表头单链表. typedef struct { int num; //图书的书号 char name[20]; //书名 char author[20]; //著者 char press[20]; //出版社名称 int left; //现存量 int count; //总存量 User *user; //借阅该书的人 }ElemType; //定义书的信息 typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; } LinkList; 主程序流程以及各程序模块之间的调用关系: 主程序模块 图书管理系统 借阅者信息模块 图书信息的录入添加 图书信息的查询模块 图书信息的排序模块 图书信息的修改模块 图书信息的删除模块 图 书的 借阅模块 图书的归还模块 退出图书管理系统 开始 输入功能所对应的数字 输入的数字小于0大于7 执行所选功能 N Y重新输入 1。图书信息录入功能 输入需要录入的图书信息的个数n 循环输入n个图书信息 是否有此图书 向系统录入此书信息 Y Y N 2. 图书查询功能 选择查询方式 输入的数字小于0大于6 执行所选功能 Y N 按书号查询 遍历书库查找 输出书本信息 不存在此书 1. N Y 按书名查询 遍历书库查找 输出书本信息 不存在此书 2。 N Y 按作者查询 遍历书库查找 输出书本信息 不存在此作者的书 3。 N Y 按出版社查询 遍历书库查找 输出书本信息 不存在此作者的书 4. N Y 查询图书借阅信息 遍历书库查找 输出借阅信息 不存在此书 5。 N Y 返回 6。 按书号递增有序排序 (直接插入排序法) 3. 图书排序功能 输入书名 遍历书库查找 修改书本信息 不存在此书 4. 图书修改 N Y 输入书名 遍历书库查找 删除书本信息 不存在此书 5. 图书删除 N Y 6。图书借阅 输入书名 遍历书库查找 登记信息 不存在此书 是否可借 借出 失败 N Y Y N 输入书名 遍历书库查找 注销信息归还 不存在此书 是否借过此书 归还失败 7.图书归还 N Y N Y 三、 详细设计 原理: 图书管理系统要求实现许多的功能.将软件的设计任务分成许多小的功能模块进行设计。本程序经过分析分成以下几个子任务:图书信息录入、图书信息的查询、图书信息的排序、图书信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统。 伪码算法: 主程序: (1) 创建单链表L,分配内存并置空; (2) 输出选择菜单; (3) 输入选择操作数s; (4) Switch(s)执行所选操作; 图书录入功能: (1) 输入需要录入的图书信息的个数n; (2) For(i=1;i〈=n;i++)n次循环建立新结点s输入图书信息num、name、author、press、left、count; (3) if(s存在L) 重新输入; (4) else 录入成功; 图书查询功能:(t=书号、书名、作者、出版社,p=L—>next) (1) 输入k(与t对应);x=0; (2) While(若原单链表中有数据结点) if(k不等于p的t)p指向下一个结点; else 输出p的信息为所找信息并指向下一个结点,x++; Endwhile (3) if(p为空&&x为0)查询k不存在; 查询图书借阅信息: (1) 输入k(书名);p=L->next;x=0; (2) while(p不为空) if(k不等于p的书名) p指向下一个结点; else user指向p的第一个借阅者信息结点; for(;user不为空;user指向下一个结点) 循环输出借阅者图书证号和归还时间 x加1; p指向下一个结点; Endelse Endwhile (3)if(p为空&&x=0)不存在此图书; 图书排序功能:(直接插入排序法) (1) p指向L第一个数据结点; (2) if(若原单链表中有数据结点) r保存*p结点直接后继结点的指针; p后继指针置空,构造只含一个数据结点的有序表L; While(r不为空) 将r中的结点按递增顺序插入L中; Endwhile Endif 图书修改功能: (1)输入k(书名);p指向L第一个数据结点; (2)While(若原单链表中有数据结点) if(k等于p的书名)p修改信息并返回; p指向下一个结点; Endwhile; (3) 输出图书不存在; (4) 返回; 图书删除功能: (1)输入k(书名);p指向L第一个数据结点;q指向p前驱结点; (2)while(p不为空&&k不等于p的书名) p,q各自指向下一个结点; (3) if(p不是最后的结点)q指向p的下一个结点,删除成功; (4) if(p是最后的结点&&k不等于p的书名)书名不存在; (5) else q下一个结点置空,删除成功; 图书借阅功能: (1) 输入k(借阅书名);p指向L第一个数据结点; (2) while(p不为空&&k不等于p的书名) p指向下一个结点; (3) if(p是最后的结点&&k不等于p的书名)书名不存在; (4) else if(p书现存量小于1)此书已借完!; (5) else 注册借阅者信息结点s(图书证号和归还日期); if 1(p图书尚无人借阅) 借书成功;p结点的借阅者信息结点保存s;现存量减1; else 1 u保存p结点的第一个借阅者信息结点; while(u不为空&&u的图书证号不等于s的图书证号) u指向下一个结点; if 2(u为空&&u的图书证号不等于s的图书证号) 借书成功;u下一个结点结点保存s;现存量减1; else if(u的图书证号等于s的图书证号)不能够重复借; Endelse 1 Endelse 图书归还功能 (1)输入k(归还书名);p指向L第一个数据结点; (2)while(p不为空&&k不等于p的书名) p指向下一个结点; (3) if(p是最后的结点&&k不等于p的书名)书名不存在; (4) else if(k等于p的书名) 输入图书证号n; user指向p的第一个借阅者信息结点; if 1(n等于p的第一个借阅者信息结点的图书证号) 归还成功;p的第一个借阅者信息结点指向下一个结点;现存量加1; else 1 while(user后继指针不为空&&user的图书证号不等于n) pre保存user指针; user指向下一个结点; Endwhile if(user的图书证号等于n) 归还成功;pre的第一个结点指向user的下一个结点;现存量加1; else 输入图书证号不正确,重新操作; Endelse 1 Endelse 函数调用关系图 main Switch()() CreateListR(L) Search(L) Sort(L);Display(L); ModifyList(L); ListDelete(L); Borrow(L); Return(L); InitList(L) InUserMess(user) 四、 调试分析 (一) 问题: 录入图书信息后,输出图书信息时有些项目输出乱码。 采取的措施: 检查代码在输入语句中,定义为int型的项目在输入语句中加上取地址符号“&”。 (二)问题: 添加图书信息,虽然显示“录入成功!”,但是实际上并没有与之前已经存在的图书信息存放在一起。 采取的措施: 修改录入添加图书信息的算法,修改结点的指向,使之后添加的图书信息与之前已经存在的图书信息存放在一起. (三)问题: 多个借阅者借阅同一本图书,借阅成功后查询该书借阅者信息,发现只有最新的借阅者信息。 采取的措施: 修改借阅信息插入算法,修改结点指针指向,使之不会有旧结点被新结点覆盖的情况发生。 算法时空分析 基本操作 时间复杂度 CreateListR(L) O(n)~O(m·n) Search(L) O(n) Sort(L) O(n)~O(n2) Display(L) O(n) ModifyList(L) O(n) ListDelete(L) O(n) Borrow(L) O(n) Return(L) O(n) 由上表知除录入和排序函数,其它函数的时间复杂度都是O(n),但录入函数是受录入图书信息个数m影响,因此在录入一种书的信息时的时间复杂度也是O(n);此外排序函数在时间复杂度O(n)~O(n2)之间仍有改进的空间,这需要算法的改进,这也是需要继续努力学习的方面. 心得与体会 选择了“图书管理系统"这个课题。程序的大部分函数的算法在很短的时间内就差不多写好了,可是在调试的过程中却发现了不少问题。譬如录入图书的信息后,在进行图书信息排序时有些项目的输出会出现乱码。仔细检查后才发现在录入int型的数据时,没有添加取地址符号。还有在信息录入的过程中,程序也出现了漏洞。添加图书信息,虽然显示“录入成功!”,但是实际上并没有与之前已经存在的图书信息存放在一起。最后修改了录入图书信息的算法,修改了结点的指向,使之后添加的图书信息与之前已经存在的图书信息存放在一起.多个借阅者借阅同一本图书,借阅成功后查询该书借阅者信息,发现只有最新的借阅者信息。修改借阅信息插入算法,修改结点指针指向,使之不会有旧结点被新结点覆盖的情况发生。 在整个课程设计的过程中,遇到了很多困难,花费了很多时间去解决,也让我深刻体会到要圆满完成一个程序的不易.大到算法,小到一个符号,都会影响整个程序的执行状况。这也警惕我要注意细节. 五、 用户使用说明 开发软件环境: 操作系统为XP 开发环境软件为Ms visual C++6。0 开发语言为C语言 程序运行说明: 登入界面后输入0—7选择需要执行的操作; 选择1图书录入则输入需要录入的图书信息的个数n,然后依次录入图书信息,输出录入成功即可继续; 选择2图书查询输入0-6选择需要执行的操作; 选择1按书号查询 输入书号即可 成功则输出该书信息; 选择2按书名查询 输入书名即可 成功则输出该书信息; 选择3按作者查询 输入作者即可 成功则输出书库中该作者的所有著作; 选择4按出版社查询 输入出版社即可 成功则输出书库中该出版社出版的所有书籍; 选择5查询图书借阅信息 输入书名即可 成功则输出该书当前所有借阅者的信息(图书证号和归还日期); 选择3图书排序 程序自动将书库中的书按书号排序输出; 选择4图书修改 输入书名 成功则依次输入该书更新后的信息,成功后系统便会更新信息; 选择5图书删除 输入书名即可 成功则在书库中注销该书的信息; 选择6图书借阅 输入书名 成功则登记借阅者信息 输入图书证号和归还日期,若信息正确和该书现存量大于0,则借阅成功,该书现存量减1,并将该借阅者信息录入该书借阅信息中; 选择7图书归还 输入书名 成功则输入图书证号 若信息正确则该书现存量加1,注销该图书证号在该书借阅信息中的信息; 选择0退出系统。 六、 测试结果 程序运行开始界面 按照测试数据的步骤进行: 选择1。图书信息录入功能 输入需要录入的图书信息个数n=11; 依次按照测试数据输入11个图书信息 选择2图书查询功能 选择1按书号查询 输入书号2 继续选择2图书查询功能 选择2按书名查询 输入书名c 继续选择2图书查询功能 选择3按作者查询 输入作者名e 继续选择2图书查询功能 选择4按出版社查询 输入出版社名称g 选择4图书修改功能 输入要修改的书名w 按照测试数据输入修改信息 选择5图书删除功能 输入要删除的书名d 选择3图书信息排序功能 选择6图书借阅 输入要借阅的图书w 输入图书证号15 输入归还日期20140101 重复选择6输入w 17 20140715 w 25 20141109 选择2图书查询功能 选择5查询图书借阅信息 输入书名w 选择7图书归还 输入归还书书名w 输入图书证17 选择2图书查询功能 选择5查询图书借阅信息 输入图书名w 七、 附录 head。h //头文件 #include〈stdio。h〉 #include<stdlib。h〉 #include〈string。h> #include<malloc.h> #define TRUE 1 #define FALSE 0 typedef struct User{ //借阅者的存储结构体 int number; //借书证号码 int limitdate; //归还时间 struct User *next; //下一个借阅者 }User; //定义用户的的信息 typedef struct { int num; //图书的书号 char name[20]; //书名 char author[20]; //著者 char press[20]; //出版社名称 int left; //现存量 int count; //总存量 User *user; //借阅该书的人 }ElemType; //定义书的信息 typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; } LinkList; void InitList(LinkList *&L); //初始化线性表 int CreateListR(LinkList *&L); //录入图书 void Search(LinkList *&L); //查询图书 int Sort(LinkList *&L); //图书按书号递增有序排序 void Display(LinkList *&L); //输出排序结果 int ListDelete(LinkList *&L); //删除图书 int ModifyList(LinkList *&L); //修改图书信息 void InUserMess(User *user); //输入借阅者的信息 void Borrow(LinkList *&L); //借阅图书 void Return(LinkList *&L); //归还图书 main。cpp //主函数文件 #include<head.h> void main(){ //主函数 int s; LinkList *L; L=(LinkList *)malloc(sizeof(LinkList)); InitList(*&L); w:while(s!=0){ printf(”*|————-———-———-----—-—————--—-————--—-—————-————-—————————-———————-|* \n”); printf("*|—-——---—-—---—-—-————-欢迎光临图书管理系统!-—-—-———-—————-————-—-|* \n"); printf("*| 1.图书信息录入功能:-————————--————--—-——-- 2。图书信息查询功能:|* \n”); printf(”*|-——————-——-————-————-- ————-—-——--—-—————-—-—|* \n”); printf(”*| 3。图书信息排序功能:-----—--—--——-—————-——- 4。图书的修改功能: |* \n”); printf(”*|——-———--————-————————— —------—————-——-——-—-—|* \n”); printf(”*| 5.图书的删除功能: -—-—--——————-———————--— 6.图书借阅功能: |* \n”); printf(”*|----——---——-——————-——— ————--———————--——-————|* \n”); printf(”*| 7.图书归还功能: -—-——-——---——-———-—---— 0。退出系统: |* \n”); printf(”*|-——-———-————-—--—-——-— 请选择你需要的操作: ——-———-—-——--———-—-———|* \n”); printf(”*|—-———-——--———--—--——--——-—-————————---—-———---————-—-————-——-————|* \n"); scanf("%d",&s); switch(s){ case 1: CreateListR(L);break; case 2: Search(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;goto w; } } } InitList。cpp //线性表初始化函数 #include<head.h> void InitList(LinkList *&L){ //初始化线性表 L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L-〉next=NULL; } CreateListR。cpp //图书录入函数文件 #include〈head.h> 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%d”,&s—>data。num,s—>data。name,s->data。author,s—〉data.press,&s—〉data。left,&s—〉data。count); s—〉data。user=NULL; 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"); printf(”书号 书名 作者 出版社名称 现存量 总存量\n"); scanf("%d%s%s%s%d%d”,&s—〉data.num,s-〉data。name,s—〉data。author,s—〉data。press,&s—>data。left,&s-〉data.count); } q=q—〉next; } p-〉next=s; p=s; p—〉next=NULL; printf("录入成功!\n"); } return 0; } Search。cpp //图书查询函数文件 #include<head.h> void Search(LinkList *&L){ //查询 LinkList *p=L—>next; //p指向第一个数据结点 int c; int x=0,n; char name1[10],author1[10],press1[10]; printf(”* 1 按书号查询: \n”); printf(”* 2 按书名查询: \n"); printf("* 3 按作者名查询: \n"); printf(”* 4 按出版社名称查询: \n”); printf("* 5 查询图书借阅信息 \n”); printf("* 6 返回 \n"); printf(”* 请选择1——6进行操作: \n”); scanf(”%d”,&c); if(c〉6||c<1){ printf(”您的输入有误!\n"); scanf("%d”,&c); } switch(c){ case 1:printf("请输入图书书号: \n"); scanf("%d”,&n); while(p!=NULL){ if(n!=p—〉data。num) //查找图书书号 p=p-〉next; else{ printf(”书号 书名 作者 出版社名称 现存量 总存量\n”); printf("%d %s %s %s %d %d",p—〉data。num,p—〉data。name,p-〉data.author,p-〉data。press,p—>data。left,p-〉data.count); printf(”\n”); p=p->next; x++; } } if (p==NULL&&x==0) printf(”对不起,不存在此图书!\n”); break; case 2:printf("请输入图书书名: \n”); scanf(”%s”,&name1); while(p!=NULL){ if(strcmp( name1,p—>data。name)!=0) //查找图书书名 p=p—〉next; else{ printf(”书号 书名 作者 出版社名称 现存量 总存量\n”); printf(”%d %s %s %s %d %d",p—〉data。num,p—>data.name,p—>data。author,p—>data。press,p—>data。left,p—〉data。count); printf(”\n”); p=p—〉next; x++; } } if (p==NULL&&x==0) printf("对不起,不存在此图书!\n”); break; case 3:printf(”请输入图书作者:\n”); scanf("%s",author1); while(p!=NULL){ if(strcmp( author1,p—>data。author)!=0)//查找图书作者 p=p-〉next; else{ printf("书号 书名 作者 出版社名称 现存量 总存量\n"); printf(”%d %s %s %s %d %d",p-〉data。num,p—>data.name,p—〉data。author,p—〉data。press,p-〉data.left,p—〉data.count); printf(”\n”); p=p—>next ; x++; } }展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




数据结构课程设计-图书管理.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3925837.html