资源描述
图书借阅管理系统课程设计报告
———————————————————————————————— 作者:
———————————————————————————————— 日期:
11
个人收集整理 勿做商业用途
课 程 设 计
报 告
课程名称:数据结构课程设计
班 级:
学 号:
姓 名:
完成日期: 2011-01-07
沈阳航空航天大学
课程设计任务书
专业名称:计算机应用技术
课程名称:数据结构
设计题目:图书借阅管理系统
起止时间:2010年 12月27日至2011年1月7日
问题描述
对图书馆内图书进行管理:录入图书信息,修改某个图书信息,删除图书信息,对当前图书编号进行查询,对图书的预约借阅。
基本要求
1)实现向书库中增加图书
2)修改图书信息
3)按书号查询图书
4)删除图书信息
较高要求
5)图书的借阅
6)图书的归还
实现提示
图书借阅使用队列实现;
注意:所有功能必须为单个函数,在主函数中实现函数的调用。
学生姓名: 学号:
指导教师: 2011年01 月07 日
图书借阅管理系统
1。概要设计
此程序主要应用于图书管理,有添加、删除、修改和查询四大功能实现,
系统主要由五大模块形成,第一个为主函数main(), 用来调用其他被调函数.第二个模块为addbook()子函数,用来添加新图书信息。第三个模块为delbook()子函数,用来删除图书信息。打四个模块为xiubook()子函数,用来修改已存图书信息.第五个模块为chabook()子函数,用来查询已存图书信息。
模块设计:
(1)。 主函数模块:显示界面,输入所要执行的模块。
(2).addbook子函数模块:显示界面,按照提示输入新图书信息。
(3)。delbook子函数模块:显示界面,按照提示输入编号,进行图书的删除。
(4).xiubook子函数模块:显示界面,按照提示输入编号,进行图书信息的修改。
(5).chabook子函数模块,显示界面,按照提示输入编号,显示所需图书信息.
2.详细设计
此函数共有五大函数,用来进行图书信息的管理。
首先进行选择,调用不同的子函数.
调用addbook子函数,输入新添图书信息,然后可以选择是否继续进行输入,或者退出此函数,返回主函数。
调用delbook子函数,按照提示输入编号,进行图书的删除,然后选择继续删除或者退出此函数,返回主函数。当书库为空时会自动返回此函数,返回主函数.
调用chabook子函数,按照提示输入编号,进行图书信息的查询,然后选择继续查询或者退出返回主函数.当书库为空时,自动退出并返回主函数。
调用xiubook子函数,按照提示输入编号,进行图书信息的修改,然后选择继续修改或者返回主函数.当书库为空时,将自动返回主函数.
此程序流程图如下:
在调用修改和查询子函数,进行修改和查询功能时,要先确认书库是否为空,若为空则需要提示并返回主函数。
例如代码:
if(p==0){printf(”书库为空,返回主菜单!\n”);break;} //察看书库是否为空
修改子函数代码为:
void xiubook(SEQQUEUE *q,int p) //修改子函数
{ int i=2,j,k,y,a=0,b=0;
while(1) //为多次执行做循环
{
if(p==0){printf(”书库为空,返回主菜单!\n”);break;} //察看书库是否为空
printf(”请输入您要修改的书号:\n”);
scanf("%d”,&j);
while(1)
{for(y=0;y<p;y++)
if(q[y].num==j) b=1;
if(b==1) break;
else {printf(”输入的编码不存在,请重新输入!!\n");scanf("%d”,&j);}
}
for(k=0;k<=p;k++)
{if(q[k].num==j) break; } //进行修改
printf("原书名为:%s\n”,q[k]。name);
printf(”原作者为:%s\n”,q[k].wtri);
printf(”请输入新书名:”);
scanf("%s”,&q[k].name);
printf("请输入新作者:");
scanf(”%s”,&q[k]。wtri);
printf("摁0退出,其他数字键继续!\n”);
scanf(”%d”,&i);
if(i==0)break; //返回主函数
}
}
查询子函数代码为:
void chabook(SEQQUEUE *q,int p) //查询子函数
{ int i=2;
int j,k,a=0,y;
while(1)
{
if(p==0){printf(”书库为空,返回主菜单!\n");break;} //察看书库是否为空
printf(”请输入您要查询的书号:\n”);
scanf("%d”,&j);
while(1)
{for(y=0;y〈p;y++)
if(q[y].num==j) a=1;
if(a==1) break;
else {printf("输入的编码不存在,请重新输入!!\n");scanf(”%d”,&j);}
}
for(k=0;k〈p;k++)
{if(q[k].num==j) break; }
printf("您要查询的书名为:%s\n",q[k].name);
printf(”您要查询的作者为:%s\n”,q[k]。wtri);
printf(”摁0退出,其他数字键继续!\n");
scanf(”%d",&i);
if(i==0)break; //返回主函数
}
}
而主函数则需要显示界面和进行选择操作
其程序代码如下:
void main() //主函数
{int i,j=0;
SEQQUEUE q[100];
while(1)
{system("cls”);
printf(”=======================================\n");
printf("========作者:周博 09嵌入二班========\n”);
printf(”== [1].增加图书信息 [2]。删除图书信息 ==\n”);
printf(”== [3]。修改图书信息 [4]。查询图书信息 ==\n");
printf(”==============[0]。退出=================\n”);
printf("请输入执行代码:");
scanf(”%d",&i);
while(i<0||i〉4) {printf("输入错误,请重新输入!!\n”);scanf("%d",&i);}
switch(i) //进行判断 执行哪个子函数
{case 0:break;
case 1:system(”cls");addbook(q,&j);break;
case 2:system(”cls");delbook(q,&j);break;
case 3:system(”cls”);xiubook(q,j);break;
case 4:system("cls");chabook(q,j);break;
}
if(i==0){printf(”谢谢使用!!\n");break;} //退出程序
}
}
主函数最重要的是选择和退出两个地方,在选择时要输入给定的代码,否则会提示输入错误。下面的switch语句也十分重要,要及时清屏。而在调用添加和删除子函数时,所用的形参一定要在j前面加上&,不然无法做到图书书目的增加和减少.
3调试报告
4测试结果
首先进入首页面,选择1 进行图书的添加
5 使用说明
6.总结
在这次课程设计的训练中,我遇到了许多的困难,出现了许多的错误,有的是物理错误有的是逻辑上的错误。但通过老师和同学的帮助,我逐渐改正了错误,一步一步的完善程序。在此过程中指导老师的意见给了我很大的启发,让我更加深入的思考程序。解决程序中出现的逻辑错误,添加了纠错环节是程序变得更完善全面,用户使用起来会更加方便.
在这次的课程设计中,虽然把程序编出来比较困难,但是在编写的过程中时我明白了很多以前不会的知识,比如说如何清屏、怎样设计查询、修改和删除
还有查询、修改、交换时要按数字和字符两种方式进行操作等等还有在该程序中,定义了多个具有独立功能的函数模块.程序设计思路清晰,程序可读性高。实现了结构化的思想.虽然这次程序设计即将结束,但我想这次的课程设计会给我以后的设计程序时带来很大帮助
通过这次学习,让我明白编写程序的涵义它不是我们自己试着玩的东西而是应该提供给别人,让别人能正确运行的。我们设计的应该是可以供他人使用的,所以在设计时要考虑全面要给足提示信息让人能够明白.其次,在这次训练中丰富了我的编程知识,让我能够正确定义及使用数组。熟练的使用文件存储,还有循环嵌套等应用虽然以前也曾用到过但是没能让我真正的使用会,通过这次编程不仅丰富了我的课内知识同时也是我的程序编写更加的熟练、简便.提升了我的整体水平.总体来说,受益匪浅。
成绩:预习报告 分,系统 分,课设报告 分,总分 分,
总评: 。
评语:
批阅教师签字: 年 月 日
展开阅读全文