#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include<time.h>//~~许心安
#define N 8 //定义商品种类 通过修改N的值来控制商品的种类 /*
num1 work1 5 100
num2 work2 2 200
num3 work3 1 300
num4 work4 2 500
num5 work5 8 800
num6 work6 10 100
num7 work7 5 400
num8 work8 12 1200*/
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( "应付款:%.2f\n", 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( "您未选择任何支付,请重试!\n\n已自动为您退出商品售卖\n\n" );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 超市发票 \t\n" );
printf( "\t商品名称:%s \t\n", commodities[choice - 1].commodityName );
printf( "\t商品单价:%.1f \t\n", commodities[choice - 1].commodityprice );
printf( "\t商品数量:%d \t\n", count );
printf( "\t应付款额:%.1f \t\n", pay );
printf( "\t实际付款:%.1f \t\n", total );
printf( "\t应找零钱:%.1f \t\n", back );
printf( "\n");
printf( "如果产品存在问题请在七日内进行调换或者退款 \n");
printf( "\t联系电话12345678900 \t\n");
GetTime(timeStr);//获取当前时间
strcpy(logs[logCount].timeStr, timeStr);//保存当前时间
printf( " %s \n", logs[logCount].timeStr );
printf( "\n");
printf( "\t 谢谢惠顾! \t\n");
printf( "\t欢迎下次光临 \t\n");
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%d\t%-10s%-14s%.1f\t%d\t**\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%d\t%-10s%-14s%.1f\t%d\t**\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购买时间\t\t----\n" );
for ( i = 0; i < logCount; i++ ) {
printf( "----\t%d\t%-10s%-14s%d\t%s\t----\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%d\t%-10s%-14s%d\t**\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.欢迎光临 我的世界
Python超市收银系统 超市收银编程代码
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章