商品销售系统

#include<stdio.h>  //头文件
#include<string.h> //头文件
#include<stdlib.h> //头文件
#define M 100 //货物种类
#define N 100 //顾客数目
struct goods //单个货物信息格式
{
int number; //产品编号
char name[]; //产品名称
int price1; //进价(或利润)
int price2; //售价
int amount; //数量
};
struct orderlist //订单格式
{
struct goods L[M];
};
struct customer //客户信息内容和格式
{
char name[]; //姓名
char password[]; //服务密码
int count; //订单号
};
struct customer khl[N]; //所有客户信息
struct goods base[M]; //库存信息
struct orderlist odl[*N];//订单表
struct goods lackl[M]; //缺货表
struct goods suml[M+]; //销售报表
int PP=; //订单编号
int QQ=; //客户编号
int goodssum=; //货物总数 int main() //主函数开始!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
int SysUseWay(); //系统使用说明函数声明
int chushihua(); //系统初始化函数声明
int welcome(); //欢迎界面函数声明
int kh(); //客户函数声明
int buyer(); //采购部函数声明
int manager(); //公司经理函数声明
int goodbye(); //欢送函数声明
int n,m=; //变量声明
SysUseWay(); //系统使用说明书
chushihua(); //系统初始化
while(m==) //循环三岔口
{
welcome(); //欢迎界面
scanf("%d",&n);
switch(n) //各奔东西
{
case : ;break;
case : kh(); break; //客户之家
case : buyer(); break; //采购之家
case : manager(); break; //经理之家
default : printf("输入错误!请退出重从新输入");
}
if(n==)
break;
printf(" 继续进入主界面请按 9 退出请按0\n");
scanf("%d",&m);
}
goodbye(); //欢送界面
return ;
} //主函数结束!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! int SysUseWay() //系统使用说明书函数定义
{
FILE *fp;
fp=fopen("D://商品销售系统使用说明书.txt","w");
fprintf(fp," 商品销售系统使用说明书\n");
fprintf(fp," 作者 卢孟江 学号 13091012 西安电子科技大学软件学院130911班 2010年10月6日\n");
fprintf(fp," 本销售系统仅是一个销售部门管理系统的的简单模型,功能少,不太稳定,不太安全。\n");
fprintf(fp," 主要分为三个模块。客户--销售部门--公司经理。\n");
fprintf(fp," 1--客户。客户主要是通过该系统进行订货。进入系统后,需要注册,登陆。系统会自主分配\n");
fprintf(fp,"一个服务编号给客户,由客户自己设定密码。订购之后,可以登录查询自己的订货情况.不足之处\n");
fprintf(fp,"在于该系统是一次性的---关闭系统之后,系统会丢失一切数据。这涉及数据库的知识,恕我现在\n");
fprintf(fp,"无能为力。还有,每一个服务编号只能对应一个订货单,即客户每定一次货就得重新注册一次,否\n");
fprintf(fp,"则就会覆盖以前的数据。\n");
fprintf(fp," 2--采购部门。主管仓库,查看处理缺货,进货。使用该系统前,首先必须由采购部门建立仓\n");
fprintf(fp,"库。填写货物名称,进价,售价,库存数量。货物编号由系统自主按序分配。接下来,采购部门需\n");
fprintf(fp,"要经常查看是否缺货。及时进货。\n");
fprintf(fp," 3--经理只需要抽时间查看一下销售报表。了解每一种货物的销售情况,以及总的销售利润。\n");
fprintf(fp,"\n");
fprintf(fp," 谨以此纪念我碌碌无为的大一。\n");
fclose(fp);
printf("................................................................................\n");
printf("本系统使用说明书详见于您的计算机D盘“商品销售系统使用说明书.txt”文件。欢迎查阅 \n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
return ;
} int welcome() //欢迎界面函数定义
{ printf("................................................................................\n");
printf("\n");
printf(" ~~~~~~~~欢迎使用商品销售系统~~~~~~~~\n");
printf("\n");
printf("..............................................................................\n");
printf(" 公司客户请按 1\n");
printf("\n");
printf("..............................................................................\n");
printf(" 采购人员请按 2\n");
printf("\n");
printf("...............................................................................\n");
printf(" 公司经理请按 3\n");
printf("\n");
printf("................................................................................");
printf(" 退出主界面请按 0\n");
printf("\n");
printf("\n");
printf("................................................................................\n");
return ;
} int chushihua() //初始化函数
{
int i=,j=;
for(i=;i<M;i++)
{
suml[i].number=lackl[i].number=base[i].number=-;
base[i].amount=;
base[i].price1=base[i].price2=;
lackl[i].amount=;
suml[i].price1=;
suml[i].amount=;
}
suml[M].price1=;
for(i=;i<N;i++)
khl[i].count=-;
for(i=;i<*N;i++)
{
for(j=;j<M;j++)
{
odl[i].L[j].number=j;
odl[i].L[j].amount=;
odl[i].L[j].price1=base[j].price1;
odl[i].L[j].price2=base[j].price2;
}
} return ;
} int goodbye() //欢送界面函数定义
{
printf(" ~~~~感谢您使用商品销售系统~~~~\n");
printf(".........................................................................\n");
printf("作者 卢孟江 学号 13091012 软件学院 130911班\n");
printf(".........................................................................\n");
printf("\n");
printf(".........................................................................\n");
printf("由于时间仓促,能力有限,系统不是很完美,如有问题敬请原谅。欢迎垂询15109281415\n");
printf(".........................................................................\n");
return ;
}
int buyer() //采购函数
{
int welcomebuyer(); //欢迎函数
int buildbaser(); //仓库建设
int solvelack(); //查询缺货情况
int chackbase(); //查询仓库情况
int n;
int m=;
while(m==) //循环三岔口
{
welcomebuyer(); //欢迎欢迎
scanf("%d",&n); //各奔东西
switch(n)
{
case : ;break; //退出
case : solvelack();break; //查缺货
case : buildbaser();break; //建设仓库
case : chackbase();break; //检查仓库
default :printf("输入错误!\n");
}
if(n==)
break;
printf(" 继续采购请按 9 否则请按0\n");
scanf("%d",&m);
}
return ;
} int welcomebuyer()
{
printf("................................................................................\n");
printf("\n");
printf(" ~~~~~~~~欢迎来到采购之家~~~~~~~~\n");
printf("\n");
printf("..............................................................................\n");
printf(" 处理缺货 请按 1\n");
printf("\n");
printf("..............................................................................\n");
printf(" 进货 请按 2\n");
printf("\n");
printf("...............................................................................\n");
printf(" 查询当前存货情况 请按 3\n");
printf("\n");
printf("................................................................................");
printf(" 退出采购 请按 0\n");
printf("\n");
printf("\n");
printf("................................................................................\n");
return ;
} int buildbaser() //采购函数--进货函数
{
int i=;
printf(" 若想停止进货,请在货物数量上输入 0\n\n");
for(i=;i<M;i++)
{
printf("\n货物名称:");
scanf("%s",base[i].name);
base[i].number=i;
printf("\n货物数量:");
scanf("%d",&base[i].amount);
if(base[i].amount<=){
base[i].amount=;
break;
}
goodssum+=base[i].amount;
printf("\n货物进价:");
scanf("%d",&base[i].price1);
printf("\n货物售价:");
scanf("%d",&base[i].price2);
}
return ;
} int chackbase() //采购函数---查询当前存货函数
{
int i=;
printf("................................................................................\n");
if(goodssum==)
{
printf(" 仓库没货!!! 请采购部门及时进货!!!\n");
return ;
}
for(i=;i<M;i++)
{
if(base[i].amount>){
printf("................................................................................\n");
printf("货物编号 货物名称 货物数量 进价 售价\n");
printf(" %3d %-20s %6d %6d %6d \n",base[i].number,base[i].name,base[i].amount,base[i].price1,base[i].price2);
printf("................................................................................\n");
}
else
continue;
}
printf("................................................................................\n");
return ;
} int solvelack() //采购函数--处理缺货函数
{
int i=,k=;
int printlack(); //采购函数--处理缺货函数--查看函数声明
int supplement(); //采购函数--处理缺货函数--添货函数声明
printlack(); //查看是否缺货
printf(" 如果需要进货,请按1 ; 否则,请按0 \n");
scanf("%d",&k);
switch(k)
{
case :supplement();break;
case :;break;
default :printf("输入错误!\n");
}
return ;
}
int printlack() //采购函数--处理缺货函数--查看函数定义
{
int i=,count=;
if(goodssum==){
printf(" !!!仓库没货!!!请采购人员及时进货!!!\n");
return ;
}
printf("................................................................................\n");
for(i=;i<M;i++)
{
if(lackl[i].amount==){
count++;
continue;
}
else{
printf("................................................................................\n");
printf("货物编号 货物名称 缺货数量\n");
printf(" %3d %-20s %6d \n",lackl[i].number,base[i].name,lackl[i].amount);
}
}
printf("................................................................................\n");
if(count==M)
printf(" ~~~不缺~~~货物充足~~~\n");
else
printf(" 缺! 缺! 缺!\n");
return ;
}
int supplement() //采购函数--处理缺货函数--添货函数定义
{
int i=,j=;
int printlack();
printlack();
printf(" 若想停止进货,请在货物数量上输入0\n");
while(j>)
{
printf("产品编号\n");
scanf("%d",&i);
while(i>=M){
printf("此货物不存在,请重新输入\n");
scanf("%d",&i);}
base[i].number=i;
printf("产品名称:\n");
scanf("%s",base[i].name);
printf("进货数量:\n");
scanf("%d",&j);
if(j>){
base[i].amount+=j;
goodssum+=j;
}
else
break;
printf("\n货物进价:");
scanf("%d",&base[i].price1);
printf("\n货物售价:");
scanf("%d",&base[i].price2);
}
return ;
} int kh() //客户函数
{ int login(); //客户函数--登陆函数声明
int registe(); //客户函数--注册函数声明
int welcomekh(); //客户函数--欢迎函数声明
int searchkh(int falg); //客户函数--查询订货情况的函数声明
int order(int falg); //客户函数--订货函数声明
int i,k=,flag=;
int n=,m=;
welcomekh(); //欢迎欢迎
while(m==) //登陆?注册循环二岔路
{
printf(" 登陆请按1, 注册请按2, 否则请按 0\n");
scanf("%d",&i);
switch(i)
{
case : ;break;
case : flag=login(); break;
case : registe(); break;
default :printf("输入错误!\n");
}
if(i==)
break;
printf(" 登陆或注册请按 9 否则请按0\n");
scanf("%d",&m);
} while(n==) //订购?查询循环二岔路
{
printf(" 查询请按 1, 订购请按 2, 否则请按 0\n");
scanf("%d",&i);
switch(i)
{
case : ;break;
case : searchkh(flag); break;
case : order(flag); break;
default :printf("输入错误!\n");
}
if(i==)
break;
printf(" 继续查询或订购请按 9 否则请按0\n");
scanf("%d",&n);
}
return ;
} int welcomekh() //客户函数---欢迎函数定义
{ printf("................................................................................\n");
printf("\n");
printf(" ~~~~~~~~欢迎来到客户之家~~~~~~~~\n");
printf("\n");
printf("..............................................................................\n");
return ;
} int login() //客户函数---登陆函数定义
{
int n,count=;
char password[];
printf("-------------------请输入服务编号-----------------------\n");
scanf("%d",&n);
printf("-------------------请输入六位密码-----------------------\n");
scanf("%s",password);
while(strcmp(password,khl[n].password))
{
printf("~~~~~~~~~~~~~~~请重新输入六位密码~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
printf(" 退出登陆,请输入123456\n");
scanf("%s",password);
if(!strcmp(password,""))
break;
}
if(!strcmp(password,""))
return ;
else
return n;
} int registe() //客户函数---注册函数定义
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~您的服务编号是: %d ,请你一定要记牢您! ~~~~~~~~~~~~~~~~~~~~~~~~~\n",QQ);
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~请输入您的用户名:~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
scanf("%s",khl[QQ].name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~请输入六位密码:~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n");
scanf("%s",khl[QQ].password);
QQ++;
return ;
} int searchkh(int flag) //客户函数---查询函数定义
{
int n,i=;
n=flag;
printf("................................................................................\n");
printf(" Hello %s 您的服务编号是: %d\n",khl[n].name,n);
printf("................................................................................\n");
if(khl[n].count!=-){
for(i=;i<M;i++){
if(odl[khl[n].count].L[i].amount==)
i++;
else{
printf("................................................................................\n");
printf("货物编号 货物名称 订货数量 单价\n");
printf(" %3d %-20s %6d %6d\n",base[i].number,base[i].name,odl[khl[n].count].L[i].amount,base[i].price2);
printf("................................................................................\n");
} }
}
else{
printf("\n");
printf("................................................................................\n");
printf(" 您当前没有订货。 \n");
printf("................................................................................\n");
}
printf("................................................................................\n");
return ;
} int order(int flag) //客户函数---订购函数
{
int i=,k=,m=,n=,count=;
printf("\n");
n=flag;
printf("货物编号 货物名称 售价\n");
printf("\n");
for(i=;i<M;i++){
if(base[i].number==-){
count++;
continue;}
else
printf(" %3d %-20s %6d\n",base[i].number,base[i].name,base[i].price2);
}
if(count==M)
{
printf("仓库现在没货,请稍后再来。麻烦您通知采购部门及时补货。。。谢谢。。。\n");
return ;
}
printf("请输入产品编号和数量,若想结束,在订购数量上输入 0 \n");
printf("产品编号\n");
scanf("%d",&k);
while((k>=M)||(base[k].number==-)){
printf("此货物不存在,请重新输入\n");
scanf("%d",&k);}
printf("数量\n");
scanf("%d",&m);
while(m>)
{
if(base[k].amount<m)
{
odl[PP].L[k].amount=base[k].amount;
base[k].amount=;
printf("存货不足,缺 %d 个,先卖给您%d个,剩下的请您稍后重新注册服务编号再预定!同时麻烦您通知采购部门及时补货。。。谢谢。。。\n",odl[PP].L[k].amount-base[k].amount,base[k].amount);
lackl[k].amount+=(m-base[k].amount);
}
else{
odl[PP].L[k].amount=m;
base[k].amount-=m;
}
goodssum-=odl[PP].L[k].amount;
suml[k].price1+=(odl[PP].L[k].amount*(base[k].price2-base[k].price1));
suml[M].price1+=suml[k].price1;
suml[k].amount+=odl[PP].L[k].amount;
printf("产品编号\n");
scanf("%d",&k);
while((k>=M)||(base[k].number==-)){
printf("此货物不存在,请重新输入\n");
scanf("%d",&k);}
printf("订购数量\n");
scanf("%d",&m);
}
khl[n].count=PP;
PP++;
return ;
} int manager() //经理函数定义
{ int i=;
for(i=;i<M;i++)
{
if(suml[i].amount==)
i++;
else{
printf("................................................................................\n");
printf("货物编号 货物名称 该货物利润\n");
printf(" %3d %-20s %6d \n",suml[i].number,base[i].name,suml[i].price1);
printf("................................................................................\n"); } }
printf("\n--------------------总货量为 %d 个-----------------------------\n",goodssum);
printf("\n--------------------总利润为 %d 美元-----------------------------\n",suml[M].price1);
return ;
}

C语言实现商品销售系统的更多相关文章

  1. 服装销售系统数据库课程设计(MVC)

    <数据库课程设计> 名称:Jia服装销售网站 姓名:陈文哲 学号:…… 班级:11软件工程 指导老师:索剑 目录 目录 1 需求分析 3 一:销售部门机构情况 3 二:销售部门的业务活动情 ...

  2. Java生鲜电商平台-生鲜系统中商品订单系统售后系统设计

    Java生鲜电商平台-生鲜系统中商品订单系统售后系统设计(服务订单履约系统) 说明: 电商之下,我们几乎能从电商平台上买到任何我们日常需要的商品,但是对于很多商品来说,用户购买发货后,只是整个交易流程 ...

  3. SSM开发基于Java EE在线图书销售系统

           SSM(Spring+Spring MVC+MyBatis)开发基于Java EE在线图书销售系统  网站成功建立和运行很大部分取决于网站开发前的规划,因此为了在网站建立过程中避免一些不 ...

  4. Struts+Servlet+JDBC网上手机销售系统

    项目描述 Hi,大家好,今天给大家分享一个<网上手机销售系统>.本系统一共分为前台和后台两大模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是 ...

  5. ylbtech-dbs:ylbtech-4,PurpleHouse(房地产楼盘销售系统)

    ylbtech-dbs:ylbtech-4,PurpleHouse(房地产楼盘销售系统) -- =============================================-- Crea ...

  6. C++习题 商品销售

    Description 商店销售某一商品,每天公布统一的折扣(discount).同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠.现已知当天 ...

  7. C语言身份证信息查询系统(修改版)

    很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...

  8. 推文《阿里凑单算法首次公开!基于Graph Embedding的打包购商品挖掘系统解析》笔记

    推文<阿里凑单算法首次公开!基于Graph Embedding的打包购商品挖掘系统解析>笔记 从17年5月份开始接触Graph Embedding,学术论文读了很多,但是一直不清楚这技术是 ...

  9. OSGi 系列(一)之什么是 OSGi :Java 语言的动态模块系统

    OSGi 系列(一)之什么是 OSGi :Java 语言的动态模块系统 OSGi 的核心:模块化.动态.基于 OSGi 就可以模块化的开发 java 应用,模块化的部署 java 应用,还可以动态管理 ...

随机推荐

  1. 马老师 生产环境mysql主从复制、架构优化方案

    Binlog日志(主服务器) => 中继日志(从服务器 运行一遍,保持一致).从服务器是否要二进制日志取决于架构设计.如果二进制保存足够稳定,从性能上来说,从服务器不需要二进制日志.默认情况下, ...

  2. 主流ETL(Extract-Transform-Load)工具选型,Kettle Spoon、Datastage、Powercenter介绍

    参考:三大主流ETL工具选型 ETL工具 Kettle Spoon 开源ETL工具,所以免费,用java开发的. Ascential公司的Datastage(在2005年被IBM收购现在是 IBM 的 ...

  3. Linux vi命令大全

    http://www.cnblogs.com/88999660/articles/1581524.html一.Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少 ...

  4. 介绍一款chrom浏览器插件 DHC是一款使用chrome模拟REST客户端向服务器发送测试数据的谷歌浏览器插件

    先打个小广告哈 公司招java架构师,月薪25K以上,负责电商平台架构工作,工作地点在北京 1号线永安里站 附近,如有意向 请把简历发我邮箱jia6235@163.com 可以内部推荐. DHC是一款 ...

  5. python - multi-mechanize 安装笔记

    1. multi-mechanize 是什么Multi-Mechanize 是一个开源的性能和负载测试框架,它并发运行多个 Python 脚本对网站或者服务生成负载(组合事务).测试输出报告保存为HT ...

  6. Win32:引用头文件

    1.首先,在代码文件头部使用#include来包含任何头文件(扩展名为.h或者.hpp的文件)都不会“产生”额外的函数. 我们可以说,包含一个头文件之后,该头文件内部已经定义的一些变量,宏,函数等等资 ...

  7. struts2 ValueStack详解,页面获取值el表达式、ognl表达式

    http://www.blogjava.net/max/archive/2007/04/28/114417.html 我想用的是el表达式! http://www.cnblogs.com/belief ...

  8. 开发Yii2过滤器并通过behaviors()行为调用(转)

    在Yii2的几乎每个controller中,我们都会看到一个函数behaviors(),通常,我们用这个函数来配置控制器的权限,例如:public function behaviors()    {  ...

  9. Linux数据库:MYSQL启用和查看二进制日志

    在/etc/my.cnf文件中[mysqld]下加上: server-id = 1 (在整个Mysql集群中保证唯一) log-bin = binlog  log-bin-index = binlog ...

  10. (部署)使用kubernetes的deployment进行RollingUpdate

    rolling update,可以使得服务近乎无缝地平滑升级,即在不停止对外服务的前提下完成应用的更新. replication controller与deployment的区别 replicatio ...