C图书借阅管理系统课程设计说明书1.docx
《C图书借阅管理系统课程设计说明书1.docx》由会员分享,可在线阅读,更多相关《C图书借阅管理系统课程设计说明书1.docx(30页珍藏版)》请在冰豆网上搜索。
![C图书借阅管理系统课程设计说明书1.docx](https://file1.bdocx.com/fileroot1/2023-5/21/4a634c4a-a8cb-4377-9f53-8190712cef06/4a634c4a-a8cb-4377-9f53-8190712cef061.gif)
C图书借阅管理系统课程设计说明书1
数学与计算机学院
课程设计说明书
课程名称:
计算机科学与技术程序设计语言-课程设计
课程代码:
题目:
图书借阅管理系统
年级/专业/班:
学生姓名:
学 号:
开始时间:
年月日
完成时间:
年月日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
摘要
随着计算机的普及,系统化的管理日益广泛,电脑系统管理也日益增多,分析了各个图书管的借阅管理方法,利用VC++6.0编程实现了图书借阅管理系统,该系统具有图书及卡号信息的添加删除,查找,修改,显示等功能。
关键词:
图书借阅管理系统;计算机;
引言
1.1问题的提出
在图书馆中,少不了一个重要的图书管理系统;在海量的书库中,寻找查询各本书籍的情况也非常多,某校图书管出于这种目的制作了这个图书借阅管理系统。
1.2国内外研究的现状
目前,我国学校图书馆办馆的要求及领先标志就是藏书全部开放,师生共享开架借阅。
这种借阅方式是当前适合我国国情的发挥图书馆应有作用的最佳方式,也是素质教育的最好体现。
它充分发挥了图书馆的功效,最大限度地为读者服务,这也是图书馆自动化管理的最终目标。
实现这一目标,必须有现代化的管理手段和管理体制。
为此,各地教育主管部门都逐步提出学校要采用图书馆管理系统,从而实现人工管理达不到的一些功能并发挥图书馆的最大效益。
而随着越来越多的学校采用了现代化的管理软件进行管理,进一步提升了学校管理的现代化水平,从而在竞争中处于有利位置,也对其他兄弟学校起到了示范和促进作用。
自身发展的需要和上级部门的要求以及竞争的需要决定了学校采用图书馆管理系统的必要性。
1.5任务与分析
一.课题目的:
通过一个功能完善的图书馆管理系统,使图书馆中的借阅更加方便,快捷而对图书的整理工作更加方便,容易,以能及时的补入新书,方便老师与同学们的工作与学习.
1.为广大读者提供方便,全面,有效和公平的服务;
2.管理好图书资源,提高图书利用率;
3.全面记录图书及流通信息,支持各类统计分析,以便科学管理和决策.
2程序的主要功能
2.1添加功能
添加一个同学的基本信息:
班级,姓名,卡号等;
添加一本新书:
书名,作者,书号等;
2.2删除功能
能够对卡号对应的同学的信息进行删除,能够对书籍信息的删除;
2.3显示功能
显示所有同学的信息,包括:
卡号,姓名,班级,及总借书量;
显示所有图书的信息,包括:
书号,作者,书名,是否借走;
2.4查找功能
可以选择,根据“书名”或者“作者”查找书籍;
2.6修改功能
对书籍的借阅和归还进行修改。
3程序运行平台
VC++6.0。
具体操作如下:
新建……工程,添加相应的源文件……,再编译,链接,执行等,进入界面以后会有提示框,依照提示框的选择进行操作,每次执行一个项目之后都会退出程序,可以再次运行来执行其他操作。
4总体设计
图4.1系统总体框架图
5模块分析
5.1添加模块
主要是对卡号的添加和书籍的添加,源代码如下
addcar()//申请卡号
{
system("cls");
FILE*fp;
inti=0;
fp=fopen("car.txt","a+");
printf("请你输入卡号\n");
scanf("%d",&car[i].carnum);
printf("请你输入学生姓名\n");
scanf("%s",car[i].studentname);
printf("请你输入班级\n");
scanf("%d",&car[i].studentclass);
fwrite(&car[i],sizeof(structcar),1,fp);
fclose(fp);
printf("输入完毕,任意键返回\n");
getch();
}
addbook()//加入新的书籍
{
system("cls");
FILE*fp;
inti=0;
charchoice='y';
fp=fopen("book.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("请你输入第%d本书的序号\n",i+1);
scanf("%d",&book[i].booknum);
printf("请你输入书名\n");
scanf("%s",book[i].bookname);
printf("请你输入书的作者\n");
scanf("%s",book[i].bookcreat);
printf("请设为1或0,1代表书还没人借,0表示书已经借出,设其他值,程序运行时无法得出正常结果\n");
printf("请你设定书的状态\n");
scanf("%d",&book[i].turefalse);
fwrite(&book[i],sizeof(structbook),1,fp);
printf("是否要输入下本书\n");
scanf("%s",&choice);
i++;
}
fclose(fp);
}
5.2显示模块
jyxx()
{
system("cls");
intmm,n=123,x,j;
printf("请输入密码:
");
scanf("%d",&mm);
while(mm==n)
{
printf("~~~~~~~~~~~~~~~欢迎进入借阅信息查询系统~~~~~~~~~~~~~~~~\n");
printf("请输入你要查询的数据代码:
\n");
printf("1各个人借阅情况\n");
printf("2藏书借阅情况\n");
printf("3借书查询\n");
printf("0退出\n");
printf("请输入你要操作的序号:
");
scanf("%d",&x);
switch(x)
{
case1:
carcount();break;
case2:
bookcount();break;
case3:
lendcount();break;
case0:
return(0);
default:
printf("无此操作\n");getch();break;
}
printf("是否还要继续查询?
(1为退出,0为继续)");
scanf("%d",&j);
mm=mm+j;
}
return(0);
}
bookcount()
{
FILE*fp;
inti,n=0;
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(book[i].booknum!
=0&&strlen(book[i].bookname)!
=0&&strlen(book[i].bookcreat)!
=0)
{
printf("第%d本书<序号:
%d书名:
%s作者:
%s状态:
%d>\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].turefalse);
n=n+1;
}
}
fclose(fp);
printf("目前共有%d本书\n",n);
printf("按任意键\n");
}
carcount()
{
FILE*fp;
inti,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
printf("第%d张卡<卡号:
%d姓名:
%s班级:
%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书\n",n);
printf("按任意键\n");
getch();
}
lendcount()//借出记录
{
FILE*fp;
inti,n=0;
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!
=0;i++)
{
printf("卡号:
%d借出的书籍:
%s\n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书借出\n",n);
printf("按任意键\n");
getch();
returnn;
}
5.3修改模块
主要用于图书的借阅和归还,对于图书信息和卡号信息的修改
huanbook()/*还书函数*/
{
system("cls");
FILE*fp,*fp2;/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/
inti,n;
intcarnum;
charlendbook[10];
printf("请你输入你的卡号\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");/*读取卡号记录*/
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)/*for循环判断卡号是否存在*/
{
if(car[i].carnum==carnum)/*卡号存在,进入下一循环*/
{
fclose(fp);
printf("请输入你要还的书的名字\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!
=0;i++)/*判断是否借阅了输入的书*/
{
if(strcmp(student[i].lendbook,lendbook)==0)/*借阅了该书,进入下一循环,否则出错显示*/
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!
=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
n=i;
continue;/*删除还掉的书的借书记录*/
}
fwrite(&student[i],sizeof(structstudent),1,fp2);/*写入原来没还的书的记录*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)!
=0;i++)
{
fwrite(&student[i],sizeof(structstudent),1,fp);/*将借书记录信息写回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");/*清临时文件的记录*/
fclose(fp2);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)/*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(structbook),1,fp2);/*将还的书的原来状态设为无人借阅的*/
continue;
}
fwrite(&book[i],sizeof(structbook),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);/*将临时文件写回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");/*清临时文件*/
fclose(fp2);
printf("还书完毕,按任意键返回\n");
getch();
return1;
}
}
printf("你没有借这样的书,任意键返回\n");/*出错提示*/
fclose(fp);
getch();
return0;
}
}
printf("系统没这样的卡,和管理员联系,按任意键返回\n");/*出错提示*/
fclose(fp);
getch();
}
lendbook()//借书系统
{
system("cls");
FILE*fp,*fp2;
inti,n;
intcarnum;
printf("请你输入你的卡号\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
if(car[i].carnum==carnum)//如果卡号存在进入下一个循环
{
n=i;
fclose(fp);
printf("请输入你要借阅的书的名字\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)//查看该书是否已经借出
{
if(book[i].turefalse==0)
{
printf("对不起,此书有人借出,请借其他书\n");
fclose(fp);
getch();
return;
}
else
fclose(fp);
fp=fopen("record.txt","a+");
fwrite(&student[n],sizeof(structstudent),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)//将书的信息写入临时文件
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)//将要借的书的借阅信息改为已借
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(structbook),1,fp2);
continue;
}
fwrite(&book[i],sizeof(structbook),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)//将临时文件写回
{
fwrite(&book[i],sizeof(structbook),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");//清除临时文件
fclose(fp2);
printf("借书完毕,按任意键返回\n");
getch();
return;
}
}
printf("不存在这样的书,任意键返回\n");
fclose(fp);
getch();
return;
}
}
printf("你的卡号不存在,请申请新卡,按任意键返回\n");
fclose(fp);
getch();
}
5.4查找模块
查找模块是用于书籍信息的查询
chabook()
{
charch5;
do
{system("cls");
printf("---------------欢迎进入图书查询系统!
--------------\n");
printf("1:
<按书名查找>\n");
printf("2:
<按作者查找>\n");
printf("0:
<返回>\n");
printf("请输入0--2,其他输入非法!
\n");
scanf("%s",&ch5);
switch(ch5)
{
case'1':
findbook();getch();break;
case'2':
findbook1();getch();break;
case'0':
break;
default:
printf("无此操作\n");getch();break;
}
}while(ch5!
='0');
returnFALSE;
}
findbook()
{
FILE*fp;
charbookname[10];
inti;
fp=fopen("book.txt","r");
printf("请输入你要查找的书名\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:
%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else{printf("这本书已经有人借出\n");fclose(fp);return0;}
fclose(fp);
returnFALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
returnFALSE;
}
findbook1()
{
FILE*fp;
charbookcreat[10];
inti;
fp=fopen("book.txt","r");
printf("请输入你要查找的作者名\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:
%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else{printf("这本书已经有人借出\n");fclose(fp);return0;}
fclose(fp);
returnFALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
returnFALSE;
}
5.5删除模块
运用于删除卡号和书籍
源代码如下:
delcar()//删除卡号
{
system("cls");
FILE*fp,*fp2;
inti;
intcarnum;
charchoice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的卡号\n");
printf("如果你输入的卡号存在,系统自动删除该信息!
如果不存在,系统不做任何改动\n");
scanf("%d",&carnum);
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
if(car[i].carnum!
=carnum)
{
fwrite(&car[i],size