中国地质大学武汉C语言图书管理系统课程设计报告文档格式.docx
《中国地质大学武汉C语言图书管理系统课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《中国地质大学武汉C语言图书管理系统课程设计报告文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
![中国地质大学武汉C语言图书管理系统课程设计报告文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/29/1cf165f5-c4bf-443d-9f94-f715718d8646/1cf165f5-c4bf-443d-9f94-f715718d86461.gif)
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)图书信息录入功能(3)图书信息浏览功能
(4)图书信息查询功能(5)图书信息的删除与修改
2.需求分析
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;
在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;
另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3.总体设计:
根据题目要求,可以将系统分为六个模块:
图书信息管理系统
菜单图书图书图书图书图书
选择录入浏览查询删除修改
功能功能功能功能功能功能
模块模块模块模块模块模块
4.详细设计:
#include<
stdio.h>
stdlib.h>
string.h>
/*********图书信息结构体*********/
/***包括书号、书名、作者、出版社、出版时间,价格***/
typedefstruct{
charnumber[10];
//书号
charname[20];
//书名
charauthor[20];
//作者
charpublish[50];
//出版社
chartime[20];
//出版时间
floatprice;
//价格
}mbook;
intcount;
//书的本数
mbookbook[100];
//最大可有100本书
}mlibrary;
mlibrarylibrary;
voidsave()//保存图书信息
{
FILE*fp;
if((fp=fopen("
library.doc"
"
w"
))==NULL)
printf("
\n不能保存图书信息\n"
);
return;
}
fwrite(&
library.count,sizeof(int),1,fp);
fwrite(library.book,sizeof(library.book[0]),library.count,fp);
/***********图书信息录入功能模块***********/
/*分析:
设计一判断语句和循环语句,继续录入则输入1,为真,进入循环。
用scanf输入要录入的信息*/
voidputin()/*定义录入函数*/
inty=1;
system("
cls"
while(y)
\t请输入您的书籍的书号:
"
scanf("
%s"
library.book[library.count].number);
\t请输入书名:
library.book[library.count].name);
\t请输入作者名:
library.book[library.count].author);
\t请输入出版社:
library.book[library.count].publish);
\t请输入出版时间:
library.book[library.count].time);
\t请输入该书的价格:
fflush(stdin);
%f"
&
library.book[library.count].price);
library.count++;
\n是否继续录入(1.继续;
0,退出录入):
%d"
y);
if(y!
=1)
y=0;
break;
save();
/***********图书信息浏览功能模块***********/
设计一循环,在i<
总书本数library.count时,依次显示书的信息*/
voidlookup()
图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"
for(inti=0;
i<
library.count;
i++)
%s\t%s\t%s\t%s\t%s\t%6.2f\n"
library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);
getchar();
/**********图书信息查询功能模块**********/
/**********按书名查询**********/
首先输入要查找的书名,然后利用循环语句和strcmp函数,把输入书名和已录入的所有书名一一比较,若相同,则跳出循环,将该书信息显示出来*/
voidsearch_by_name()/*定义按书名查询*/
{chars2[20];
intflag=1;
\n请输入要查询的书名:
"
s2);
for(inti=0;
i++)
if(strcmp(s2,library.book[i].name)==0)
flag=0;
if(flag)
cannotfound!
//清空输入缓冲区,为了确保不影响后面的数据读取
/**********按作者名查询**********/
首先输入要查找的作者名,然后利用循环语句和strcmp函数,把输入的作者名和已录入的所有书的作者名一一比较,若相同,则跳出循环,将该书信息显示出来*/
voidsearch_by_author()/*定义按作者名查询*/
chars3[20];
请输入要查询的书的作者:
s3);
if(strcmp(s3,library.book[i].author)==0)
/********************/
voidsearch()/*定义查询函数*/
inta;
/*进行清屏*/
\t\t******************************\n"
开始查询\n"
\t\t\t1---------------search_by_name\n"
\t\t\t2---------------search_by_writer\n"
\t\t\t0---------------exit\n"
);
\t\t请选择你想要的查询方式:
a);
switch(a)
case1:
search_by_name();
case2:
search_by_author();
case0:
/**********图书信息删除功能模块**********/
首先输入要删除的图书号,然后利用循环语句和strcmp函数,把输入的图书号和已录入的所有书的图书号一一比较,若相同,则跳出循环,然后利用循环语句和strcpy函数将后一本书的信息复制给前一本书,这样就达到了删除的目的*/
voiddel()/*定义删除函数*/
/*清屏*/
\nPleasetypeinthenumberofthebookyouwanttodelete:
number);
inti;
for(i=0;
if(strcmp(number,library.book[i].number)==0)break;
if(i!
=library.count)
for(;
library.count-1;
strcpy(library.book[i].name,library.book[i+1].name);
strcpy(library.book[i].number,library.book[i+1].number);
strcpy(library.book[i].publish,library.book[i+1].publish);
strcpy(library.book[i].author,library.book[i+1].author);
strcpy(library.book[i].time,library.book[i+1].time);
library.book[i].price=library.book[i+1].price;