c语言课程设计图书信息管理系统.docx
- 文档编号:4865694
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:27
- 大小:69.12KB
c语言课程设计图书信息管理系统.docx
《c语言课程设计图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计图书信息管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
c语言课程设计图书信息管理系统
学生课程设计报告
课程名称:
C程序设计语言
选题名称:
图书信息管理系统
年 级:
2011
专 业:
信息管理与信息系统
学 号:
姓 名:
指导教师:
完成地点:
管理学院综合实验室
完成日期:
新浪微博@song-style是坏学长
一、题目(问题)描述
1、系统以菜单方式工作。
2、图书信息录入功能(图书信息用文件保存)--输入。
3、图书信息浏览功能--输出,查询 。
4、查询和排序功能:
(至少一种查询方式)--算法。
按书名查找
按作者查询等。
5、图书信息的删除与修改。
创新要求:
在基本要求达到后,可进行创新设计,如实现会员资料的查询、会员注销,
为借书人办理注册。
办理借书手续(非注册会员不能借书)。
办理还书手续等等。
信息描述:
图书信息包括:
登录号、书名、图书编号、单价、作者名、分类号、出版单
位、出版时间、价格等。
借阅人信息包括:
借书人姓名、性别、学号
二、问题分析
1、系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计。
2、程序将综合if语句及switch语句的运用方法及嵌套应用方法,循环结构的三种语句while、do-while.、for,以及函数的定义方法和调用方法等来进行编写。
三、系统设计
1、程序总体结构
2.重要数据的数据结构设计
structBOOK:
把所要的数据
charshuming[999],zuozheming[999],fenleihao[999],danwei[999],shijian[999],jiage[999];
全放在一维数组中,以结构体的形式表现出来。
这是文件录入和读取的关键,相当于做成一个文件,需要的时候将里面的数据读取或者修改。
(1).录入模块:
录入图书信息并保存于文件中。
(2).浏览模块:
添加一个或多个图书信息,并将所添加图书信息保存,方便查找。
(3).删除模块:
对图书信息做删除处理。
(4).修改模块:
voidxiugai
根据需要对图书信息进行修改。
(5).查询模块:
对已建立的图书信息进行查询,并且可根据需要选择按书名、作者或按分类号查询。
(6).菜单:
帮助借阅者根据所需进行选择。
3.函数设计
函数名:
菜单函数voidselect()
函数功能:
运行后显示主界面,通过输入来选择下一步操作。
参数说明:
intn用于判断使用者所要进入的界面的序号。
算法描述:
根据使用者输入的数字进行判断,并调用相对应的函数。
函数名:
登陆函数voiddl()
函数功能:
该函数功能为辨识管理权限,只有正确输入登录号才能进入主界面。
参数说明:
intn,k=0,其中n用于识别登录号正确与否,k用于做一个循环。
算法描述:
用户输入登录号存在n里,判断n值是否等于11056026,是,则调用菜单函数。
否,则让用户重新输入,两次输错以后关闭程序。
函数名:
录入函数voidinput()
函数功能:
进入该函数,开始根据提示录入图书信息
参数说明:
inti=0;用于自加,以便更换储存输入的信息的位置。
Chara;接收用户输入的字符。
算法描述:
printf提示信息,用户输入需要录入的数据,输入Y则调用lr()。
输入N则调用clect(),输入其他则调用shifou()。
函数名:
浏览函数voidoutput()
函数功能:
进入该函数,按照输入顺序依次显示信息
参数说明:
inti=0;用于自加,以更换数据的位置信息以输出。
chara,b用于接受用户输入的字符。
算法描述:
输出第一本书籍的信息,i++。
输入Y,则输出第二本书籍的信息。
输入N,则调用slect().
函数名:
查询函数voidsearch()
函数功能:
进入函数,选择不同方式进行查询
参数说明:
inti;chaj,m[100],a;i用于做循环以搜索图书,j用于判断用户需要的查询方式,m[100]用于存放用户输入的搜索数据。
算法描述:
根据用户输入的字符进行判断,调用相应函数。
函数名:
修改函数voidxiugai()
函数功能:
进入该函数,开始根据提示修改图书信息
参数说明:
inti用于做循环的条件限制,以寻找要修改的图书。
charj用于用于判断用户需要的修改方式并调用相应函数。
charm[100],用于录入用户新存入的数据信息并保存。
chara;根据用户输入的字符,判断其是否需要继续修改信息,并调用相应函数。
算法描述:
输入j值,判断修改方式:
A按书名,则调用xiugai1,B按作者名调用xiugai2,C返回,调用slect()。
然后用户输入需要修改的书本的信息,用循环寻找相同的数据,printf需要修改的图书信息,并且提示用户输入相应信息。
最后,输入Y,则gotomulu,N则gotoxiugai2。
函数名:
删除函数voidshanchu()
函数功能:
进入该函数,开始根据提示删除图书信息
参数说明:
inti,p;用于做循环。
charj,用于用于判断用户需要的删除方式并调用相应函数。
m[100]用于给用户输入需要删除的书籍信息。
a,用于存放用户输入的字符。
dd用于存放用户输入的字符。
算法描述:
输入i值,判断删除方式:
A按书名,则调用shanchu1,B按作者名调用shanchu2,C返回,调用slect()。
然后用户输入需要删除的书本的信息,用循环寻找相同的数据,printf需要删除的图书信息,并且提示用户输入相应信息。
最后,输入Y,则从i的位置开始往后,所有book.的数据往前移动一位,然后输入Y,则xiugai,输入N则调用slect()。
4.程序运行视图
(见下页)
四、难点及关键技术分析:
程序设计的难点及解决方法说明
难点:
算法设计,只有设计出来了算法以后才能步步展开,才能有目的的编写程序。
所以必须要有一个好的算法。
解决办法:
算法设计用流程图会很非常直观,可以清楚的显示各个框之间的逻辑关系。
流程图包括表示相应操作的框,带箭头的流程线,必要的文字说明。
关键技术:
删除书籍时,结构体中的数据往前移动一位。
解决办法:
使用strcpy()来把后面的数据与前一位数据进行调换。
还需要做一个循环。
并且要注意的是,因为数组是100位的,所以如果删除的书籍是最后两位的话,是没有必要使用strcpy()的,因为存有数据的内存的相对位置没有发生变化。
五、测试情况:
系统运行、数据输入及输出结果截图
六、源程序清单:
#include
#include
#include
structBOOK
{
charshuming[999],zuozheming[999],fenleihao[999],danwei[999],
shijian[999],jiage[999];
}books[999];
voidmain()
{
voidselect();
voiddl();
dl();
printf("\n");
select();
}
voidselect()
{
system("cls");
voidjm();
voidinput();
voidoutput();
voidsearch();
voidxiugai();
voidshanchu();
intn;
printf("图书管理功能界面\n");
menu:
jm();
scanf("%d",&n);
getchar();
if(n==1||n==2||n==3||n==4||n==5||n==6)
{
switch(n)
{
case1:
input();break;
case2:
output();break;
case3:
search();break;
case4:
xiugai();break;
case5:
shanchu();break;
case6:
exit(0);break;
}
}
else
{
printf("输入错误,请重新输入!
\n");
printf("输入你再次的选择:
\n");
printf("\n");
printf("\n");
printf("\n");
gotomenu;
}
}
voiddl()
{
intn;
intk=0;
zl:
system("cls");
printf("\n");
printf("\n");
printf("\n");
printf("********欢迎光临图书管理系统********\n");
printf("\n");
printf("\n");
printf("请输入你的学号:
");
scanf("%d",&n);
if(n==11056026)
select();
else
{
if(k<2)
{
printf("输入错误,请重新输入!
\n");
printf("输入你再次的选择:
");
k++;
gotozl;
}
else
{
printf("登录失败\n");
exit(0);
}
}
}
voidjm()
{
printf("*\n");
printf("***\n");
printf("********\n");
printf("***************\n");
printf("********************\n");
printf("*********************\n");
printf("**1.图书信息录入***\n");
printf("**2.图书信息浏览***\n");
printf("**3.图书查询***\n");
printf("**4.图书信息修改***\n");
printf("**5.图书信息删除***\n");
printf("**6.退出***\n");
printf("*********************\n");
printf("请输入序号:
\n");
printf("\n");}
voidinput()
{
system("cls");
inti=0;
chara;
lr:
printf("%s","图书书名:
");
scanf("%s",books[i].shuming);
printf("%s","作者名:
");
scanf("%s",books[i].zuozheming);
printf("%s","分类号:
");
scanf("%s",books[i].fenleihao);
printf("%s","出版单位:
");
scanf("%s",books[i].danwei);
printf("%s","出版时间:
");
scanf("%s",books[i].shijian);
printf("%s","价格:
");
scanf("%s",books[i].jiage);
i++;
printf("\n");
printf("是否继续,输入Y/N:
");
shifou:
scanf("%s",&a);
getchar();
system("cls");
if(a=='n'||a=='N')
{
select();
}
elseif(a=='y'||a=='Y')
{
gotolr;
}
else
{
printf("输入错误,请重新输入");
gotoshifou;
}
system("cls");
}
voidoutput()
{
system("cls");
inti=0;
chara,b;
shuchu:
printf("图书书名:
%s\n",books[i].shuming);
printf("作者名:
%s\n",books[i].zuozheming);
printf("分类号:
%s\n",books[i].fenleihao);
printf("出版单位:
%s\n",books[i].danwei);
printf("出版时间:
%s\n",books[i].shijian);
printf("价格:
%s\n",books[i].jiage);
i++;
printf("是否继续浏览下一本:
Y/N?
\n");
shifou:
scanf("%s",&a);
getchar();
system("cls");
if(a=='n'||a=='N')
{
select();
}
elseif(a=='Y'||a=='y')
{
if(books[i+1].shuming!
=0)
gotoshuchu;
else
{
printf("查询完毕,输入Y返回界面\n");
scanf("%s",&b);
getchar();
system("cls");
if(b=='y'||b=='Y')
select();
}
}
else
{
printf("输入错误,请重新输入");
gotoshifou;
}
system("cls");
}
voidsearch()
{
system("cls");
inti;
charj,m[100],a;
mulu:
printf("请选择查询方式:
\n");
printf("A、按书名查询\n");
printf("B、按作者名查询\n");
printf("C、按分类号查询\n");
printf("D、返回\n");
printf("请选择:
");
scanf("%s",&j);
getchar();
system("cls");
if('A'==j||'a'==j)
{
chaxun1:
printf("请输入图书书名:
");
scanf("%s",&m);
for(i=0;i<=999;i++)
{
if(strcmp(books[i].shuming,m)==0)
{
printf("书名:
%s\n",books[i].shuming);
printf("作者:
%s\n",books[i].zuozheming);
printf("分类号:
%s\n",books[i].fenleihao);
printf("出版单位:
%s\n",books[i].danwei);
printf("出版时间:
%s\n",books[i].shijian);
printf("价格:
%s\n",books[i].jiage);
}
}
printf("是否继续,输入Y/N:
");
scanf("%s",&a);
getchar();
system("cls");
if(a=='n'||a=='N')
{
gotomulu;
}
else
gotochaxun1;
}
elseif('B'==j||'b'==j)
{
chaxun2:
printf("请输入作者名:
");
scanf("%s",&m);
for(i=0;i<=999;i++)
{
if(strcmp(books[i].zuozheming,m)==0)
{
printf("图书书名:
%s\n",books[i].shuming);
printf("作者名:
%s\n",books[i].zuozheming);
printf("分类号:
%s\n",books[i].fenleihao);
printf("出版单位:
%s\n",books[i].danwei);
printf("出版时间:
%s\n",books[i].shijian);
printf("价格:
%s\n",books[i].jiage);
}
}
printf("是否继续,输入Y/N:
");
scanf("%s",&a);
getchar();
system("cls");
if(a=='n'||a=='N')
{
gotomulu;
}
else
gotochaxun2;
}
elseif('C'==j||'c'==j)
{
chaxun3:
printf("请输入分类号:
");
scanf("%s",&m);
for(i=0;i<=999;i++)
{
if(strcmp(books[i].fenleihao,m)==0)
{
printf("图书书名:
%s\n",books[i].shuming);
printf("作者名:
%s\n",books[i].zuozheming);
printf("分类号:
%s\n",books[i].fenleihao);
printf("出版单位:
%s\n",books[i].danwei);
printf("出版时间:
%s\n",books[i].shijian);
printf("价格:
%s\n",books[i].jiage);
}
}
printf("是否继续,输入Y/N:
");
scanf("%s",&a);
getchar();
system("cls");
if(a=='n'||a=='N')
{
gotomulu;
}
else
gotochaxun3;
}
elseif('D'==j||'d'==j)
{
select();
}
else
{
printf("输入错误,请重新输入");
gotomulu;
}
system("cls");
}
voidxiugai()
{
system("cls");
inti;
charj,m[100],a;
mulu:
printf("请选择修改方式:
\n");
printf("A、按书名修改\n");
printf("B、按作者名修改\n");
printf("C、返回\n");
printf("请选择:
");
scanf("%s",&j);
getchar();
if('A'==j||'a'==j)
{
system("cls");
xiugai1:
printf("请输入要修改的图书书名:
");
scanf("%s",&m);
for(i=0;i<=999;i++)
{
if(strcmp(books[i].shuming,m)==0)
{
printf("图书书名:
%s\n",books[i].shuming);
printf("作者名:
%s\n",books[i].zuozheming);
printf("分类号:
%s\n",books[i].fenleihao);
printf("出版单位:
%s\n",books[i].danwei);
printf("出版时间:
%s\n",books[i].shijian);
printf("价格:
%s\n",books[i].jiage);
printf("请修改:
");
printf("%s","图书书名:
");
scanf("%s",books[i].shuming);
printf("%s","作者名:
");
scanf("%s",books[i].zuozheming);
printf("%s","分类号:
");
scanf("%s",books[i].fenleihao);
printf("%s","出版单位:
");
scanf("%s",books[i].danwei);
printf("%s","出版时间:
");
scanf("%s",books[i].shijian);
printf("%s","价格:
");
scanf("%s",books[i].jiage);
printf("是否继续,输入Y/N:
");
scanf("%s",&a);
getchar();
system("cls");
if(a=='n'||a=='N')
{
gotomulu;
}
else
gotoxiugai1;
}
system("cls");
}
}
elseif('B'==j||'b'==j)
{
xiugai2:
printf("请输入要修改的作者名:
");
scanf("%s",&m);
for(i=0;i<=999;i++)
{
if(strcmp(books[i].zuozheming,m)==0)
{
printf("图书书名:
%s\n",books[i].shuming);
printf("作者名:
%s\n",books[i].zuozheming);
printf("分类号:
%s\n",books[i].fenleihao);
printf("出版单位:
%s\n",books[i].danwei);
printf("出版时间:
%s\n",books[i].shijian);
printf("价格:
%s\n",books[i].jiage);
printf("请修改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 图书 信息管理 系统