1、 商品销售管理系统 目录 一、 需求分析......................................2 二、 概要设计......................................2 三、 具体设计......................................4 四、 调试分析......................................14 五、 用户手
2、册.....................................14 六、 测试数据.....................................15 七、 附录.........................................18 —1— 一、需求分析 商品销售管理程序 商品信息:商品编号、商品名称、商品类别(一般电视机、D
3、VD、带DVD电视机,带DVD电视机售价为一般电视机和DVD单价之和80%)、商品进货价格、商品销售价格、商品数量、供给商名称等。 统计每一次销售商品数量和价格,并提供对已售出商品价格、数量进行统计、排序功效,但许可用户退商品。 (要求:1.源文件采取多文件工程结构2.数据存放采取文件形式3.标准C输入输出4.功效完善,合适注释,5.相关文件内容需要自学) 二、 概要设计 (一)按系统分析功效要求将系统划分为以下多个关键功效模块: 1、文件管理 文件打开、关闭:对于刚输入或进行操作后商品信息,在建立新商品库存量后,能够把其保留在一个文件中,并对该文件可进行打
4、开和关闭操作。 2、进出货管理 (1)商品进货: 输入数据后商品信息能自动更新进行添加 (2)商品销售: 输入数据后商品信息能自动更新进行降低 3、商品数据管理 (1)增加/删除商品: 添加或删除某条商品信息 (2)修改商品信息: 对某条商品信息进行修改 4、浏览商品信息管理 (1)查询商品信息:可分别按商品编号、名称、类别或需要进货商品查询 (2)排序商品信息: 可按商品编号、名称、类别分别排排序 (3)浏览商品信息:可浏览输入、查询或排序后数据。 (二)本程序结构 (1)结构体设计 struct goods {
5、 long int num; char name[20]; char sort[20]; long int count; long int price; }goods[200]; (2)各功效函数设计: void input() /*功效1:输入商品信息*/ —2— void sequence() /*功效2:排序商品信息*/ void purchase() /*功效3:进货商品信息*/ void se
6、ll() /*功效4:销售商品信息*/ void edit() /*功效5:添加或删除商品信息*/ void correct() /*功效6:修改商品信息*/ void search() /*功效7:查询商品信息*/ void scan() /*功效8:浏览商品信息*/ void reserve() /*功效9:保留文件*/ void quit() /*退出系统*/ (3) 主函数设计: void main () { void input(); void sequence(); v
7、oid purchase(); void sell(); void edit(); void correct(); void search(); void scan(); void reserve(); lp: for(i=0;i<1;i++) scanf("%d",&k); system("cls"); switch(k) /*用switch语句实现功效选择*/ system("cls"); /*清屏*/ goto lp; /*返回主界面*/ } 三、具体设计 (1)各功效函
8、数:
void input() /*功效1:输入商品信息*/
{
printf("\n 请输入需要建立新库存商品种类数量:");
scanf("%d",&n);
system("cls");
printf("\n …………………………………………………………………………………………………\n");
for(i=0;i 9、tf("\n\t 请输入商品名称:");
—3—
scanf("%s",goods[i].name);
printf("\n\t 请输入商品种类:");
scanf("%s",goods[i].sort);
printf("\n\t 请输入商品数量:");
scanf("%d",&goods[i].count);
printf("\n\t 请输入商品单价:");
scanf("%d",&goods[i].price);
printf("\n ………………………………… 10、………………………………………………………………\n");
}
printf("\tPlease press any key to continue:");
getch();
return; /*返回主界面*/
}
void sequence() /*功效2:排序商品信息*/
{
long temp;
char p1[30],p2[30];
for(k=0;k 11、i].num>goods[i+1].num) /*按编号由小到大排序*/
{
temp=goods[i].num;
goods[i].num=goods[i+1].num;
goods[i+1].num=temp;
strcpy(p1,goods[i].name);
strcpy(goods[i].name,goods[i+1].name);
strcpy(goods[i+1].name,p1);
strcpy(p2,goods[i].sort);
strcpy(goods[i].sort,goods[i 12、1].sort);
strcpy(goods[i+1].sort,p2);
}
printf("--------------------------------------------------------------------------------\n");
printf("\n\t\t按商品编号排序后商品信息\n\n");
printf("\t商品编号 商品名称 商品类别 商品数量 商品单价\n"); /*输出排序后商品信息*/
for(i=0;i 13、tf("\t %5ld %5s %5s %5ld %5ld\n",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
—4—
}
for(k=0;k 14、
strcpy(p1,goods[i].name);
strcpy(goods[i].name,goods[i+1].name);
strcpy(goods[i+1].name,p1);
temp=goods[i].num;
goods[i].num=goods[i+1].num;
goods[i+1].num=temp;
strcpy(p2,goods[i].sort);
strcpy(goods[i].sort,goods[i+1].sort);
strcpy(goods[i+1].sort,p2); 15、
}
printf("--------------------------------------------------------------------------------\n");
printf("\n\t\t按商品名称排序后商品信息\n");
printf("\n\t商品名称 商品编号 商品类别 商品数量 商品单价\n"); /*输出排序后商品信息*/
for(i=0;i 16、 %5ld %5ld\n",goods[i].name,goods[i].num,goods[i].sort,goods[i].count,goods[i].price);
}
for(k=0;k 17、oods[i+1].sort);
strcpy(goods[i+1].sort,p2);
temp=goods[i].num;
goods[i].num=goods[i+1].num;
goods[i+1].num=temp;
strcpy(p1,goods[i].name);
strcpy(goods[i].name,goods[i+1].name);
strcpy(goods[i+1].name,p1);
}
printf("------------------------------------------ 18、
—5—
-------------------");
printf("\n\t\t按商品类别排序后商品信息\n\n");
printf("\t商品类别 商品编号 商品名称 商品数量 商品单价\n"); /*输出排序后商品信息*/
for(i=0;i 19、s[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
}
printf("--------------------------------------------------------------------------------");
printf("please press any key to continue:");
getch();
return; /*返回主界面*/
}
void purchase() /*功效3:进货商品信息*/ 20、
{
long temp; /*定义临时变量表示刚进货商品编号*/
int j;
printf("\n\t\5请输入刚进货商品编号:");
scanf("%ld",&temp);
printf("\n\t\5请输入刚进货商品数量:");
scanf("%d",&j);
printf("\n\n\n\tpress any key to contiue:");
getch();
system("cls");
printf("\n\t输 21、出进货后商品信息:");
for(i=0;i 22、 %ld %4ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
}
printf("\n\n\t\tPress any key to enter menu:");
getch(); /*返回功效选择界面*/
return;
}
—6—
void sell() /*功效4:销售商品信息*/
{
long temp; /*定义临时变量temp表示 23、刚销售商品编号*/
int j;
printf("\n\t\5请输入刚销售商品编号:");
scanf("%ld",&temp);
printf("\n\t\5请输入刚销售商品数量:");
scanf("%d",&j);
for(i=0;i 24、 printf("\n\t售出数量大于商品原有数量,出现错误,请重新输入:");
scanf("%d",&j);
}
goods[i].count=goods[i].count-j; /*完成自动更改商品数量功效*/
}
}
printf("\n\tpress any key to contiue:");
getch();
system("cls"); /*清屏*/
printf("\n\n *销售后商品信息:");
pri 25、ntf("\n\t商品类别 商品编号 商品名称 商品数量 商品单价\n");
for(i=0;i 26、menu:");
getch();
return; /*返回功效选择界面*/
}
void edit() /*功效5:添加或删除商品信息*/
{
void add(); /*申明子函数*/
void dele();
—7—
printf("\n\t请选择:1.添加商品信息; 2.删除商品信息;");
printf("\t*请输入 1或2 继续:");
scanf("%d" 27、k);
switch(k) /*用switch语句实现功效选择*/
{
case 1: add();break;
case 2: dele();break;
}
getch();
return; /*返回主菜单*/
}
void add() /*添加商品信息*/
{ /*定义子函数*/
printf("\t*请输入所添加商品商品编号:");
scanf("%ld",&goods[n].num);
printf("\n\t请输入所添加商品名称:" 28、);
scanf("%s",goods[n].name);
printf("\n\t请输入所添加商品类别:");
scanf("%s",goods[n].sort);
printf("\n\t请输入所添加商品数量:");
scanf("%d",&goods[n].count);
printf("\n\t请输入所添加商品价格:");
scanf("%d",&goods[n].price);
n=n+1;
printf("\n");
}
void dele() /*删除 29、商品信息*/
{ /*定义子函数*/
int temp; /*定义局部变量*/
int j;
for(i=0;i 30、ds[i].count,goods[i].price);
printf("\n");
}
printf("\n");
printf("\n*请输入要删除商品编号:");
scanf("%ld",&temp);
printf("\n\n");
—8—
for(i=0;i 31、num=goods[j+1].num;
strcpy(goods[j].name,goods[j+1].name);
strcpy(goods[j].sort,goods[j+1].sort);
goods[j].count=goods[j+1].count;
goods[j].price=goods[j+1].price;
}
n=n-1; /*商品总库存量降低*/
}
}
for(i=0;i 32、品编号 商品名 商品类别 商品数量 商品价格"); /*输出删除后商品信息*/
printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
printf("\n");
}
printf("Please press any key to continue:");
getch();
r 33、eturn; /*返回主界面*/
}
void correct() /*功效6:修改商品信息*/
{
long temp; /*定义局部变量*/
printf("\n\t请输入要修改商品编号:");
scanf("%ld",&temp); /*输入新商品信息*/
printf("\n");
for(i=0;i 34、tf("\t请输入一个新商品编号:");
scanf("%ld",&goods[i].num);
printf("\n\t请输入新商品名称:");
scanf("%s",goods[i].name);
printf("\n\t请输入新商品类别:");
—9—
scanf("%s",goods[i].sort);
printf("\n\t请输入新商品数量:");
scanf("%d",&goods[i].count);
35、printf("\n\t请输入新商品价格:");
scanf("%d",&goods[i].price);
printf("\n");
}
}
for(i=0;i 36、um,goods[i].sort,goods[i].count,goods[i].price);
printf("\n");
}
printf("Please press any key to continue:"); /*返回功效选择界面*/
getch();
return; /*返回主菜单*/
}
void search() /*功效7:查询商品信息*/
{
int k; /*定义局部变量*/
long temp1;
char temp2[30],temp3[20];
pr 37、intf("\n\t\5按商品编号查询,请按1\t\t\t\5按商品名查询,请按2\n\t\5按商品类别查询,请按3\t\t\t\5查需要进货商品,请按4\n");
printf("\n\n\n\t\t\t请输入数字确定查询方法:");
scanf("%d",&k);
printf("\n");
printf("Press any key to continue:");
getch();
system("cls");
switch(k) /*实现查询方法选择*/
{
case 1:
{ 38、 printf("\n\n\n\n\n\t\t请输入要查询商品编号:"); /*按商品编号查询*/
scanf("%ld",&temp1);
system("cls"); /*清屏*/
for(i=0;i 39、 商品名 商品类别 商品数量 商品价格");
printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
}
}
}break; /*跳出switch语句*/
case 2:
{ printf("\n\n\n\n\n\t\t请输入要查询商品名:"); /*按商品名查 40、询数据*/
scanf("%s",temp2);
system("cls");
for(i=0;i 41、5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
}
}
}break; /*跳出switch语句*/
case 3:
{ printf("\n\n\n\n\n\t\t请输入要查询商品类别:"); /*按商品类别查询数据*/
scanf("%s",temp3);
system("cls");
for(i=0;i 42、
if(strcmp(temp3,goods[i].sort)==0)
{
printf("\n");
printf("\n\t商品编号 商品名 商品类别 商品数量 商品价格");
printf("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i] 43、 — 11 —
.price);
}
}
}break; /*跳出switch语句*/
case 4:
{ int a=50;
for(i=0;i 44、s[i].count);
}
}break; /*跳出switch语句*/
}
printf("\n\n\t\tPress any key to enter menu:");
getch();
return; /*返回主界面*/
}
void scan() /*功效8:浏览商品信息*/
{
printf("\n\t浏览输入商品信息,请按1\n\n\t 45、浏览查询商品信息,请按2\n\n\t浏览排序后商品信息,请按3\n");
printf("请选择:");
scanf("%d",&k);
switch(k)
{
case 1:
{ printf("\t\t\t浏览输入商品信息\n");
printf("\t商品编号 商品名 商品类别 商品数量 商品价格\n");/*输出浏览商品信息*/
for(i=0;i 46、 %5ld %ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
printf("\n");
}
printf("Press any key to enter menu:");
getch();
return;
} break; /*跳出switch语句*/
case 2:
{ printf("\t\t\t浏览查询商品信息\n");
47、 —12—
printf("\t商品编号 商品名 商品类别 商品数量 商品价格\n");/*输出浏览商品信息*/
for(i=0;i 48、
}
printf("\nPress any key to enter menu:");
getch();
return;
} break; /*跳出switch语句*/
case 3:
{ printf("\t\t\t浏览按商品编号排序商品信息\n");
printf("\t商品编号 商品名 商品类别 商品数量 商品价格\n");/*输出浏览商品信息*/
for(i=0;i 49、5ld %5s %5s %5ld %ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);
printf("\n");
}
printf("\nPress any key to enter menu:");
getch();
return; /*返回主界面*/
} break; /*跳出switch语句*/
}
50、 }
void reserve() /*功效9:保留文件*/
{
FILE *fp;
char file[15]; /*用来存放文件保留路径和文件名*/
system("cls"); /*清屏*/
printf("\n\t*请输入文件路径及文件名:");
scanf("%s",file);
fp=fopen("file","w+"); /*创建并打开一个文件,并得到该文件地址*/
fprintf(fp,"商品编号\t商品名 \t商品类别\t商品数量\t商品价格\n");
print






