c语言图书信息管理系统代码整理版doc.docx
- 文档编号:10250959
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:62
- 大小:196.59KB
c语言图书信息管理系统代码整理版doc.docx
《c语言图书信息管理系统代码整理版doc.docx》由会员分享,可在线阅读,更多相关《c语言图书信息管理系统代码整理版doc.docx(62页珍藏版)》请在冰豆网上搜索。
c语言图书信息管理系统代码整理版doc
课程报告
课程名称:
程序设计实践
专业班级:
计算机类1504
学生姓名:
学号:
任课教师:
许伟涛
学期:
2015-2016学年第二学期
课程报告任务书
题目
图书信息管理系统
主要
内容
开发一个图书信息管理系统,图书信息包括:
图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。
使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入v
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
l①按书名查询②按作者名查询
按照价钱排序
按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:
可以按照自己的程度进行扩展。
比如
(1)简单的权限处理
(2)报表打印功能(3)甚至根据自己情况,可以加上学生信息和借阅信息的管理,并扩充为图书借阅系统。
(4)模糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
内容
20分
规范程度
5分
程序测试
5分
基本功能20分
扩展功能10分
自述情况10分
答辩情况
30分
成绩评定教师:
1需求分析
经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。
课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。
本次课程设计要求我们达到能独立完成一个图书管理系统,完成后要求实现的功能有对图书信息的录入、删除、修改,浏览(即输出),按某种方式查询(要求至少一种查询方式),按某种方式排序(要求至少一种排序方式)。
当然,我们可以根据自己的能力对系统进行完善性的拓展,例如自己加入简单的权限处理,统计功能,模糊查询等。
通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C语言开发的全过程,提高综合应用C语言的能力、编程和调试能力,为学习计算机和通信专业的后续课程打好专业基础。
在该部分中叙述:
对题目中要求的功能进行的简单的叙述分析,把题目内容给介绍一下。
2概要设计
(1)数据结构
创建了一个结构(BOONINFO),用来存储图书的基本信息。
(2)模块划分
1、输入图书信息:
voidchoice_1_input_new();
2、显示图书信息:
voidchoice_2_display_all();
3、按名称查询图书信息:
voidchoice_3_search_according_name();
4、按名称删除图书信息:
voidchoice_4_delete_according_name();
5、按图书名称排序图书:
voidchoice_5_sort_according_name();
6、按价格区间查询图书:
voidchoice_6_display_high_price();
7、按图书状态显示图书:
voidchoice_6_display_high_price();
8、按图书名称修改图书信息:
voidchoice_8_change_book();
9、按照图书库存排序:
voidchoice_9_sort_according_list();
10、排序:
voidchoice_();
(3)程序总体框架
登陆界面
欢迎界面
新进图书的输入
浏览全部记录
按名称查询图书
按名称删除图书
按价格排序图书
按价格统计图书
显示全部图书
修改图书信息
退出系统
退出系统
退出系统
3详细设计
1、输入新进图书信息
voidchoice_1_input_new()
用文件实现将图书信息输入系统文件并保存。
代码如下:
voidchoice_1_input_new()/*输入新进的图书信息*/
{
charchoice;
FILE*p;
BOOKINFOnewbook;
system("cls");
while
(1)
{
printf("输入图书编号:
");
scanf("%s",newbook.number);
printf("输入图书名称:
");
scanf("%s",newbook.name);
printf("输入图书类别:
");
scanf("%s",newbook.list);
printf("输入图书单价:
");
scanf("%f",&newbook.price);
printf("输入出版社:
");
scanf("%s",newbook.boss);
printf("输入图书的作者:
");
scanf("%s",newbook.auther);
printf("输入出版时间:
");
scanf("%s",newbook.time);
printf("请输入需要添加的图书书目:
");
scanf("%d",&newbook.isExit);
printf("是否保存该条书目?
(Y/N)\n");
choice=getchar();
while(choice!
='Y'&&choice!
='y'&&choice!
='N'&&choice!
='n')
choice=getchar();
if(choice=='Y'||choice=='y')
{
p=fopen("e:
\\bookinfo.txt","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加到e:
\\bookinfo.txt文件中!
\n");
}
else
{
printf("\n本条书目未保存!
\n");
}
printf("\n是否继续添加书目?
(Y/N)\n");
choice=getchar();
while(choice!
='Y'&&choice!
='y'&&choice!
='N'&&choice!
='n')
choice=getchar();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
2、显示全部记录信息
voidchoice_2_display_all()
将信息从文件中读写出来。
代码如下:
voidchoice_2_display_all()/*显示全部图书信息*/
{
FILE*p;
intn;
BOOKINFObookinfo[M];
intbooknumber=0;
system("cls");
p=fopen("e:
\\bookinfo.txt","rb");
while(!
feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
/*booknumber--;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("没有任何图书信息!
\n\n");
}
else
{
n=0;
printf("图书信息如下\n");
printf("图书信息\n");
printf("编号名称单价作者图书库存出版社出版时间图书类别\n");
while(n { printf("%-6s%-12s%-8.1f%s%-9d%s%s%s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list); n++; } } printf("\n\n按任意键回到主菜单! \n"); getch(); } 3、根据图书的名称查询图书信息 voidchoice_3_search_according_name() 根据图书的名称将信息从文件中读出。 代码如下: voidchoice_3_search_according_name()/*根据图书名称显示图书的信息*/ { charsearch[20];/*search用来存放要查询的书名*/ intn; FILE*p; charchoice; BOOKINFObookinfo[M]; intbooknumber=0; system("cls"); p=fopen("e: \\bookinfo.txt","rb"); while(! feof(p)) { fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; } booknumber--; fclose(p); while (1) { printf("输入要查询的书本名称: "); scanf("%s",&search); if(booknumber==0) { printf("书库中没有任何信息! \n\n"); printf("按任意键回到主菜单! \n\n"); getch(); break; } else { for(n=0;n if(strcmp(bookinfo[n].name,search)==0) { printf("该书的详细信息如下: \n"); printf("图书信息\n"); printf("编号名称单价作者图书库存出版社出版时间图书类别\n"); printf("%-6s%-12s%-8.1f%s%-9d%s%s%s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list); break; } if(n>=booknumber) printf("没有查找该书的任何信息! \n"); printf("\n\n是否继续查询? (Y/N)\n"); choice=getchar(); while(choice! ='Y'&&choice! ='y'&&choice! ='N'&&choice! ='n') choice=getchar(); if(choice=='Y'||choice=='y') continue; else break; } } } 4、根据图书价格进行排序 voidchoice_5_sort_according_name() 按图书价格从低到稿对图书进行排序 代码如下: voidchoice_5_sort_according_name()/*根据图书价格排序*/ { FILE*p; intm,n; BOOKINFOtemp; BOOKINFObookinfo[M]; intbooknumber; p=fopen("e: \\bookinfo.txt","rb"); booknumber=0; system("cls"); while(! feof(p)) { fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("没有任何图书信息! \n\n"); } else { for(m=0;m for(n=m+1;n if(bookinfo[m].price>bookinfo[n].price) { temp=bookinfo[m]; bookinfo[m]=bookinfo[n]; bookinfo[n]=temp; } p=fopen("e: \\bookinfo.txt","wb"); for(m=0;m fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p); fclose(p); printf("\n\n完成排序! \n\n"); } printf("按任意键回到主菜单! \n"); getch(); } 5、根据图书名称对图书进行删除 voidchoice_4_delete_according_name() 根据图书名称定为图书在文件中的位置,从而删除有关图书的所有信息。 代码如下: voidchoice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/ { charsearch[20];/*search用来存放要删除的书名*/ intn,i; FILE*p; charchoice; BOOKINFObookinfo[M]; intbooknumber; system("cls"); while (1) { printf("输入要删除的书本名称: "); scanf("%s",&search); p=fopen("e: \\bookinfo.txt","rb"); booknumber=0; while(! feof(p)) { fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("书库中没有任何信息! \n\n"); printf("按任意键回到主菜单! \n\n"); getch(); break; } else { for(n=0;n if(strcmp(bookinfo[n].name,search)==0) { break; } if(n>=booknumber) printf("没有查找该书的任何信息! \n"); else { printf("是否确认需要删除该条书目? (Y/N)"); choice=getchar(); while(choice! ='Y'&&choice! ='y'&&choice! ='N'&&choice! ='n') choice=getchar(); if(choice=='Y'||choice=='y') { for(i=n;i bookinfo[i]=bookinfo[i+1]; booknumber--; p=fopen("e: \\bookinfo.txt","wb"); for(n=0;n fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p); fclose(p); printf("删除成功! \n"); } else printf("\n\n该条书目没有被删除! "); } printf("\n\n是否继续进行删除操作? (Y/N)\n"); choice=getchar(); while(choice! ='Y'&&choice! ='y'&&choice! ='N'&&choice! ='n') choice=getchar(); if(choice=='Y'||choice=='y') continue; else break; }/*else结束*/ } } 6、统计某价格以上的图书库存 voidchoice_6_display_high_price() 设定一个下限的价格,以此为起点,显示该价格以上的所有图书信息。 代码如下: voidchoice_6_display_high_price()/*根据价格列出图书信息*/ { floatprice; FILE*p; intn; intcount=0; BOOKINFObookinfo[M]; intbooknumber; system("cls"); printf("请输入价格: "); scanf("%f",&price); p=fopen("e: \\bookinfo.txt","rb"); booknumber=0; while(! feof(p)) { fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("没有任何图书信息! \n\n"); } else { for(n=0;n { if(bookinfo[n].price>=price) count++; } if(count==0) printf("书库中没有比%.1f$价格高的图书! ",price); else { printf("价格高于¥%.1f的图书信息如下\n",price); printf("图书信息\n"); printf("编号名称单价作者图书库存出版社出版时间图书类别\n"); for(n=0;n { if(bookinfo[n].price>=price) printf("%-6s%-12s%-8.1f%s%-9d%s%s%s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list); } } } printf("\n\n按任意键回到主菜单! \n"); getch(); } 7、显示全部的图书信息 voidchoice_7_display_according_exitflag() 显示出文件中存入的所有图书信息。 代码如下: voidchoice_7_display_according_exitflag()/*根据存在状态列出图书信息*/ { FILE*p; intn; intcount=0; BOOKINFObookinfo[M]; intbooknumber; system("cls"); booknumber=0; p=fopen("e: \\bookinfo.txt","rb"); while(! feof(p)) { fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("书库中没有任何书目存在! \n"); } else { for(n=0;n if(bookinfo[n].isExit! =0) count++; if(count==0) printf("书库中的书籍全部借出! \n"); else { printf("书库中的图书信息如下: \n\n"); printf("图书信息\n"); printf("编号名称单价作者图书库存出版社出版时间图书类别\n"); for(n=0;n if(bookinfo[n].isExit! =0) { printf("%-6s%-12s%-8.1f%s%-9d%s%s%s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list); } } } printf("\n按任意键返回主菜单! \n"); getch(); } 8、修改图书信息 voidchoice_8_change_book() 从文件中按名称读出图书信息,再进行全部修改。 代码如下: voidchoice_8_change_book() { charsearch[20];/*search用来存放要修改的书名*/ intn,i; FILE*p; charchoice; BOOKINFOnewbook; BOOKIN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 信息管理 系统 代码 整理 doc