当前位置:首页 >> 计算机软件及应用 >>

图书管理系统课程设计


滁州学院学年设计

学 年 设 计 报 告

设计题目

图书管理系统

作者姓名 戴康进、苏长艮、王宗宗、章成 所学专业 指导教师 计算机科学与技术 高超

2012 年 8 月 25 日—2012 年 9 月 2 日

1

滁州学院学

年设计

学年设计任务书
学年设计题目 组长 组别 组员 指 戴康进 2 苏长艮 王宗宗 章成 导 教 师 高超 设计一个图书管理系统 Microsoft Visual C++ 6.0、windows XP 1.熟悉 C++运行环境 2.完成图书管理系统部分设计 学年设计工作进度计划
序号 起止日期 工 作 内 容 分工情况

图书管理系统 学号 专业 2011211183 计算机科学与技术 班级 11 级计科一班

学 年 设 计 目 的 学年设计所需环境 学年设计任务要求

1 2 3 4 5

8-25~8-26 8-27~8-28 8-29~8-30 8-31~9-1 9-2

查找资料 编写代码 代码修改及调试 撰写学年设计报告 答辩

章成、苏长艮 章成、苏长艮、王宗宗、戴康进 戴康进 王宗宗、戴康进 全体都有

指导教师签字:







系(教研室)审核意见:

系(教研室)主任签字:







2

滁州学院学年设计

目录
引言 .................................................................................................................................................. 4 1.绪论 ............................................................................................................................................... 4 1.1 课题背景............................................................................................................................ 4 1.2 图书馆信息化管理 ............................................................................................................ 5 2.开发工具简介................................................................................................................................ 5 3.图书管理系统的设计与实现 ........................................................................................................ 5 3.1 图书管理系统实现目标 .................................................................................................... 5 3.2 图书管理系统总体设计 .................................................................................................... 6 3.3 图书管理系统所用模块 ..................................................................................................... 7 3.4 图书管理系统程序设计 ..................................................................................................... 7 4.心得体会...................................................................................................................................... 17 5.结束语.......................................................................................................................................... 17 参考文献......................................................................................................................................... 17 致谢 ................................................................................................................................................ 33

3

滁州学院学年设计

图书管理系统

引言
随着社会经济的迅速发展和现代科学技术的进步, 人类社会正逐渐走向现代化。 计算机 事业的飞速发展, 使得以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。 同时, 随着经济文化水平的显著提高, 人们对生活质量及工作环境的要求也越来越高。 图书馆拥有 丰富的文献信息资源,是社会系统的重要组成部分,在信息社会中的作用愈来愈重要。 图书管理系统是我国大部分学校或其他部门不可缺少的部分,书籍是人类的精神食粮, 尤其对一些学校来说,图书馆非常重要。在软件开发中,以计算机图书为主,称“计算机图 书管理系统” 。计算机图书管理系统能够为用户实现借阅图书、管理等,随着计算机科学的 日渐成熟, 其强大的功能已为人们深刻认识, 它已进入人类社会的各个领域并发挥着越来越 重要的作用。作为计算机应用的一部分,使用计算机对图书资源信息进行管理,具有着手工 管理所无法比拟的优点,例如:查阅迅速、安全性高、可靠性高、存储量大、保密性好、成 本低等。计算机图书管理系统能够单一定向计算机图书方面,具有实用、精简功能等效率, 这些优点能够极大的提高图书管理的效率,也是企业、学校的科学化、正规化管理,与世界 接轨的重要条件。

1.绪论
1.1 课题背景
随着人类社会的发展,人类对知识的需求也不断增长。在这种形势下,书籍就渐渐的成 为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据一定的位 置, 如何科学的管理图书馆不仅关系到读者求知的方便程度, 也关系到图书馆的发展, 因此, 开发一套完善的图书管理系统就必不可少了。 随着现代社会信息量的不断增加, 图书的种类及信息也越来越多, 如何来管理庞大的图 书信息成为一大难题, 如何以一种便捷的管理方式加快图书流通信息的反馈速度, 提高工作 效率, 已经成为学校图书馆管理的关键问题。 信息技术的飞速发展给图书馆的管理带来了全 新的变革, 采用图书管理系统对图书馆的运作进行全程管理, 不仅是图书馆摆脱了以往人工
4

滁州学院学年设计

管理产生的一系列问题,而且让图书馆提高了管理效率,减少了管理成本。让图书馆进行更 有效的管理。

1.2 图书馆信息化管理
图书馆的信息化从最初的对图书馆业务管理实行信息化发展到图书馆各个业务流程进 行系统和网络化管理,并建立大规模以个体文献目录联机查询为主的资源共享系统。进入 21 世纪,充分利用计算机网络和信息技术,逐步实现不同载体的实体文献的信息化管理和 多方位的联机查询。 图书馆的计算机信息化管理, 就是将传统图书馆业务的手工操作转变成 由计算机管理,既图书馆的图书期刊、音像资料等各种载体文献的采编、典藏、流通、检索 及常规业务管理工作,采用计算机技术,进行高效、准确的信息化管理。其根本目的是实现 区域内及地区、国家、国家间的资源共享。要达到资源共享的目的,必须制定一定的标准, 只有各个系统都遵循这些标准,不同的系统间才可以实现联机查询、资源共享的效果。

2.开发工具简介
Visual C++ 6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译 为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自 1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专 业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0), 但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所 以实际中,更多的是以Visual C++6.0为平台。

3.图书管理系统的设计与实现
3.1 图书管理系统实现目标
图书管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了 解并借阅、还书的平台。根据系统界面的提示信息对图书馆信息进行查询、初始化等操作。 1、能够完成对图书和读者信息的录入、修改和删除(图书编号不允许修改) ; 2、假定每名读者只能借一本书; 3、能够根据图书名称、编号、作者或者出版社进行查询; 4、能够查询某本书现在被哪个/哪些作者借走。

5

滁州学院学年设计

3.2 图书管理系统总体设计
图书管理系统分为三大模块:图书信息模块、读者信息模块、查询信息模块。 图书信息模块:图书信息录入(添加图书)、图书信息修改、图书信息删除、图书信息 显示、图书信息读入、图书信息保存。 读者信息模块:读者信息录入(借书)、读者信息修改、读者信息删除。 查询信息模块:按图书名称查询、按图书编号查询、按图书作者查询、按图书出版社查 询、查询某本书现在被哪个读者借走。

图书管理系统

读 入 图 书 信 息

显 示 图 书 信 息

查 询 模 块

添 加 图 书

修 改 图 书 信 息

删 除 图 书 信 息

借 书

删 除 读 者 信 息

修 改 读 者 信 息

保 存 图 书 信 息

图 书 名 称 查 询

图 书 编 号 查 询

图 书 作 者 查 询

图 书 出 版 社 查 询

返 回 主 菜 单

查 询 某 本 书 现 在 被 哪 个 读 者 借 走

退 出

图 3-1 图书管理结构

6

滁州学院学年设计

3.3 图书管理系统所用模块
图书信息模块: void insert(book1 L,book1 q) void xiugai(book1 L,char key[10]) void del(book1 L,int key) void print(book1 L) book1 duru(book1 L) void save(book1 L) 读者信息模块: void jieshu(book1 L,reader L2,char name1[10]) void xiugai2(reader L,char key[20]) void del2(reader L,char key[20]) 查询信息模块 void search1(book1 L,char key[10]) void search2(book1 L,int key) void search3(book1 L,char key[10]) void search4(book1 L,char key[20]) int chazhao2(reader L,char tushu[10]) /*按图书编号添加图书信息*/ /*按图书名称修改图书信息*/ /*按图书编号删除图书信息*/ /*显示图书信息*/ /*读入图书信息*/ /*保存图书信息*/ /*借书函数*/ /*按姓名修改读者信息*/ /*按姓名删除读者信息*/ /*按图书名称查询图书信息*/ /*按图书编号查询图书信息*/ /*按图书作者查询图书信息*/ /*按图书出版社查询图书信息*/ /*查询某本书现在被哪个读者借走*/

3.4 图书管理系统程序设计
在程序中采用结构体数组存储每本书的信息,每本书应包含如下几方面的信息:图书 名称、图书编号、图书数量、图书价格、图书种类、图书出版日期、图书作者、出版社以及 读者姓名、所在学院、读者编号、所借图书名称。要求将图书信息以文件的形式存放在磁盘 上。 此程序的主界面是由 12 个部分组成:1.读入图书信息 2.显示图书信息 3.查询模块 4. 添加图书 5.修改图书信息 6 删除图书信息 7 借书 8 删除读者信息 9.修改读者信息 10.保 存图书信息 11.查询某本书现在被哪个读者借走 0.退出。

7

滁州学院学年设计

图 3-2 程序主界面

(1) 参考数据结构(仅供参考) Typedef struct { char name[10];//图书名称 int serialNum;//图书编号 int number;//图书数量 float price;//图书价格 char class[10];// 图书种类(如:教材、著作等) char date[10];//图书出版日期,如 20090101 等 char author[10];//图书作者 char print[20];//出版社 } book; typedef struct{ char name[10];//姓名 char department[20];//所在学院 long ID;//读者编号 char bookname[10];//所借图书名称 } reader; (2) 图书信息的录入

8

滁州学院学年设计

图 3-3 图书信息录入 输入选择 4,输入图书信息即图书名称、图书编号、图书价格、图书数量、图书种类、图书 出版日期、图书作者以及出版社。 while((q->serianlNum>b->serianlNum)&&(b->next!=NULL)) { a=b; b=b->next; } if(L==b) L->next=q; else if(q->serianlNum<b->serianlNum||(q->serianlNum==(b->serianlNum))) { a->next=q; q->next=b; } else if(q->serianlNum>b->serianlNum)

9

滁州学院学年设计

{ b->next=q; q->next=NULL; } (3) 图书信息修改

图 3-4 图书信息修改 输入选择 5,输入需要修改的图书名称,然后输入修改后的图书信息。 while(p!=NULL) { if(strcmp(p->name,key)==0) { printf("图书名称 版社\n"); scanf("%s%f%d%s%s%s%s",p->name,&(p->price),&(p->number),p->clas,p->data,p->author,p-> print); printf("修改成功!\n"); break; } p=p->next; } } (4) 图书信息删除 图书价格 图书数量 图书种类 图书出版日期 图书作者 出

10

滁州学院学年设计

图 3-5 图书信息删除 输入选择 6,输入需要删除的图书编号。 while((p->serianlNum)!=key&&p->next!=NULL) { q=p; p=p->next; } if(p->serianlNum==key) { q->next=p->next; free(p); printf(" 完成删除!\n"); } else printf(" 删除失败!o\n"); } (5) 读者信息录入

11

滁州学院学年设计

图 3-6 读者信息录入 输入选择 7,输入姓名,再输入需要借的图书名称,然后输入自己的信息。 while(p1) { p2=p1; p1=p1->next; if(strcmp(p1->name,name1)==0) { printf("登记信息,请输入:\n"); tianjia(L2,q); p2->next=p1->next; break; } strcpy(q->name,name1); } (6) 读者信息修改

图 3-7 读者信息修改 输入选择 9,输入需要修改的读者姓名,再输入修改后的读者信息。 while(p) { q=p; p=p->next; if(strcmp(p->name,key)==0) { q->next=p->next; free(p); printf("完成删除\n"); break; } else
12

滁州学院学年设计

printf("删除失败"); break; } 读者信息删除

图 3-8 读者信息删除 输入选择 8,输入需要删除的读者姓名。 while(p) { q=p; p=p->next; if(strcmp(p->name,key)==0) { q->next=p->next; free(p); printf("完成删除\n"); break; } } (7) 查询模块

13

滁州学院学年设计

图 3-9 查询模块 输入选择 3,进入查询模块界面:输入选择 1,再输入图书名称即可查询图书的信息;输入 选择 2,再输入图书编号即可查询图书的信息;输入选择 3,再输入图书作者即可查询图书 的信息;输入选择 4,输入图书出版社即可查询图书的信息;输入选择 0,返回主界面。 /*按图书名称查询图书信息*/ while(p!=NULL) { p=p->next; if(strcmp(p->name,key)==0) { printf("查找成功!\n"); printf("图书名称 书作者 图书编号 图书价格 图书数量 图书种类 图书出版日期 图

出版社\n");

printf("%s%12d%12f%12d%12s%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->number ,p->clas,p->data,p->author,p->print); } break; } /*按图书编号查询图书信息*/ while(p!=NULL) { p=p->next; if(p->serianlNum==key) {

14

滁州学院学年设计

printf("查找成功!\n"); printf("图书名称 书作者 图书编号 图书价格 图书数量 图书种类 图书出版日期 图

出版社\n");

printf("%s%12d%12f%12d%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->number,p->c las,p->data,p->author,p->print); } break; } /*按图书作者查询图书信息*/ while(p!=NULL) { p=p->next; if(strcmp(p->author,key)==0) { printf("查找成功!\n"); printf("图书名称 书作者 图书编号 图书价格 图书数量 图书种类 图书出版日期 图

出版社\n");

printf("%s%12d%12f%12d%12s%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->number ,p->clas,p->data,p->author,p->print); } break; } /*按图书出版社查询图书信息*/ while(p!=NULL) { if(strcmp(p->print,key)==0) { p=p->next; printf("查找成功!\n"); printf("图书名称 书作者 图书编号 图书价格 图书数量 图书种类 图书出版日期 图

出版社\n");

printf("%s%12d%12f%12d%12s%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->number ,p->clas,p->data,p->author,p->print); }

15

滁州学院学年设计

break; } (8) 查询某本书现在被哪个读者借走

图 3-10 查询某本书现在被哪个读者借走 输入选择 11,输入图书名称即可查询。 while((p=p->next)!=NULL) { if(strcmp(p->bookname,tushu)==0) { printf("该书已被%s 借走!\n",p->name); break; } } if(p==NULL) { printf("该书没被借走!\n"); return 0; } else

16

滁州学院学年设计

return 1; }

4.心得体会
经过一个多星期的编译原理学年设计,在我们的努力下,顺利完成该学年设计。 通过该学年设计, 掌握了编译程序工作的基本过程及其各阶段的基本任务, 熟悉了编译 程序总流程框图, 了解了编译程序的生成过程及其相关的技术, 对课本上的知识也有了更深 的理解。老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。现在终 于深刻的了解了这句话。经过这次的学年设计,发现书本上很深奥的知识变的更为简单,同 样,对实验原理也了有更深的理解。知道和理解了该理论在计算机中是怎样执行的,对该理 论在实践中的应用有深刻的理解。通过该课程设计,把死板的课本知识变得生动有趣,激发 了学习的积极性。 能够把课堂上学的知识通过自己设计的程序表示出来, 加深了对理论知识 的理解。 学年设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的 命令去除。除了课堂外,学年设计是最能学到东西的,最考验人的。在做学年设计的这段时 间,时刻都感到自己学的知识有多么的贫瘠。经过这次学年设计,让我们对 C 这门语言有 了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛 的体力。只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要 多次的更正才能达到所要的运行结果。

5.结束语
本图书管理系统主要实现了图书信息与读者信息的录入、修改、删除,实现了查询功能 的四个子功能,即按图书名称查询图书信息、按图书编号查询图书信息、按图书作者查询图 书信息、按图书出版社查询图书信息,同时实现了查询某本书现在被哪个读者借走。

参考文献
[1] 谭浩强.C 程序设计[M].北京:清华大学出版社,2000.5 [2] 张基温.C 程序设计案例教程[M].北京:清华大学出版社,2004.6.1 [3]jason1989626.C 图书管理系统程序.[EB/OL]. http://download.csdn.net/detail/jason1989626/1461427.doc,2009.7.4
17

滁州学院学年设计

[4] poptmk.C 语言图书管理系统.[EB/OL]. http://wenku.baidu.com/view/361e82641ed9ad51f01df22e.html.doc,2011.5.20 [5] lidiwe.C 语言图书管理系统论文.[EB/OL]. http://www.doc88.com/p-19912862261.html.doc,2011.4.22 [6].旋转 623.个人图书管理系统.[EB/OL]. http://tieba.baidu.com/p/887712076.doc,2010.9.13 [7] yueliang009.C 语言的图书管理系统.[EB/OL]. http://wenda.tianya.cn/question/537e8ba5d7babe3e.doc,2009.10.11 [8].wwttqq85538649.C 语言图书管理系统课程设计.[EB/OL]. http://download.csdn.net/download/wwttqq85538649/2938290.doc,2010.12.25

18

滁州学院学年设计

附录
#include"stdio.h" #include"stdlib.h" #include"string.h"

typedef struct book { char name[10]; int serianlNum; float price; int number; char clas[10]; char data[10]; char author[10]; char print[20]; struct book *next; }*book1; typedef struct student { char name[20]; char department[20]; long ID; char bookname[10]; struct student *next; }*reader;

/*图书名称*/ /*图书编号*/ /*图书价格*/ /*图书数量*/ /*图书种类(教材,著作)*/ /*图书出版日期,如 20090101*/ /*图书作者*/ /*出版社*/ /*指针域*/

/*姓名*/ /*所在学院*/ /*读者借书卡编号*/ /*所借图书名称*/ /*指针域*/

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /*图书存储建立一个单链表*/ book1 InitList1(book1 L) { L=(book1)malloc(sizeof(struct book)); /*创建一个头结点,用头指针指向头结点*/ L->next=NULL; /*最初时头结点指针域为 NULL*/ return L; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*读者存储建立一个单链表*/ reader InitList2(reader L) { L=(reader)malloc(sizeof(struct student));

19

滁州学院学年设计

L->next=NULL; return L; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*读入图书信息*/ book1 duru(book1 L) { book1 head,p,q; head=p=(book1)malloc(sizeof(struct book)); p->next=NULL; FILE *fp; if((fp=fopen("C:\\Documents and Settings\\k75\\桌面\\图书信息.txt","rb+"))==NULL) 从桌面打开文件图书信息.txt*/ { printf("file not open!\n"); exit(0); } while(!feof(fp)) { q=(book1)malloc(sizeof(struct book));

/*

fscanf(fp,"%s%d%f%d%s%s%s%s",q->name,&(q->serianlNum),&(q->price),&(q->number) ,q->clas,q->data,q->author,q->print); q->next=p->next; p->next=q; /*q 值赋给 p 所指结点的指针域成员 next*/ p=q; /*q 值赋给 p 以作下一次循环准备*/ } L=head; /*head 赋给 L,L 则为头指针*/ fclose(fp); printf("成功读入\n"); return L; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*显示图书信息*/ void print(book1 L) { book1 p; p=L->next;

20

滁州学院学年设计

printf("图书名称 图书编号 图书价格 图书数量 图书种类 图书出版 日期 图书作者 出版社\n"); int n; for(n=0;n<100;n++) { if(strlen(p->name)!=0 && strlen(p->print)!=0) { printf("%s%12d%12f%12d%12s%12s%12s%11s \n",p->name,p->serianlNum,p->price,p->number,p->clas,p->data,p->author,p->print); n=n+1; break; } } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*查询模块*/ void search1(book1 L,char key[10])/*按图书名称查询图书信息*/ { book1 p; p=L; printf("请你输入图书名称: "); scanf("%s",key); while(p!=NULL) { p=p->next; if(strcmp(p->name,key)==0) { printf("查找成功!\n"); printf("图书名称 图书编号 图书价格 图书数量 版日期 图书作者 出版社\n");

图书种类 图书出

printf("%s%12d%12f%12d%12s%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->nu mber,p->clas,p->data,p->author,p->print); } else printf("查找失败!\n"); break; }

21

滁州学院学年设计

} /*按图书编号查询图书信息*/ void search2(book1 L,int key) { book1 p; p=L; printf("请你输入图书编号: "); scanf("%d",&key); while(p!=NULL) { p=p->next; if(p->serianlNum==key) { printf("查找成功!\n"); printf("图书名称 图书编号 出版日期 图书作者 出版社\n");

图书价格

图书数量

图书种类

图书

printf("%s%12d%12f%12d%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->number, p->clas,p->data,p->author,p->print); } else printf("查找失败!\n"); break; }

} /*按图书作者查询图书信息*/ void search3(book1 L,char key[10]) { book1 p; p=L; printf("请你输入图书作者: "); scanf("%s",key); while(p!=NULL) { p=p->next; if(strcmp(p->author,key)==0) { printf("查找成功!\n");

22

滁州学院学年设计

出版日期

printf("图书名称 图书编号 图书作者 出版社\n");

图书价格

图书数量

图书种类

图书

printf("%s%12d%12f%12d%12s%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->nu mber,p->clas,p->data,p->author,p->print); } else printf("查找失败!\n"); break; }

} /*按图书出版社查询图书信息*/ void search4(book1 L,char key[20]) { book1 p; p=L; printf("请你输入图书出版社: "); scanf("%s",key); while(p!=NULL) { p=p->next; if(strcmp(p->print,key)==0) { printf("查找成功!\n"); printf("图书名称 图书编号 出版日期 图书作者 出版社\n");

图书价格

图书数量

图书种类

图书

printf("%s%12d%12f%12d%12s%12s%12s%11s\n",p->name,p->serianlNum,p->price,p->nu mber,p->clas,p->data,p->author,p->print); } else printf("查找失败!\n"); break; }

} ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

23

滁州学院学年设计

/*按图书编号添加图书信息*/ void insert(book1 L,book1 q) { book1 a,b; q=(book1)malloc(sizeof(struct book)); printf("图书名称 图书编号 图书价格 图书数量 图书种类 图书出版日期 图书作者 出版社\n"); scanf("%s%d%f%d%s%s%s%s",q->name,&(q->serianlNum),&(q->price),&(q->number),q>clas,q->data,q->author,q->print); b=L; while((q->serianlNum>b->serianlNum)&&(b->next!=NULL)) { a=b; b=b->next; } if(L==b) L->next=q; else if(q->serianlNum<b->serianlNum||(q->serianlNum==(b->serianlNum))) { a->next=q; q->next=b; } else if(q->serianlNum>b->serianlNum) { b->next=q; q->next=NULL; } printf("添加成功\n"); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*按图书名称修改图书信息,图书编号不能修改*/ void xiugai(book1 L,char key[10]) { book1 p; p=L; printf("输入要修改的图书名称: "); scanf("%s",key); while(p!=NULL) {

24

滁州学院学年设计

if(strcmp(p->name,key)==0) { printf("图书名称 图书价格 书作者 出版社\n");

图书数量

图书种类

图书出版日期



scanf("%s%f%d%s%s%s%s",p->name,&(p->price),&(p->number),p->clas,p->data,p->autho r,p->print); printf("修改成功!\n"); break; } p=p->next; } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*按图书编号删除图书信息*/ void del(book1 L,int key) { book1 p,q; if(L->next==NULL) { printf("空链表!\n"); } p=L; printf("请你输入要删除的图书编号: "); scanf("%d",&key); while((p->serianlNum)!=key&&p->next!=NULL) { q=p; p=p->next; } if(p->serianlNum==key) { q->next=p->next; free(p); printf(" 完成删除!\n"); } else printf(" 删除失败!\n"); }

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

25

滁州学院学年设计

/*按读者姓名查找信息*/ int chazhao1(reader L,char key[20]) { reader p; p=L; printf("请你输入姓名: "); scanf("%s",key); while(p!=NULL) { if(strcmp(p->name,key)==0) break; p=p->next; } if(p==NULL) return 0; else return 1; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*查询某本书现在被哪个读者借走*/ int chazhao2(reader L,char tushu[10]) { reader p; p=L; printf("请你输入书名: "); scanf("%s",tushu); while((p=p->next)!=NULL) { if(strcmp(p->bookname,tushu)==0) { printf("该书已被%s 借走!\n",p->name); break; } } if(p==NULL) { printf("该书没被借走!\n"); return 0; } else return 1;

26

滁州学院学年设计

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*添加读者信息,添加到链表表头*/ void tianjia(reader L2,reader q) { q=(reader)malloc(sizeof(struct student)); printf("姓名 所在学院 借书卡编号 借的书名称\n"); scanf("%s%s%ld%s",q->name,q->department,&(q->ID),q->bookname); q->next=L2->next; L2->next=q; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*借书函数*/ void jieshu(book1 L,reader L2,char name1[10]) { book1 p1,p2; reader q; char key[20]; p1=L; if(chazhao1(L2,key)==1) printf("对不起,你不能借书,按规定每人只能借一本书!\n"); else { printf("请你输入你要借的书名称: "); scanf("%s",name1); while(p1) { p2=p1; p1=p1->next; if(strcmp(p1->name,name1)==0) { printf("登记信息,请输入:\n"); tianjia(L2,q);

27

滁州学院学年设计

p2->next=p1->next; printf("借书成功"); break; } strcpy(q->name,name1); } if(strcmp(p1->name,name1)!=0) printf("对不起,你要借的书暂时没有\n"); }

} ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*按姓名删除读者信息*/ void del2(reader L,char key[20]) { reader p,q; if(L->next==NULL) { printf("空链表!\n"); } p=L; printf("请你输入要删除的读者姓名: scanf("%s",key); while(p) { q=p; p=p->next; if(strcmp(p->name,key)==0) { q->next=p->next; free(p); printf("完成删除\n"); break; } else printf("删除失败"); break; }

");

28

滁州学院学年设计

} ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*按姓名修改读者信息*/ void xiugai2(reader L,char key[20]) { reader p; p=L; printf("输入要修改的读者姓名: "); scanf("%s",key); while(p!=NULL) { p=p->next; if(strcmp(p->name,key)==0) { printf("姓名 所在学院 借书卡编号 所借图书名称\n"); scanf("%s%s%ld%s",p->name,p->department,&(p->ID),p->bookname); printf("修改成功\n"); break; } else printf("修改失败\n"); break;

} } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*保存图书信息*/ void save(book1 L) { book1 info; info=(book1)malloc(sizeof(struct book)); FILE *fp; if((fp=fopen("C:\\Documents and Settings\\k75\\桌面\\图书信息.txt","wb"))==NULL) { printf("file not open!\n"); exit(0); } for(info=L->next;info;info=info->next)

29

滁州学院学年设计

fprintf(fp,"%40s%40d%40f%40d%40s%40s%40s%40s",info->name,info->serianlNum,info>price,info->number,info->clas,info->data,info->author,info->print); /*fprintf 语句里不可加\n 换行,写入数据留有合适宽度,防止不能正确读出*/ fclose(fp); printf("成功保存文件!\n"); }

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*主函数*/ void main() { book1 L1,q; reader L2; int i,j,key2,key6; char key1[10],key3[10],key4[20],key5[10],key7[20],key8[20],name[10],tushu[10]; L1=InitList1(L1); L2=InitList2(L2); printf(" 菜单 \n"); printf(" ****************************************************\n"); printf(" 1.读入图书信息 2.显示图书信息 \n"); printf(" 3.查询模块 4.添加图书 \n"); printf(" 5.修改图书信息 6.删除图书信息 \n"); printf(" 7.借书 8.删除读者信息 \n"); printf(" 9.修改读者信息 10.保存图书信息 \n"); printf(" 11.查询某本书现在被哪个读者借走 0.退出 \n"); printf(" ****************************************************\n"); printf("\n 输入选择 i: "); scanf("%d",&i); while(i!=0) { switch(i) { case 1: L1=duru(L1); break; case 2: print(L1); break; case 3: printf(" 查询模块

\n");

30

滁州学院学年设计

printf(" ****************************************************\n"); printf(" 1.图书名称查询 2.图书编号查询 \n"); printf(" 3.图书作者查询 4.图书出版社查询 \n"); printf(" 0.返回主菜单 \n"); printf(" ****************************************************\n"); printf("请选择: "); scanf("%d",&j); while(j) { switch(j) { case 1: search1(L1,key1); break; case 2: search2(L1,key2); break; case 3: search3(L1,key3); break; case 4: search4(L1,key4); break; case 0: break; } printf("请选择: "); scanf("%d",&j); } break; case 4: insert(L1,q); break; case 5: xiugai(L1,key5); break; case 6: del(L1,key6); break; case 7: jieshu(L1,L2,name); break; case 8: del2(L2,key7);

31

滁州学院学年设计

break; case 9: xiugai2(L2,key8); break; case 10: save(L1); break; case 11: chazhao2(L2,tushu);

case 0: break; } printf(" 菜单 \n"); printf(" ****************************************************\n"); printf(" 1.读入图书信息 2.显示图书信息 \n"); printf(" 3.查询模块 4.添加图书 \n"); printf(" 5.修改图书信息 6.删除图书信息 \n"); printf(" 7.借书 8.删除读者信息 \n"); printf(" 9.修改读者信息 10.保存图书信息 \n"); printf(" 11.查询某本书现在被哪个读者借走 0.退出 \n"); printf(" ****************************************************\n"); printf("\n 输入选择 i: "); scanf("%d",&i); } } /*图书管理系统*/

32

滁州学院学年设计

致谢
在查阅大量文献,并且经过不断的思考和反复的修改之后,我们终于完成了这次学年 设计。在此感谢,此次课程设计中给予指导的高超老师、杨传建老师、徐志红老师等,以及 王宗宗等同学的帮助。

评语:

评阅教师签名:
33







滁州学院学年设计

成 绩

34


相关文章:
课程设计实验报告--图书管理系统
因此结合开入式图书馆的要求,对 Access 数据库、SQL 语言原理应用程序设计, 数据库技术进行了较深入的学习和应用,主要完成对图 书管理系统的需求分析、功能模块...
图书管理系统设计报告
图书管理系统设计报告_生产/经营管理_经管营销_专业资料 暂无评价|0人阅读|0次下载|举报文档图书管理系统设计报告_生产/经营管理_经管营销_专业资料。目 录 目 录...
Java图书管理系统课程设计
Java图书管理系统课程设计_管理学_高等教育_教育专区。课题说明 1、设计一个图书信息管理系统 2、图书信息包括图书编号、书名、作者、出版社、出版日期、图书简介及图...
图书馆管理系统课程设计报告书
图书管理系统 班级: 软件 0801 班 小组成员: 刘静 蒋玲 李辉 姚华真 日期: 2011 年 1 月 10 日 数据库与信息系统课程设计 第一章 系统概述 1.1 系统...
图书管理系统毕业论文设计
图书管理系统毕业论文设计_IT/计算机_专业资料。图书管理系统设计 毕业论文 图书管理系统的设计和开发目第1章 录 ... 概论 ... 1 1.1 背景及...
C语言课程设计图书管理系统
C 语言课程设计 语言课程设计 姓名: 姓名:郭献安 班级:054101-13 班级:054101学号: 学号:20101001871 图书管理系统》 《图书管理系统》目录 题目要求及能实现的...
学校图书管理系统课程设计报告正文
学校图书管理系统课程设计报告正文 隐藏>> 软件工程课程作业用软件工程分析一个图书管理系统 计算机科学与技术学院 0450901 班王灵(2009211982) 范玖豪(2009211981) 向...
需求分析图书管理系统课程设计
40 《软件工程—原理、方法与应用》课程设计报告书 一、项目计划(一)项目内容在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行 之有效的图书管理系统来...
图书管理系统毕业设计
图书管理系统毕业设计_管理学_高等教育_教育专区。完整的毕业设计论文,jsp。安徽工业大学 安徽工业大学 毕业论文课题名称 学院 图书管理系统 计算机学院 计算机科学与...
软件工程图书管理系统课程设计
需求分析报告参考文献: 《图书管理系统需求分析报告》 系统开发小组 郑州航院信息统计职业学院 http://www.doc88.com/p-605926677790.html (3) 、概要设计报考...
更多相关标签:
图书馆管理系统 | 图书管理系统 | 图书管理系统设计报告 | 图书管理系统c语言 | 图书馆管理系统设计 | 图书管理系统源代码 | 图书信息管理系统设计 | 图书管理系统界面设计 |