图书管理系统课程报告.docx

上传人:b****9 文档编号:26214804 上传时间:2023-06-17 格式:DOCX 页数:38 大小:321.77KB
下载 相关 举报
图书管理系统课程报告.docx_第1页
第1页 / 共38页
图书管理系统课程报告.docx_第2页
第2页 / 共38页
图书管理系统课程报告.docx_第3页
第3页 / 共38页
图书管理系统课程报告.docx_第4页
第4页 / 共38页
图书管理系统课程报告.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

图书管理系统课程报告.docx

《图书管理系统课程报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统课程报告.docx(38页珍藏版)》请在冰豆网上搜索。

图书管理系统课程报告.docx

图书管理系统课程报告

 

课程报告

 

课程名称:

专业班级:

学生姓名:

学号:

任课教师:

学期:

 

课程报告任务书

题目

图书信息管理系统

主要

内容

开发一个图书信息管理系统,图书信息包括:

图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。

使之能提供以下基本功能:

(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需求分析

本次实验目的是开发一个图书管理系统,且该图书管理系统中应包含以下基本功能:

(1)图书信息录入功能

(2)图书信息浏览功能

(3)查询功能

例如:

按书名查询、按作者名查询等等

(4)排序功能

例如:

按照价钱排序、按出版时间排序等等

(5)图书信息的删除与修改

除此之外,个人还可以根据自己的爱好进行各方面的扩展。

例如权限处理、图书排序等等。

在我们设计自己的程序时不仅可以利用课本上的知识,还可以在互联网上查询有关该类信息,将其学习总结并利用在此次程序设计中。

利用这次程序设计实验,我们可以提高自己的设计和编辑程序的能力、了解一般程序的编写过程,还可以巩固加深我们对C语言程序基本知识的了解与掌握。

我在该实验中不仅利用了课本上的函数知识、文本的输入和读出,还用互联网查阅了相关知识。

如“system("cls")”,用汉语解释就是清屏功能;还有“getch()”函数,输入不读出,不过在利用“getch()”进行密码的改写时老是出错误,就舍弃了该函数。

在利用“system("cls")”时感觉还是很好的,用该函数后不仅可以使程序在运行时美观大方,还可以一眼扫描到我们要找的信息。

而我在我编写的程序中设计了如下的功能:

1 登陆权限功能

2 查找全部图书并总图书本数功能

3 查找每本图书功能

4 添加图书功能

5 删除图书功能

6 修改图书功能

7 图书排序功能

8 金额管理功能

2概要设计

在实验中我主要是用函数来解决该程序的文件模块问题,用函数的嵌套调用来解决各模块间的联系问题。

在编写程序时,我首先用结构数组structlistd[40]来定义图书的各种信息。

如:

编号、书名、作者、出版社、类别等等。

然后定义了全局变量number和total用来计算书本总数和金额总量。

而后在主函数中用循环变量中的while语句和分支结构中的switch语句,来编写登录权限;创建文本并用文本的输入和输出语句将图书信息输入文本;用函数的嵌套来将各部分联系起来。

总体流程图如下:

查找每本图书

添加图书

查找全部图书

图书排序

修改图书

删除图书

登陆图书管理系统

金额管理

结束

 

下面介绍一下各个部分的程序:

1.查看全部图书功能

该功能函数名称为:

search_allbook。

先定义整形变量:

i;而后用system("cls")进行清屏;再输入提示信息“查看全部图书!

”,后利用for循环进行循环输出。

最后输出总书本数number。

开始

inti;输出:

查看全部图书!

i=0

i

输出图书信息;输出图书总数:

number;

结束

其函数流程图如下:

 

 

2.查找每本图书功能

该函数名称为find_book。

这个函数也是这样,首先用system("cls")进行清屏处理;然后进行定义:

inti,fg=0,chars[20];然后输出:

输入图书编号和查找图书!

再利用for循环语句将输入的图书编号与该程序中的图书编号相等再输出该本图书的所有信息即图书的编号、书名、作者、出版社、类别、出版时间、价格。

这个程序的流程图与上一流程图差别不大,这里就不再写。

3.添加图书功能

该部分函数名称为:

add_book。

首先定义inti,count=0,choice3、structlistp和文件指针FILE*fp2,然后进行清屏处理。

然后输出:

添加图书!

接着依次输入图书的编号、书名、作者、出版社、类别、出版时间、价格。

然后显示是否显示添加后信息,如果选择是则会用switch函数和for循环进行依次输出,最后显示“谢谢您对图书添加!

”并且最后以一排星号结束,选择否则会显示“谢谢您对图书添加!

”并且最后以一排星号结束。

其函数流程图如下:

 

 

 

4.删除图书功能

该部分函数名称为:

delete_book。

先定义inti,fg=0,ch;chars[20];和文件指针FILE*fp3,然后利用system("cls")进行清屏处理。

然后输出:

删除图书,接着输出“请输入图书编号”,然后利用for循环语句将输入的图书编号与该程序中的图书编号相等,再将这个图书编号所在的图书删除并将信息录入文档。

接着显示“是否显示删除后的信息”,如果选择是则会用switch函数和for循环进行依次输出该图书的编号、书名、作者、出版社、类别、出版时间、价格。

最后以一排星号结束。

选择否也会显示一排星号结束。

该函数的流程图与查看全部图书的流程图类似,这里也不再写出。

5.修改图书功能

该函数名称为:

xiugai_book。

先定义inti,k;chars[20];和文件指针FILE*fp2,然后利用system("cls")进行清屏处理。

然后输入要修改图书的编号,将新图书的信息重新输入保存到文档中即可。

6.图书排序功能

该函数名称为:

paixu_book。

先定义inta;然后用system("cls")进行清屏处理!

然后会输出1-按图书编号排序2-按出版时间排序3-按图书价格排序,然后根据输入数据会进入不同的子函数。

当选择1时,其函数名称为:

num_paixu。

在这个函数中先对变量进行定义:

inti,k,index,b和structlisttemp。

然后清屏,用for函数进行对图书编号的大小比较,然后利用变量temp将不符合次序的进行交换。

然后显示“排序成功!

”和“是否显示排序结果?

1:

是;2:

否”,如果输入1则会依次输出排序后的图书,最后以一排星号结束。

该函数的流程图为:

 

当选择2时,其函数名称为:

time_paixu。

当选择3时,其函数名称为:

price_paixu。

该函数与选择1时基本类似,在这就不一一叙述了。

7.金额管理功能

该函数名称为:

cash_manage。

该函数就是将全局变量total输出。

3详细设计

1 主函数

根据程序要求,一个程序只能有一个主函数。

因此主函数是一个程序好坏的基础,也是一个程序在运行时外在的表现,因此对主函数设计我做了很多修改,一直修改到让我满意。

我把函数分为几个部分说吧!

1.写完函数库及建立一个结构数组:

#include

#include

#include

structlist{/*图书结构体*/

charnum[50];/*图书编号*/

charname[50];/*图书名称*/

charauthor[50];/*作者*/

charpress[50];/*图书出版社*/

charsort[50];/*图书类别*/

inttime;/*图书出版时间*/

doubleprice;/*图书价格*/

structlist*next;

};structlistd[40];

2.全局变量;

intnumber=0;

doubletotal;

3.所有的函数声明;

voidsearch_allbook(structlistd[]);/*查看全部图书*/

voidfind_book(structlistd[]);/*查找图书*/

voidadd_book(structlistd[]);/*添加图书*/

doubledelete_book(structlistd[]);/*删除图书*/

voidpaixu_book(structlistd[]);/*图书排序*/

voidnum_paixu(structlistd[]);/*按图书编号排序*/

voidtime_paixu(structlistd[]);/*按图书出版时间排序*/

voidprice_paixu(structlistd[]);/*按图书价格排序*/

voidxiugai_book(structlistd[]);/*图书丢失*/

doublecash_manage();

4.Main函数的头以及定义的变量和文本指针;

intmain()

{

intq=1,w,r,l,i=0;

charb[20],b1[20]="gpf";

charm[20],m1[20]="1";

FILE*fp;

5.登陆权限功能函数

while(q){

system("cls");

printf("\n\n\n\n");

printf("**********欢迎光临**********\n\n");

printf("*************图书管理系统**************\n\n");

printf("1.用户登录\n");

printf("0.退出登录\n");

printf("请输入您的选择:

");

scanf("%d",&w);

printf("\n");

getchar();

switch(w){

case0:

q=0;

break;

case1:

printf("请输入用户名:

");

scanf("%s",b);

printf("\n");

printf("请输入密码:

");

scanf("%s",m);

getchar();

printf("\n");

if(strcmp(b,b1)!

=0||strcmp(m,m1)!

=0){

printf("用户名或密码错误!

\n");

printf("请重新输入:

");

scanf("%c",&l);

getchar();

system("cls");

}

else{

printf("验证通过!

请按Enter键进入!

\n");

scanf("%c",&l);

}

6.文本的输出;

fp=fopen("f.txt","r");

if(fp==NULL)

{

printf("Fileopenthefile1!

\n");

exit(0);

}

while(!

feof(fp))

{

fscanf(fp,"%s%s%s%s%s%d%lf\n",

d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,&d[i].time,&d[i].price);

i++;

}

number=i;

fclose(fp);

7.图书管理系统的功能列表函数及main函数结尾;

do{

system("cls");

printf("\n\n\n\n");

printf("|**********************************************|\n");

printf("|*图书信息管理系统*|\n");

printf("|**********************************************|\n");

printf("1.查看全部图书5.修改图书\n");

printf("2.查找图书6.图书排序\n");

printf("3.添加图书7.金额管理\n");

printf("4.删除图书8.退出程序\n");

printf("\n\n");

printf("请输入所选择的序号:

");

scanf("%d",&r);

getchar();

switch(r){

case1:

search_allbook(d);

getchar();

break;

case2:

find_book(d);

getchar();

break;

case3:

add_book(d);

getchar();

break;

case4:

delete_book(d);

getchar();

break;

case5:

xiugai_book(d);

getchar();

break;

case6:

paixu_book(d);

getchar();

break;

case7:

cash_manage();

getchar();

break;

case8:

break;

}

}

while(r!

=8);

printf("谢谢使用!

\n");

}

}

return0;

}

2 查看全部图书函数

voidsearch_allbook(structlistd[])

{

inti;

system("cls");

printf("|**********************************|\n");

printf("|查看全部图书!

|\n");

printf("|**********************************|\n");

printf("图书的相关信息:

编号书名作者出版社类别出版时间价格\n");

for(i=0;i

{

printf("%s%s%s%s%s%d%.2lf\n",/*将数据输出到屏幕中*/

d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);

}

printf("书本总数:

%d\n",number);

printf("********************************************************************************\n");

}

3 查找图书

voidfind_book(structlistd[])

{

system("cls");

inti,fg=0;

chars[20];

printf("输入图书编号:

\n");/*提示输入图书编号*/

scanf("%s",s);

printf("|***********************************|\n");

printf("|查找图书!

|\n");

printf("|***********************************|\n");

for(i=0;i

if(strcmp(s,d[i].num)==0)

{

printf("该图书的相关信息:

编号书名作者出版社类别出版时间价格\n");

printf("%s%s%s%s%s%d%.2lf\n",

d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);

fg=1;

break;

}

if(fg==0)

{

printf("该图书编号不存在!

\n");

printf("是否要继续查找?

y:

是;n:

否\n");

getchar();

switch(getchar())

{

case'y':

find_book(d);/*调用函数本身继续查找*/

case'n':

break;

}

}

printf("********************************************************************************\n");

getchar();

}

4 添加图书函数;

voidadd_book(structlistd[])

{

inti,count=0,choice3;

structlistp;

FILE*fp2;

system("cls");

printf("|***********************************|\n");

printf("|添加图书!

|\n");

printf("|***********************************|\n");

printf("请输入图书编号:

");

scanf("%s",p.num);

printf("请输入图书名:

");

scanf("%s",p.name);

getchar();

printf("请输入作者名:

");

scanf("%s",p.author);

getchar();

printf("请输入出版社:

");

scanf("%s",p.press);

getchar();

printf("请输入类别:

");

scanf("%s",p.sort);

getchar();

printf("请输入出版时间:

");

scanf("%d",&p.time);

getchar();

printf("请输入价格:

");

scanf("%lf",&p.price);

printf("是否添加并显示添加后的信息?

1:

是;2:

否\n");

printf("请选择:

");

scanf("%d",&choice3);

switch(choice3)

{

case1:

{

for(i=0;i

if(strcmp(p.num,d[i].num)>0)

count++;

for(i=number;i>count;i--)

d[i]=d[i-1];

d[i]=p;

number++;/*每添加一本图书,图书数目都会增加一个*/

fp2=fopen("f.txt","w");

if(fp2==NULL)

{

printf("Fileopenthefile2!

\n");

exit(0);

}

for(i=0;i

fprintf(fp2,"%s%s%s%s%s%d%.2lf\n",

d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);

fclose(fp2);

printf("添加后的图书信息:

\n编号书名作者出版社类别出版时间价格\n");

for(i=0;i

printf("%s%s%s%s%s%d%.2lf\n",

d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);

printf("谢谢您对图书的添加!

\n");

break;

}

case2:

printf("谢谢您对图书的添加!

\n");

break;

}

printf("********************************************************************************\n");

getchar();

}

5 删除图书函数

doubledelete_book(structlistd[]){

inti,count=0,fg=0,ch;

chars[20];

FILE*fp3;

system("cls");

printf("|***********************************|\n");

printf("|删除图书|\n");

printf("|***********************************|\n");

printf("请输入图书编号:

");

scanf("%s",s);

for(i=0;i

if(strcmp(s,d[i].num)==0)

{

printf("是否删除并显示删除

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1