- 需求分析:
1.设计题目:超市管理系统
2.系统功能需求分析:可增加,删除商品;改变商品进价,售价,数量;列出所有商品.
- 概要设计:
系统总体设计框架:用结构体先包含商品信息,把各个功能做成函数,在使用的时候调用函数
- 详细设计:
主要阐述功能模块的算法设计思路
增加商品:直接打出商品名称、编号、进价、售价、数量;遇到重复编号后提示,并重新输入.
删除商品:先判断是否有商品,然后输入商品名称,再判断是否有这个商品,若有,则把最后一个商品的信息替换这个商品,再把最后一个商品的信息初始化;若无,打出无此商品!!!
改变进价,改变售价:思路一样,先判断是否有这个商品,然后用输入的值替代这个商品的进价或售价
改变数量:先判断是否有这个商品,然后告诉是增加还是减少,输入值,把原数量加上值或减去值
列出所有商品:直接列出结构体的元素.
程序代码
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int sum=0,i;
struct
{
char name[20];
char number[20];
int price;
int sell;
int count;
}message[100];
//增加函数
void add()
{
int flag=0;
printf("商品名:");
scanf("%s",message[sum].name);
printf("\n");
printf("商品编号:");
if(sum==0)
{
scanf("%s",message[sum].number);
}
else if(sum!=0)
{
while(flag==0)
{
scanf("%s",message[sum].number);
flag=1;
for(i=0;i<sum;i++)
{
if(strcmp(message[sum].number,message[i].number)==0)
{
flag=0;
printf("编号重复,请重新输入:");
break;
}
}
}
}
printf("\n");
printf("商品进价:");
scanf("%d",&message[sum].price);
printf("\n");
printf("商品售价:");
scanf("%d",&message[sum].sell);
printf("\n");
printf("商品数量:");
scanf("%d",&message[sum].count);
printf("\n");
sum++;
}
//删除函数
void delete1()
{
char name1[20];
static char b[20];
int sum1;
sum1=sum;
if(sum==0)
{
printf("没有商品,错误\n");
return;
}
printf("请输入商品名称:");
scanf("%s",name1);
for(i=0;i<sum;i++)
{
if(strcmp(name1,message[i].name)==0)
{
strcpy(message[i].name,message[sum-1].name);
strcpy(message[i].number,message[sum-1].number);
message[i].price=message[sum-1].price;
message[i].sell=message[sum-1].sell;
message[i].count=message[sum-1].count;
strcpy(message[sum-1].name,b);
strcpy(message[sum-1].number,b);
message[sum-1].price=0;
message[sum-1].sell=0;
message[sum-1].count=0;
sum--;
break;
}
}
if(i==sum1)
{
printf("无此商品!!\n");
}
}
//列出所有商品
void statistics()
{
for(i=0;i<sum;i++)
{
printf("商品名%s,商品编号%s,商品进价%d,商品售价%d,商品数量%d\n",message[i].name,message[i].number,message[i].price,message[i].sell,message[i].count);
}
}
//商品增加或减少后剩余主函数
void countmessage()
{
int select,m;
char name2[20];
printf("1.增加:\n");
printf("2.删除:\n");
scanf("%d",&select);
printf("商品名:");
scanf("%s",name2);
printf("改变数量");
scanf("%d",&m);
for(i=0;i<sum;i++)
{
if(strcmp(name2,message[i].name)==0)
{
break;
}
}
if(i!=sum)
{
if(select==1)
{
message[i].count=message[i].count+m;
}
else if(select==2)
{
message[i].count=message[i].count-m;
}
}
else
printf("无此商品\n");
}
//改变商品进价
void changeprice()
{
char name3[20];
int m;
printf("请输入商品名称:");
scanf("%s",name3);
for(i=0;i<sum;i++)
{
if(strcmp(name3,message[i].name)==0)
{
break;
}
}
if(i!=sum)
{
printf("现进价为:");
scanf("%d",&m);
message[i].price=m;
}
else
printf("无此商品\n");
}
//改变商品售价(与改变进价一样)
void changesell()
{
char name3[20];
int m;
printf("请输入商品名称:");
scanf("%s",name3);
for(i=0;i<sum;i++)
{
if(strcmp(name3,message[i].name)==0)
{
break;
}
}
if(i!=sum)
{
printf("现售价为:");
scanf("%d",&m);
message[i].sell=m;
}
else
printf("无此商品\n");
}
main()
{
int k;
while(k!=0)
{
printf("1.增加商品\n");
printf("2.删除商品\n");
printf("3.列出所有商品\n");
printf("4.改变商品数量\n");
printf("5.改变商品进价\n");
printf("6.改变商品售价\n");
printf("0.安全退出\n");
scanf("%d",&k);
if(k==1)
{
add();
}
else if(k==2)
{
delete1();
}
else if(k==3)
{
statistics();
}
else if(k==4)
{
countmessage();
}
else if(k==5)
{
changeprice();
}
else if(k==6)
{
changesell();
}
}
}