图书信息管理系统设计.docx
- 文档编号:4547385
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:21
- 大小:89.91KB
图书信息管理系统设计.docx
《图书信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统设计.docx(21页珍藏版)》请在冰豆网上搜索。
图书信息管理系统设计
一、课程设计的内容
C题目二:
图书信息管理系统设计
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
系统以菜单方式工作
图书信息录入功能(图书信息用文件保存)--输入
图书信息浏览功能--输出
查询和排序功能:
(至少一种查询方式)--算法
按书名查询
按作者名查询
图书信息的删除与修改(可选项)
二、课程设计的要求与数据
1、进一步掌握和利用C语言进行程设计的能力;
2、进一步理解和运用结构化程序设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、掌握书写程序设计开发文档的能力。
三、课程设计应完成的工作
1、编写完成相应题目的程序;
2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:
1)需求分析:
包括设计题目、设计要求以及系统功能需求分析;
2)总体设计:
包括系统总体设计框架和系统功能模块图;
`
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
4)调试分析过程描述:
包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);
5)总结:
课程设计完成了哪些功能,有没有什么扩展功能还有哪些地方需要改进课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;
6)附录:
主要源程序代码,含必要的注释。
3、答辩:
在实验室建立程序运行的环境,并在指导教师的监督下,独立解
决问题、运行程序和回答教师提出的问题。
四、课程设计进程安排
序号
《
设计各阶段内容
地点
起止日期
1
下达任务书,说明设计要求;收集资料
实验3#517
2
|
总体方案设计、详细设计
实验3#517
3
编写程序,调试分析
实验3#517
4
.
撰写报告并上交,答辩
实验3#517
五、应收集的资料及主要参考文献
[1]谭浩强.C程序设计(第三版)[M],北京:
清华大学出版社,
[2]谭浩强.C程序设计题解与上机指导(第三版)[M],北京:
清华大学出版社,
>
发出任务书日期:
2007年6月18日指导教师签名:
计划完成日期:
2007年6月22日基层教学单位责任人签章:
主管院长签章:
1设计目的与要求………………………………………………………………页码
2总体设计………………………………………………………………………页码
3详细设计………………………………………………………………………页码
<
功能模块设计………………………………………………………………页码
3.1.1XX功能模块(可选)…………………………………………………页码
3.1.1YY功能模块(可选)…………………………………………………页码
3.1.1ZZ功能模块(可选)…………………………………………………页码
数据结构设计………………………………………………………………页码
4调试分析……………………………………………………………………页码
5总结……………………………………………………………………………页码
6附录……………………………………………………………………………页码
|
6答辩记录(正文处请留出适当空白)………………………………………页码
7指导教师意见(正文处请留出十行空白)…………………………………页码
1目的与要求
题目:
图书信息管理系统设计
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
系统以菜单方式工作
图书信息录入功能(图书信息用文件保存)--输入
图书信息浏览功能--输出
查询和排序功能:
(至少一种查询方式)--算法
按书名查询
按作者名查询
图书信息的删除与修改(可选项)
需求说明:
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等并且要求职工号不重复;
<
录入的图书信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作;
对图书信息查询应能够分别按书名及作者名两种方式进行,要求能返回所有符合条件的职工的信息;
对职工信息的修改应逐个地进行,一个职工信息的更改不应影响其他的职工记录;
系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理
。
2总体设计
菜单选择模块完成用户命令的接收,此模块也是图书信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;
输入模块完成图书信息的输入功能,输入信息包括登陆号、书名、作者名、分类号、出版社、出版日期、价钱等;
\
输出模块完成已录入图书信息的显示;
查询模块完图书信息的查询,查询时对应有按书名查询和按作者名查询两种方式;
修改模块完成图书信息的修改功能;
删除模块完成图书信息的删除功能;
按登陆号排序模块完成对信息的排序;
文件保存模块完成文件的保存。
3详细设计
(内容可以适当调整,清晰的有条理的把你的设计思路表达出来)
`
功能模块设计
3.1.1XX功能模块(可选)
3.1.2YY功能模块(可选)
3.1.3ZZ功能模块(可选)
数据结构设计(可选)
1!
2菜单选择模块:
(
给出信息提示;
绘制菜单(包含输入、显示、查询、修改、删除、退出、排序);
提示菜单选择并读入到变量;
根据读入变量的值调用不同的模块函数;)
3 信息输入模块:
(
打开职工信息文件;
—
发出输入提示信息;
输入职工信息;
提示是否继续输入;
读入到变量;
根据读入变量的值进入菜单或输入函数模块;)
4信息输出模块:
(
输出所有图书的所有信息。
)
5 信息查询模块:
(
%
调用switch函数;
给出信息提示;
提示菜单选择并读入到变量;
根据读入变量的值进入不同的case;
Case1给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。
Case2给出信息提示;
*
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。
)
5.信息修改模块:
(
给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息,并提示输入新的图书信息;否则,提示出错。
)
6.信息删除模块:
(
给出信息提示;
提示菜单选择并读入到变量;
Strcmp函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息,并删除该图书的图书信息;否则,提示出错。
)
7.排序模块(
看能不能打开程序;
如能,则用冒泡法排序;
输出排序后的所有信息)
8文件保存模块(
看文件能不能读;否则提示出错。
·
看文件的长度符不符合要求;否则提示出错。
保存文件)
4调试分析
一.实现程序:
首先进入如下界面:
1:
input
2:
output
3:
save
4:
search
】
5:
xiugai
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”及“pleaseinputxiugai'stheinformations”,后输入新信息,再输入“3”保存。
七.输入7按登陆号排序。
运行正常,输入0退出。
调试过程中,问题很多比如说编写排序和文件保存函数时,对fopen函数认识不够,一开始是用if((fp=fopen("f:
\\c","rb"))==NULL)这个语句,调试的时候一直都最少都是一个错误:
后来怎么弄都纠正不了。
后来慢慢的查书,逐行检查。
才终于改正为if((fp=fopen("","wb"))==NULL)。
程序终于可以运行。
通过这我懂得:
写程序时一定要严谨,尽可能写下的每一行不出错。
否则调试时会很麻烦。
【
5总结
本次课程设计是我这学期编写的第一个大程序,从花费的过去三天总计十七个小时中,我得到如下收获:
1.用好C语言某种程度上关键就是用好所需的各种函数的调用,c语言的确是一种结构化的语言。
2.学会和加深了对于结构体和共用体的理解,以及在程序中怎样实现文件函数的输入输出和文件的定位。
3只有上机实践才能检验自己写的程序,看是看不出来的。
4深深懂得调试、书写规范和检错的重要性。
5—
6连续三天每天六小时端坐在电脑前动都不能动,绞尽脑汁艰苦奋斗的经历告诉我:
程序员这种工作,真的不是人干的……….
7.附录
#include<>
#include<>
#include<>
#defineN10
structlibrary
{
|
intnum;
charbook_name[30];
charwriter[30];
charsort_num[3];
charpub_company[30];
charpub_time[30];
charprise[30];
};
typedefstructlibraryLIB;
LIBlib[N];
FILE*fp;
intall=0;
intmenu(void);
voidinput(void);
voidoutput(void);
voidsave(void);
】
voiddel(void);
voidsearch(void);
voidxiugai(void);
voidsort(void);
main()
{
for(;;)
{
.
switch(menu())
{
case1:
input();break;
case2:
output();break;
case3:
save();break;
case4:
search();break;
case5:
xiugai();break;
case6:
del();break;
~
case7:
sort();break;
case0:
exit
(1);break;
}
}
}
intmenu(void)/*显示主菜单*/
{
charm[3];
—
intn;
printf("\t\t1:
input\n");
printf("\t\t2:
output\n");
printf("\t\t3:
save\n");
printf("\t\t4:
search\n");
printf("\t\t5:
xiugai\n");
printf("\t\t6:
del\n");
printf("\t\t7:
sort\n");
}
printf("\t\t0:
exit\n");
printf("\t\tpleasechooseaoperation(0-6):
\n");
scanf("%s",m);
n=atoi(m);
return(n);
}
voidinput(void)/*显示输入函数*/
{
|
inti;
charm[3];
for(i=all;i { all++; printf("pleaseinputinformations: \n"); printf("\t\tnum: \n"); scanf("%d",&lib[i].num); ' printf("\t\tbook_name: \n"); scanf("%s",lib[i].book_name); printf("\t\twriter: \n"); scanf("%s",lib[i].writer); printf("\t\tsort_num: \n"); scanf("%s",lib[i].sort_num); printf("\t\tpub_company: \n"); scanf("%s",lib[i].pub_company); 《 printf("\t\tpub_time: \n"); scanf("%s",lib[i].pub_time); printf("\t\tprise: \n"); scanf("%s",lib[i].prise); a: printf("\t\tyes/nocontinueinput\n"); printf("\t\t1: yes\n"); printf("\t\t2: no\n"); scanf("%s",m); 、 if(atoi(m)==1) continue; elseif(atoi(m)==2) return; else { printf("\t\tinputerror! \n"); gotoa; : } } } voidoutput(void)/*显示输出函数*/ { inti; for(i=0;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); } } voidsort(void)/*从登陆号从大到小排序的函数*/ { intb,i; # structlibraryflash; if((fp=fopen("","wb"))==NULL) {printf("cannotopenfile\n"); return; } for(b=0;b { for(i=b+1;i 【 { if(strcmp(lib[b].sort_num,lib[i].sort_num)<0) {flash=lib[b];lib[b]=lib[i];lib[i]=flash;} } } printf("thedownobjectis: \n"); | printf("numbook'namewritersort_numpub_companypub_timeprise\n"); for(b=0;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); elsebreak; - } } voidsave(void)/*文件保存*/ { inti; if((fp=fopen("","wb"))==NULL) { printf("cannotopenthefile"); . exit (1); } for(i=0;i { if(fwrite(&lib[i],sizeof(LIB),1,fp)! =1) { printf("cannotwrite! "); exit (1); ~ } } fclose(fp); } voidsearch(void)/*书名和作者名查找*/ { inti,flag; charm[3]; ] charname[30]; printf("\t\t请选择按书名或作者名查询: \n"); printf("\t\t1: 书名\n"); printf("\t\t2: 作者名\n"); scanf("%s",m); i=atoi(m); switch(i) { > case1: { printf("\t\tpleaseinputthebook_name: \n"); scanf("%s",name); flag=0; for(i=0;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\tnotfindthebook! \n"); }break; case2: { printf("\t\tpleaseinputthewriter: \n"); scanf("%s",name); flag=0; ^ for(i=0;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\tnotfindthewtiter! \n"); }break; ~ } } voidxiugai(void)/*显示修改函数*/ { inti,flag; charname[30],n[3]; printf("\t\tpleaseinputthebook_nameofxiugai: \n"); scanf("%s",name); | flag=0; for(i=0;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\tpleaseinputxiugai'stheinformations: \n"); printf("\t\tnum: \n"); scanf("%d",&lib[i].num); printf("\t\tbook_name: \n"); scanf("%s",lib[i].book_name); printf("\t\twriter: \n"); scanf("%s",lib[i].writer); printf("\t\tsort_num: \n"); # scanf("%s",lib[i].sort_num); printf("\t\tpub_company: \n"); scanf("%s",lib[i].pub_company); printf("\t\tpub_time: \n"); scanf("%s",lib[i].pub_time); printf("\t\tprise: \n"); scanf("%s",lib[i].prise); flag=1;break; 》 } } if(flag==0) printf("\t\tnotfindxiugai'sthebook! \n"); } 、 voiddel(void)/*显示删除函数*/ { inti,flag,n; charname[30]; printf("\t\tpleaseinputthebook_nameofdel: \n"); scanf("%s",name); flag=0; for(i=0;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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息管理 系统 设计