基于C语言的图书馆管理系统Word文档格式.docx
《基于C语言的图书馆管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于C语言的图书馆管理系统Word文档格式.docx(63页珍藏版)》请在冰豆网上搜索。
特此郑重声明!
指导老师(签名):
论文作者(签名):
2012年5月12日
摘要
人类已经跨入了新世纪,正在进入信息化时代。
信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和服务方式已不能适应读者对日益增长的文献信息的需求。
随着馆藏量的不断增加,图书资料的录入和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错后不易更改的手工方式,已经不能满足要求。
基于此问题,建立一个规范化,系统化,程序化的图书管理系统迫不急待。
为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写程序以提高图书馆的管理效率。
使用程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,以便全面掌握图书的流通情况等等。
本系统是以C语言为主要编写语言,以VisualC++6.0为开发环境开发出来的运行于DOS系统之上的图书馆管理系统。
首先根据系统特点确定了开发模型,再通过对系统进行需求分析研究,建立结构化分析,系统功能模块,系统流程图。
然后通过对各个功能模块进行深入分析,确定数据的定义和属性,及各功能的实现。
论文介绍了图书管理系统的运行环境和开发环境,结合了SQLSERVER数据库和数据结构的相关知识。
关键词:
C语言;
图书管理;
数据处理;
信息技术;
VisualC++6.0
;
数据结构
ABSTRACT
Mankindhasenteredthenewcentury,whichisenteringtheinformationage.Waveofinformationtechnology,thenetworkrevolutionhasbroughtabouttheimpact,butalsomakethelibraryservicehasbeenbadlyhit,andlibrarymanagementandservicesoftraditionalmethodscannotmeetthegrowingliteratureontheinformationthereaderneeds.Withthecontinuousincreaseinthecollections,books,dataentryandalsoacorrespondingincreaseinthedifficultyofqueries,dataprocessingmanualoperation,heavyworkload,errorrate,errorisnoteasytochangeafterthemanualmodecannolongermeettherequirements.
Basedonthisproblem,theestablishmentofastandardized,systematic,process-orientedlibrarymanagementsystemcannotwait.Fortheconvenienceoflibrarybooks,readers’information,suchasborrowingandreturningbooksforefficientmanagement,especiallythepreparationofthemanagementprocedurestoenhancetheefficiencyofthelibrary.Afterusingtheprogram,staffcansearchforcertainreaders,borrowsomebooks,canalsoborrowbooksonthecurrentsituationofsomestatisticsinordertofullygrasptheflowofbooks.
ThissystemwhichisdevelopedinVisualC++6.0environmentandrunningonDOSsystemnamedschoollibrarymanagementsystemismainlydevelopedbyClanguage.Firstofall,accordingtothecharacteristicsofthesystem,wechoosethedevelopmentmodel.Second,throughtheanalysisstudiesofrequirement,weestablishstructuredanalysis,systemfunctionmodules,systemflowdiagram.Next,afterthedeeplyanalysisofeachsystemfunctionmodules,wedecidedthedefinitionandattributesofdata,andtherealizationofeachfunction.Thisarticleintroducedtheoperatingenvironmentanddevelopenvironment,combinedwiththeknowledgeoftheSQLSERVERdatabaseandthedatastructure.
KEYWORDS:
Clanguage,LibraryManagement,DataProcessing,InformationTechnology,VisualC++6.0,Datastructure
第1章绪论
1.1系统的意义
随着人们知识层次的提高,图书馆成为日常生活中不可缺少的一部分。
而图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理是不可行的。
图书管理系统应运而生,逐渐成为信息化建设的重要组成部分。
图书管理系统为学校或社会型图书馆的管理员提供所有借阅者的详细信息,以及图书馆内库存的详细情况,而学生或普通用户则拥有借书和还书两大功能,管理员可以对图书进行新书注册和旧书删除等功能。
作为计算机应用的一部分,具有着手工管理所无法比拟的优点,例如:
检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低等。
1.2系统的特点
系统界面简易,由于本系统是基于DOS系统下的图书馆管理系统,所以其操作方便简单。
1.3系统设计环境
以VC为开发平台,利用C语言编写的程序。
第2章需求分析
本系统的主体分为管理员、学生用户和未注册用户(游客)三部分。
2.1管理员所具有的功能
(1)实现密码验证登陆:
只有管理员输入正确的账号、密码才可以进入管理员界面。
如果输入了错误的账号,系统会显示账号错误并且不能进入管理员系统界面。
同理若输入错误的密码,系统会显示密码错误并且不能进入管理员系统界面。
(2)注册新书:
当管理员成功登陆后,管理员可以通过输入图书的基本信息可以添加新的图书到图书系统中。
(3)删除旧书:
管理员可以通过输入图书编号(图书的唯一标识)将图书从图书系统中删除。
2.2未注册用户(游客)的功能
游客可以浏览所有的图书信息,但是无法借阅。
还可以注册新用户,通过填写学生基本信息完成新用户注册。
查阅图书时可以选择按编号和名字进行精确查找,也可实现按关键字进行模糊查找。
还可以注册新用户。
2.3学生用户功能
(1)密码验证登陆:
只有用户输入正确的账号、密码才可以进入管理员界面。
如果输入了错误的账号,系统会显示账号错误并且不能进入用户系统界面。
同理若输入错误的密码,系统会显示密码错误并且不能进入用户系统界面。
(2)借书:
只有用户输入所要借阅的书的编号和正确的账号和密码才能完成借阅。
(3)还书:
只有用户输入所借阅的书的编号和正确的账号和密码才能完成还书。
如果用户未曾借阅过这本书,系统输出“未曾借阅过该书”。
若账号或密码错误系统输出“账号错误”,“密码错误”。
(4)查阅自己的借书情况和个人情况:
用户可以查阅用户的基本信息和借的书目。
2.4书目查询功能
(1)按编号进行精确搜索图书:
用户输入图书编号可以精确查出图书,并输出此书的所有信息。
若系统中无此书,则输出“查无此书”。
(2)按名字进行精确搜索图书:
用户输入图书书名可以精确查出图书,并输出此书的所有信息。
(3)按关键字进行模糊查找:
用户若不知道图书的精确编号和书名,可以利用关键字搜索。
可以将书名中含有此关键字的所有书目都列出来。
第3章系统设计
3.1主要流程图
3.1.1系统登陆流程图
3.1.2用户流程图
3.1.3管理员流程图
3.2主要数据定义
学生实体和属性的基本定义:
学生用户(学号,姓名,性别,班级,已借书目列表,已借书数目,联系电话,密码)
由以上实体图我们可以定义图书结构体structstudent如下:
structstudent{
charname[9];
charsex[5];
intid;
inttel;
//电话
charbanji[8];
intjie;
//借阅图书数目
charjieshu[6][9];
//存储借书日期
intmima;
}stu[100];
图书(图书编号,图书名称,作者,单价,借出数量,借阅者的学号,总数量,是否借出)
由以上实体图我们可以定义图书结构体structbook如下:
structbook{
charname[60];
//定义图书名
charbh[9];
//定义图书编号
charzz[10];
//定义图书作者
intsl;
//定义图书数量
intdj;
//定义单价
charzt[6];
//定义状态
intjz[6];
//定义借阅者的ID假定同一本书只能被六个人借阅
intjcs;
//定义借出书的数目
}ts[n];
管理员(账号,姓名,密码)
由以上实体图我们可以定义图书结构体structguanliyuan如下:
structguanliyuan{
charname[20];
intid;
}adm[10];
另外还需要设全局变量:
staticintm=1;
//表示注册的学生数量
staticintn1=15;
//用于表示已经注册的书的数目
3.3系统功能设计
3.3.1核心功能函数设计思想
登录模块:
voidyouke();
//游客登陆函数
voidxuesheng();
//学生登陆函数
voidguanliyuan();
//管理员函数
voidzhuce();
//注册函数
voiddenglu();
//用户登录密码验证函数
voiddenglu1();
//管理员登录密码验证函数
管理员模块:
voidxinshuzhuce();
//管理员用于输入新书
voidshanshujiemian();
//管理员删书的界面
voidshanchuhanshu(inti);
//用于管理员删除废书
voidchashu();
//总查询界面函数
学生模块:
voidjieshu(charbh[9],intid,intmima);
//借书程序用于实现借书
voidjieshujiemian();
//借书的界面
voidhuanshujiemian();
//还书的界面
voidhuanshu(charbh[9],intid,intmima);
//借书程序用于实现还书
voidxinxichaxun(inti);
//用于输出学生用户的基本信息
voidxxcxjiemian();
//学生用户的基本信息查询的界面
游客模块:
//登录函数
查询模块:
voidbianhaochashu();
//按照编号查询图书函数
voidshumingchashu();
//按照书名查询图书函数
intmohuchaxun(strings,stringt);
//用于模式匹配
voidmohuchashu();
//用于不知道具体书名只知道关键字的情况
voidputout(intl);
//输出图书信息函数
voidputout1(intl);
//输出图书信息函数
第4章各功能模块的设计与实现
4.1管理员功能
4.1.1新书登记
voidxinshuzhuce()
{charbx;
//新书注册中的变量
system("
cls"
);
system("
color47"
date/t"
time/t"
cout<
<
endl<
endl;
cout<
"
"
厚德博学"
---------"
力行致远"
printf("
\n\n\n\n"
\t\t\t※※※※※※※※※※※※※※※※※\n"
\t\t\t※※\n"
\t\t\t※注册新书菜单※\n"
\t\t\t※请输入新书书名(输入字符或汉字):
scanf("
%s"
&
ts[n1].name);
\t\t\t※请输入图书编号(输入整型常数不能重复):
%d"
ts[n1].bh);
\t\t\t※请输入图书作者(输入汉字或字符):
ts[n1].zz);
\t\t\t※请输入图书定价(输入整形变量):
ts[n1].dj);
\t\t\t※请输入图书数量(输入整形常数):
ts[n1].sl);
\t\t\t※请输入图书状态(输入整形或汉字):
ts[n1].zt);
for(intl=0;
l<
6;
l++)
ts[n1].jz[l]=0;
//假定无人借阅
\t\t\t※注册成功\n"
n1++;
※按任何键继续输入按1键返回上层※※※"
bx=getch();
if(bx=='
1'
)guanliyuan();
elsexinshuzhuce();
}
4.1.2旧书删除
voidshanshujiemian()
{
charyn;
//中的变量
intj=0;
inti;
"
\t\t\t※旧书删除菜单※\n"
\t\t\t\n"
printf("
\t\t\t请输入要删除书的编号:
scanf("
bh);
for(i=0;
i<
10000;
i++)
if(strcmp(bh,ts[i].bh)==0)
{
putout1(i);
j++;
printf("
\t\t\t※是否删除此书:
y/n:
yn=getch();
chara='
y'
;
if(a==yn)
{
shanchuhanshu(i);
\n\t\t删除成功是否继续删除y/n:
if(a==yn)shanshujiemian();
elseguanliyuan();
}
}
if(j==0)printf("
无此书\n"
voidshanchuhanshu(inti)
{intk;
for(k=i;
k<
n1;
k++)
{
ts[k]=ts[k+1];
}
n1--;
4.2学生用户功能
4.2.1借书函数
voidjieshu(charbh[9],intid,intmima)
{inti;
for(i=0;
100;
if(stu[i].id==id)break;
if(i==100)printf("
\t\t账号错误\n"
if(stu[i].mima==mima)
{for(intj=0;
j<
9;
j++)
{
stu[i].jieshu[stu[i].jie][j]=bh[j];
}
stu[i].jie++;
for(intk=0;
if(strcmp(bh,ts[k].bh)==0)
ts[k].jz[ts[k].jcs]=id;
ts[k].jcs++;
printf("
\t\t祝贺%s同学,您已成功借阅《%s》\n"
stu[i].name,ts[k].name);
elseprintf("
\t\t密码错吴\n"
4.2.2还书函数
若账号或密码错误系统输出“账号错误”,“密码错误”.
voidhuanshu(charbh[9],intid,intmima)
{intp=0;
for(intj=0;
j++){
if(strcmp(bh,stu[i].jieshu[j])==0)
{for(intr=0;
r<
r++)
stu[i].jieshu[j][r]=bh[r];
stu[i].jie--;
p++;
}
}
if(p==0)printf("
\t\t%s同学,您未曾借阅过该书\n"
stu[i].name);
{for(intk1=0;
k1<
ts[k].jcs;
k1++)
if(ts[k].jz[k1]==id)
for(intk2=k1;
k2<
k2++)
ts[k].jz[k2]=ts[k].jz[k2+1];
ts[k].jcs--;
printf("
\t\t祝贺%s同学,您已成功归还《%s》\n"
4.2.3查询函数
查阅自己的借书情况和个人情况,用户可以查阅用户的基本信息和借的书目。
这个功能有两个函数实现,voidxinxichaxun(intk)函数可以输出第K个structstudent结构体中的信息。
输入学号和密码后可以通过voidxxcxjiemian()函数查到该同学在structstude