C语言图书管理系统文档格式.docx
- 文档编号:17080042
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:27
- 大小:240.39KB
C语言图书管理系统文档格式.docx
《C语言图书管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言图书管理系统文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
20分
规范程度
5分
程序测试
基本功能20分
扩展功能10分
自述情况10分
答辩情况
30分
成绩评定教师:
1需求分析
本系统主要用于图书馆管理员的图书管理,主要任务是通过建立图书管理系统,完善学校图书录入以及图书信息的管理,通过查询可立即定位该图书的相应的信息,可以对图书进行录入、查询、浏览、增加、修改、排序等。
通过建立图书管理系统,把图书馆的图书管理、读者管理、图书借阅管理等日常管理工作实行计算机统一管理,以提高工作效率和管理水平。
这些管理包括:
1、图书基本信息的管理,包括增加、修改、查询、预约管理;
2、读者基本信息的管理,包括增加、修改、查询管理;
3、系统管理,主要是维护图书信息和退出系统。
图书管理模块主要用来录入和修改图书的基本信息,图书录入用于首次录入图书信息,输入书名后快速定位图书,然后显示要修改的图书信息进行相应的修改;
系统管理模块主要实现管理员的功能,管理员注册自己的账号后,输入正确的密码信息才能登录系统,管理员可以进行系统的维护。
也可以对密码进行修改。
其中处理的数据:
运用结构体、链表处理编号、书名、作者、出版社、图书类型、出版日期、价格、在库状态。
基本包含了图书管理所需的书籍信息,而且基本框架层次分明,条理清晰,可以大大的方便图书的管理操作。
2概要设计
结构体的声明:
structbook{
intnum;
charbname[50];
charwname[20];
charpress[50];
charsort[50];
inttime;
floatprice;
structbook*next;
};
定义了一些函数:
structbook*creatbook();
//创建链表
structbook*addbook(structbook*head);
//添加图书
intyanzheng(structbook*head,intm);
//验证新添加的图书编码是否已存在
voiddeletebook(structbook*head);
//删除图书
voidfprint(structbook*head);
//将链表写入文件
structbook*load();
//从文件中读取信息并建成链表
实现函数调用:
利用循环语句while()和选择语句swithch()或if()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。
主要实现了图书的建立、插入、查询、删除、存储、修改、保存、查询、筛选、排序等功能。
3详细设计
算法实现的源程序比如:
if(num==0)
break;
else
{printf("
请输入图书名:
"
);
scanf("
%s"
bname);
getchar();
运用了if的选择语句,以及后面的break语句等,条理清晰,有耳目一新的感觉。
登录模块
intmain(){
intchoice,n,x,y=1,c,c1=123456;
chara,d,b[10],b1[10]="
lyq"
;
structbook*head=NULL;
while(y){
system("
cls"
printf("
\n\n\n\n\n\n\n"
**********欢迎光临**********\n\n"
**********************图书信息管理系统************************\n\n\n"
printf("
\n\n"
============1-用户登录===========\n"
============0-退出系统===========\n"
请输入您的选择:
scanf("
%d"
&
n);
\n"
getchar();
switch(n){
case0:
y=0;
case1:
请输入您的用户名:
gets(b);
请输入您的密码:
scanf("
c);
if(strcmp(b,b1)!
=0||c!
=c1){
验证失败,请重新输入!
%c"
d);
getchar();
system("
}
else{
验证通过!
请按Enter键进入!
录入数据并形成链表
structbook*creatbook()
{structbook*head,*tail,*p;
intnum,time,n;
charbname[50],wname[20],press[50],sort[50];
intsize=sizeof(structbook);
head=tail=NULL;
请输入图书编号:
num);
请输入作者名:
wname);
请输入出版社:
press);
请输入类别:
sort);
请输入出版时间:
time);
请输入价格:
%f"
price);
while
(1){
p=(structbook*)malloc(size);
p->
num=num;
strcpy(p->
bname,bname);
wname,wname);
press,press);
sort,sort);
time=time;
price=price;
next=NULL;
if(head==NULL)
head=p;
tail->
next=p;
tail=p;
do{
n=yanzheng(head,num);
if(n==0)
printf("
您输入的编号已存在,请重新输入!
}while
(1);
}
returnhead;
插入结点,并且插入后仍按一定顺序
structbook*addbook(structbook*head)
{structbook*ptr,*p1,*p2,*p;
intnum,time,n=1;
do{printf("
p=(structbook*)malloc(size);
p->
strcpy(p->
p2=head;
ptr=p;
while((ptr->
num>
p2->
num)&
&
(p2->
next!
=NULL)){
p1=p2;
p2=p2->
next;
}
if(ptr->
num<
=p2->
num){
if(head==p2)
head=ptr;
else{p1->
next=ptr;
next=p2;
}}
else{
p2->
验证添加的图书编号是否已存在
intyanzheng(structbook*head,intm)
{structbook*p;
p=head;
while(p!
=NULL){
if(p->
num==m)
p=p->
if(p==NULL)
return0;
else
return1;
将新链表写入文件中
voidfprint(structbook*head)
{FILE*fp;
charch='
1'
structbook*p1;
if((fp=fopen("
f1.txt"
"
w"
))==NULL){
Fileopenerror!
exit(0);
fputc(ch,fp);
for(p1=head;
p1;
p1=p1->
next){
fprintf(fp,"
%d%s%s%s%s%d%f\n"
p1->
num,p1->
bname,p1->
wname,p1->
press,p1->
sort,p1->
time,p1->
fclose(fp);
从文件中读取图书信息
structbook*load()
charch;
structbook*head,*tail,*p1;
r"
ch=fgetc(fp);
if(ch=='
){
while(!
feof(fp)){
p1=(structbook*)malloc(sizeof(structbook));
fscanf(fp,"
%d%s%s%s%s%d%f\n"
p1->
sort,&
time,&
head=p1;
next=p1;
tail=p1;
}
tail->
returnNULL;
将整个链表的信息输出
voidprint_book(structbook*head)
{structbook*ptr;
if(head==NULL){
\n没有信息!
return;
图书信息列表如下\n"
==========================================================\n"
编号图书名作者名出版社类别出版时间价格\n"
for(ptr=head;
ptr;
ptr=ptr->
next)
%d%s%s%s%s%d%.2f\n"
ptr->
num,
ptr->
bname,ptr->
wname,ptr->
press,ptr->
sort,ptr->
time,ptr->
删除图书信息
voiddeletebook(structbook*head)
{inta;
charb,ch='
structbook*p1,*p2;
FILE*fp;
请输入要删除的图书编号:
a);
p1=head;
if(p1->
num==a&
next==NULL){//对于文件中只有一组数据
是否清空文件!
(y/n)\n"
b);
switch(b){
case'
n'
:
y'
}
文件已清空!
while(p1->
num!
=a&
p2=p1;
p1=p1->
next==NULL){
num==a){
是否确定从文件中彻底删除该图书?
switch(b){
case'
fprint(head);
删除成功!
break;
}}
没有找到要删除的数据!
}}
图书查询
voidchaxun(structbook*head)
**1-按图书编号查询2-按图书名查询**\n"
**3-按图书类别查询4-按作者名查询**\n"
**5-按出版时间查询0-退出查询**\n"
请输入所选择的编号:
switch(a){
case0:
break;
case1:
num_chaxun(head);
case2:
bname_chaxun(head);
case3:
sort_chaxun(head);
case4:
wname_chaxun(head);
case5:
time_chaxun(head);
default:
您的输入有误!
}}
按编号查询图书信息
voidnum_chaxun(structbook*head)
structbook*p;
请选择您要查询的图书编号:
num==a)
}
if(p==NULL){
没有找到该编号的图书!
else{printf("
你所查询的图书信息如下\n"
=========================================================================\n"
**编号图书名作者名出版社类别出版时间价格**\n"
**%d%s%s%s%s%d%.2f**\n"
p->
p->
bname,p->
wname,p->
press,p->
sort,p->
time,p->
按图书名查询图书信息
voidbname_chaxun(structbook*head)
{chara[50];
intflag=0;
请选择您要查询的图书名:
gets(a);
if(strcmp(p->
bname,a)==0){
flag=1;
if(flag==0){printf("
没有找到该图书名的图书!
else{printf("
printf("
p->
p=p->
按作者名查询图书信息
voidwname_chaxun(structbook*head)
请选择您要查询的图书作者名:
wname,a)==0){
if(flag==0){
**编号图书名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)