软件工程课程设计图书管理系统
1目标本系统通过强大的计算机技术给图书管理人员和读者借、还书带来便利。
本系统除了图书馆内管理的一般功能还外,还包括网上在线查询图书信息、查询本人的借阅情况和续借等功能。
目标还包括:减少人力与管理费用;提高信息准确度;改进管理和服务;建立高效的信息传输和服务平台,提高信息处理速度和利用率;系统设计优良,界面设计精美、友好、快捷,人性化设计,后台管理功能强大、效率高;更简便、信息化程度更高的图书管理流程;2用户的特点本软件的最终用户是面向管理员(图书管理员和其它管理人员)、读者(老师和同学等),他们都具有一定的计算机应用基础,可以比较熟练操作计算机。
管理员和读者都是经常性用户。
系统维护人员为计算机专业人员,熟悉数据库、操作系统、网络维护工作。
维护人员为间隔性用户。
3. 需求规定在图书管理系统中,管理员要为每个读者建立借阅账户,并给读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。
持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。
借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。
然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。
最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。
归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。
如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。
然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。
图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。
为系统维护人员提供权限管理、数据备份等通用功能。
发到你百度信息里了应该对你的论文有帮助
急求图书管理系统课程设计报告一份。
。
可行性分析报告 我们小组的信息系统开发课程设计题目是:图书管理系统开发。
系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。
本系统主要实现对图书馆信息的管理,主要功能为管理有关读者,书籍,借阅和管理者的信息等。
本系统结构分为读者信息管理模块,书籍信息管理模块,借阅信息管理模块,管理者信息管理模块。
读者信息管理部分有两方面的功能,可以浏览读者的信息,可以对读者信息进行维护。
书籍信息管理可以浏览书籍的信息,可以对书籍信息进行维护。
借阅信息管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。
管理者信息管理可以显示数据库中管理者的情况,可以对管理者信息进行维护。
可见,本系统并不复杂,主要解决的问题是利用关键字对数据库进行查询。
背景 近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。
我们小组开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
从以前的手工管理的记录中我们可以发现这样的问题: 1.检索速度慢、效率低 因为图书馆的藏书种类多、数量多,将藏书准确地分门别类,快速检索,手工进行非常困难往往是终于查到了书的信息,馆中没有此书或已被别人借走。
图书馆的规模越大,这个问题越突出。
2.借书、还书工作量大 借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、 还书登记、实存图书的更新以及借出图书超期、遗失等的处理,其工作量之大,往 往是人工操作所难以胜任的。
而且经常会出现这样那样的差错。
3.图书统计工作难、藏书更新不能及时完成。
图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性地进行,藏书的知识结构得不到良好地控制。
系统开发的重点与难点 系统出现了一些技术难点大致如下: 1、建立合理的表结构,避免数据冗余 各表通过特定字段实现不同表的数据连接,避免数据冗余,需要设计简洁高效的表结构。
2、建立相当的系统安全性 登录用户身份的验证机制的设计、操作页面的权限保护。
3、建立严密的数据表操作机制 同一表有可能在多个模块中被修改,所以严密的数据表操作机制的建立十分比较困难的,但也是必须的。
除了设计时必须有相当程度的考虑,在编制时更应加强程序逻辑的可靠性和程序调试的全面性。
可行性分析 1.技术可行性 此次信息系统开发是大学专业知识的一次综合应用与提高,我们小组可以在主教5楼机房完成系统开发。
该机房计算机配置肯定能满足系统开发的要求。
我们小组可以选定两三台计算机,建立系统开发环境,主要是安装数据库工具(MS SQL SERVER 2000),应用程序开发工具( VISUL BASIC 6.0或DELPHI),Office程序组以及网络传输工具。
我们小组的部分成员有计算机,配置是Pentium4 1.5G,256M以上内存,80G以上硬盘,可连网。
小组成员之间可以通过QQ或电话进行即时交流,协调开发工作,解决开发工作中出现的问题。
就技术力量来说,我们小组可以完成此次开发工作。
开发过程中会出现许多问题,有我们预想之中的,也有一些没有我们预想到,但,我们有信心克服一切困难。
该学期,我们小组各成员已经学习了SQL SERVER,对网络技术和操作系统也有系统的了解,有些成员熟悉计算机原理,能解决常见的硬件故障和硬件选择。
目前,图书管理信息系统已得到了大量应用,有许多可供参考的成功系统。
而且,网上有许多关于VISUL BASIC编程的资料和SQL SERVER方面的资料。
从技术角度考虑,此信息系统开发可行。
2.经济可行性 目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上十分有限。
而且,目标系统并不是十分的复杂,开发的周期较短,人员经济支出有限。
当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时,也为系统的进一步推广创造了条件。
这带来的经济回报将远超过支出,并且最重要的一点是该软件的开发可以给我们对系统的开发有个全面的认识。
从经济角度考虑,此信息系统开发可行。
3. 法律上可行 整个系统由于是自行开发,自行使用,所以系统本身不存在法律上的版权争议。
在服务...
C语言课程设计-图书管理系统
我只能给你个简陋的东西。
这个你还得自己慢慢改。
(只要你能看懂)自己看着办吧#include #include #include #include #define MAX_NUM 45struct studenter { int ID; char Name[10]; int Age; char Sex[2]; int Birthday; char Adress[15]; char TelNum[12]; char Email[10];};typedef struct studenter STUDENT;void input(STUDENT stu[],int Max,int cn);int findStudentID(STUDENT stu[],int findID,int Max);void DisplayInfor(STUDENT stu[],int Max);void DispMainMenu();void DispQueryMenu();char choice();int InforInput(STUDENT stu[],int cn);void QueryInfor(STUDENT stu[],int Max);void EditInfor(STUDENT stu[],int Max);void DispMainMenu(){ printf("**************学生信息管理系统1.0**************\n"); printf("\t1--学生信息录入 \t2--学生信息修改\n"); printf("\t3--学生信息查询 \t4--学生信息删除\n"); printf("\t5--学生信息排序 \t0--退出\n"); printf("************************************************\n"); printf("请选择(0--5):");}void DispQueryMenu(){ printf("*****************请选择查询方式*****************\n"); printf("\t1--按学号查询; \t2--按姓名查询\n"); printf("************************************************\n"); printf("请选择(1--2):");}char choice(){ char select; select=getche(); getch(); return (select);}void DisplayInfor(STUDENT stu[],int Max){ int i; printf("\n 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n"); for(i=0;iMAX_NUM) { printf("您输入的人数太多,大于%d人!\n",MAX_NUM); return (0); } input(stu,number,cn) ; return (number+cn);}void QueryInfor(STUDENT stu[],int Max){ char select; int i; int findID; char findNAME[10]; DispQueryMenu(); select=choice(); switch (select) { case '1': printf("\n按学号查询\n请输入学生的学号: "); scanf("%d",&findID); if ((i=findStudentID(stu,findID,Max))!=-1) { printf("查找结果如下:\n"); printf(" 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail"); printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); } else printf("您输入的学号不存在!\n"); break; case '2': printf("\n按姓名查询\n请输入学生的姓名: "); scanf("%s",&findNAME); if ((i=findStudentNAME(stu,findNAME,Max))!=-1) { printf("查找结果如下:\n"); printf(" 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail"); printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); } else printf("您输入的姓名不存在!\n"); break; default : printf("选择错误!\n"); }}void EditInfor(STUDENT stu[],int Max){ int i; int findID; printf("\n请输入学生的学号: "); scanf("%d",&findID); if ((i=findStudentID(stu,findID,Max))!=-1) { printf("姓 名: %s\n",stu[i].Name); printf("原信息:%8d %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); printf("\n 请输入新的学号 (8个字符以内):",i+1); scanf("%d",&stu[i].ID); printf("\n\t\t姓名(10个字符以内):"); scanf("%s",stu[i].Name); printf("\n\t\t\t 年龄...
求一份图书管理系统的数据库设计方案
1. 对图书馆的信息建几个表,考虑表之间的关系。
2.系统功能的基本要求:a) 对数据库的编辑功能:对图书馆信息记录的添加、修改、删除。
b) 对图书的统计(国内图书、国外图书、计算机图书、外语图书、中文图等各类图书的统计)。
c) 对图书的查询(按关键字查询、模糊查询等);d) 对报表的打印;e) 界面友好。
1、概述包括项目背景、编写目的、软件定义、开发环境等内容。
2、需求分析问题陈述、需完成的功能。
用数据流图、数据字典、判断树等完成。
3、数据库概念设计画出ER模型图4、数据库逻辑设计把ER模型图转换为关系表。
描述每一个基本表关系。
要求所有关系达到BCNF范式。
定义视图、定义索引、主关键字、定义权限。
5 物理设计 主要用到存取方法6、结束语写出完成本课程设计的心得,领会数据库理论与软件开发实践的关系。
有哪些收获。
软件还需要哪些改进。
设计结果:设计报告,源程序代码。
跪求一个C语言图书信息管理系统的课程设计
通过测试!#include#include#include#include#define MAX 100struct Student{ int num;/*登录号*/ char name[100];/*书名*/ char author[100];/*作者名*/ char fn[100];/*分类号*/ char place[100];/*出版单位*/ char day[100];/*出版时间*/ float money;/*价格*/}stu[MAX];main()/*主函数*/{ void Input();/*输入*/ void Display();/*输出*/ void Find();/*查找*/ void Modify();/*删除*/ void Change();/*修改*/ int n; for(;;) { printf("\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※ ※\n"); printf("※ 欢迎来到图书信息管理系统 ※\n"); printf("※ ※\n"); printf("※ ※\n"); printf("※ 主菜单 ※\n"); printf("※ ※\n"); printf("※ ▲1.图书信息录入 ▲ ※\n"); printf("※ ※\n"); printf("※ ▲2.图书信息浏览 ▲ ※\n"); printf("※ ※\n"); printf("※ ▲3.图书信息查询 ▲ ※\n"); printf("※ ※\n"); printf("※ ▲4.图书信息删除 ▲ ※\n"); printf("※ ※\n"); printf("※ ▲5.图书信息修改 ▲ ※\n"); printf("※ ※\n"); printf("※ ▲6.退出系统 ▲ ※\n"); printf("※ ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n"); printf("请输入选择项(1-6):"); scanf("%d",&n); printf("\n\n\n\n"); if(n>0&&n<7) { switch(n) { case 1:Input();break; case 2:Display();break; case 3:Find();break; case 4:Modify();break; case 5:Change();break; case 6:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※ ※\n"); printf("※ 谢谢使用! ※\n"); printf("※ 再见! ※\n"); printf("※ ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); exit(0); } } else { printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※ ※\n"); printf("※ 输入错误! ※\n"); printf("※ 请退出! ※\n"); printf("※ ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); break; } }}void Find()/*查找*/{ FILE *fp; int i; int choose,t; char ans[100]; do { printf("1.按书名查找\n"); printf("2.按作者名查找\n"); printf("返回主菜单(其他数字)\n"); scanf("%d",&choose); if(choose==1) { printf("输入所查书名:\n"); scanf("%s",ans); t=-1; if(choose==1) { for(i=0;i<MAX;i++) if(strcmp(ans,stu[i].name)==0) { t=i; fp=fopen("student","rb"); for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++) printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money); } } if(t==-1) printf("不存在该信息\n"); } else if(choose==2) { printf("输入所查作者名:\n"); scanf("%s",ans); t=-1; if(choose==2) { for(i=0;i<MAX;i++) if(strcmp(ans,stu[i].author)==0) { t=i; fp=fopen("student","rb"); for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++) printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money); } } if(t==-1) printf("不存在该信息\n"); } else return; }while(1);}void Display()/*输出*/{ FILE *fp; int i; fp=fopen("student","rb"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 图书列表\n"); printf("-----------------------------------------------------------\n"); printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n"); printf("-----------------------------------------------------------\n"); for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++) { printf("%6d %8s %8s %8s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money); } fclose(fp);}void Input()/*输入*/{ FILE *fp; int n; fp=fopen("student","wb"); for(n=0;n<MAX;n++) { printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++); scanf("%d",&n); if(n==-1) { fclose(fp); return; } else { printf("请输入登录号 书名 作者名 分类号 出版单位 出版时间 价格\n"); scanf("%d%s%s%s%s%s%f",&stu[n].num,stu[n].name,stu[n].author,stu[n].fn,stu[n].place,stu[n].day,&stu[n].money); fwrite(&stu[n],sizeof(struct Student),1,fp); } } fclose(fp);}void Modify()/*删除*/{ FILE *fp; int i,flag,n,s,j; fp=fopen("student","rb+"); rewind(fp); printf(" 图书列表\n"); printf("-----------------------------------------------------------\n"); printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n"); printf("-----------------------------------------------------------\n"); for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++) { printf("%6d %8s %8s %8s ...
数据库课程设计图书管理系统
1、 需求分析图书馆管理系统开发。
系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。
本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。
本系统结构分为读者类别管理、读者档案管理、图书类型管理、图书档案管理以及图书流程管理,读者管理可以浏览读者的信息,可以对读者信息进行维护。
图书管理可以浏览图书的信息,可以对图书信息进行维护。
借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。
本系统主要解决的问题是利用关键字对数据库进行查询。
2.1数据流图 是结构化分析的重要方法,我们在信息工程中应用的DFD经过了一定的简化,成为一种标准化的一级流程图(1-DFD)和二级流程图(2-DFD)。
其主要作用是: ·便于用户表达功能需求和数据需求及其联系; 2.2数据字典 用数据字典描述数据库的设计,便于维护和修改。
为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:规范化地重组数据结构:对数据进行规范化表达,这在后面将会具体讨论。
关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。
这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。
建立关系数据结构涉及三方面内容:确定关联的关键指标项并建立关联表;确定单一的父系记录结构;建立整个数据库的关系结构 1、数据流的DD表举例如下:数 据 流条目名:读者信息 别名:来源:读者登记 数据流结构:读者登记={读者编号+姓名+性别+ +……}简要说明::每一个读者都有一个唯一的编号修改记录: 2、数据元素的DD表举例如下:数 据 元 素条目名:读者编号 别名 属于数据流:读者信息 存储处:读者信息表 数据元素值:代码类型:字符宽 度:10取值范围及含义:简要说明:每一个读者都有一个唯一的编号修改记录: = 3、数据存储的DD表举例如下:数 据 存 储条目名:图书信息 别名: 存储组织: 记录数:约3000 主关键字:书籍编号 数据量:约500KB 辅关键字:按编号主索引 记录组成:字段名称:图书编号 名称 … 作者 … 关键词 ... 宽度: 14 32 … 8 ... 10 …
数据结构课程设计:小型图书管理系统
#include #include #include #define N sizeof(struct book)#define PT "%-5d %10s %6s %6s %8s %3d \n",p->num,p->name,p->where,p->author,p->pub,p->count struct book /*图书信息*/ { int num; /*书号*/ char name[10]; /*书名*/ char where[10]; /*所在书库*/ char author[15]; /*作者*/ char pub[20]; /*出版社*/ int count; /*数量*/ struct book *next; };/*输出模块*/ void print(struct book *p0) { struct book *p; p=p0->next; printf("\n\n\t\t^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^"); printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); while(p!=NULL) { printf(PT); p=p->next; } getch(); }/*输入模块*/ struct book *creat() { struct book *head,*p1,*p2; int i=0; head=p2=(struct book *)malloc(N); head->next=NULL; printf("\n\n\t\t录入图书信息"); printf("\n\t---------------------------------------"); while(1) { p1=(struct book *)malloc(N); printf("\n 请输入图书编号(书号为0结束): "); scanf("%d",&p1->num); if(p1->num!=0) { printf("\n\n书名 所在书库 作者 出版社 图书数量\n"); scanf("%s%s%s%s%d",p1->name,p1->where,p1->author,p1->pub,&p1->count); p2->next=p1; p2=p1; i++; } else break; } p2->next=NULL; free(p1); printf("\n\t\t----------------------------------------"); printf("\n\t\t %d 种书录入完毕",i); getch(); return head; }/*查找模块*/ void find(struct book *p0) { char name[10]; int flag=1; struct book *p; p=p0->next; printf("请输入要查找的书名:\n"); scanf("%s",name); for(p=p0;p;p=p->next) if(strcmp(p->name,name)==0) { printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); printf(PT); flag=0; break; } if(flag) printf("\n 暂无此图书信息\n"); getch(); }/*删除模块*/ void del(struct book *p0) { char name[10]; int flag=1; struct book *p; p=p0; printf("请输入要删除的书名:\n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->name,name)==0) { p0->next=p->next; /*后续节点连接到前驱节点之后*/ free(p); printf("\t该书资料已删除."); flag=0; break; } p0=p; p=p->next; } if(flag) printf("\n\t无此图书信息。
"); getch(); }/*增加模块*/ void insert(struct book *p0) { struct book *p; p=(struct book *)malloc(N); while(1) { printf("\n 请输入要增加的图书编号(书号为0 退出): "); scanf("%d",&p->num); if(p->num!=0) { if(p0->next!=NULL&&p0->next->num==p->num) /*找到重号*/ { p=p->next; free(p); printf("\t该书已存在"); } else {printf("\n\n书名 所在书库 作者 出版社 图书数量\n"); scanf("%s%s%s%s%d",p->name,p->where,p->author,p->pub,&p->count); p->next=p0->next; p0->next=p; printf("\t已成功插入."); } } else break; } getch(); }/*修改模块*/ void modify(struct book *p0) { char name[10]; int flag=1; int choice; struct book *p; p=p0->next; printf("请输入要修改的书名:\n"); scanf("%s",name); while(p!=NULL&&flag==1) { if(strcmp(p->name,name)==0) { printf("\n\t请选择要修改的项:"); printf("\n\t 1.修改图书编号\n"); printf("\n\t 2.修改图书所在书库\n"); printf("\n\t 3.修改图书作者\n"); printf("\n\t 4.修改图书出版社\n"); printf("\n\t 5.修改图书库存量\n"); scanf("%d",&choice); switch(choice) { case 1: { printf("\n 请输入新的图书编号:"); scanf("%d",p->num); break; } case 2: { printf("\n 请输入新的图书书库:"); scanf("%s",p->where); break; } case 3: { printf("\n 请输入新的图书作者:"); scanf("%s",p->author); break; } case 4: {printf("\n 请输入新的图书出版社:"); scanf("%s",p->pub); break; } case 5: {printf("\n 请输入新的图书库存量:"); scanf("%d",p->count); break; } } printf("\n\t该项已成功修改。
\n\t 新的图书信息:"); printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); printf(PT); flag=0; } p0=p; p=p0->next; } if(flag) printf("\n\t暂无此图书信息。
"); getch(); }/*读文件*/ struct book *read_file() { int i=0; struct book *p,*p1,*head=NULL; FILE *fp; if((fp=fopen("library.txt","rb"))==NULL) {printf("\n\n\n\n\n \t********库文件不存在,请创建!**********"); getch(); return NULL; } head=(struct book *)malloc(N); p1=head; head->next=NULL; printf("\n 已有图书信息:"); printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); while(!feof(fp)) { p=(struct book *)malloc(N); /*开辟空间以存放的取得信息*/ while(fscanf(fp,"%d%s%s%s%s%d",&p->num,p->name,p->where,p->author,p->pub,&p->count)!=EOF) { printf(PT); i++; } p1->next=p; p1=p; } p1->next=NULL; fclose(fp); printf("\n 共种%d 图书信息",i); printf("\n\n\n 文件中的信息以正确读出。
按任意键进入主菜单。
"); getch(); return (head); }/*保存文件*/ void save(struct book *head) { FILE *fp; struct book *p; fp=fopen("library.txt","wb"); /*以只写方式打开二进制文件*/ if(fp==NULL) /*打开文件失败*/ { printf("\n=====>打开文件失败...
数据库原理课程设计,图书管理系统,要源代码VB+SQL
图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。
图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、维护并生成催还图书报表。
1)图书和读者登记子系统:添加、修改、删除图书和读者信息2)借书,还书子系统:根据学生的学号,进行借书还书3)超期图书罚款处理子系统4)查询系统:图书借阅者的需求是查询图书馆所存的图书、个人借阅情况5)系统维护:权限的设置
c语言课程设计:图书管理系统设计的基本思路是什么?
设计内容及要求:主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:图书入库,按书名、出版社、价格、作者进行查询和分类统计。
操作界面要符合用户的一般习惯,图形或文本界面都可以设计参数图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能: 按书名查询 按作者名查询文件记录的字段数量不少于6个,分类统计中类别不少于2个。
...
c语言 数据结构课程设计 图书管理系统
#include // #define MAXSIZE 100 //最大值定义为100 #define LIST_INIT_SIZE 100//图书证使用者最大值定义为100 //借书人的结构体 typedef struct Boro//借书行为 { char BNum[20];//借书的书号 char RetDate[8];//归还日期 struct Boro *next; }Bor; typedef struct LinkBook { Bor *next; //该图书证的借书行为 char CNum[20]; //卡号 int Total; //借书的数量 }lend[LIST_INIT_SIZE];//借书人数组 //图书的结构体信息 typedef struct LNode { char CardNum[20];//图书证号 struct LNode *next; }LinkList; //借书人 typedef struct book {//每种图书需要登记的内容包括书号ISBN、书名、作者、出版社、总库存量和现库存量。
char num[20];//书号 char name[20];//书名 char auth[20];//作者 char pub[20];//出版社 int TotNum;//总库存 int NowNum;//现库存 LinkList *next;//借了该书的人 }ook[MAXSIZE]; // int Retotal;//读者数量 int total; //定义外部变量.书的种类数 // //结构体初始化 void InitBo(ook &boo) //初始化图书信息 { for(int i=0;i { boo[i].NowNum=0; boo[i].TotNum=0; boo[i].next=NULL; } } void InitRe(lend &Lin) //初始化借阅者信息 { for(int i=0;i Lin[i].next=NULL; } // int mid=0;//外部函数mid,用来返回查找到的位置 bool BinarySearch(ook boo,char SearchNum[]) //二分法查找比较书号 { //用bool函数,但由于函数不能有两个返回值,所以设置一个外部变量mid,用来返回查找到的位置 int low=0,high=total-1; int found=0; while(low { mid=(low+high)/2; //中间点 if(strcmp(boo[mid].num,SearchNum)==0) //书号相同 { found=1; return true; }//查找成功 if(strcmp(boo[mid].num,SearchNum)!=0)//书号不同 high=mid-1; else low=mid+1; } if(found==0) return false; //查找失败 } void Buy(ook &boo, char BuyNum[]) {//1、 采编入库:新购入一种书,如果该书在图书账目中已经存在,则将其库存量增加(包 //括总库存量和现库存量),如果该书不存在,则在图书账目中增加一种书,总库存量和现库存量均为1。
if(BinarySearch(boo,BuyNum)) //如果书库中有此书 { boo[mid].TotNum++; //总库存加1 boo[mid].NowNum++; //现库存加1 printf("入库成功.\n"); printf("已更改书库中该书的信息。
编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。
\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum); } if(!BinarySearch(boo,BuyNum)) { int i; for(i=total;i>mid&&total;i--) //插在适合位置 保持有序 boo[i]=boo[i-1]; //空出插入位置 printf("该书在书库中不存在。
设立新书目,请补全书的详细信息。
\n"); strcpy(boo[i].num,BuyNum); printf("该书购入的数量是:"); scanf(" %d",&boo[i].NowNum); boo[i].TotNum=boo[i].NowNum; printf("该书的名字是:"); scanf(" %s",&boo[i].name); printf("该书的作者是:"); scanf(" %s",&boo[i].auth); printf("该书的出版社是:"); scanf(" %s",&boo[i].pub);//补全信息 boo[i].next=NULL; total++;//总量+1 printf("已增加该书的信息。
编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。
\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum); printf("入库成功.\n"); } } void Delete(ook &boo,char DeleteNum[]) {//2、 清空库存:某一种书已无保留价值,将它从图书账目中注销。
if(BinarySearch(boo,DeleteNum)==false||total==0) //如果无此书 printf("书库中没有该书.\n"); if(BinarySearch(boo,DeleteNum))//若有 { if(!boo[mid].next) { int j; for( j=mid;j boo[j]=boo[j+1]; strcpy(boo[j].num,boo[j+1].num); strcpy(boo[j].name,boo[j+1].name); strcpy(boo[j].auth,boo[j+1].auth); strcpy(boo[j].pub,boo[j+1].pub); boo[j].TotNum=boo[j+1].TotNum; boo[j].NowNum=boo[j+1].NowNum; printf("已成功删除该书.\n"); } else printf("该书有借阅者,无法删除。
\n"); } } void Borrow(ook &boo,lend &Lin,char BorrowNum[],char CaNum[]) {//3、 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1, //并登记借阅者的图书证号和归还期限。
Bor *p,*q; LinkList *m,*n; if(!BinarySearch(boo,BorrowNum)||total==0) //如果没有找到此书 printf("书库里没这书。
\n");//如果有这书 if(BinarySearch(boo,BorrowNum)) //书库里有 { if(boo[mid].NowNum>0) //看现库存是否大于0 { boo[mid].NowNum--;//借出一本,少1 if(boo[mid].next==NULL) //若该书信息下显示该种书还没被人借过 { m=(LinkList *)malloc(sizeof(LNode));//分配 boo[mid].next=m;//该图书信息中的链表的第一个结点 strcpy(m->CardNum,CaNum); m->next=NULL;//后一个结点为空 } else //如果已经有人在借这书了 { m=boo[mid].next; while(m->next) //遍历到最后一个结点 m=m->next; n=(LinkList *)malloc(sizeof(LNode));//分配空间,增加1个结点 m->next=n; strcpy(n->CardNum,CaNum);//记录证号 n->next=NULL; } int i=0; for(i=0;i { if(!strcmp(Lin[i].CNum,CaNum))//如果已经有该图书证的信息 { p=Lin[i].next; while(p->next)p...
转载请注明出处51数据库 » 图书管理系统课程设计软件