图书信息管理系统设计1.docx
《图书信息管理系统设计1.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统设计1.docx(13页珍藏版)》请在冰豆网上搜索。
图书信息管理系统设计1
一、课程设计的内容
C题目:
图书信息管理系统设计
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
系统以菜单方式工作
图书信息录入功能(图书信息用文件保存)--输入
图书信息浏览功能--输出
查询和排序功能:
(至少一种查询方式)--算法
按书名查询
按作者名查询
图书信息的删除与修改(可选项)
二、课程设计的要求与数据
1、进一步掌握和利用C语言进行程设计的能力;
2、进一步理解和运用结构化程序设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、掌握书写程序设计开发文档的能力。
三、课程设计应完成的工作
1、编写完成相应题目的程序;
2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:
1)需求分析:
包括设计题目、设计要求以及系统功能需求分析;
2)总体设计:
包括系统总体设计框架和系统功能模块图;
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
4)调试分析过程描述:
包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);
5)总结:
课程设计完成了哪些功能,有没有什么扩展功能?
还有哪些地方需要改进?
课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;
6)附录:
主要源程序代码,含必要的注释。
3、答辩:
在实验室建立程序运行的环境,并在指导教师的监督下,独立解
决问题、运行程序和回答教师提出的问题。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
下达任务书,说明设计要求;收集资料
实验3#517
6.18
2
总体方案设计、详细设计
实验3#517
6.19
3
编写程序,调试分析
实验3#517
6.20
4
撰写报告并上交,答辩
实验3#517
6.21
五、应收集的资料及主要参考文献
[1]谭浩强.C程序设计(第三版)[M],北京:
清华大学出版社,2005.9
[2]谭浩强.C程序设计题解与上机指导(第三版)[M],北京:
清华大学出版社,2005.7
[3]吴文虎.程序设计基础(第2版)[M],北京:
清华大学出版社2005.2
发出任务书日期:
2007年6月18日指导教师签名:
计划完成日期:
2007年6月22日基层教学单位责任人签章:
主管院长签章:
目录
1设计目的与要求………………………………………………………………页码
2总体设计………………………………………………………………………页码
3详细设计………………………………………………………………………页码
3.1功能模块设计………………………………………………………………页码
3.1.1XX功能模块(可选)…………………………………………………页码
3.1.1YY功能模块(可选)…………………………………………………页码
3.1.1ZZ功能模块(可选)…………………………………………………页码
3.2数据结构设计………………………………………………………………页码
4调试分析……………………………………………………………………页码
5总结……………………………………………………………………………页码
6附录……………………………………………………………………………页码
6答辩记录(正文处请留出适当空白)………………………………………页码
7指导教师意见(正文处请留出十行空白)…………………………………页码
1目的与要求
一.设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:
1)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
2)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
3)熟练掌握C语言的基本语法,灵活运用各种数据类型。
进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序
二.设计和调试过程规范化要求
1、需求分析
分析系统功能需求以及用户操作流程。
2、概要设计
在需求分析的基础上,确定系统总体框架(系统功能结构图)。
3、详细设计
定义数据存储结构,并设计实现系统功能的具体算法,画出各算法的NS流程图。
4、代码设计
根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后还可以返回到主菜单,继续选择其他功能执行。
源程序要求书写规范,结构清晰。
重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。
5、程序调试
程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。
如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和改正。
如果程序能够基本正确地运行,可考虑增加若干基本的容错功能(如避免用户操作错误时程序出现死循环等);另外尽量对现有算法给出改进方案,并比较不同算法之间的优缺点。
2总体设计
图书管理系统设计
输入数据
输出数据
保存
查找
排序
3详细设计
3.1功能模块设计
3.1.1查找功能模块
查找
选1按书名查找
选2按作者查找
3.1.2排序功能模块
排序
按书名排序
调试分析
部分运行结果:
1:
input
2:
output
3:
save
4:
search
5:
sort
0:
exit
pleasechooseaoperation(0-5):
4
pleasechooseyourwayofsearch:
1:
bybook_name!
2:
bywriter!
1
pleaseinputthebook_name:
a
1
aaa
aaa
pleaseinputthewriter:
1:
input
2:
output
3:
save
4:
search
5:
sort
0:
exit
pleasechooseaoperation(0-5):
5
0
1
aaa
aaa
2
bbb
bbb
出错现象:
声明部分有缺少
出错原因:
对C语言不够熟悉.,粗心大意
解决问题:
按错误提示改正
5总结
本次实验是我们在一学期当中所做的最大一道程序编写。
从花费的几天时间我亲自编写的程序代码中我深有体会:
(1)真实体会到了C语言是面向结构化程序设计的语言,其主要结构成分是函数。
(2)C语言具有结构化的控制语句,直接支持多种循环结构,在书写格式上允许采用逐层缩进形式,增加了程序的可读性。
(3)学会了从一道较大程序代码中去如何修改逻辑错误与语法错误,调试程序的重要性。
(4)更重要的一点就是我对管理系统有了一个更深刻的认识,如何采用代码去编写一个好的程序,函数调用是不可缺少的一部分。
(5)动手实践是关键因素,能够达到学以致用也是自己所得到的一种成就感。
(6)付出与收获是成正比的,有付出才有收获.
7.附录
#include
#include
#include
#defineN50
structlibrary/*图书信息*/
{
intnum;/*登陆名*/
charbook_name[40];/*书名*/
charwriter[40];/*作者*/
charsort_num[3];/*类型*/
charpub_company[40];/*出版单位*/
charpub_time[30];/*出版时间*/
charprise[30];/*价格*/
};
typedefstructlibraryLIB;
LIBlib[N];
FILE*fp;
intall=0;
intmenu(void);/*菜单函数*/
voidinput(void);/*输入数据函数*/
voidoutput(void);/*输出数据函数*/
voidsave(void);/*保存函数*/
voidsearch(void);/*查找函数*/
voidsort(void);/*排序函数*/
main()/*主函数*/
{
for(;;)
{
switch(menu())
{
case1:
input();break;
case2:
output();break;
case3:
save();break;
case4:
search();break;
case5:
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:
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);
}
}
voidsave(void)
{
inti;
if((fp=fopen("file.c","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\tpleasechooseyourwayofsearch:
\n");
printf("\t\t1:
bybook_name!
\n");
printf("\t\t2:
bywriter!
\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");
}
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");
}
}
}
voidsort(void)
{
inti;
for(i=0;i{
intj;
for(j=i+1;j{if(strcmp(lib[i].book_name,lib[j].book_name)>0)
{structlibraryt;
t=lib[i];lib[i]=lib[j];lib[j]=t;
}
}
}
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);
}
}
7答辩记录
序号
问题
回答
1
2
3
4
5
8指导教师意见
指导教师签名: