资源描述
图书信息管理系统课程设计报告——好的
———————————————————————————————— 作者:
———————————————————————————————— 日期:
19
个人收集整理 勿做商业用途
《图书信息管理系统》
课程设计报告
2009-—2010学年第二学期
学院:工商管理学院
专业:信息系统与信息管理专业
班级:
学号:
姓名:
目录
一、准备工作
二、系统功能简介
三、系统运行环境
四、功能划分,模块详细说明
五、运行结果说明
六、简要总结及自我评价
七、参考书目
一、 实验准备
做系统前,首先,自己详细看了《C程序设计教程》(教科书)的第十章《文件》,基本自学会了文件的相关内容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解。学习了C语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、数组、文件、函数等基本知识的进一步理解。另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理.
二、 功能简介
图书信息管理系统是对图书信息的基本管理,它包括:图书信息的输入、图书信息的修改及删除、图书信息的查询、图书信息的添加、图书信息的浏览。
使用模块化编程的方法每项功能有一个或多个函数组合来完成,对应如下:
图书信息的输入===èvoid enter()
图书信息的修改及删除==èvoid revise()
图书信息的查询===èvoid search()
图书信息的添加===èvoid add()
图书信息的浏览==èvoid list()
另外本程序运用动态存储、二进制进行存贮。
为了使程序变得更加明了设计另外一些函数加以辅助,如:input()函数、menu()函数、save()函数、load()函数、back()函数和face()函数等,这对于查询、删除、修改中非常重要.
三、系统与性环境
系统可以在Turbo C 2.0,硬件基本无要求,现在的计算机基本都可以运行该系统。
四、功能划分及详细说明
主要算法的设计:
(1) 主函数的算法设计
开始
输入选择
退出
图书信息浏览函数
图书信息查询函数
图书信息修改函数
图书信息输入函数
结束
首先,运行程序,进入菜单,然后选择操作(运用swith语句),调用各子函数。在返回操作中运用while语句进行控制返回菜单。
(2) 各子函数的算法设计
1、 图书信息的输入函数
开始
语句
语句和输入函数
保存函数
For函数
返回函数
结束
假
真
Void enter() 首先,用void input()函数,再调用save()函数创建文件夹保存输入图书信息.
2、 图书信息的修改
void revise()首先,选择修改信息,输入要修改的书本号,再输入要要修改的选项及内容;若成功则printf("success!\n”);否则调用报错函数.
开始
读入函数
输入函数
是否相等
输出信息
选择表达式
资料1
资料2料2
资料3
资料4
资料5
资料6
资料7
选择
返回主菜单
结束
4、图书信息的查询
开始
选择方法
按书名查找
按作者查找
删除、修改
删除、修改
void search()选择查询方式 ,1按书名查询,2按作者查询, 然后定位,再调用输出函数;
3、 图书信息的浏览
开始
输出函数
结束
返回主菜单
void browse () 首先,输出所有图书的信息,并输出图书记录数,然后调用辅助函数进行菜单选择,操作完成后返回主菜单。
4、 图书信息的添加
开始
输入要添加的本数
输入函数
保存函数
返回函数
结束
void add() 首先,从文件中调用load()函数读入函数,再输入要添加的书本数,然后添加图书信息,并保存.
上机调试过程:
在调试过程中出现了许多的错误!特别是在查询、修改删除这2个函数的调上花费了很多时间,主要是文件的写入与读出以及菜单调试的问题,还有建立新的链接也出现问题,说明自己对程序的执行过程理解不够深刻。
注:具体调试过程,麻烦在编程时,编程时出现了许多未知的错误,虽然经过调试避免了,但没有记录。
五、测试结果说明
主菜单:
输入及显示浏览和查询页面:
修改页面:添加页面:基本上实现了题目所要求的函数功能,可以对图书的信息进行输入、浏览、查询、修改、添加等功能管理。另:本系统为全英文系统。
六、个人心得
通过本次课程设计,自己C语言编程的能力有了提高,特别是在文件、指针、数组、函数和结构体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会。
循环是C语言的重要方法,也是本程序的灵魂,它在本程序中既有“穿针引线"的作用,也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用循环过程中对循环进行了多方法的应用也是一个“亮点”,它使程序变得结构合理,通俗易懂,也降低了程序的难度。以后要对这种方法进行深刻的体会。
数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进行输入、贮存、读取方便了对数据的处理和输入,数组的的使用在本程序中有很大的好处。
函数是实现模块化编程的基础,它使程序变得方面易懂,对修改起了很大作用,降低了编程的难度,一个函数就是一个功能,它使各个功能之间有了一定的独立性,但也有了一定的联系性,一个函数的错误,不会导致整个程序的失败(主函数除外),对函数的良好应用时在本程序中又以深刻的体会,有了很大提高。
结构体的使用,为本程序提供了很大方便,也提高了程序的可读性,结构数组方便了对数据的管理.
文件的读取与存贮使数据可以保存下来,这也是在C语言的学习过程中没有进行教学的内容,在开始时遇到了不小的困难,但前期的准备工作做的还好,最终克服了。
另外、感觉到在做C语言作业时编的程序是 那样的简短(都不足1k)、儿现在自己编写的程序变大了,需要在编程方面进一步提高,同时提高了自己对编程的兴趣,使自己对编程有了更深的理解,体会到编程的乐趣。
七 、参考书目
1、C程序设计教程 谭浩强 清华大学出版社 2007.7
附:在编写本程序时,在网上寻找的参考程序起到了很大的启发与参考作用.
图书信息管理系统程序设计C语言:
图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等.试设计一图书信息管理系统,使之能提供以下功能:
v系统以菜单方式工作
v图书信息录入功能--输入
v图书信息浏览功能--输出
v查询和排序功能:(至少一种查询方式)--算法
l 按书名查询
l 按作者名查询
v图书信息的删除与修改(可选项)
#include"stdio。h”
#include”stdlib。h”
#include"string.h"
#include"conio.h”
#define N 10
typedef struct system
{ long num;
char name[20];
char writer[10];
char sort[10];
char publisher[20];
long time;
double price;
}BOOK;
void input() /*定义录入函数*/
{ int i;
BOOK a;
FILE *fp;
system("cls");
if((fp=fopen(”e:\\filel”,"w”))==NULL)
{ printf("error!\n”);exit(1);}
for(i=1;i〈=N;i++)
{ printf("\t请输入您所需书籍的登陆号:");
scanf("%ld",&a。num);
printf(”\t请输入书名:");
scanf(”%s”,a.name);
printf("\t请输入作者名:”);
scanf(”%s”,a。writer);
printf(”\t请输入分类号:");
scanf(”%s”,a.sort);
printf("\t请输入出版单位:");
scanf("%s",a。publisher);
printf(”\t请输入出版时间:");
scanf(”%ld”,&a.time);
printf(”\t请输入该书的价格:”);
scanf("%f",&a.price);
fwrite(&a,sizeof(BOOK),1,fp);
}
fclose(fp);
}
void list() /*定义浏览函数*/
{ BOOK a;
FILE *fp;
system(”cls");
if((fp=fopen("e:\\filel","r”))==NULL)
{printf(”error!\n");exit(1);}
printf("\n\n\n\n\n\n\tenter_num\tbook_name\twriter\tsort_num\tpublisher\tpublish_time\tprice\n\n");
while(fread(&a,sizeof(BOOK),1,fp)!=0)
printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%f”,a。num,a.name,a。writer,a。sort,a.publisher,a。time,a。price);
fclose(fp);
printf("\n\t press any key to continue。..”);
getch();
}
void search_by_name() /*定义按书名查询*/
{ FILE *fp;
int i;
BOOK b[N];
char s2[20];
fp=fopen(”file","r");
if(fp==NULL)
{printf("file open error!!\n");exit(1);}
for(i=0;i<N;I++)
fread(&b[i],sizeof(BOOK),1,fp);
printf("请输入要查询的书名: ");
scanf(”%s",s2);
for(i=0;i
if(strcmp(s2,b[i]。name)==0)
{ printf(” 书号 书名 作者 种类 出版商 出版日期 价格 \n");
printf(”%l0d%20s%10s%l0s%20s%l0d%f\n",&b[i].num,b[i]。name,b[i].writer,&b[i].sort,b[i]。publisher,&b[i]。time,&b[i]。price);}
else printf(”cannot found!");
fclose(fp);
}
void search_by_writer() /*定义按作者名查询*/
{ int i;
FILE *fp;
BOOK b[N];
char s3[20];
fp=fopen(”file”,"r");
if(fp==NULL)
{printf("file open error!!\n");exit(1);}
for(i=0;i<N;I++)
fread(&b[i],sizeof(BOOK),1,fp);
printf("请输入要查询的书的作者: ”);
scanf(”%20s",s3);
for(i=0;i
if(strcmp(s3,b[i]。writer)==0)
{ printf(" 书号 书名 作者 种类 出版商 出版日期 价格 \n");
printf("%l0d%20s%10s%l0s%20s%l0d%f\n\n",&b[i].num,b[i].name,b[i]。writer,&b[i]。sort,b[i]。publisher,&b[i].time,&b[i]。price);}
else printf(”cannot found!");
fclose(fp);
}
void search() /*定义查询函数*/
{ int a;
system("cls”); /*进行清屏*/
printf(”\t\t******************************\n”);
printf("开始查询\n”);
printf(”\t\t\t1—-—--—-—-——-—--search_by_name\n”);
printf("\t\t\t2—————-—---————-search_by_writer\n”);
printf(”\t\t\t0-—-—-—-—-—---——exit\n”);
printf("\t\t******************************\n”) ;
printf("\t\t请选择你想要的查询方式:");
scanf("%d”,&a);
switch(a)
{case 1:search_by_name();break;
case 2:search_by_writer();break;
case 0:return;}
}
void del() /*定义删除函数*/
{ FILE *fp;
long booknum; /*按登陆号查询*/
int i=0,k;
BOOK b[N];
system("cls"); /*清屏*/
if((fp=fopen(”file","r"))==NULL)
{ printf(”error!\n");exit(1);}
for(i=0;i〈N;I++)
fread(&b[i],sizeof(BOOK),1,fp);
fclose(fp);
printf(”\n Please type in the number of the book you want to delete:”);
scanf(”%d",booknum);
for(i=0;i<N;I++)
if(booknum==b[i].num) break;
if(i〈N)
for(k=i;k〈N;K++)
b[k]=b[k+1];
else printf(”\n cannot found!\n");
fp=fopen(”file",”w");
if(fp==NULL)
{ printf(”\n error!\n”);return; }
for(i=0;i<N—1;I++)
fwrite(&b[i],sizeof(BOOK),1,fp);
fclose(fp);
}
void revise() /*定义修改函数*/
{ int i,k;
char s1[20];
BOOK b[N];
FILE *fp;
system("cls");
if((fp=fopen(”e:\\filel”,"w+"))==NULL)
{ printf(”error!”); exit(1);}
for(i=0;i〈N;I++)
fread(&b[i],sizeof(BOOK),1,fp);
printf(”\t\t欢迎进入修改界面\n”);
printf("\n\n\n\t\t请输入所要修改的图书名:\n”);
gets(s1);
for(i=0;i〈N;I++)
if(strcmp(s1,b[i]。name)==0) {k=i;break;}
if (i>=N)
{printf(”未找到!"); exit(0);}
printf(”\t\t请输入新登录号 图书名 作者 分类号 出版单位 出版时间 价格 数量\n”);
scanf(”\t\t\t\t\t\t\t\t\t%ld\t%20s\t%10s\t%10s\t%20s\t%6.2f\t%d\n",&b[k]。num,b[k]。name,b[k]。writer,&b[k].sort,b[k].publisher,&b[k]。time,&b[k]。price);
for(i=0;i<N;I++)
fwrite(&b[i],sizeof(BOOK),1,fp);
fclose(fp);
printf(”修改成功!”);
}
void append() /*定义追加函数*/
{int i,n;
BOOK a;
FILE *fp;
system(”cls”);
if((fp=fopen("e:\\FILE”,”a”))==NULL)
{printf(”error!\n");exit(1);}
printf(”\n\n\t请输入追加图书的个数:”);
scanf(”%d",&n);
for(i=0;i〈N;I++)
{printf (”\t请输入追加图书的登录号:");
scanf("%ld”,&a.num);
printf("\t请输入追加图书的图书名:");
scanf("%20s”,a。name);
printf("\t请输入追加图书的作者名:”);
scanf("%10s",a。writer);
printf("\t请输入追加图书的分类号:”);
scanf("%10s”,a.sort);
printf(”\t请输入追加图书的出版单位:”);
scanf("%20s",a.publisher);
printf(”\t请输入追加图书的出版时间:”);
scanf(”%d”,&a.time);
printf("\t请输入追加图书的单价:");
scanf(”%f",&a.price);
fwrite(&a,sizeof(BOOK),1,fp);
}
fclose(fp);
}
void main()
{int a;
do
{system("cls");
printf(” ☆☆☆老七的博客☆☆☆\n");
printf("\n”);
printf(” ∮∮\n”);
printf(”\n”);
printf(”\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n”);
printf("\t\t*********************************************\n");
printf(”\t\t\t\t1 ——-————-—--——————-图书信息录入\n”);
printf("\t\t\t\t2 ---———-——-———-----图书信息浏览\n");
printf(”\t\t\t\t3 --——-—--—-—--—-——-图书信息查询\n");
printf("\t\t\t\t4 -————---——---——--—图书信息删除\n”);
printf("\t\t\t\t5 ——---—-----—--—-—-图书信息修改\n");
printf(”\t\t\t\t6 —--—-————--—-—-——-图书信息追加\n”);
printf("\t\t\t\t0 ——-—-—-————---—--退出图书信息系统\n");
printf(”\t\t*********************************************\n");
printf("\t\tplease choose: ”);
scanf(”%d”,&a);
switch(a)
{case 1:input();break;
case 2:list();break;
case 3:search();break;
case 4:del();break;
case 5:revise();break;
case 6:append();break;
case 0:exit(0);
default:printf(”\n序号不对\n");}
}while(a!=0);
}
文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络
展开阅读全文