200504061027王洪亮
沈 阳 航 空 工 业 学 院
学 号 200504061349
班 级 5406110
姓 名 曹敏伟
指导教师
2007年7月6日
沈阳航空工业学院
课程
任务书 机械与汽车学院 学院 机械设计制造及其自动化 专业 5406110 班级 200504061349 学号
一、课程设计
目:教材信息管理
二、课程设计工作自2007年7月1日起至2007年7月6日止 三、课程设计内容:
(1).教材信息录入(包括:书名,作者,出版社等)
(2)教材查询(包括按书名,作者,出版社等)
(3)信息的保存
(4)教材的买进和卖出
(5)教材缺少的统计
(6)退出
四、课程设计要求:
程序质量:
, 贯彻结构化程序设计思想。
, 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
, 用户界面中的菜单至少应包括“数据输入”、“保存结果”、“退出”3项。
, 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
, 封面
, 课程设计任务书
, 目录
, 需求
(分析题目的要求)
, 程序
图(总体流程图和主要功能模块流程图)
, 核心技术的实现说明及相应程序段
, 个人总结
, 参考资料
, 源程序及适当的注释
指导教师:____________________
学生签名:____________________
目录
一、需求分析 ............................................ 1 二、程序流程图 ........................................ 2 三、核心技术的实现说明及相应程序段 5 四、个人总结 ............................................ 7 五、参考文献 ............................................ 7 六、源程序 ................................................ 9
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:显示菜单函数(main),教材信息的添加数(add),信息保存函数(save),教材信息查找(inquire),教材买卖(sell),教材缺少统计( statistics)。在这些函数当中,每个函数的实现严格按照题目的要求。
1、显示菜单函数 主要实现显示程序设计的总体步骤和功能,还有接下来显示的分步骤用来实现各个函数的具体功能,以便实现其它各自定义函数的作用。
2,.教材信息录入(包括:书名,作者,出版社,数量等)
3,教材查询(包括按书名,作者,出版社等)
4信息的保存
5教材的买进和卖出
6教材缺少的统计
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能。
二、程序流程图
1、程序总体结构图
定义变量 int bi,choice;
请输入你的操作号choice
Y choice=1? N
Choice=2?
、
具
体
功
能
函
数
图1程序总体结构图 2、具体功能函数模块框图 (1)显示菜单函数
定义变量int bi,choice fh asdfasdffsdfasdf
输入菜单选项给变量choice
(
2 返回choice的值
)
输
(2)教材信息录入函数
定义Static bi=0
输入书名
输入作者
输入出版社
输入数量
bi++
(3)、保存信息函数
定义int bi = 0 ; FILE *fp;
打开文件fp = fopen("c:\\book.dat", "wb")
while(books[bi].buy_count > 0)
输出
fprintf(fp, "%s %s %s %d %d\n", books[bi].name, books[bi].author,books[bi].press,
、
具
体
图1开始猜测函数结构图
(4)教材查询
1.
三、核心技术的实现说明及相应程序段
本程序主要由两个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,猜测价格函数是程序中较为核心的部分,下面进行说明。
void guess(int nPrice) /*开始猜测函数*/
{ int MAX=200;int i; /*定义变量*/
int n[200] = {0}; /*定义数组*/
for(i=0;i
#include
#include
#define BOOK_SPECIES 100
typedef struct _Book
{
char name[32];
char author[32];
char press[32];
int buy_count;
int sell_count;
};
struct _Book books[BOOK_SPECIES];
void show_title()
{
printf(" 欢迎进入沈阳航空工业学院教材管理系统\n\n");
printf(" 1.查询\n\n");
printf(" 2.录入\n\n");
printf(" 3.将修改信息保存进磁盘\n\n");
printf(" 4.教材买入和卖出管理\n\n");
printf(" 5.缺书统计\n\n");
printf(" 6.谢谢使用\n\n");
printf("\n 请输入您要选择的操作序号,按回车键确认:");
}
void add_book()
{
static bi=0;
printf("请输入书名,按回车键确定:");
scanf("%s", books[bi].name);
printf("请输入作者名,按回车键确定:");
scanf("%s", books[bi].author);
printf("请输入图书出版社名,按回车键确定:");
scanf("%s", books[bi].press);
printf("请输入买书的数量:");
scanf("%d", &books[bi].buy_count);
printf("以上教材信息已经成功录入.\n");
bi++;
}
void save_book() {
int bi = 0;
FILE *fp;
fp = fopen("c:\\book.dat", "wb");
while(books[bi].buy_count > 0)
{
fprintf(fp, "%s %s %s %d %d\n", books[bi].name, books[bi].author,books[bi].press,
&books[bi].buy_count, &books[bi].sell_count);
bi++;
}
fclose(fp);
}
void inquire_book()
{
int bi,flag=0;
int a;
char x[32];
char y[32];
char z[32];
printf("1.书名 2.作者 3.出版社\n");
scanf("%d",&a);
switch(a)
{
case 1: printf("请输入书名\n");scanf("%s",x);
for(bi=0;bi<100;bi++)
if (strcmp(books[bi].name,x)==0)
{printf("%s %s %s %d %d\n",books[bi].name,books[bi].author,books[bi].press,books[bi].buy_count,books[bi].sell_count);
flag=1;
}
if(flag==0) printf("未查找到符合书目\n");
break;
case 2: printf("请输入作者名\n"); scanf("%s",y);
for(bi=0;bi<100;bi++)
if (strcmp(books[bi].author,y)==0)
{printf("%s %s %s %d %d\n",books[bi].name,books[bi].author,books[bi].p
ress,books[bi].buy_count,books[bi].sell_count);
flag=1;
}
if(flag==0) printf("未查找到符合书目\n");
break;
case 3:printf("请输入出版社名\n");scanf("%s",z);
for(bi=0;bi<100;bi++)
if (strcmp(books[bi].press,z)==0)
{printf("%s %s %s %d %d\n",books[bi].name,books[bi].author,books[bi].p
ress,books[bi].buy_count,books[bi].sell_count);
flag=1;
}
if(flag==0) printf("未查找到符合书目\n");
break;
}
}
void sell_book()
{
int bi,count;
char name[20],author[20],press[20];
printf("请输入书名:");
scanf("%s",name);
printf("请输入作者名:");
scanf("%s",author);
printf("请输入出版社名:");
scanf("%s",press);
printf("请输入数量:");
scanf("%d", &count);
for(bi=0;bi<100;bi++)
if(strcmp(books[bi].name,name)==0&&strcmp(books[bi].author,author)==0
&&strcmp(books[bi].press,press)==0)
if(books[bi].buy_count>0)
{
books[bi].buy_count -= count;
books[bi].sell_count += count;
printf("\BBBBB.\n");
}
else
{
system("cls");
printf("\CCCCC.\n");
}
}
void statistics_book()
{
int bi;
for(bi=0;bi