图书管理系统C语言Word文档格式.docx
- 文档编号:17920605
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:19
- 大小:91.95KB
图书管理系统C语言Word文档格式.docx
《图书管理系统C语言Word文档格式.docx》由会员分享,可在线阅读,更多相关《图书管理系统C语言Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
二.系统总框图
图书管理系统
管理系统
查阅图书
按作者找
按书名找
图书统计
会员管理
删除图书
增加图书
修改图书
三.每个模块的设计分析和所有定义的函数及说明
1、数据结构
//图书的数据结构:
structbook
{
intbooknum;
//书号
charbookname[20];
//书名
charbookcreat[10];
//书的作者
}book[1000];
//定义一个比较大的1000本书
//定义学生类型,用于存放借出的书籍
structstudent
intcarnum;
//卡号
charlendbook[10];
//借出的书数
}student[1000];
//定义一千个学生
2、main()主函数模块
主函数是程序入口,采用模块化设计。
首先在主程序中打印欢迎界面,定义一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序。
3、chabook()查询图书函数模块
在这个模块中又分为两个子模块:
按书名查找模块和按作者查找。
1)按书名查找模块:
在这个子函数里使用指向文件的指针变量,定义指针变量fp,fp指向文件名为“book.txt”的首地址,如果不存在,则自动建立。
从键盘输入书名,依次移动指针地址,直到找到输入的文件名,找到后显示图书信息,再判断状态值是否为1,真的话就显示“此书现在无人借阅”,假就显示“这本书已经有人借出!
”,关闭文件,然后按任意键返回。
如果找到最后一个地址仍没找到,就显示“没有你要查询的书籍!
”。
关闭文件。
2)按作者查找,原理同按书名查找。
4、addbook()增加图书函数模块
定义指向文件的指针变量fp,使其指向“book.txt”
并以追加的方式打开文件,依次从键盘读入图书的各个信息,写入文件,然后关闭文件。
11、delbook()删除图书函数模块
定义两个文件指针,fp,fp2.从键盘输入图书名字。
然后在文件中查找,找到后删除掉有关记录,找不到则报错。
12、changebook()修改图书信息函数模块
定义两个文件指针,fp,fp2.从键盘输入要修改的图书名。
然后从文件中找一致的,找到后询问修改哪一部分。
在进入修改。
完成后关闭文件。
13、bookcount()图书统计函数模块
定义文件指针fp,并使之指向“book.txt”依次从里面读取数据,并输出。
14、end()结束函数模块定义退出界面。
四.举例说明2个比较有特点的算法
算法一:
查询图书函数
在这个算法的特点在于:
模块中又分为两个子模块:
按书名查找模块和按作者查找,以满足读者的不同需求。
算法二:
图书统计函数模
特点在于:
能够统计借出的图书的信息。
定义指向文件的指针变量fp,并使fp指向“record.txt”,以只写的方式打开文件,从首地址读取,找到图书信息,就把统计借出图书个数的变量i的值加1。
并显示借出的每一本图书的信息。
五:
数据分析
#include<
stdio.h>
string.h>
conio.h>
stdlib.h>
ctype.h>
#defineSTACK_INIT_SIZE10
#defineOK1
#defineTRUE1
#defineERROR0
/*定义学生类型,用于存放借出的书籍*/
structstudent{
/*定义书的类型*/
structbook
charbookcreat[20];
intturefalse;
/*用于借书和还书模块判断一本书是否借出的条件*/
/*借书卡的数据类型*/
structbook1
}book1[1000];
//////////////////////////////////查询图书信息模块//////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
//////
(1)按书名查找
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("
书号书名作者\n%d%s%s\n"
book[i].booknum,book[i].bookname,book[i].bookcreat);
此书现在无人借阅\n按任意键返回\n"
}
else{printf("
这本书已经有人借出\n"
fclose(fp);
return0;
}
fclose(fp);
return0;
没有你要查询的书籍!
}
//////////
(2)按作者查找
findbook1()
请输入你要查找的作者名:
bookcreat);
if(strcmp(bookcreat,book[i].bookcreat)==0)
这本书已经有人借出!
没有你要查询的书籍\n"
chabook()/////查找图书主模块
charch5;
do
{printf("
\n"
**********欢迎进入图书查询系统**********\n"
\t1:
按书名查找\n"
\t2:
按作者查找\n"
\t0:
返回\n"
\t请输入0━2:
ch5=getch();
switch(ch5)
case'
1'
:
findbook();
getch();
break;
2'
findbook1();
0'
default:
无此操作!
}while(ch5!
='
//////////////////////////////////图书管理模块/////
//////////
(1).增加图书
addbook()
inti=0;
a+"
书号:
%d"
&
book[i].booknum);
书名:
book[i].bookname);
作者:
book[i].bookcreat);
fwrite(&
book[i],sizeof(structbook),1,fp);
输入完毕,任意键返回...\n"
//////////
(2).删除图书
delbook()
FILE*fp,*fp2;
charchoice;
fp2=fopen("
bookl.txt"
w"
要删除的卡号(不存在则不作改动):
booknum);
if(book[i].booknum!
=booknum)
fwrite(&
book[i],sizeof(structbook),1,fp2);
fclose(fp2);
system("
colore"
确认删除?
(Y/N)!
choice);
if(choice=='
y'
||choice=='
Y'
)
fp=fopen("
fp2=fopen("
for(i=0;
book[i],sizeof(structbook),1,fp2)!
fclose(fp2);
操作成功!
\n按任意键返回...\n"
getch();
else
操作已取消!
////////////////////////////////////////////////////////
/////////////////图书管理模块///////////////////////////
//////////
(1).增加图书信息
addbook2()
charchoice='
;
while(choice=='
{system("
color6e"
scanf("
book[i].bookcreat);
请你设定书的状态(1在架/0不在):
book[i].turefalse);
是否要输入下本书(y/n)\n"
/////////////
(2).删除图书信息
delbook3()
charbookname[10],choice;
if(strcmp(bookname,book[i].bookname)!
=0)
确认删除(y/n)?
按任意键返回...\n"
////////////(3).图书统计
bookcount()
inti,n=0;
=0&
&
strlen(book[i].bookname)!
strlen(book[i].bookcreat)!
第%d本书\n序号书名作者状态\n"
i+1);
%d%10s"
book[i].booknum,book[i].bookname);
%15s%4.2f%d(1在/0不在)\n"
book[i].bookcreat,book[i].turefalse);
n=n+1;
目前共有%d本书.\n"
n);
//////////////////////结束界面函数
end()
cls"
\t\t\t┏┳━━━━━━━━━━━━┳┓\n"
\t\t\t┣╋━━━━━━━━━━━━╋┫\n"
\t\t\t┃┃谢谢使用本系统,再见!
┃┃\n"
\t\t\t┗┻━━━━━━━━━━━━┻┛\n"
/////////////////////////////////////////////////////////////
////////////////////主函数///////////////////////////
main()
charch1,ch2;
system("
do
{system("
\t\t\t┃┃欢迎进入图书管理系统┃┃\n"
\t请选择:
查阅图书\n"
管理系统\n"
退出\n"
\t请输入0━2:
ch1=getch();
switch(ch1)
chabook();
do
{system("
printf("
\t\t**********欢迎进入管理系统**********\n"
printf("
1:
增加图书\n"
2:
删除图书\n"
3:
修改图书\n"
4:
图书统计\n"
5:
会员管理系统\n"
0:
返回\n"
请输入0━5:
ch2=getch();
switch(ch2)
{
addbook();
break;
delbook();
}while(ch1!
}break;
}
六.存在的问题与不足及对策
本程序存在的问题有:
如果第一次运行程序时没有存入书籍信息,则程序运行时只会显示出错,而不会显示出错原因。
我们可以通过先阅读使用说明来操作,这样就可以避免出错时不知道原因。
很容易就会忘记了分号,导致出错。
七.使用说明
1、主函数运行界面:
2、输入1,进入查阅图书界面:
3、输入2,进入管理系统:
4、输入1,进入增加图书界面:
5、输入2,进入删除图书界面:
进入所选的界面后,按提示操作即可。
注意事项:
第一次运行该程序时,要先输入新图书信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 语言
![提示](https://static.bdocx.com/images/bang_tan.gif)