图书信息管理系统课程设计报告.docx
《图书信息管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统课程设计报告.docx(53页珍藏版)》请在冰豆网上搜索。
图书信息管理系统课程设计报告
一.课程设计的内容**************************************************3
二.需求分析**********************************************************3
三.概要设计**********************************************************3
3.1软件运行开发平台*******************************************************3
3.2数据结构**************************************************************4
3.3系统结构图*************************************************************5
四.详细设计***********************************************************5
4.1头文件,变量定义,函数**************************************************5
4.2管理员登录,新用户注册模块**********************************************6
4.3菜单模块设计************************************************************9
4.4输入模块设计************************************************************9
4.5浏览模块设计***********************************************************10
4.6查询模块设计***********************************************************11
4.7删除模块设计***********************************************************12
4.8修改模块设计***********************************************************13
五.测试,结果分析**************************************************15
5.1数据分析***************************************************************15
5.2测试截图***************************************************************16
六.总结****************************************************************22
七.参考文献***********************************************************22
八.附源程序***********************************************************22
1、课程设计的内容
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
系统以菜单方式工作
图书信息录入功能(图书信息用文件保存)
图书信息浏览功能
图书信息查询功能(按书名查询,按作者名查询,按登录号查询)
图书信息的删除与修改(可选项)
扩展功能(管理员登录,新用户注册,并且每个用户都有独立的文件来保存他的信息,用户之间通过密码识别,互不影响)
2、需求分析
根据题目要求,应把图书信息用结构体形式输入,再存放入文件中储存。
所以应该提供一个结构体和文件的输入输出操作。
在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
还有,应该有管理员登录用户密码识别的模块和新用户注册的模块,以实现多用户同时使用该系统的目的,而通过用户名来保存相应的信息,用户之间互不干扰。
3、概要设计
3.1软件运行与开发平台
VisualC++简介
这个系统前台所用的开发工具是VisualC++6.0,它是Microsoft公司开发的基于C/C++的集成开发工具,是VisualStudio中功能最为强大,代码效率最高的开发工具.
VisualC++6.0跟以前的版本相比,它的编译器,调试器,连接器,编辑器,资源编辑器都有所加强,在编辑器中还提供了自动语句生成功能,编辑器会像VisualBasic那样自动提示函数的参数,对象成员.另外,VisualC++6.0还提供了许多的向导.在MFC中新增了一些类,提供了更加强大的数据访问功能.
程序员可以利用VisualC++6.0以基于WindowsAPI的C编程方式或基于MFC的C++编程方式,也可混合编程,使工作效率相对提高,开发工作量减少,源代码效率高.从面使VisualC++6.0成为目前开发Windows应用程序最好、最高效的开发工具之一。
同时在数据库系统开发方面也有很大的优势.
3.2数据结构
本系统定义了两个结构体变量,分别用来储存管理员信息与图书信息。
各模块的数据结构如下:
3.2.1菜单选择模块:
(
给出信息提示;
绘制菜单(包含输入、显示、查询、修改、删除、退出、排序);
提示菜单选择并读入到变量;
根据读入变量的值调用不同的模块函数;)
3.2.2 信息输入模块:
(
打开职工信息文件;
发出输入提示信息;
输入职工信息;
提示是否继续输入;
读入到变量;
根据读入变量的值进入菜单或输入函数模块;)
3.2.3 信息输出模块:
(
输出所有图书的所有信息。
)
3.2.4 信息查询模块:
(
调用switch函数;
给出信息提示;
提示菜单选择并读入到变量;
根据读入变量的值进入不同的case;
Case1给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。
Case2给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。
)
3.2.5信息修改模块:
(
给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息,并提示输入新的图书信息;否则,提示出错。
)
3.2.6信息删除模块:
(
给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息,并删除该图书的图书信息;否则,提示出错。
)
3.2.7文件保存模块(
看文件能不能读;否则提示出错。
看文件的长度符不符合要求;否则提示出错。
保存文件)
3.3系统结构图
如图3-3
图3-3
4、详细设计
4.1头文件,变量定义,函数
#include
#include
#include
#defineN10
charadministrator[20];/********管理员名字**********/
structmanage
{charmanage_name[20];
charpassword[20];
};
structlibrary
{
intnum;/********登录号**********/
charbook_name[30];/********书名************/
charwriter[30];/********作者************/
charsort_num[6];/********分类号**********/
charpub_company[30];/********出版单位********/
charpub_time[30];/********出版时间********/
floatprice;/********价格************/
};
typedefstructlibraryLIB;
LIBlib[N];
FILE*fp;
intall=0;
voidmenu();/*菜单函数*/
voidenter();/*输入模块*/
voidbrowse();/*浏览函数*/
voidsearch();/*查询函数*/
voiddel(inty);/*删除函数*/
voidmodify(intx);/*修改函数*/
voidprintf_back();/*一个任务结束时选择浏览还是返回函数***/
voidwr_search();/********按图书作者查询函数************/
voidbn_search();/********按图书名查询函数**************/
voidid_search();/********按图书登录号查询函数**********/
voidindex();/********显示登录界面函数**************/
voidlogin();/********管理员进入函数****************/
voidbyebye();/********离开界面函数******************/
voidadm_view();/********输入登录帐号密码界面函数******/
voidnew_adm_view();/********新用户注册界面函数************/
4.2管理员登录,新用户注册模块的算法设计
4.2.1用户来到图书信息管理系统页面
/*************************登录离开模块*******************************/
voidindex()
{
charinput;
printf("\n\n\t\t\t*****************************\n");
printf("\t\t\t图书信息管理系统\n");
printf("\t\t\t*****************************\n\n\n");
printf("--------------------------------------------------------------------------\n");
printf("\t<按任意键进入>\n\t");
input=getchar();
}
voidlogin()
{
intinput;
charinput_1;
do
{printf("\t1.管理员进入\n");
printf("\t2.新用户注册\n");
printf("\t3.退出本系统\n\n\n");
printf("\t请选择服务类别:
");
scanf("%d",&input);
switch(input)
{
case1:
{
adm_view();break;/********管理员进入界面函数************/
}
case2:
{
new_adm_view();break;/********新用户注册界面函数************/
}
case3:
{
byebye();break;/********离开界面函数************/
}
default:
{
printf("\n\t输入出错!
请重新选择~\n");
printf("\n\t按任意键返回选择页面~\n\t");
input_1=getchar();
}
}
}
while(input!
=1&&input!
=2&&input!
=3);
}
voidbyebye()
{
printf("\n\n\n\t\t*感谢您的使用*\n\n\t\t");
printf("按任意键退出本系统\n\t\t");
getchar();
exit(0);
}
4.2.2管理员进入
图4-2-2
4.2.3新用户注册
图4-2-3
4.3菜单模块的算法设计
开始
图4-3
首先,运行程序,进入菜单,然后选择操作(运用swith语句),调用各子函数。
在返回操作中运用while语句进行控制返回菜单。
4.4输入模块算法设计
图4-4
4.5浏览模块算法设计
图4-5
voidbrowse()首先,输出所有图书的信息,并输出图书记录数,然后调用辅助函数进行菜单选择,操作完成后返回主菜单。
4.6查询模块算法设计
图4-6
voidsearch()选择查询方式,1按图书登录号查询,2按作者查询,3按图书名查询然后定位,再调用输出函数;
4.7删除模块算法设计
/*******************删除模块**************************/
voiddel(inty)
{
charinput,ad1[20],ad2[20],ad3[20],ad4[20];
FILE*fp;
intinp,i=0,j;
LIBbook_taxis[20];
strcpy(ad1,administrator);
strcpy(ad2,administrator);
strcpy(ad3,administrator);
strcpy(ad4,administrator);
if(y==N+1)
search();
else
{
do{
printf("\n\n\n\t注意:
您确定要删除该记录吗?
\n");
printf("\n\t1).是\t2).否\n");
printf("\n\t请输入:
");
scanf("%d",&inp);
if(inp!
=1&&inp!
=2)
{
printf("\n\t对不起,没有该项服务~");
printf("\t按任意键重新选择\n\t");
input=getchar();
}
}
while(inp!
=1&&inp!
=2);
if(inp==2)
search();
if(inp==1)
{
if((fp=fopen(strcat(ad1,".c"),"r"))!
=NULL)
{
do
{
fread(&book_taxis[i],sizeof(structlibrary),1,fp);
i=i+1;
}
while(!
feof(fp));
fclose(fp);
}
if(i>2)
{
fp=fopen(strcat(ad2,".c"),"w");
for(j=0;jfwrite(&book_taxis[j],sizeof(structlibrary),1,fp);
fclose(fp);
fp=fopen(strcat(ad3,".c"),"a");
for(j=y+1;jfwrite(&book_taxis[j],sizeof(structlibrary),1,fp);
fclose(fp);
}
else
{
remove(strcat(ad3,".c"));
}
printf("\n\n\t记录已删除!
\n\n\t按任意键返回\n\t");
input=getchar();
printf_back();
}
}
}
4.8修改模块算法设计
/**************************修改模块**********************/
voidmodify(intx)
{
intinp,i=0,j;
FILE*fp,*fp1;
charinput,ad1[20],ad2[20];
LIBbooks,book_taxis[20];
strcpy(ad1,administrator);
strcpy(ad2,administrator);
if(x==N+1)
search();
else
{
do
{
printf("\n\n\n\t注意:
您确定要修改该记录吗?
\n");
printf("\n\t1.是\t2.否\n");
printf("\n\t请输入:
");
scanf("%d",&inp);
if(inp!
=1&&inp!
=2)
{
printf("\n\t对不起~没有这项服务~\n");
printf("\t按任意键重新选择\n\t");
input=getchar();
}
}
while(inp!
=1&&inp!
=2);
if(i==2)
search();
if(inp==1)
{
printf("\n\n\n\t---请输入图书信息---\n\n");
printf("\t登录号:
");
scanf("%d",&books.num);
printf("\n\t书名:
");
scanf("%s",books.book_name);
printf("\n\t作者名:
");
scanf("%s",books.writer);
printf("\n\t分类号:
");
scanf("%s",books.sort_num);
printf("\n\t出版单位:
");
scanf("%s",books.pub_company);
printf("\n\t出版时间:
");
scanf("%s",books.pub_time);
printf("\n\t价格:
");
scanf("%f",&books.price);
if((fp1=fopen(strcat(ad1,".c"),"r"))!
=NULL)
{
do
{
fread(&book_taxis[i],sizeof(structlibrary),1,fp1);
i=i+1;
}
while(!
feof(fp1));
fclose(fp1);
for(j=0;jif(books.num==book_taxis[j].num)
{
printf("\n\n\n\t对不起,这个编号已经使用过了~\n");
printf("\t按任意键返回管理菜单~");
printf("0");
input=getchar();
printf_back();
break;
}
for(j=x+1;jif(books.num==book_taxis[j].num)
{
printf("\n\n\n\t对不起,这个编号已经使用过了~\n");
printf("1");
printf("\t按任意键返回管理菜单~");
input=getchar();
printf_back();
break;
}
}
book_taxis[x]=books;
fp=fopen(strcat(ad2,".c"),"w");
for(j=0;jfwrite(&book_taxis[j],sizeof(structlibrary),1,fp);
fclose(fp);
printf("\n\n\t信息修改完成!
按任意键返回");
input=getchar();
printf_back();
}
}
}
五、测试、结果进行分析
5.1.数据分析
5.1.1实现程序:
首先进入如下界面:
1.图书信息录入
2.浏览全部
3.查询
4.删除数据
5.修改数据
6.退出
5.1.2输入“1”,后按“num登陆号”,book_name书名,writer作者名,sort_num分类号,出版社pub_conpany,出版时间pub_time,价钱price顺序输入两组数据:
“1,we,er,1,as,1234,34”
“2,ew,re,2,sa,4321,43”
5.1.3.输入“2”输出数据:
“1,we,er,1,as,1234,34”
“2,ew,re,2,sa,4321,43”
5.1.4.输入“3”查找,“请选择按书名或作者名或登录号查询:
1:
登录号
2.作者名
3.书名
输入“1“或“2”或“3”分别查询。
输入“3“和“we“,输出“1,we,er,1,as,1234,34”;输入2和“re“,输出“2,ew,re,2,sa,4321,43”,输入“1”和“1”,输出“1,we,er,1,as,1234,34”;符合要求
5.1.5输入”4”或“5“进行修改或删除。
输入修改的书名“we”显示“1,we,er,1,as,1234,34”及“pleaseinputxiugai'stheinformations”,后输入新信息。
5.1.6输入6退出。
5.2.测试截图
登录界面
图5-1
菜单界面
图5-2
输入信息界面
图5-3
浏览界面
图5-4
查询界面
图5-5
查询结果界面
图5-6
删除界面
图5-7
删除成功界面
图5-8
修改界面
图5-9
退出界面
图5-10
6、总结
这次课程设计让我掌握了许多的有用知识。
首先通过不断地学习和锻炼更加熟练地掌握应用软件MicrosoftVisualC++6.0了。
设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。
同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。
在设计中,每个同学都会遇到一些困难,或多或少,这些困难常常让我心情烦躁,比如不能清晰的