#include
#include
#include
#include
#include
//~~许心安
#define N 8 //定义商品种类 通过修改N的值来控制商品的种类
void menus();//主菜单函数
void init();//初始化库存
void saleCommodity();//购买商品
void commodityMenu();//商品列表
void repertory();//查看库存情况
void printLog();//打印商品列表
void add();//补货
void GetTime();//打印时间
//订单列表
struct log {
char commodityName[10];// 商品名称
char commodityworks[20];//商品生产厂家
int commodityCount;// 数量
char timeStr[20];//订单时间
};
struct log logs[80];//订单列表
int logCount = 0;//订单数量
//商品列表
struct commodity {
char commodityName[10];//商品名称
char commodityworks[20];//商品生产厂家
float commodityprice;//价格
int commodityCount;//数量
int initialCount;//初始数量
};
struct commodity commodities[N];//商品数组
int main() {
int choice = -1;
while ( 1 ) {
menus();
scanf( "%d", &choice );
switch ( choice ) {
case 1: init();
break;//系统初始化功能
case 2: saleCommodity();
break;//购买商品
case 3: repertory();
break;//查看库存情况
case 4: printLog();
break;//打印商品列表
case 5: add();
break;//补货
case 6: printf( "谢谢使用,再见!n" );
exit( 0 );
break;
default: printf( "您的输入有误,重试!n" );
break;
}
}
}
//主菜单
void menus() {
printf( "*****欢迎使用超市收银系统*****n" );
printf( "***t1商品管理t***n" );
printf( "***t2商品购物车t***n" );
printf( "***t3商品库存显示t***n" );
printf( "***t4商品销售日志t***n" );
printf( "***t5商品补充库存t***n" );
printf( "***t6退出系统t***n" );
printf( "*********************************n" );
printf( "请输入您的选择:" );
}
//初始化库存
void init() {
int i;
printf( "商品初始化中……n" );
printf( "请分别输入商品名称 生产厂家 单价 数量 (共%d种商品)n",N);
for ( i = 0; i < N; i++ ) {
scanf( "%s %s %f %d", commodities[i].commodityName,commodities[i].commodityworks, &commodities[i].commodityprice, &commodities[i].commodityCount );
commodities[i].initialCount = commodities[i].commodityCount;//初始化初始数量
}
}
//售卖商品
void saleCommodity()
{ //打印菜单-交换
char timeStr[20];//用于存放当前时间
int choice , count = 0;
float pay, back;//支付钱数 找零数
float total = 0, temp = 0;//支付找零钱数
while ( 1 ) {
//choice = -1;
count=pay=back=total=back=0;//初始化
commodityMenu();//调用选择产品函数
printf( "请输入您购买的商品序号(输入0退出商品售卖):" );
scanf( "%d", &choice );
if ( choice == 0 ){
return;//输入0返回
}else if( choice < 0 ){
printf( "您的输入有误!请重试!n" );
printf( "请输入您购买的商品序号(输入0退出商品售卖):" );
scanf( "%d", &choice );
if( choice < 0||choice > N) {
printf( "您的输入连续有误,已退出商品售卖!n" ); return;
}
}else if( choice > N ){
printf( "未找到该商品!请重试!n" );
printf( "请输入您购买的商品序号(输入0退出商品售卖):" );
scanf( "%d", &choice );
if( choice < 0||choice > N) printf( "您的输入连续有误,已退出商品售卖!n" ); return;
}
printf( "请输入您购买的数量:" );
scanf( "%d", &count );
//超过库存无法购买
if ( count > commodities[choice - 1].commodityCount ){
printf( "购买数量超过库存,购买失败! " );
system( "pause" );
return;
}
pay = (commodities[choice - 1].commodityprice) * count;//应付数
printf("n");
printf( "应付款:%.2fn", pay);
printf("n");
//显示支付方式
{
printf( "请选择支付方式n" );
printf( "1微信n" );
printf( "2支付宝刷脸n" );
printf( "3支付宝扫码n" );
printf( "4现金n" );
printf( "5刷卡n" );
printf( "*************n" );
printf( "请输入您的支付选择:" );
}
//选择支付方式
int paychoice;
scanf( "%d", &paychoice);
switch(paychoice){
case 1 : printf( "请打开微信扫码支付:n" );break;
case 2 : printf( "请打开支付宝刷脸系统支付:n" );break;
case 3 : printf( "请打开支付宝扫码支付:n" );break;
case 4 : printf( "请支付现金:n" );break;
case 5 : printf( "请刷卡支付:n" );break;
default : printf( "您未选择任何支付,请重试!nn已自动为您退出商品售卖nn" );return;
}
printf( "应付款:%.2f", pay);
printf( " 请付款:" );
scanf( "%f", &temp );
if(temp >= pay){
back = temp - pay;
total = temp;
}else{
printf( "余额不足,支付失败!n");
system( "pause" );
return;
}
printf( "购买成功!找零%.1f元,请取走您的商品。n", back );
//写入商品销售日志
strcpy(logs[logCount].commodityName, commodities[choice - 1].commodityName); //保存商品名称
strcpy(logs[logCount].commodityworks, commodities[choice - 1].commodityworks); //保存商品生产厂家
logs[logCount].commodityCount = count;//保存商品数量
GetTime(timeStr);//获取当前时间
strcpy(logs[logCount].timeStr, timeStr);//保存当前时间
logCount++; //商品销售日志数量+1
//打印小票
printf( "n");
printf( "t 超市发票 tn" );
printf( "t商品名称:%s tn", commodities[choice - 1].commodityName );
printf( "t商品单价:%.1f tn", commodities[choice - 1].commodityprice );
printf( "t商品数量:%d tn", count );
printf( "t应付款额:%.1f tn", pay );
printf( "t实际付款:%.1f tn", total );
printf( "t应找零钱:%.1f tn", back );
printf( "n");
printf( "如果产品存在问题请在七日内进行调换或者退款 n");
printf( "t联系电话12345678900 tn");
GetTime(timeStr);//获取当前时间
strcpy(logs[logCount].timeStr, timeStr);//保存当前时间
printf( " %s n", logs[logCount].timeStr );
printf( "n");
printf( "t 谢谢惠顾! tn");
printf( "t欢迎下次光临 tn");
commodities[choice - 1].commodityCount -= count;
system( "pause" );
}
}
//商品列表
void commodityMenu() {
int i;
printf( "马上进入商品售卖……n" );
printf( "***************************************************************n" );
printf( "**t序号t名称 生产厂家 单价t数量t**n" );
for ( i = 0; i < N; i++ ) {
printf( "**t%dt%-10s%-14s%.1ft%dt**n", i + 1, commodities[i].commodityName,commodities[i].commodityworks, commodities[i].commodityprice, commodities[i].commodityCount );
}
printf( "***************************************************************n" );
}
//查看商品库存
void repertory() {
int i;
printf( "当前库存情况:n" );
printf( "***************************************************************n" );
printf( "**t序号t名称 生产厂家 单价t数量t**n" );
for ( i = 0; i < N; i++ ) {
printf( "**t%dt%-10s%-14s%.1ft%dt**n", i + 1, commodities[i].commodityName, commodities[i].commodityworks,commodities[i].commodityprice, commodities[i].commodityCount );
}
printf( "***************************************************************n" );
}
//打印商品销售日志
void printLog() {
int i;
printf( "n--------------t 产品销售日志 t --------------n" );
printf( "----t序号t名称 生产厂家 数量t购买时间tt----n" );
for ( i = 0; i < logCount; i++ ) {
printf( "----t%dt%-10s%-14s%dt%st----n", i+1, logs[i].commodityName,logs[i].commodityworks, logs[i].commodityCount, logs[i].timeStr );
}
system( "pause" );
}
//商品补充库存
void add() {
int i, num, count;
printf( "*********************************n" );
printf( "**t序号t名称 生产厂家 数量t**n" );
for ( i = 0; i < N; i++ ) {
printf( "**t%dt%-10s%-14s%dt**n", i + 1, commodities[i].commodityName,commodities[i].commodityworks, commodities[i].commodityCount );
}
printf( "请输入需要补货的商品序号:n" );
printf( "*********************************n" );
scanf("%d", &num);
if( num < 1){
printf( "您的输入有误!请重新输入:n" );
scanf("%d", &num);
if( num < 1||num > N){
printf( "您的输入连续有误,已退出商品补充库存!n" ); return;
}
}else if( num > N){
printf( "未找到该商品!请重新输入:n" );
scanf("%d", &num);
if( num < 1||num > N) printf( "您的输入连续有误,已退出商品补充库存!n" ); return;
}
printf( "请输入需要补货的数量:n" );
scanf("%d", &count);
if(count<0){
printf( "您的输入有误!请重新输入:n" );
scanf("%d", &count);
}
commodities[num-1].commodityCount += count;
commodities[num-1].initialCount += count;
printf( "补货成功!n" );
system( "pause" );
}
//获得当前时间
void GetTime(char* timeStr) {
unsigned long long a = 0;
time_t timer;
struct tm *tblock;
time(&timer);
tblock = gmtime(&timer);
a = (tblock->tm_year+1900)*100;
a = (a+tblock->tm_mon+1)*100;
a = (a+tblock->tm_mday)*100;
a = (a+tblock->tm_hour+8)*100;
a = (a+tblock->tm_min)*100;
a = (a+tblock->tm_sec);
sprintf(timeStr, "%d/%02d/%02d %02d:%02d:%02d",
tblock->tm_year+1900, tblock->tm_mon+1, tblock->tm_mday,
tblock->tm_hour+8, tblock->tm_min, tblock->tm_sec);
}
//Hello.欢迎光临 我的世界



