C语言课程设计图书管理系统Word格式.docx
《C语言课程设计图书管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图书管理系统Word格式.docx(59页珍藏版)》请在冰豆网上搜索。
![C语言课程设计图书管理系统Word格式.docx](https://file1.bdocx.com/fileroot1/2023-2/1/6a3f6fba-77e2-41b6-9cc1-9a2d6ab5f6f8/6a3f6fba-77e2-41b6-9cc1-9a2d6ab5f6f81.gif)
一、题目要求
1.新进图书基本信息的输入。
2.图书基本信息的查询。
3.对撤消图书信息的删除。
4.为借书人办理注册。
5.办理借书手续。
6.办理还书。
二、需求分析
作为学生对图书管理系统的要求有:
1.能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。
2.能够方便地借阅图书、归还图书。
3.能够查询自己的基本资料、借阅图书情况。
4.能够熟悉图书管理系统的使用。
作为图书管理员,他们对图书管理系统的要求有:
1.能方便的对图书进行录入登记,注销陈旧的书籍。
2.能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。
3.能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借阅情况等信息,以便各学院能够随时获知本院学生的一些借书信息。
根据题目需要,由于图书信息需要存放在文件中,所以应提供文件输入、输出等操作。
应提
供查找、借阅、管理等功能。
由于有多种借阅图书的方法,而又需要提供相应的算法,最后还
应提供键盘是选择菜单实现功能。
三、总体设计
四、详细设计
1、主函数
[说明]
主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。
为了程序显示的清晰可读,应先清屏之后调用菜单函数。
[流程]
开始
显示一系列功能选项
N
输入n,判断n是否是0-4
Y
返回主菜单
根据n的值调用各功能模块函数
[程序]
main()
{
charch1,ch2,ch3,ch4,ch5;
do
printf("
\n\n\n\t\t***********图书管理系统***********\n"
);
\n\t\t\t\t1:
<
查阅图书>
\n"
\n\t\t\t\t2:
借阅图书>
\n\t\t\t\t3:
管理系统>
\n\t\t\t\t4:
归还图书>
\n\t\t\t\t0:
退出系统>
\n请输入0--4,其他输入非法!
scanf("
%s"
&
ch1);
switch(ch1)
{
case'
1'
:
chabook();
break;
2'
lendbook();
;
3'
do
\n\n\n\t\t***********欢迎进入管理系统***********\n"
\n\t\t\t\t1:
<
增加图书>
\n\t\t\t\t2:
删除图书>
\n\t\t\t\t3:
修改图书资料>
\n\t\t\t\t4:
书籍统计>
\n\t\t\t\t5:
职工管理系统>
\n\t\t\t\t6:
学生管理系统>
\n\t\t\t\t0:
返回>
\n请输入0--6,其他输入非法!
ch2);
switch(ch2)
addbook();
delbook();
changebook();
4'
bookcount();
getch();
5'
{do
\n\n\n\t\t***********欢迎进入职工管理系统!
***********\n"
增加员工>
删除员工>
修改员工资料>
员工统计>
ch3);
switch(ch3)
addemploy();
delemploy();
changemploy();
employcount();
0'
default:
printf("
无此操作\n"
}
}while(ch3!
='
}break;
6'
{
\n\n\n\t\t***********欢迎进入学生管理系统!
申请新卡>
删除卡号>
借书统计>
卡号统计>
ch4);
switch(ch4)
addcar();
delcar();
lendcount();
carcount();
}while(ch4!
}while(ch2!
huanbook();
}while(ch1!
}
2、各功能模块设计
(1)查阅模块
输入个员工信息后,浏览、查找、排序时同一个员工的所有信息都要同时显示,所以运用结构体运行。
数据信息存放在文件中,一条记录对应一条学生信息,方便管理。
chabook()
charch5;
do
---------------欢迎进入图书查询系统!
--------------\n"
1:
按书名查找>
2:
按作者查找>
0:
请输入0--2,其他输入非法!
scanf("
ch5);
switch(ch5)
findbook();
findbook1();
}while(ch5!
returnFALSE;
}
findbook()/*按书名查找图书函数*/
FILE*fp;
charbookname[10];
intture,i;
fp=fopen("
book.txt"
"
r"
请输入你要查找的书名\n"
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)
这本书的详细资料是:
%d%s%s此书现在无人借阅\n按任意键返回\n"
book[i].booknum,book[i].bookname,book[i].bookcreat);
else{printf("
这本书已经有人借出\n"
fclose(fp);
return0;
}
fclose(fp);
returnFALSE;
没有你要查询的书籍\n"
findbook1()/*按作者查找图书函数*/
charbookcreat[10];
请输入你要查找的作者名\n"
bookcreat);
if(strcmp(bookcreat,book[i].bookcreat)==0)
(2)借阅模块
查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,根据用户所输入的指令,帮助其完成借阅。
lendbook()/*借书函数*/
FILE*fp,*fp2;
inti,n;
intcarnum;
请你输入你的卡号\n"
%d"
carnum);
car.txt"
car[i],sizeof(structcar),1,fp)!
if(car[i].carnum==carnum)
n=i;
请输入你要借阅的书的名字\n"
student[n].lendbook);
fp=fopen("
for(i=0;
if(strcmp(book[i].bookname,student[n].lendbook)==0)
if(book[i].turefalse==0){printf("
对不起,此书有人借出,请借其他书\n"
return;
else
record.txt"
a+"
student[n].carnum=carnum;
fwrite(&
student[n],sizeof(structstudent),1,fp);
fp2=fopen("
bookl.txt"
w"
book[i].turefalse=0;
book[i],sizeof(structbook),1,fp2);
continue;
fclose(fp2);
book[i],sizeof(structbook),1,fp2)!
book[i],sizeof(structbook),1,fp);
fopen("
借书完毕,按任意键返回\n"
getch();
return;
不存在这样的书,任意键返回\n"
你的卡号不存在,请申请新卡,按任意键返回\n"
(3)管理模块
管理模块最为复杂,管理所有的图书及职工、学生的信息。
先进入总体的管理系统,在这个系统中重点的操作是图书的管理,为其中的1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还连接了职工、学生管理两个系统,为下一步的操作提供了条件。
职工管理系统主要有增加图书、删除图书、修改图书资料、书籍统计,学生管理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于管理学生登录信息。
[程序]
1>
图书管理系统
addbook()/*增加图书函数*/
inti=1;
charchoice='
y'
while(choice=='
||choice=='
Y'
)
请你输入第%d本书的序号\n"
i++);
book[i].booknum);
请你输入书名\n"
book[i].bookname);
请你输入书的作者\n"
book[i].bookcreat);
请你设定书的状态(请设为1或0,1代表书还没人借,0表示书已经借出,设其他值,程序运行时无法得出正常结果)\n"
book[i].turefalse);
是否要输入下本书<
y/n>
?
\n"
choice);
delbook()/*删除图书函数*/
inti;
charbookname[10],choice;
fp2=fopen("
请输入你要删除的书名\n"
如果你输入的书名存在,系统自动删除该信息!
如果不存在,系统不做任何改动\n"
if(strcmp(bookname,book[i].bookname)!
=0)
fclose(fp2);
是否真的要删除该书籍?
删除后该书籍的所有信息将无法恢复《Y/N》\n"
if(choice=='
按任意键返回\n"
else
changebook()/*修改图书资料函数*/
请你输入要修改的书籍的书字\n"
if(strcmp(book[i].bookname,bookname)==0)
你所要修改的书的资料如下,请选择你要修改的内容\n"
序号:
〈%d〉书名:
〈%s〉作者:
〈%s〉\n"
1:
修改书的序号\n"
2:
修改书名\n"
3:
修改作者\n"
请输入1-3:
"
switch(choice)
请输入新的序号\n"
}break;
请输入新的书名\n"
请输入新的作者\n"
defaut:
没有这样的操作"
getchar();
bookcount()/*图书统计函数*/
inti,n=0;
fp=fopen