图书信息管理系统设计 纯c语言课程设计.docx
《图书信息管理系统设计 纯c语言课程设计.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统设计 纯c语言课程设计.docx(37页珍藏版)》请在冰豆网上搜索。
图书信息管理系统设计纯c语言课程设计
语言课程设计报告C
目:
图书信息管理系统设计题
河南理工大学计算机学院
录目
题目与要求第一章1.1问题提出...........................................................................1
1.2本系统涉及地知识点.......................................................1
1.3功能要求...........................................................................1
功能设计第二章
2.1算法设计.............................................................................1
2.2部分模块流程图.................................................................4
第三章程序代码设计.............................................................5
第四章C程序设计总结.........................................................16
第五章结束语.........................................................................16
参考文献...................................................................................17
.......................................................................................16录附.
、题目与要求1问题提出1.1
.本人计划编写一个图书信息管理系统,主要用来管理图书管图书基本信息本系统涉及地知识点1.2
结构、数组、循环、函数、分支、文件功能要求1.3
.1、管理员进行登录号验证2、进行图书信息录入,每本书地信息包括:
书名、作者名、分类号、出版单位、出版时间、.价格等.3、进行图书查询,包括按书名查询和按作者查询.4、进行图书删除,删除一些丢失,毁坏地图书.5、进行图书修改,修改书籍地书名、作者名、分类号、出版单位、出版时间、价格.6、进行图书排序,按书名进行排序.、进行图书信息保存7功能设计2
算法设计2.1
请输入登录号函数进行输入登录号进入系统if1、利用、进入主菜单2作进行操数1(~6)通过switch函入主录登后进入菜单输编号
请输入登录号652341图图图图图图书书书书书书排删修录查浏序入询改览除
、图书录入3函数录入信息voidputin()后用1选择.
作者书图书录分类
出版单出版时图书价
1继续录0退出
、图书查询4查询图书。
voidsearch()选择2后用
图书查询按按作书者名查查询询
、图书浏览5浏览图书选择voidlookup()3后用
书名分类号作者出版单位图书浏览
出版时间价格
、图书删除6函数删除图书信息voiddel()后用4选择.
删除图书全部信图书删
、图书修改7函数相修改图书信息后用voidupdate()选择5
书
分类
作者图书修改出版单位出版时间
、图书排序8价格
函数进行图书排序voidrank()6后用选择
图书排序按图书名进行排序
、图书信息地保存9()函数进行保存操作后地图书信息voidsave在每次操作后都用
信息保存save()函数
部分模块流程图2.2
开始输入登录号N
If(?
=0)
Y
进入系统输入数字switch
0
53
64rank2bysave
作forN处理进入系统进入系统
2lookupfor
1
N进入系统
updatesearchputindel退出printfscanf1printfscanfif
0save
1
printf
终止
by书scanfYprintf
save进入系统
Y名者printf
进入系统
程序代码设计3
、文件打开:
利用文件函数进行打开1。
)函数原型FILE*fp1if((fp=fopen(library.doc,
))==NULL){。
不能打开图书管理系统\n)printf(\
。
fp=fopen(library.doc,w+)。
进入图书管理系统\n)printf(\
。
fclose(fp)}。
fread(books,sizeof(books[0]),1,fp)。
fclose(fp))功能:
打开信息文件22、登录模块,菜单模块:
利用if判断语句,比较函数strcmp,当输入号码与已存号码复符合是执行下一步操作,进入图书管理系统,然后输入相应数字,利用switch函数判断执行相应地函数进行操作
)函数原型:
1voidmain()
{
intkey=0。
for(key=0。
key<100。
key++)
books[key].id=0。
key=0。
system(colorA)。
FILE*fp。
if((fp=fopen(library.doc,
))==NULL)
{
printf(\
不能打开图书管理系统\n)。
fp=fopen(library.doc,w+)。
printf(\
进入图书管理系统\n)。
fclose(fp)。
}
fread(books,sizeof(books[0]),1,fp)。
fclose(fp)。
while
(1)
{
if(key==0)
{
system(cls)。
printf(\
\t\t\t请输入管理员登录号(初始登录号123456):
\n\n\t\t\tpassword:
。
)
}
else
{
system(cls)。
printf(\
\t\t\t密码错误请重新输入:
(初始登录号123456):
\n\n\t\t\tpassword:
。
)
}
scanf(%s,password)。
if(strcmp(password,S456)==0)
{
inta。
do
{
system(cls)。
printf(\
\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n)。
printf(\\t
_________________________________________________\n)。
printf(\\t\t1图书信息录入\n)。
printf(\\t
_________________________________________________\n)。
printf(\\t\t2图书信息浏览\n)。
printf(\\t
_________________________________________________\n)。
printf(\\t\t3图书信息查询\n)。
printf(\\t_________________________________________________
。
\n)
图书信息删除printf(\\t\t4\n)。
printf(\\t
_________________________________________________\n)。
。
\n)图书信息修改printf(\\t\t5
printf(\\t
_________________________________________________\n)。
printf(\\t\t6图书信息排序\n)。
printf(\\t
_________________________________________________\n)。
printf(\\t\t0退出图书信息系统\n)。
printf(\\t
________________________________________________\n)。
printf(\\t请进行操作:
)。
fflush(stdin)。
scanf(%d,&a)。
switch(a)
{
case1:
book_add()。
。
break
case2:
。
book_lookup()
。
breakcase3:
book_search()。
。
break
case4:
。
book_del()
。
breakcase5:
book_update()。
。
break
case6:
。
rank()
。
break
case0:
printf(\
\n。
\n\n)退出。
breakdefault:
printf(\
序号不对\n)。
}
}while(a!
=0)。
save()。
}
else
key=1。
}
.}2)实现功能:
登录管理系统,进入主菜单进行菜单选择运行结果:
3)
、菜单执行模块3
(1)图书录入模块:
利用while循环进行图书各项信息地录入,一本书信息全部录入完后,再利用switch函数进行继续录入,和返回主菜单操作,利用save函数保存图书信息
)函数原型:
1voidbook_add(void)
{intx=1。
system(cls)。
fflush(stdin)。
慰敧瑟瑩敬尨录入)。
while(x)
{
printf(\\t\t分类号:
)。
scanf(%d,&books[n].id)。
printf(\\t\t书名:
)。
scanf(%s,&books[n].name)。
printf(\\t\t作者:
)。
scanf(%s,&books[n].author)。
printf(\\t\t出版单位:
)。
scanf(%s,&books[n].publish)。
。
:
)出版时间printf(\\t\t
scanf(%s,&books[n].time)。
printf(\\t\t价格:
)。
scanf(%f,&books[n].price)。
n++。
save()。
printf(\
\t\t\t1.继续。
0,退出录入)。
fflush(stdin)。
scanf(%d,&x)。
if(x!
=1)
{
x=0。
break。
}
}
}
.实现功能:
进行图书信息录入,并保存录入地图书信息2))运行结果3
循环对图书进行全部信息输出,使之显示在屏幕上for
(2)图书信息浏览:
利用)函数原型:
1*/
浏览函数voidbook_lookup(void)/*
{
system(cls)。
if(books[0].id==0)
printf(\\t\t无书籍信息!
)。
else
i++)books[i].id!
=0。
for(i=0。
{
牰湩晴尨分类号:
%d\t,books[i].id)。
。
牰湩晴尨书名:
%s\t,books[i].name)
:
%s\t,books[i].author)作者。
牰湩晴尨。
出版单位牰湩晴尨:
%s\t,books[i].publish)
牰湩晴尨出版时间:
%s\t,books[i].time)。
。
牰湩晴尨价格:
%4.2f\n,books[i].price)}
。
fflush(stdin)getchar()。
.实现功能:
使所有图书信息全部显示在屏幕上,便于管理人员管理}2)
)运行结果3
(3)图书信息查询:
利用switch函数进行选择查询方式,按书名查询和按作者查询,然后设计两种方式地函数代码,嵌套在查询主函数内
:
1)函数原型voidsearch_by_name(void)/*按书名查询*/
{
chars2[20]。
intflag=1。
system(cls)。
printf(\
\t\t\t请输入要查询地书名:
)。
fflush(stdin)。
scanf(%s,&s2)。
for(i=0。
books[i].id!
=0。
i++)
if(strcmp(s2,books[i].name)==0)
{
flag=0。
牰湩晴尨分类号:
%d\t,books[i].id)。
牰湩晴尨书名:
%s\t,books[i].name)。
牰湩晴尨作者:
%s\t,books[i].author)。
牰湩晴尨出版单位:
%s\t,books[i].publish)。
牰湩晴尨出版时间:
%s\t,books[i].time)。
。
:
%4.2f\n,books[i].price)价格牰湩晴尨}
if(flag)
{
。
!
)查无此书牰湩晴尨}
。
fflush(stdin)
。
getchar()
}
*/按作者名查询voidsearch_by_author(void)/*{
。
chars3[20]intflag=1。
system(cls)。
。
:
)请输入要查询地书地作者printf(\\t\t
fflush(stdin)。
scanf(%s,&s3)。
for(i=0。
ii++)
if(strcmp(s3,books[i].author)==0)
{
flag=0。
牰湩晴尨分类号:
%d\t,books[i].id)。
牰湩晴尨书名:
%s\t,books[i].name)。
牰湩晴尨作者:
%s\t,books[i].author)。
牰湩晴尨出版单位:
%s\t,books[i].publish)。
牰湩晴尨出版时间:
%s\t,books[i].time)。
牰湩晴尨价格:
%4.2f\n,books[i].price)。
}
if(flag)
{
无此信息牰湩晴尨!
)。
}
。
fflush(stdin)getchar()。
}
voidbook_search(void)/*查询函数*/
{
inta。
system(cls)。
/*进行清屏*/
printf(\\t******************************\n)。
printf(\\t\t开始查询\n)。
printf(\\t\t1---------------按书名查询\n)。
printf(\\t\t2---------------按作者查询\n)。
printf(\\t\t0---------------退出\n)。
printf(\\t******************************\n)。
printf(\\t\t请选择你想要地查询方式:
)。
fflush(stdin)。
scanf(%d,&a)。
switch(a)
{
case1:
search_by_name()。
break。
case2:
search_by_author()。
break。
case0:
return。
}
.}2)实现功能:
可通过按书名查询和按作者进行查询(4)图书信息删除:
利用for循环对所要删除地图书下一本图书是之各项序列改为其前一项地序号,主次更改,然后用save循环进行保存
函数原型:
1)voidbook_del(void)
{
longintm。
system(cls)。
慰敧瑟瑩敬尨删除)。
printf(\\t\t输入删除书地分类号)。
scanf(%d,&m)。
for(i=0。
ii++)
{
if(m==books[i].id)
for(j=i。
books[j+1].id!
=0。
j++)
{
strcpy(books[j].name,books[j+1].name)。
books[j].id=books[j+1].id。
strcpy(books[j].publish,books[j+1].publish)。
strcpy(books[j].author,books[j+1].author)。
strcpy(books[j].time,books[j+1].time)。
。
books[j].price=books[j+1].price}
。
books[j].id=0
}
printf(\\t\t该书已删除.\n)。
n--。
}
voidrank(void)/*按书名进行排序*/
{
*//*清屏system(cls)。
i++)ifor(i=0。
{
。
k=i
for(j=i+1。
books[j].id!
=0。
j++)
if(strcmp(books[k].name,books[j].name)>0)k=j。
if(k!
=i)
{strcpy(temp,books[i].name)。
strcpy(books[i].name,books[k].name)。
strcpy(books[k].name,temp)。
}
}
fflush(stdin)。
\n)。
printf(\\t\t新序列为:
i++)books[i].id!
=0for(i=0。
。
{
牰湩晴尨分类号:
%d\t,books[i].id)。
牰湩晴尨书名:
%s\t,books[i].name)。
牰湩晴尨作者:
%s\t,books[i].author)。
牰湩晴尨出版单位:
%s\t,books[i].publish)。
牰湩晴尨出版时间:
%s\t,books[i].time)。
牰湩晴尨价格:
%4.2f\n,books[i].price)。
}
。
save()。
getchar().可以删除没用地图书地所有信息实现功能:
}2)(5)修改模块:
先输入所要修改地书地分类号,然后利用if函数找到次书信息,在利用for循环对图书地各个信息进行修改
)函数原型1*/
修改图书信息voidbook_update(void)/*
{
system(cls)。
/*清屏*/
printf(\
\t\t\t请输入你想修改图书地分类号:
)。
scanf(%d,&id)。
intflag=0。
for(i=0。
books[i].id!
=0。
i++)
{
if(id==books[i].id)
{
牰湩晴尨分类号:
%d\t,books[i].id)。
牰湩晴尨书名:
%s\t,books[i].name)。
牰湩晴尨作者:
%s\t,books[i].author)。
牰湩晴尨出版单位:
%s\t,books[i].publish)。
牰湩晴尨出版时间:
%s\t,books[i].time)。
牰湩晴尨价格:
%4.2f\n,books[i].price)。
printf(\
\t\t\t请输入修改后此图书地信息\n)。
printf(\\t\t请输入分类号:
)。
scanf(%d,&id)。
printf(\\t\t请输入图书名:
)。
scanf(%s,&name)。
printf(\\t\t请输入作者名:
)。
scanf(%s,&author)。
printf(\\t\t请输入出版单位:
)。
scanf(%s,&publish)。
printf(\\t\t请输入出版时间:
)。
scanf(%s,&time)。
printf(\\t\t请输入该书地价格:
)。
fflush(stdin)。
scanf(%f,&price)。
strcpy(books[i].name,name)。
books[i].id=id。
strcpy(books[i].publish,publish)。
strcpy(books[i].author,author)。
strcpy(books[i].time,time)。
。
books[i].price=price
save()。
flag=1。
}
}
if(flag==0)
printf(\\t\t不存在分类号为%d地书籍!
id)。
}
实现功能:
利用此函数可以修改图书地分类号、书名、作者、出版单位、出版时间、价格地信息2)(6)、排序模块:
根据图书名进行排序,利用for循环实现操作,在排序完成后利用save函数保存信.息函数原型:
1)voidrank(void)/*按书名进行排序*/
{
*/清屏system(cls)。
/*i++)。
for(i=0。
ik=i。
j++)。
。
for(j=i+1books[j].id!
=0if(strcmp(books[k].name,books[j].name)>0)k=j。
if(k!
=i)
。
{strcpy(temp,books[i].name)strcpy(books[i].name,books[k].name)。
strcpy(books[k].name,temp)。
}
}
。
fflush(stdin)printf(\\t\t。
新序列为:
\n