C语言课程设计图书信息管理系统.docx
《C语言课程设计图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图书信息管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
![C语言课程设计图书信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/31/ae5e9f5a-8df9-40b9-933f-d7e27c996210/ae5e9f5a-8df9-40b9-933f-d7e27c9962101.gif)
C语言课程设计图书信息管理系统
内蒙古科技大学
本科生课程设计说明书
题目:
C语言课程设计
——图书信息管理系统
*******
学号:
**********
专业:
计算机科学与技术
班级:
15-计算机2班
*******
日期:
2015年12月28日
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
图书信息管理系统
指导教师
刘立新
时间
2013.12.28-2014.1.1
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
图书信息管理系统
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
v图书信息录入功能(图书信息用文件保存)--输入;图书信息浏览功能--输出
v查询或排序功能:
(至少两种种查询方式)--算法
●按书名查询●按作者名查询
v图书信息的删除与修改
v图书的借出与归还
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六、建议参考资料
1.《C语言程序设计》,谭浩强,清华大学出版社
2.《C语言程序设计课程设计》,刘振安,机械工业出版社
第一章需求分析
1.1引言
随着高等院校规模的不断扩大,高校图书馆的藏书、管理人员、读者的数量也就越来越多,图书管理涉及到大量的数据处理,一个现在化的图书馆根本不可能手工完成的庞大的数据处理。
为方便对图书资料、借还图书等进行高效的管理,特编写程序以提高图书馆的管理效率。
1.2任务概述
1目标
本图书信息管理系统主要为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。
根据系统界面的提示信息对图书馆信息进行查询、浏览、保存等操作。
2运行环境
Windows系统
3用户特点
懂得一些基本的电脑操作即可。
4条件与限制
计算机一台
1.3数据描述
系统数据类型有:
整型int,实型float,字符型char,结构体struct;
自己定义的数据类型有:
DATE,BOOK;
1.4功能需求
1功能划分
图书信息管理系统可分为三部分:
信息管理;借阅处理;查询
2功能描述
(1)系统主菜单:
进入系统和退出系统
(2)功能菜单:
显示可以进行的操作
(3)查询主菜单:
根据书名、作者进行查询
(4)借还书主菜单:
可以进行借书和还书等操作
1.5性能需求
1时间特性
本系统对时间的要求较高,时间反应要快,在查询时必须能在几秒时间内作出反应,弹出所要查询的各类图书信息以及借阅者信息。
2兼容性和扩展性
仅限在图书馆使用。
1.6运行需求
1硬件环境
普通的计算机
2软件环境
支持的操作系统包括Windows98/XP/NT/2000中文版及以上版本
要用到的编译语言vc++6.0
1.7任务计划
本系统共分为一个主页面模块(主函数部分),五个功能模块(功能函数)分别为图书信息录入、图书信息浏览、图书信息查询、图书信息删除与修改、图书的借阅与归还。
设计时应该先写好主函数、定义好全局变量和功能函数,再对五个功能函数进行设计。
在每个功能函数和主函数应中加入控制条件使用户可以随时退出系统,并在用户输入指令错误的时候给予提醒和退出选项。
第二章概要设计
2.1总体设计
2.2数据类型设计(或数据结构设计)
typedefstructdate
{
intyear;
intmonth;
}DATE;
对图书信息采用一个结构体变量,使图书信息的使用及修改更加灵活方便
typedefstructbook{
intbookID;
charbookname[N];//图书名字
charwname[N];//作者
charchuban[N];//出版社
charleibian[N];//类别
intkucun;//库存
floatmoney;//价格
DATEtime;
}BOOK;
2.3接口设计
函数名
函数格式
函数功能
welcome()
void
欢迎界面
gongneng()
void
系统提供的功能选取
luru(BOOKstu[]);
void
图书信息的录入
liulan(BOOKstu[]);
void
图书信息的浏览
chazhao();
void
图书信息的查询
xiugai();
void
图书信息的修改
jianhuan();
void
图书的借出与归还
tuichu();
void
退出
main();
int
主函数(调用分函数)
2.4运行界面设计
欢迎登录界面
菜单界面
退出界面
第三章详细设计
3.1输入模块设计
3.2输出模块设计
3.3查找模块设计
3.4排序模块设计
3.5保存及读取模块设计
第四章测试分析
4.1测试程序执行情况
4.1.1主菜单
4.1.2录入
4.1.3返回选项
4.1.4浏览界面
4.1.4图书的借还
4.2出现的问题和解决的方法
漏洞:
排序完查找直接运行
case1:
for(i=0;i{
for(j=i+1;j{
if(stu[i].bookID>stu[j].bookID)
{
temp=stu[i].bookID;
stu[i].bookID=stu[j].bookID;
stu[j].bookID=temp;
}
}
}
for(i=0;i{
printf("图书信息如下\n");
printf(===========================================\n");
printf("编号:
%06d|图书名:
《%s》|作者名:
%s|出版社:
%s|类别名:
%s|库存:
%d|出版时间:
%d/%d|价格:
%.2f\n",
stu[i].bookID,stu[i].bookname,stu[i].wname,stu[i].chuban,stu[i].leibian,stu[i].kucun,stu[i].time.year,
stu[i].time.year,stu[i].money);
printf(===========================================\n");
}
getchar();
case2:
错误原因:
case2:
前一行未加break;
第五章课程设计总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
在这一周的程序设计练习当中并不是一帆风顺的。
刚开始到指导老师面前听了一大堆,我根本就不知道要做什么,用什么做。
我并没有被眼前的一点小困难所击倒,我相信困难总是有办法解决的。
于是开始的两天我就在图书馆找相关图书。
通过两天的原始知识积累后,我开始尝试着按照自己的想法做了一些小系统。
起初会出现很多问题,不是这儿少了就是那错了。
在这样那样的错误中我明白编程是一件很严谨的事,容不得半点错误,一步走错,全盘皆输!
在出现错误读不懂时我通常是上网搜索错误原因,往往一个问题的解决方法是多种多样的,各自有其精妙之处。
有的解决方法浅显易懂,但是易出现漏洞;有的复杂难懂,但是逻辑紧密,无丝毫破绽。
编程是一门逻辑的游戏,一但了解其游戏规则,便发现乐趣无穷。
有时候自己有很多的想法,但由于自己的水平有限不能很好地实现,每到那时候我就有一种强烈的愿望想要把问题解决,做出自己想的东西。
一但解决了问题,那种快乐非亲身经历者不能感受!
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢。
附录:
程序代码
#include
#include
#include
#include
#defineN100
typedefstructdate//关于时间的结构体
{
intyear;//年份
intmonth;//月份
}DATE;
typedefstructbook//关于图书信息的结构体
{
intbookID;
charbookname[N];//图书名字
charwname[N];//作者
charchuban[N];//出版社
charleibian[N];//类别
intkucun;//库存
floatmoney;//价格
DATEtime;
}BOOK;
voidwelcome();/*函数功能:
欢迎界面*/
voidgongneng();/*函数功能:
系统提供的功能选取*/
voidluru(BOOKstu[]);/*函数功能:
图书信息的录入*/
voidliulan(BOOKstu[]);/*函数功能:
图书信息的浏览*/
voidchazhao();/*函数功能:
图书信息的查询与排序*/
voidxiugai();/*函数功能:
图书信息的修改*/
voidjianhuan();/*函数功能:
图书的借出与归还*/
voidtuichu();/*函数功能:
退出*/
intmain()
{
intn,t=1,i=0;
charZH[]="1",zh[20],MM[]="1",mm[20],temp;
while
(1)
{
welcome();
puts("\n");
puts("请输入选择");
scanf("%d",&n);
system("cls");
switch(n)
{
case0:
system("cls");
tuichu();
break;
case1:
puts("请输入账号:
");
scanf("%s",zh);
puts("请输入密码:
");
do
{
temp=getch();
switch(temp)
{
case8:
if(i>0)
{
printf("\b\b");
i-=1;
}
break;
case13:
mm[i]='\0';
t=0;
break;
default:
mm[i]=temp;
i+=1;
printf("*");
}
}while(t);
printf("\n");
if(!
strcmp(ZH,zh)&&!
strcmp(MM,mm))//比较输入的密码是否和预设密码相同
{
puts("验证通过!
请按Enter键进入!
\n");
getchar();
gongneng();
}
else
{
printf("账号或密码错误请重新输入\n");
getchar();
system("cls");
}
break;
}
}
return0;
}
/*函数功能:
欢迎界面*/
voidwelcome()
{
puts("\n\n\n\n\n\n\n\n\n");
puts("------------------------------------------------------");
puts("**");
puts("**");
puts("**");
puts("*欢迎使用*");
puts("**");
puts("*图书信息管理系统*");
puts("**");
puts("**");
puts("*1-登录系统*");
puts("*0-退出系统*");
puts("------------------------------------------------------");
}
/*函数功能:
系统提供的功能选取*/
voidgongneng()
{
intchoice,y=1;
BOOKstu[N];
while(y)
{
getchar();
system("cls");
printf("===================\n");
printf("图书信息管理系统\n");
printf("===================\n");
printf("***********************************\n");
printf("||请输入选项(0--6)||\n");
printf("************************************************\n");
printf("||1-图书信息录入2-图书信息浏览||\n\n");
printf("||3-查找图书与排序4-修改或删除图书||\n\n");
printf("||5-图书借阅与归还0-退出登录||\n\n");
printf("************************************************\n");
printf("请输入所选择的序号:
");
scanf("%d",&choice);
system("cls");
switch(choice)
{
case1:
//图书信息录入
luru(stu);
getchar();
break;
case2:
//图书信息浏览
liulan(stu);
break;
case3:
//图书信息查询与排序
chazhao();
break;
case4:
//图书信息修改
xiugai();
getchar();
break;
case5:
//图书借出与归还
jianhuan();
break;
case0:
//退出系统
y=0;
break;
default:
printf("请输入0~6任意一个,请按Enter键返回");
getchar();
break;
}
getchar();
}
}
/*函数功能:
图书信息的录入*/
voidluru(BOOKstu[])
{
intn;
inti;
inta;
FILE*fp;
start:
printf("输入要录入的图书数目:
\n");
scanf("%d",&n);
getchar();
system("cls");
for(i=0;i{
printf("请输入编号:
\n");
scanf("%d",&stu[i].bookID);
printf("请输入图书名称:
\n");
scanf("%s",stu[i].bookname);
printf("请输入作者名:
\n");
scanf("%s",stu[i].wname);
printf("请输入出版社名:
\n");
scanf("%s",stu[i].chuban);
printf("请输入类别名:
\n");
scanf("%s",stu[i].leibian);
printf("请输入图书库存:
\n");
scanf("%d",&stu[i].kucun);
printf("请输入出版时间:
\n");
scanf("%d%d",&stu[i].time.year,&stu[i].time.month);
printf("请输入图书价格:
\n");
scanf("%f",&stu[i].money);
getchar();
}
if((fp=fopen("book.txt","a"))==NULL)
{
printf("未能成功打开记录文件book.txt!
\n");
exit(0);
}
fwrite(stu,sizeof(BOOK),n,fp);
fclose(fp);
system("cls");
printf("1.继续录入2.返回主菜单\n");
scanf("%d",&a);
if(a==1)
{
gotostart;
}
elseif(a==2)
{
gongneng();
}
}
/*函数功能:
图书信息的浏览*/
voidliulan(BOOKstu[])
{
FILE*fp;
inti,n;
if((fp=fopen("book.txt","r"))==NULL)
{
printf("未能成功打开记录文件book.txt!
\n");
exit(0);
}
for(i=0;!
feof(fp);i++)
{
fread(&stu[i],sizeof(BOOK),1,fp);
}
fclose(fp);
n=i;
for(i=0;i{
printf("图书信息如下\n");
printf("===========================================\n");
printf("编号%06d|图书名:
《%s》|作者名:
%s|出版社:
%s|类别名:
%s|库存:
%d|出版时间:
%d/%d|价格:
%.2f\n",
stu[i].bookID,stu[i].bookname,stu[i].wname,stu[i].chuban,stu[i].leibian,stu[i].kucun,stu[i].time.year,
stu[i].time.year,stu[i].money);
printf("===========================================\n");
}
}
/*函数功能:
图书信息的查询与排序*/
voidchazhao()
{
BOOKstu[N];
inti,j,n,a,b,k;
inttemp;
charsort[100];
charch;
FILE*fp;
if((fp=fopen("book.txt","r"))==NULL)
{
printf("未能成功打开记录文件book.txt!
\n");
exit(0);
}
for(i=0;!
feof(fp);i++)
{
fread(&stu[i],sizeof(BOOK),1,fp);
}
fclose(fp);
n=i-1;
printf("选择一项功能以继续:
\n");
printf("1.排序2.查找3.返回\n");
scanf("%d",&a);
switch(a)
{
case1:
for(i=0;i{
for(j=i+1;j{
if(stu[i].bookID>stu[j].bookID)
{
temp=stu[i].bookID;
stu[i].bookID=stu[j].bookID;
stu[j].bookID=temp;
}
}
}
for(i=0;i{
printf("图书信息如下\n");
printf("===========================================\n");
printf("编号:
%06d|图书名:
《%s》|作者名:
%s|出版社:
%s|类别名:
%s|库存:
%d|出版时间:
%d/%d|价格:
%.2f\n",
stu[i].bookID,stu[i].bookname,stu[i].wname,stu[i].chuban,stu[i].leibian,stu[i].kucun,stu[i].time.year,stu[i].time.year,stu[i].money);
printf("===========================================\n");
}
getchar();
break;
case2:
chazhao:
printf("1.书名2.作者\n");
printf("请选择查找依据:
\n");
scanf("%d",&b);
switch(b)
{
case1:
k=0;
printf("请输入书名:
");
scanf("%s",sort);
for(i=0;i{
if(0==strcmp(sort,stu[i].bookname))
{
k++;
printf("图书信息如下\n");
printf("=========