资源描述
课程设计任务书
某高校图书管理系统(1)
一、课程设计时间
~10第2学期第1周,累计1周,20课时。
二、课程设计内容
用C语言编写软件完成以下任务:
1 录入图书信息(依据图书馆管理情况自行设定,要含有实用性);
2 借书处理(数量不足三本,不予外借,并显示对应提醒信息);
3 还书处理。
三、课程设计要求
1. 程序质量:
² 落实结构化程序设计思想。
² 用户界面友好,功效明确,操作方便。
² 用户界面中菜单最少应包含“图书信息录入”、“借书处理”、“还书处理”、“退出”4项。
² 代码应合适缩进,并给出必需注释,以增强程序可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书格式和内容参见提供模板。
四、指导老师和学生签字
指导老师:________ 学生署名:________
五、说明书成绩
六、老师评语
目 录
一、需求分析 1
二、程序步骤图 2
三、关键技术实现说明及对应程序段 4
四、课设总结 9
五、参考文件 10
六、源程序 10
一、需求分析
经过对程序设计题目标分析可知,整个程序设计实现大致分为四个模块,每一个模块对应一个函数。她们功效分别是:录入图书函数,借阅图书函数,归还图书函数和查询图书库存函数。这些函数实现严格根据题目标要求。
1. 录入图书函数 关键实现程序最初运行时图书数据录入和其后运行中学图书数据追加功效;
2. 借阅图书函数 根据题目标具体要求实现是学生能够借阅图书馆现存图书功效;
3. 归还图书函数 实现是图书归还并在现有数量上得以保留功效;
4. 查询图书库存函数 实现是图书归还后图书馆现存图书数量进行查询;
除上面介绍功效之外,程序还含有退出功效,能够在程序一次运行当中循环实施全部功效,并依据需要终止程序实施。
在程序当中,将图书统计类型定义为结构体类型。图书全部有编号、名称、作者、现有数量相关信息。
二、程序步骤图
1. 程序总体结构图
真
输入i=1?
假
录入
图书
真
输入i=2?
假
借阅图书
真
输入i=3?
假
归还图书
真
输入i=4?
假
图书查询
输入i=5?
退出
图1程序总体结构图
2. 具体功效框图
(1)录入图书函数luru()
i=0,book[i].num,book[i].name,book[i].n
i<addnum
假 book[i].num<0 真
输出book[i].num值
输出名称.作者.数量
book[i].n++
输出“录入成功”
Return
i++
图2 录入图书信息函数
(2)借阅图书函数jieyue()
i=0,bianhao[10]
i++
当bianhao=book[i].num
真 book[i].n<3 假
输出“不予外借”
Return
book[i].n--
输出“借书成功”
输出图书信息
图3借阅图书函数
(3)归还图书函数guihuan()
i=0,bianhao[10]
i++
当bianhao=book[i].num
输出“还书成功”
book[i].n++
输出图书信息
图4 归还图书函数
(4)查询图书现有库存函数chaxun()
i=0
i<numb
输出图书信息
i++
图5查询图书现有库存函数
三、关键技术实现说明及对应程序段
本程序关键由四个自定义函数和一个主函数组成,其中主函数以菜单形式调用其它函数来实现要求全部功效。在这些函数当中,录入图书信息函数、借阅图书函数、归还图书函数和查询现存图书函数是程序中较为关键部分,下面分别进行说明。
1. 录入图书函数
该函数是录入图书函数,录入图书信息包含录入图书数量,图书编号,图书名称,图书作者,图书现存量。具体程序段以下:
void luru()
{
int i;
printf("请输入要录入图书数量,按回车键确定:");
scanf("%d",&numb);
for(i=0;i<numb;i++)
{
printf("\n请输入书编号:");
scanf("%s",book[i].num);
if(book[i].num<0)return;
printf("\n请输入书名称:");
scanf("%s",book[i].name);
printf("\n请输入书作者:");
scanf("%s",book[i].writer);
printf("\n请输入此书数量:");
scanf("%d",&book[i].n);
printf("录入成功。\n");
};
}
2. 借阅图书函数
输入所要借阅图书编号,因为图书编号唯一。然后查阅书现有库存情况,假如库存少于三本,该书将不予外借,并给提醒,假如库存大于等于三本时,提醒借阅成功。显示图书现有库存量降低一本.具体程序段以下:
void jieshu()
{
int i;
char bianhao[10];
printf("请输入你要借阅书编号\n");
scanf("%s",bianhao);
for(i=0;;i++)
if(strcmp(book[i].num,bianhao)==0)
{
if(book[i].n<3)
{
printf("不外借\n");
return;
}
else
{
printf("借书成功\n");
book[i].n--;
printf("%s %s %s %d\n",book[i].num,book[i].name,book[i].writer,book[i].n);
return;
}
}
}
3. 归还图书函数
输入归还图书编号,假如所输入编号在已借阅图书编号中,显示归还图书成功,并使图书现有库存量增加一本。具体程序段以下:
void huanshu()
{
char bianhao[10];
int i;
printf("请输入你要归还书编号\n");
scanf("%s",bianhao);
for(i=0;;i++)
if(strcmp(book[i].num,bianhao)==0)
{
printf("还书成功\n");
book[i].n++;
printf("%s %s %s %d\n",book[i].num,book[i].name,book[i].writer,book[i].n);
return;
}
}
4.查询图书现有库存信息
关键功效是了解图书现有库存情况。具体程序段以下:
void chaxun()
{
int i;
for(i=0;i<numb;i++)
printf("%s %s %s %d\n",book[i].num,book[i].name,book[i].writer,book[i].n);
}
四、课设总结
经过这次课程设计训练,理论和具体实践相结合,才能使我们所学知识有所用途。经过亲自动手动脑,学到了很多书本上学不到知识,坚定了自己实践决心。计算机关键性也是不容忽略,最关键当属编程了。在编程过程中,碰到问题和困难,在老师指导下,我经过努力,把最终难关突破。细节决定成败,真应了这句话,所以不得有丝毫马虎,才能确保程序正常运行,激发了我发明力。
五、参考文件
1 谭浩强.C程序设计.北京:清华大学出版社,
2 刘成等.C语言程序设计试验指导和习题集.北京:中国铁道出版社,
六、源程序
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
struct book
{
char num[20];
char name[20];
char writer[20];
int n;
};
struct book book[100];
int numb;
void luru()
{
int i;
printf("请输入要录入图书数量,按回车键确定:");
scanf("%d",&numb);
for(i=0;i<numb;i++)
{
printf("\n请输入书编号:");
scanf("%s",book[i].num);
if(book[i].num<0)return;
printf("\n请输入书名称:");
scanf("%s",book[i].name);
printf("\n请输入书作者:");
scanf("%s",book[i].writer);
printf("\n请输入此书数量:");
scanf("%d",&book[i].n);
printf("录入成功。\n");
};
}
void jieshu()
{
int i;
char bianhao[10];
printf("请输入你要借阅书编号\n");
scanf("%s",bianhao);
for(i=0;;i++)
if(strcmp(book[i].num,bianhao)==0)
{
if(book[i].n<3)
{
printf("不外借\n");
return;
}
else
{
printf("借书成功\n");
book[i].n--;
printf("%s %s %s %d\n",book[i].num,book[i].name,book[i].writer,book[i].n);
return;
}
}
}
void huanshu()
{
char bianhao[10];
int i;
printf("请输入你要归还书编号\n");
scanf("%s",bianhao);
for(i=0;;i++)
if(strcmp(book[i].num,bianhao)==0)
{
printf("还书成功\n");
book[i].n++;
printf("%s %s %s %d\n",book[i].num,book[i].name,book[i].writer,book[i].n);
return;
}
}
void chaxun()
{
int i;
for(i=0;i<numb;i++)
printf("%s %s %s %d\n",book[i].num,book[i].name,book[i].writer,book[i].n);
}
void menu()
{
printf(" ************************图书管理系统*************************** \n");
printf(" 制作者:李晶晶 指导老师:王晓岩 \n ");
{
printf(" 1录入图书信息\n 2借阅图书信息\n 3归还图书信息\n 4查询现存图书总数\n 5退出\n");
}
}
void main()
{int n;
while(1)
{
menu();
printf("\n 请输入您要选择操作序号,按回车键确定:");
scanf("%d",&n);
switch(n)
{
case 1: luru();break;
case 2: jieshu();break;
case 3: huanshu();break;
case 4: chaxun();break;
case 5: exit(0);
default: printf("输入错误,请输入列表中存在序号!\n ");
}
}
}
展开阅读全文