图书信息管理系统.docx
- 文档编号:14628305
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:32
- 大小:501.31KB
图书信息管理系统.docx
《图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统.docx(32页珍藏版)》请在冰点文库上搜索。
图书信息管理系统
计算机系综合性实验
《C语言程序设计》设计报告
设计题目图书信息管理系统
实验学期2010至2011学年第2学期
学生所在系部计算机系
年级专业班级
姓名学号
任课教师
实验成绩
计算机系制
第一章选题意义
1.1意义
通过课设的两天时间使我们将我们的所学的有关c语言的相关知识得到了充分的实践和应用,让我们看到了C语言的真正用途和魅力所在!
让我们对学习C的目的以及这门学科的重要性都有了更加深刻的认识!
同时我们通过实践应用更加熟练的掌握了C语言这门学科的相关知识,让我们不再是纸上谈兵的空淡之谈。
同时随着当今社会发展,信息化水平逐步提高,使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点对图书管理有了新的要求,因此,编写一个信息管理系统是十分有必要的。
我们通过该软件可以更加便捷的寻找到所需要的图书,为在现在社会中压力大的人们节省了更多的时间和精力。
是我们的生活更加的便利和高效。
方便了人们的生活。
该软件主要是实现对图书信息进行系统化的管理,首先可以对学生基本信息进行输入和读取,其次查找并显示特定图书的相关信息,然后可以插入图书的相关信息,以求达到简易操作的目的。
通过课设对c语言的学习进行了实践,使我们掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
掌握if语句及switch语句的运用方法及嵌套应用方法。
掌握实现循环结构的三种语句while、do-while.、for的使用。
掌握函数的定义方法和调用方法且采用模块化思想调试程序。
1.2目标
课设的目的是为了让我们将这学期所学的相关知识投射到现实生活的应用和实践中,使我们更生动的了解到C语言的真正用途。
且通过设计该软件,我们可以通过自己的双手合智慧,将自己的价值投掷于服务人民和社会中去。
我们第一次真正的尝试了通过自己的努力实现自己的价值同时我们也可以为学校的图书馆提供更多的系统,方便同学们的学习生活。
我们通过自己的努力真真正正的体会到了劳动的光荣。
为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。
使用C语言编写图书管理系统。
本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。
实现了图书馆内管理的一般功能,包括查询、添加、删除、修改图书信息等。
所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。
图书信息包括编号、书名、作者、出版社、出版日期、价格、库存数量等。
图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作。
整个程序实现链表操作,对图书信息的操作逐个进行,一个图书信息的更改不应影响其他的图书记录。
该程序可用于对图书基本信息的存储、更新、查询、统计、排行、输出等操作,以实现对图书的管理。
其中更新功能包括:
添加信息、删除信息、修改信息,可根据需要添加一个或多个图书信息,也可对个别图书信息进行适当的删除或修改,以便随时更新图书信息。
程序中设计的查询功能可根据需要从若干数据中查询某个图书信息,并且可根据四种不同的方法查询:
按名称查询、按种类查询、按作者查询、按书名和作者查询,以满足不同的需要。
第二章系统功能模块设计
2.1功能模块设计
2.2函数的设计与描述
图书信息管理系统软件,主要应用了十大模块,分别是:
1主菜单模块menu()
主菜单的主要功能是提供大家的选择,为使大家所要用的某一个功能实现。
不能够每一次都要从头开始,所以需要一个选择性的语句。
因此采用功能强大的switch语句在调用其余功能的函数,方便我们的选择和程序的运行。
针对对象的需求进行某一个方位的运行,节省时间。
2返回主菜单模块back_menu()
利用多分枝if语句,和判断客户所输入的字符来进行返回主菜单或者结束。
主要功能使在客户需要同时运用两个或两个以上的功能时,我们便可利用该函数使得客户可以进行多次的选择。
3录入数据模块luru()
利用for语句循环,进行对录入图书的编号和基本信息的输入!
信息输入主要运用scanf语句。
该函数主要是为了完成图书信息的基本输入
4删除数据模块shanchu()
主要应用了多分枝if语句和多次的判断,以及字符串的比较函数来判断客户所需要删除的是所有还是部分。
在删除部分的时候首先利用for语句的循环找出我们要删除的那本书,在利用另一个for语句来进行删除。
在删除全部的时候主要是利用赋值语句使得数量变为0来实现全部删除的。
的是为了实现删除信息的功能
5数据浏览模块look()
主要应用了if-else语句先判断是否有图书,如果有在利用了for语句的循环来逐一打印出所有的图书信息。
主要实现了浏览全部图书信息的功能
6数据排序模块paixu()
主要应用了冒泡排序的主要思想和指向指针的指针以及指针来实现的。
首先利用冒泡排序将所有的数据按照价格排好,同时在利用指针和指向指针的指针来讲新的数据存储的。
目的就是为了使得所有图书能够按照价格排序,方便人们的需求
7数据修改模块Change()
首先使用了if语句进行判断数据中是否有图书,继而在有图书的时候在利用if语句找出你要修改的图书,最后再利用一个多分枝的if语句判断出要修改图书的那一部分的信息,从而进行修改,修改时利用scanf语句。
目的:
修改部分信息,方便人们的工作和生活
8数据查找模块Search()
因为图书的基本信息由3项分别是,所以我们利用switch语句进行判断我们需要按哪种方式查找,确定了查询方式后,又利用了for语句的循环来找出你要找的图书,再次利用if-else语句打印出你所要查询的图书的基本信息。
目的:
在短时间内找到客户需要的图书,
9文件导出模块Out()
利用指针和for语句循环和fwrite,导出信息到文件
10导入文件模块In()
利用指针以及if语句判断是否文章中有内容,若有利用for语句的训话和fwrite打开文件
第三章程序流程图
第4章源代码摘录
#include
#include
#include
#include
#defineM3
#defineN100
typedefstructbook
{
charshuming[20];
charzuozhe[20];
charchubanshe[20];
intjiage;
}BOK;
BOKstu[N];
intshuliang=0;
voidmenu();
voidfhzjm()
{
charbiaozhi[20];
printf("\n");
printf("还需要操作么?
如果需要操作请输入:
yes,否则请输入:
no\n");
scanf("%s",biaozhi);
if(strcmp(biaozhi,"yes")==0)
{
menu();
}
elseif(strcmp(biaozhi,"no")==0)
exit(0);
else
{
printf("请输入正确的字符,谢谢!
\n");
fhzjm();
}
}
voidDengJi()
{
intrs;
inti,k=1;
system("CLS");
printf("请输入需要输入几本图书:
");
scanf("%d",&rs);
for(i=shuliang;i { printf("请输入第%d本图书书名: ",k); scanf("%s",stu[i].shuming); printf("请输入第%d本图书作者: ",k); scanf("%s",stu[i].zuozhe); printf("请输入第%d本图书出版社: ",k); scanf("%s",stu[i].chubanshe); printf("请输入第%d本图书的价格: ",k); scanf("%d",&stu[i].jiage); } shuliang=shuliang+rs; fhzjm(); } voidShanChu() { charshanchuinfo[10]; system("CLS"); printf("删除全部图书信息请输入\"all\",删除指定图书信息请输入\"one\"\n"); scanf("%s",shanchuinfo); if(strcmp(shanchuinfo,"all")==0) { shuliang=0; printf("删除成功\n\n"); } elseif(strcmp(shanchuinfo,"one")==0) { structbook*p=NULL; charchoice[20]; inti,j,k=0; printf("请输入你要删除的书名: "); scanf("%s",choice); for(i=0;i { if(strcmp(choice,stu[i].shuming)==0) { k=1;j=i;break; } } if(k) { if(shuliang==1) { p=&stu[0]; free(p); shuliang=0; } else { for(i=j;i { stu[i]=stu[i+1]; } shuliang=shuliang-1; } printf("删除成功\n\n"); } } else { printf("输入数据错误! \n"); ShanChu(); } fhzjm();//调用返回主界面函数 } voidXiuGai() { inti,j,n; charshuming[20]; charzuozhe[20]; charchubanshe[20]; intjiage; system("cls"); printf("请输入您要修改的图书书名: "); scanf("%s",shuming); printf("请输入您要修改的图书作者: "); scanf("%s",zuozhe); printf("请输入您需要修改的图书的出版社\n"); scanf("%s",&chubanshe); printf("请输入您需要修改的图书的价格\n"); scanf("%d",&jiage); for(i=0;i { if(strcmp(shuming,stu[i].shuming)==0&&strcmp(zuozhe,stu[i].zuozhe)==0) { j=i;break; } } printf("需要修改哪一项? (如果需要修改书名请按1,如需修改作者请按2,如需修改出版社请按3,如需修改价格请按4)\n"); scanf("%d",&n); if(n==1) { printf("请重新输入书名: "); scanf("%s",stu[j].shuming); printf("已经修改的图书信息为: "); printf("----书名----作者----出版社----价格\t\n"); printf("------%s------%s-------%s---------%d\t\n",stu[j].shuming,stu[j].zuozhe,stu[j].chubanshe,stu[j].jiage); } elseif(n==2) { printf("请重新输入作者: "); scanf("%s",stu[j].zuozhe); printf("已经修改的图书信息为: "); printf("----书名----作者----出版社----价格\t\n"); printf("------%s------%s-------%s---------%d\t\n",stu[j].shuming,stu[j].zuozhe,stu[j].chubanshe,stu[j].jiage); } elseif(n==3) { printf("请重新输入出版社: "); scanf("%s",stu[j].chubanshe); printf("已经修改的图书信息为: "); printf("----书名----作者----出版社----价格\t\n"); printf("------%s------%s-------%s---------%d\t\n",stu[j].shuming,stu[j].zuozhe,stu[j].chubanshe,stu[j].jiage); } elseif(n==4) { printf("请重新输入价格: "); scanf("%d",&stu[j].jiage); printf("已经修改的图书信息为: "); printf("----书名----作者----出版社----价格\t\n"); printf("------%s------%s-------%s---------%d\t\n",stu[j].shuming,stu[j].zuozhe,stu[j].chubanshe,stu[j].jiage); } fhzjm(); } voidLiuLan() { inti; system("CLS"); if(shuliang==0) { printf("系统里面没有任何图书的信息! \n"); } else { for(i=0;i { printf("第%d本图书书名为: %s\n",i+1,stu[i].shuming); printf("第%d本图书作者为: %s\n",i+1,stu[i].zuozhe); printf("第%d本图书出版社为: %s\n",i+1,stu[i].chubanshe); printf("第%d本图书价格为: %d\n",i+1,stu[i].jiage); } } fhzjm(); } voidChaZhao() { charchoice[10],xx[20]; inti,j,k=0; system("CLS"); if(shuliang==0) { printf("系统里面没有任何图书的信息! \n"); fhzjm(); } printf("三种查找方式: 书名,作者,出版社,请输入查找方式: "); scanf("%s",choice); if(strcmp(choice,"书名")==0) { printf("请输入需要查找图书书名: "); scanf("%s",xx); for(i=0;i { if(strcmp(xx,stu[i].shuming)==0) { j=i;k=1;break; } } if(k==0) printf("输入信息有误: \n"); else { printf("您所查找的图书的信息为: \n"); printf("----书名----作者----出版社----价格\t\n"); printf("------%s------%s-------%s---------%d\t\n",stu[j].shuming,stu[j].zuozhe,stu[j].chubanshe,stu[j].jiage); } } elseif(strcmp(choice,"作者")==0) { printf("请输入需要查找图书的作者: \n"); scanf("%s",xx); for(i=0;i { if(strcmp(xx,stu[i].zuozhe)==0) { j=i;k=1;break; } } if(k==0) printf("输入信息有误: \n"); else { printf("您所查找的图书的信息为: \n"); printf("----书名-----作者-----出版社-----价格\n"); printf("----%s-----%s-----------%s-----------%d\n",stu[j].shuming,stu[j].zuozhe,stu[j].chubanshe,stu[j].jiage); } } elseif(strcmp(choice,"出版社")==0) { printf("请输入需要查找图书的出版社: \n"); scanf("%s",xx); for(i=0;i { if(strcmp(xx,stu[i].chubanshe)==0) { j=i;k=1;break; } } if(k==0) printf("输入信息有误: \n"); else { printf("您所查找的图书的信息为: \n"); printf("----书名-----作者-----出版社-----价格--\n"); printf("----%s-----%s-----------%s-----------%d--n",stu[j].shuming,stu[j].zuozhe,stu[j].chubanshe,stu[j].jiage); } } fhzjm(); } voidPaiXu() { structbook*p1[N],**p2,*temp; inti,j; system("CLS"); p2=p1; for(i=0;i { p1[i]=stu+i; } for(i=0;i { for(j=i+1;j { if((*(p2+i))->jiage<(*(p2+j))->jiage) {temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;} } } printf("按照价格排序之后的信息为: \n"); printf("----书名-----作者------出版社----价格-------\n"); for(i=0;i { printf("----%s-----%s---------%s----------%d\n",(*(p2+i))->shuming,(*(p2+i))->zuozhe,(*(p2+i))->chubanshe,(*(p2+i))->jiage); } fhzjm(); } voidCunChu() { inti; FILE*rs; if((rs=fopen("card.dat","wb"))==NULL) { printf("notopen"); exit(0); } for(i=0;i { fwrite(&stu[i],sizeof(stu[i]),1,rs); } if(ferror(rs)) { fclose(rs); perror("写文件失败! \n"); return; } printf("存储文件成功! \n"); fclose(rs); fhzjm(); } voidDaoChu() { structbookt; inti=0; FILE*fp=fopen("card.dat","rb"); shuliang=0; if(NULL==fp) { perror("读取文件打开失败! \n"); return; } memset(stu,0x0,sizeof(stu)); while (1) { fread(&t,sizeof(t),1,fp); if(ferror(fp)) { fclose(fp); perror("读文件过程失败! \n"); return; } if(feof(fp)) { break; } stu[i]=t; i++; } fclose(fp); shuliang=i; printf("导出文件成功! \n"); fhzjm(); } voidmenu()//定义menu菜单函数 { intn; system("CLS");//清屏 printf("图书管理系统\n"); printf("作者郭鹏\n"); printf("-------------------MENU-----------------\n"); printf("1.图书信息入库\n"); printf("2.删除库中图书信息\n"); printf("3.修改库中图书信息\n"); printf("4.浏览所有入库图书信息\n"); printf("5.查找入库图书信息\n"); printf("5.1.按书名查找\n"); printf("5.2按作者查找\n"); printf("5.3按出版社查找\n"); printf("6.根据图书价格排序\n"); printf("7.存储到文件\n"); printf("8.从文件导出\n"); printf("9.退出系统\n"); a: printf("请选择: "); scanf("%d",&n);//输入要选择的项目 switch(n)//利用swith语句判断输入的信息. { case1: DengJi();break; case2: ShanChu();break; case3: XiuGai()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息管理 系统