资源描述
图书信息管理系统设计说明书
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年春季学期
C程序设计 课程设计
题 目:图书信息管理系统
专业班级:通信工程3班
姓 名: 于建秀
学 号: 11250302
指导教师: 廖成斌
成 绩:_______________
前 言
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟.管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展要高效率的把内部活动有机的组织起来,就必须建立自身特点相适应的管理信息系统。
本学期在c语言结课之际,我们接到了我们的课程设计作业——图书信息管理系统。面对这个大课题,我们结合所给任务书的要求,以及查阅相关文献之后,根据我们所学的c语言知识,收集并借鉴了相关管理系统在设计上的优点与缺陷,考虑了适合本系统所需功能模块在设计上的最优化组合,使其发挥最大功能.
在设计本系统的过程中,我们阅读了许多相关文献,使软件尽可能受用。在廖成斌老师的悉心指导下,我们改正了在认识上的错误,并在还可能犯错误的地方征求了廖老师的意见,在此我们衷心的说一声谢谢.由于这是我们所设计的第一个大程序,没有任何经验.因此,我们在不断地与廖老师问问题的过程中,不断地总结,再考虑各种因素的基础上,我们画出了相应的流程图,并分析了系统所需的数据结构图之后,着重编程序.在编程过程中,我们用到了结构体,,函数调用等相关知识,并通过相关链接让程序有序地运行,在完成设计后,我们用了大量数据来调试相关程序,使各个功能模块发挥各自作用,使软件在更广范围内使用.该系统是一个图书信息管理的数据库系统,通过这个系统管理员可以简捷地对信息进行进行增加、删除、修改等功能,而用户也可以通过这个系统对图书信息进行查询等功能。
当完成任务后感触很深,我们认识到软件设计的工作很严谨,容不得一点马虎,必须把程序写全,把每一个子程序执行的操作,完成何功能考虑周全,一步步把工作做好。
目 录
摘 要 2
1。系统需求分析 4
2. 系统总体设计 5
3.详细设计 7
4。系统测试 10
5。软件使用说明书 13
设计总结 14
参考文献 15
致 谢 16
附录--原代码 17
摘要: 本图书信息管理系统以菜单方式工作,菜单的功能选项以英文显示给人以舒适的视觉享受,依次显示为登录号(流水号)、书名、作者名、分类号、出版单位、出版时间、价格等v.本图书信息管理系统具有菜单选择功能、图书信息录入功能、图书信息输出功能、图书信息查询功能、图书信息修改功能、图书信息删除功能、编号排序功能、文件保存功能等.通过该软件管理员和用户可根据自己的需求进入不同的功能模块,完成不同的操作,满足各种与图书信息管理有关的需求。
关键字:图书;信息;管理。
一、系统需求分析
随着现代化进程的加快,人们对知识的渴求趋向更广范围,更深程度.图书作为人们更新自己头脑和追求进步的重要手段,日益显示出其重要性。因此,再有新时间内,用最有效的方法查询出对我们有用的图书信息显得尤为重要。
本系统可以实现用户根据系统的提示输入需要查询的图书信息;系统管理员可以进行添加图书,删除图书,保存数据等操作.图书信息管理系统以方便和满足广大用户的需要为宗旨,方便图书管理员的管理。待管理员将现有图书信息录入后,用户可根据提示浏览需要查询的图书信息(也可显示是否借出),浏览时将以作者和书名两种方式查询,供用户选择。用户可根据输入的信息查询所需图书的价格、出版时间、出版社从而选择适合自己的图书。另外,图书管理员可以统计现有图书的数量,以及个给它们分类。
二、系统总体设计
1。总体软件结构图
菜单选择
输入
输出
查询
修改
删除
按登录号排序
按书名查询
按作者查询
注:菜单选择模块完成用户命令的接收,此模块也是图书信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;
输入模块完成图书信息的输入功能,输入信息包括登陆号、书名、作者名、分类号、出版社、出版日期、价钱等;
输出模块完成已录入图书信息的显示;
查询模块完图书信息的查询,查询时对应有按书名查询和按作者名查询两种方式;
修改模块完成图书信息的修改功能;
删除模块完成图书信息的删除功能;
按登陆号排序模块完成对信息的排序;
文件保存模块完成文件的保存。
2。总体数据结构
① 菜单选择模块:(
给出信息提示;
绘制菜单(包含输入、显示、查询、修改、删除、退出、排序);
提示菜单选择并读入到变量;
根据读入变量的值调用不同的模块函数;)
② 信息输入模块:(
打开职工信息文件;
发出输入提示信息;
输入职工信息;
提示是否继续输入;
读入到变量;
根据读入变量的值进入菜单或输入函数模块;)
③ 信息输出模块:(
输出所有图书的所有信息。)
④ 信息查询模块:(
调用switch函数;
给出信息提示;
提示菜单选择并读入到变量;
根据读入变量的值进入不同的case;
Case 1 给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。
Case 2 给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。)
5. 信息修改模块:(
给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息,并提示输入新的图书信息;否则,提示出错。)
6.信息删除模块:(
给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息,并删除该图书的图书信息;否则,提示出错.)
7.排序模块(
看能不能打开程序;
如能,则用冒泡法排序;
输出排序后的所有信息)
8 文件保存模块(
看文件能不能读;否则提示出错。
看文件的长度符不符合要求;否则提示出错。
保存文件)
三、详细设计
1。菜单选择模块;
2.图书信息输入模块;
3.图书信息输出模块;
4.图书信息查询模块;
5.图书信息修改模块;
6。图书信息删除模块;
7。 按登录号排序模块;
8。文件保存模块;
四、系统测试
(一〕.实现程序:首先进入如下界面:
1:input
2:output
3:save
4:search
5:modify
6:del
7:sort
0:exit;
(二〕.输入“1”,后按“num登陆号", book_name书名,writer作者名,sort。name分类号,出版社pub-conpany,出版时间pub-time,价钱price顺序输入两组数据:
“1,we,er,1,as,1234,34”
“2,ew,re,2,sa,4321,43”
(三).输入“3”保存。
(四).输入“2”输出数据:
“1,we,er,1,as,1234,34”
“2,ew,re,2,sa,4321,43”
(五).输入“4”查找,“请选择按书名或作者名查询:
1:书名。
2.作者名 “
输入“1“或”2“分别查询.
输入“1“和“we“,输出“1,we,er,1,as,1234,34";输入2和“re“,输出“2,ew,re,2,sa,4321,43" 符合要求
(六)。 输入"5”或“6“进行修改或删除。
输入修改的书名“we”显示“1,we,er,1,as,1234,34”及“please input modify’s the informations”,后输入新信息,再输入“3”保存。
(七).输入7按登陆号排序。
运行正常,输入0退出。
调试过程中,,对fopen函数认识不够,一开始是用if((fp=fopen(”f:\\c”,”rb”))==NULL)这个语句,调试的时候一直都最少都是一个错误:后来怎么弄都纠正不了.后来慢慢的查书,逐行检查。才终于改正为 if((fp=fopen("file.c”,”wb”))==NULL)。程序终于可以运行。
通过这我懂得:写程序时一定要严谨,尽可能写下的每一行不出错。否则调试时会很麻烦。
五、软件使用说明书
(1)根据正确的提示安装软件.
(2) 打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。
操作如下:
点击开始菜单,进入菜单选择.
输入:将所需的信息输入.
输出:图书基本信息。
输入:根据不同的需要选择,当信息输入显示出错误时,进入浏览信息,找出错误。当错误不能改正,则退出浏览信息。
进入查询信息:则屏幕会出现已两个对话框——按作者查找,按书名查找把相应的所需信息的状态(是否借出)。当查询不能显示需要时进入修改程序,把所输入的信息进行修改,使之正确能够正常运行或进入删除信息中,重新输入自己所要的信息。
当信息输入正确,进入你所需要的菜单程序中.
六设计总结
本次课程设计是我这学期编写的第一个大程序,从花费的过去三天总计十七个小时中,我得到如下收获:
1. 用好C语言某种程度上关键就是用好所需的各种函数的调用,c语言的确是一种结构化的语言。
2. 学会和加深了对于结构体和共用体的理解,以及在程序中怎样实现文件函数的输入输出和文件的定位.
3 只有上机实践才能检验自己写的程序,看是看不出来的。
4 深深懂得调试、书写规范和检错的重要性。
七参考文献
[1] 王连相 c++程序设计教程 ,中国铁道出版社,2007
[2] 谭浩强 C语言程序设计教程,安徽出版社,1999
[3] 谭浩强 C程序设计题解与上机指导,清华大学出版社,1999
[4] C语言的实际应用,安徽科学技术出版社,2000
[5] C语言函数手册,机械工业出版社,1999
[6] C语言实用程序荟萃,西安电子科技大学出版社,1993
八、致 谢
在编写程序的过程中,我们得到了老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!
感谢我们小组同学对我的帮助和指点,尤其感谢我的舍友在非常时期,在生活和学习上帮我许多忙。在课设即将完成之际,我的心情无法平静,从开始进入课题到课设的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。
在设计的过程中,老师孜孜不倦的教导是激励我们完成任务的基石,在此我们衷心地感谢我们的指导老师,谢谢老师这几天对我们的教诲,此次课设作业对我们以后的事业具有重要意义,对我们以后的学习具有重要指导意义。
九、附录-—原代码
#include <stdio。h>
#include <string。h〉
#include 〈stdlib。h>
#define N 10
struct library
{
int num;
char book_name[30];
char writer[30];
char sort_num[3];
char pub_company[30];
char pub_time[30];
char prise[30];
};
typedef struct library LIB;
LIB lib[N];
FILE *fp;
int all=0;
int menu(void);
void input(void);
void output(void);
void save(void);
void del(void);
void search(void);
void modify(void);
void sort(void);
main()
{
for(;;)
{
switch(menu())
{
case 1:input();break;
case 2:output();break;
case 3:save();break;
case 4:search();break;
case 5:modify();break;
case 6:del();break;
case 7:sort();break;
case 0:exit(1);break;
}
}
}
int menu(void) /*显示主菜单*/
{
char m[3];
int n;
printf("\t\t1:input\n”);
printf("\t\t2:output\n”);
printf(”\t\t3:save\n");
printf(”\t\t4:search\n");
printf(”\t\t5:modify\n");
printf("\t\t6:del\n”);
printf("\t\t7:sort\n");
printf(”\t\t0:exit\n");
printf("\t\tplease choose a operation(0-6):\n”);
scanf("%s",m);
n=atoi(m);
return(n);
}
void input(void) /*显示输入函数*/
{
int i;
char m[3];
for(i=all;i〈N;i++)
{
all++;
printf("please input informations:\n");
printf("\t\tnum:\t");
scanf(”%d”,&lib[i]。num);
printf("\t\tbook_name:\t”);
scanf("%s",lib[i]。book_name);
printf("\t\twriter:\t”);
scanf(”%s",lib[i]。writer);
printf(”\t\tsort_num:\t");
scanf(”%s",lib[i]。sort_num);
printf("\t\tpub_company:\t");
scanf("%s”,lib[i].pub_company);
printf("\t\tpub_time:\t”);
scanf(”%s",lib[i]。pub_time);
printf("\t\tprise:\t");
scanf(”%s",lib[i].prise);
a: printf(”\t\tyes/no continue input?\n");
printf(”\t\t1:yes\t”);
printf("\t\t2:no\n");
scanf("%s”,m);
if(atoi(m)==1)
continue;
else if(atoi(m)==2)
return;
else
{
printf("\t\tinput error!\n”);
goto a;
}
}
}
void output(void) /*显示输出函数*/
{
int i;
for(i=0;i〈all;i++)
{
printf("\t\t%d\n",lib[i].num);
printf(”%s\t\t%s\t\t%s\n",lib[i].book_name,lib[i]。writer,lib[i].sort_num);
printf(”%s\t\t%s\t\t%s\n”,lib[i]。pub_company,lib[i]。pub_time,lib[i].prise);
}
}
void sort(void) /*从登陆号从大到小排序的函数*/
{
int b,i;
struct library flash;
if((fp=fopen(”file。c”,”wb"))==NULL)
{ printf("cannot open file\n”);
return;
}
for(b=0;b<N;b++)
{
for(i=b+1;i<N;i++)
{
if(strcmp(lib[b].sort_num,lib[i]。sort_num)〈0)
{flash=lib[b];lib[b]=lib[i];lib[i]=flash;}
}
}
printf("the down object is:\n");
printf(” num book’name writer sort_num pub_company pub_time prise\n");
for(b=0;b〈N;b++)
{
if(lib[b].sort_num[0]!=’\0’)
printf(”%d %s %s %s %s %s %s\n”,lib[b].num,lib[b].book_name,lib[b]。writer,
lib[b].sort_num,lib[b]。pub_company,lib[b].pub_time,lib[b].prise);
else break;
}
}
void save(void) /*文件保存*/
{
int i;
if((fp=fopen("file.c","wb"))==NULL)
{
printf("can not open the file”);
exit(1);
}
for(i=0;i〈all;i++)
{
if(fwrite(&lib[i],sizeof(LIB),1,fp)!=1)
{
printf("can not write!");
exit(1);
}
}
fclose(fp);
}
void search(void) /*书名和作者名查找*/
{
int i,flag;
char m[3];
char name[30];
printf(”\t\t请选择按书名或作者名查询:\n”);
printf(”\t\t1:书名\n”);
printf(”\t\t2:作者名\n");
scanf("%s”,m);
i=atoi(m);
switch(i)
{
case 1:{
printf("\t\tplease input the book_name:\n”);
scanf(”%s",name);
flag=0;
for(i=0;i<N;i++)
{
if(strcmp(name,lib[i].book_name)==0)
{
printf("\t\t%d\n”,lib[i].num);
printf("%s\t\t%s\t\t%s\n”,lib[i].book_name,lib[i]。writer,lib[i].sort_num);
printf(”%s\t\t%s\t\t%s\n”,lib[i].pub_company,lib[i].pub_time,lib[i].prise);
flag=1;break;
}
}
if(flag==0)
printf(”\t\tnot find the book!\n”);
}break;
case 2:{
printf("\t\tplease input the writer:\n”);
scanf("%s”,name);
flag=0;
for(i=0;i<N;i++)
{
if(strcmp(name,lib[i].writer)==0)
{
printf(”\t\t%d\n",lib[i].num);
printf(”%s\t\t%s\t\t%s\n",lib[i].book_name,lib[i]。writer,lib[i]。sort_num);
printf("%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i]。pub_time,lib[i]。prise);
flag=1;break;
}
}
if(flag==0)
printf("\t\tnot find the wtiter!\n”);
}break;
}
}
void modify(void) /*显示修改函数*/
{
int i,flag;
char name[30],n[3];
printf(”\t\tplease input the book_name of modify :\t\t”);
scanf(”%s",name);
flag=0;
for(i=0;i<N;i++)
{
if(strcmp(name,lib[i]。book_name)==0)
{
printf("\t\t%d\n”,lib[i].num);
printf(”%s\t\t%s\t\t%s\n”,lib[i]。book_name,lib[i].writer,lib[i].sort_num);
printf(”%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i].pub_time,lib[i].prise);
printf(”\t\tplease input modify’s the informations:\n”);
printf("\t\tnum:\t”);
scanf(”%d”,&lib[i]。num);
printf("\t\tbook_name:\t");
scanf("%s”,lib[i]。book_name);
printf(”\t\twriter:\t”);
scanf("%s",lib[i]。writer);
printf("\t\tsort_num:\t”);
scanf(”%s",lib[i].sort_num);
printf("\t\tpub_company:\t”);
scanf(”%s",lib[i]。pub_company);
printf(”\t\tpub_time:\t”);
scanf(”%s",lib[i]。pub_time);
printf("\t\tprise:\t");
scanf(”%s",lib[i].prise);
flag=1;break;
}
}
if(flag==0)
printf("\t\tnot find modify’s the book!\n”);
}
void del(void) /*显示删除函数*/
{
int i,flag,n;
char name[30];
printf(”\t\tplease input the book_name of del:\t\t”);
scanf(”%s",name);
flag=0;
for(i=0;i<N;i++)
{
if(strcmp(name,lib[i]。book_name)==0)
{
printf("\t\t%d\n”,lib[i].num);
printf(”%s\t\t%s\t\t%s\n”,lib[i]。book_name,lib[i].writer,lib[i]。sort_num);
printf("%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i].pub_time,lib[i].prise);
lib[i].num=lib[n-1].num;
strcpy(lib[i].book_name,lib[n-1]。book_name);
strcpy(lib[i].writer,lib[n-1].writer);
strcpy(lib[i]。sort_num,lib[n-1]。sort_num);
strcpy(lib[i]。pub_company,lib[n-1].pub_company);
strcpy(lib[i]。pub_time,lib[n-1]。pub_time);
strcpy(lib[i].prise,lib[n-1].prise);
n=n-1;
flag=1;
printf(”\t\tdel ok!\n”);
break;
}
}
if(flag==0)
printf("\t\tno information of the book!\n");
}
29
展开阅读全文