华北科技学院
(技能训练类(一)报告)
(2011~2012学年第2学期)
训练地点: 信息楼基础五
指导教师: 杨月江
专业班级: 信管2010B101
学生姓名: 曹冬东201007034114
2012年3月9日
目 录
一、训练项目 2
二、训练目的 2
三、设计分析 2
四、设计方案 2
五、实训详细设计 3
六、使用说明 4
七、运行调试 4
八、训练心得 4
九、参考文献 4
一、训练项目
商店销售管理系统
问题描述:建立一个商店销售管理文件,包括商品的名称,商品的数量,商品的价格。
功能:屏幕上出现一个界面,让售货员输入商品编号或者商品名称,可以进货,进货后商品库存同时增加。顾客买走商品后,售货员输入商品编号或者商品名称,可以生成销售清单,统计本次销售总的价钱,同时库存数量相应减少。完成前面的基本功能后,还可以完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。
分步实施。
1、 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2、建立一个文件,将相关的信息写入文件中并能显示于屏幕上;
3、能按商品编号进货和销售;
4、进一步要求:完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。
要求:1、用C语言及数据结构实现程序设计;
2、利用结构体数组实现信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
技能实训实验报告要求:
1、预习报告:题目、技能实训任务、数据结构、程序的总体设计(算法)、模块划分 。
2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结
二、训练目的
通过本次训练,能够进一步巩固、掌握程序设计基础和数据结构课程的基本知识、基本技能。运用算法分析与程序设计的一般方法进行实际项目的开发。本项目需要具备熟练的数组和线性表知识,具备程序编写、调试的基本能力,具有一定的文字表达和报告撰写能力,具备办公软件使用能力。
三、设计分析
这个酒店管理系统采用了goto语句,指针等方法,基本满足了本次试验的要求。进入酒店管理系统后,我们可以根据提示选择自己想要进行的选项。具体如下:
四、设计方案
(1)建立一个明了的管理菜单。
(2)使操作人员很容易的完成对酒店进货,销售,增加,删除,查看库存。
(3)对要查询的数据要有准确性。
五、详细设计
源程序代码如下:
#include
#include
#define N 1000 //N代表货物的最大种类
struct goods
{
char name[10];//商品名称
int amount;//商品数量
int num;//商品编号
float price;//商品价格
}sp[N],sc[N];
//定义全局变量
int flag=1;
FILE *fp;
int i=0;
int k=0;
int b=0;
chakan()//显示目前的库存
{
int zong=0;
fp=fopen("chaoshi.txt","r");
for(i=1;i<=(k+b);i++)
fread(&sp[i],sizeof(struct goods),1,fp);
fclose(fp);
for(i=1;i<=k;i++)
{
zong=zong+sp[i].num;
}
if(zong!=0)
{
printf(" 目前库存情况为:名称 数量 价格 编号\n");
for(i=1;i<=(k+b);i++)
{
printf(" %s %d %f %d\n",sp[i].name,sp[i].amount,sp[i].price,sp[i].num);
}
}
else printf("\n #####目前库存为#####\n");
}
jinhuo()//进货模块
{
do
{
k++;
i++;
printf(" 请输入商品的名称.数量.价格.标号(>0)例如:a 1 2.5 111\n\t\t\t");
scanf("%s %d %f %d%c",sp[i].name,&sp[i].amount,&sp[i].price,&sp[i].num);
printf(" 是否继续,是(1),否(0)\n\t\t\t");
scanf("%d",&flag);
}while(flag!=0);
fp=fopen("chaoshi.txt","w");
for(i=1;i<=k;i++)
fwrite(&sp[i],sizeof(struct goods),1,fp);
fclose(fp);
chakan();
}
xiaoshou()//销售模块
{
float m[100];
int z=1;
int j[100];
int a[100];
int g=0;
int y=0;
int h=0;
float zong=0;
fp=fopen("chaoshi.txt","r");
for(i=1;i<=k;i++)
fread(&sp[i],sizeof(struct goods),1,fp);
fclose(fp);
do
{
g++;
y++;
loop: printf(" 请输入商品编号和数量,例如:(100 20)\n\t\t\t");
scanf("%d %d",&j[y],&a[y]);
for(z=1;z<=k;z++)
{
if(j[y]==sp[z].num)
{
h++;
sp[z].amount=sp[z].amount-a[y];
m[y]=(float)a[y]*sp[z].price;
sc[y]=sp[z];
}
}
if(h==0)
{
printf(" 输入有误,请重新输入\n\t\t\t");
goto loop;
}
fp=fopen("chaoshi.txt","wt");
for(i=1;i<=k;i++)
fwrite(&sp[i],sizeof(struct goods),1,fp);
fclose(fp);
printf(" 是否继续,是(1),否(0)\n\t\t\t");
scanf("%d",&flag);
}while(flag!=0);
printf("\n ############################################\n");
printf(" 编号 名称 单价 数量 总计\n");
for(y=1;y<=g;y++)
{
printf(" %4d%10s%8.2f%6d%13.2f\n",sc[y].num,sc[y].name,sc[y].price,a[y],m[y]);
zong=zong+m[y];
}
printf(" 您此次一共消费%f 元,欢迎您下次光临\n",zong);
shijian();
}
zengjia()//增加商品数量模块
{
float m;
int z=1;
int j[100],a[100];
int g=0;
int y=0;
int zong=0;
int h=0;
fp=fopen("chaoshi.txt","r");
for(i=1;i<=k;i++)
fread(&sp[i],sizeof(struct goods),1,fp);
fclose(fp);
do
{
g++;
y++;
loop: printf(" 请输入商品编号和数量,例如:(100 20)\n\t\t\t");
scanf("%d %d",&j[y],&a[y]);
for(z=1;z<=k;z++)
{
if(j[y]==sp[z].num)
{
h++;
sp[z].amount=sp[z].amount+a[y];
m=a[y]*sp[z].price;
sc[y]=sp[z];
}
}
if(h==0)
{
printf(" 输入有误,请重新输入\n\t\t\t");
goto loop;
}
fp=fopen("chaoshi.txt","wt");
for(i=1;i<=k;i++)
fwrite(&sp[i],sizeof(struct goods),1,fp);
fclose(fp);
printf(" 是否继续,是(1),否(0)\n\t\t\t");
scanf("%d",&flag);
}while(flag!=0);
chakan();
}
shanchu()//删除商品模块
{
int z;
int j[100],a[100];
int c=0;
int y=0;
int h=0;
do
{
c++;
loop: printf(" 请输入您想删除的商品编号\n\t\t\t");
scanf("%d",&j[y]);
for(z=1;z<=k;z++)
{
h++;
if(j[y]==sp[z].num)
sp[z]=sp[z+1];
}
if(h==0)
{
printf(" 输入有误,请重新输入\n\t\t\t");
goto loop;
}
fp=fopen("chaoshi.txt","wt");
for(i=1;i<=(k-1);i++)
fwrite(&sp[i],sizeof(struct goods),1,fp);
fclose(fp);
printf(" 是否继续,是(1),否(0)\n\t\t\t");
scanf("%d",&flag);
}while(flag!=0);
chakan();
}
shijian()
{
struct tm when;
time_t now;
time(&now);
when=*localtime(&now);
printf(" %s\n",asctime(&when));
}
main()//主函数
{
int choice;
do
{
printf("\n\n\n ********商店管理系统*******\n\n");
printf(" 1.进货\n");
printf(" 2.销售\n");
printf(" 3.增加商品数量\n");
printf(" 4.删除商品\n");
printf(" 5.查看目前库存\n");
printf(" 0.返回主菜单\n");
printf(" 请选择您要进行的操作\n\t\t\t");
scanf("%d",&choice);
switch(choice)
{
case 1:jinhuo();break;
case 2:xiaoshou();break;
case 3:zengjia();break;
case 4:shanchu();break;
case 5:chakan();break;
case 0:break;
default :printf(" 输入有误,请重新输入\n\t\t\t");
}
}while(choice!=0);
}
六、使用说明
例如,表达式求值
本程序在turboc 2.0环境下运行通过。运行后,根据提示输入数据即可。可以输入1,2,3,4,5等编号。结束时按回车。在屏幕上会显示你要输入编号所对应的功能。
七、运行调试
例如,表达式求值
运行实例如下:
测试数据一:
图1 进货界面
测试数据二:
图二:销售系统
测试数据三:
图三:增加商品数量
测试数据四:
图四:查看库存
八、训练心得
通过本次训练,能够进一步巩固、掌握程序设计基础和数据结构课程的基本知识、基本技能。运用算法分析与程序设计的一般方法进行实际项目的开发。本项目需要具备熟练的数组和线性表知识,具备程序编写、调试的基本能力,具有一定的文字表达和报告撰写能力,具备办公软件使用能力。
九、参考文献
[1] 闵敏. 数据结构. 高等教育出版社.2007.7
[2] 严蔚敏. 数据结构—C语言. 清华大学出版社
[3] 杨秀金. 数据结构. 西安电子科技大学出版社
[4] 李春葆. 数据结构习题与解析. 清华大学出版社
[5] 谭浩强. C程序设计. 清华大学出版
教师评语: | |||
成绩 | 评阅教师 | ||
注:教师评定内容 1、实践操作技能。2、训练报告质量。3、训练期间表现 | |||
本文来源:https://www.2haoxitong.net/k/doc/13d508290066f5335a812116.html
文档为doc格式