划艇POS机代码.docx

上传人:b****7 文档编号:10813804 上传时间:2023-02-23 格式:DOCX 页数:102 大小:44.08KB
下载 相关 举报
划艇POS机代码.docx_第1页
第1页 / 共102页
划艇POS机代码.docx_第2页
第2页 / 共102页
划艇POS机代码.docx_第3页
第3页 / 共102页
划艇POS机代码.docx_第4页
第4页 / 共102页
划艇POS机代码.docx_第5页
第5页 / 共102页
点击查看更多>>
下载资源
资源描述

划艇POS机代码.docx

《划艇POS机代码.docx》由会员分享,可在线阅读,更多相关《划艇POS机代码.docx(102页珍藏版)》请在冰豆网上搜索。

划艇POS机代码.docx

划艇POS机代码

本代码是在Linux下实现,纯控制台程序。

环境:

ubuntu10.10linux

作者:

右手兂名指,邮箱:

zyj.211@

make支持:

1.make编译

2.makeCLEAN清除所有数据

本代码实现功能:

1.初次登录

初次登录显示管理员初始密码:

123456,初始化价格:

包括价格和押金。

2.登录

1).管理员登录

2).销售员登录

3.欢迎界面

根据当前时间打印欢迎界面。

4.租用管理

进去后选项:

单人划艇、双人划艇、死人汽艇、八人游艇,选择任意一个打印提示信息:

价格、押金、定员

确认租用输入船只编号、押金即租用成功

5.结算管理

1).结算:

输入船只编号即可结算,打印出找零金额

2).显示未结算游客数据:

船只编号、租用时间、押金

6.价格管理

1).显示价格:

4种类型船只价格和最低押金

2).更改价格(必须要管理员密码)

(1).初始化价格:

按照系统设置初始化价格。

(2).按类型更改价格:

4种划艇类型,选择一种会给出提示信息,根据提示完成更改

7.销售员设置

更改密码

8.管理员设置(销售员登录需管理员密码)

1).更改密码

2).显示销售员信息:

用户名

3).增加销售员:

输入用户名和密码创建成功

4).删除销售员:

输入用户名即可

9.初始化系统

销售员登录显示无权限

管理员登录要需输入管理员密码

初始化内容:

管理员密码初始化、价格初始化、销售员记录清空、历史数据清空

10.统计数据

1).当天统计:

统计当天数据

2).当月统计:

统计当月数据

3).本年统计:

统计本年数据

4).按天统计

(1).区间统计:

输入2个具体日期统计期间数据

(2).自动统计:

输入一个具体日期,自动统计至前一天数据

5).按月统计

(1).区间统计:

输入2个具体月份统计期间数据

(2).自动统计:

输入一个具体月份,自动统计至前一月数据

6).按年统计

(1).区间统计:

输入2个具体年份统计期间数据

(2).自动统计:

输入一个具体年份,自动统计至前一年数据

7).历史统计:

统计历史数据

11.退出

1).管理员密码退出:

任何情况用管理员密码都可以退出

2).销售员密码退出:

当前是销售员直接提示输入密码,当前是管理员需同时输入用户名和密码退出。

目录结构入下图:

(bin目录是运行make时生成的)

主目录makefile:

CC=gcc

SUBDIRS=Admin_Set\

Checkout\

Init_Sys\

main\

Log_In\

Price_Set\

Quit_Sys\

Rent_Choice\

Sales_man_Set\

Stats\

Welcome\

obj

OBJS=Admin_Set.oCheckout.oInit_Sys.omain.oLog_In.o\

Price_Set.oQuit_Sys.oRent_Choice.oSales_man_Set.o\

Stats.oWelcome.o

BIN=rowboat

OBJS_DIR=obj

BIN_DIR=bin

exportCCOBJSBINOBJS_DIRBIN_DIR

all:

CHECK_DIR$(SUBDIRS)

CHECK_DIR:

mkdir-p$(BIN_DIR)

$(SUBDIRS):

ECHO

make-C$@

ECHO:

@echo$(SUBDIRS)

@echobegincompile

CLEAN:

@$(RM)$(OBJS_DIR)/*.o

@rm-rf$(BIN_DIR)

@rm./*.db

Main.c文件:

#include"../head/head.h"

intmain(void)

{

intchoice;

inti;

Log_In();//登录界面

Welcome();//欢迎界面

do

{

printf("\n>>>>>>>>>>>>>>>GO<<<<<<<<<<<<<<<\n");

printf("SYSTEM:

请选择您需要的服务:

\n");

do

{

choice=9;//避免字母弊端后,防止自动选择上一次的操作

printf("SYSTEM:

主选项:

\n");

printf("\t...租用管理:

1...\n");

printf("\t...结算管理:

2...\n");

printf("\t...价格管理:

3...\n");

printf("\t...销售员设置:

4...\n");

printf("\t...管理员设置:

5...\n");

printf("\t...初始化系统:

6...\n");

printf("\t...统计数据:

7...\n");

printf("\t...退出程序:

0...\n");

scanf("%d",&choice);

getchar();//防止输入字母或符号一直循环

}while(choice!

=1&&choice!

=2&&choice!

=3&&choice!

=4&&choice!

=5&&choice!

=6&&choice!

=7&&choice!

=0);

switch(choice)

{

case1:

Rent_Choice();

break;

case2:

Checkout();

break;

case3:

Price_Set();

break;

case4:

Sales_man_Set();

break;

case5:

if(1==permission)//验证当前用户权限

{

Admin_Set();

}else

{

i=Admin_Code_Check();//普通用户验证管理员密码

if(0==i)

{

Admin_Set();

}

}

break;

case6:

if(1==permission)

{

i=Admin_Code_Check();

if(0==i)

{

charc;

getchar();//清除缓冲区回车符

do

{

printf("SYSTEM:

您确定要初始化系统:

(y/n)!

\n");

scanf("%c",&c);

getchar();//清除缓冲区回车符

}while(c!

='y'&&c!

='n'&&c!

='Y'&&c!

='N');

if('y'==c||'Y'==c)

{

Init_Sys();//删除系统产生文件

Init_Set();//调用初始化设置

Price_Init_Set();//价格初始化

}else

{

printf("SYSTEM:

您放弃了初始化系统!

\n");

}

}

}else

{

printf("SYSTEM:

您的权限不足!

\n");

}

break;

case7:

i=Admin_Code_Check();

if(0==i)

{

Stats();

}

break;

case0:

i=Quit_Sys();

if(0==i)

{

exit(0);

}

}

}while

(1);

}

Main目录下makefile:

../$(OBJS_DIR)/main.o:

main.c

$(CC)-c$^-o$@

Admin_Set.c文件:

#include"../head/head.h"

intAdmin_Code_Change()

{

FILE*fp;

charcode_set1[CODE_SIZE];

charcode_set2[CODE_SIZE];

if((fp=fopen("./code.db","wb+"))==NULL)

{

perror("Admin_Code_Changefopencode.db");

exit(-1);

}

do

{

printf("SYSTEM:

请输入新密码:

\n");

scanf("%s",code_set1);

printf("SYSTEM:

请再次输入新密码:

\n");

scanf("%s",code_set2);

if(strcmp(code_set1,code_set2)!

=0)

{

printf("SYSTEM:

两次输入不一致,请确认!

\n");

}else

{

if(fwrite(code_set1,CODE_SIZE,1,fp)!

=1)

{

perror("init_sysfwrite");

return-1;

}

printf("SYSTEM:

管理员密码设置成功!

\n");

fclose(fp);

return0;

}

}while

(1);

}

intSales_man_Add()

{

FILE*fp;

charsales_name1[NAME_SIZE];

charsales_name2[NAME_SIZE];

charcode_set1[CODE_SIZE];

charcode_set2[CODE_SIZE];

if((fp=fopen("./salesman.db","ab+"))==NULL)

{

perror("Salesman_Addfopensalesman.db");

exit(-1);

}

do

{

printf("SYSTEM:

请输入用户名(字母符号形式):

\n");

scanf("%s",sales_name1);

printf("SYSTEM:

请再次输入用户名(字母符号形式):

\n");

scanf("%s",sales_name2);

if(strcmp(sales_name1,sales_name2)==0)

{

break;

}else

{

printf("SYSTEM:

两次输入不一致,请确认!

\n");

}

}while

(1);

rewind(fp);//定位为文件头部

do

{

memset(&sales2,0,sizeof(sales2));

fread(&sales2,sizeof(sales2),1,fp);

if(ferror(fp)!

=0)

{

perror("Sales_man_Addfread");

exit(-1);

}

if(strcmp(sales2.name,sales_name1)==0&&sales2.sales_index==0)

{

printf("SYATEM:

您输入的用户已存在,请确认!

\n");

return-1;

}

}while(!

feof(fp));

do

{

printf("SYSTEM:

请输入密码(少于20位字符或数字):

\n");

scanf("%s",code_set1);

printf("SYSTEM:

请再次输入密码(少于20位字符或数字):

\n");

scanf("%s",code_set2);

if(strcmp(code_set1,code_set2)==0)

{

memset(&sales1,0,sizeof(sales1));

strcpy(sales1.name,sales_name1);

strcpy(sales1.sales_code,code_set1);

sales1.sales_index=0;

if(fwrite(&sales1,sizeof(sales1),1,fp)!

=1)

{

perror("Sales_man_Addfwrite");

return-1;

}

printf("SYSTEM:

增加销售员成功!

\n");

fclose(fp);

return0;

}else

{

printf("SYSTEM:

两次输入不一致,请确认!

\n");

}

}while

(1);

}

intSales_man_Show()

{

FILE*fp;

inti=0;//控制SYSTEM输出

intj=0;//控制分行

if((fp=fopen("./salesman.db","rb"))==NULL)

{

perror("Sales_man_Showfopensalesman.db");

exit(-1);

}

while

(1)

{

memset(&sales2,0,sizeof(sales2));

fread(&sales2,sizeof(sales2),1,fp);

if(feof(fp)!

=0)

{

break;

}

if(ferror(fp)!

=0)

{

perror("Sales_man_Showfread");

exit(-1);

}

if(0==sales2.sales_index)

{

if(0==i)

{

i=1;

printf("SYSTEM:

销售员信息:

");

}

j++;

printf("%d:

%s\t",j,sales2.name);

if(j%4==0)

{

printf("\n");

}

}

}

fclose(fp);

if(0==i)

{

printf("SYSTEM:

不存在销售员用户!

\n");

return-1;

}else

{

printf("\nSYSTEM:

销售员数量:

%d\n",j);

return-1;

}

}

intSales_man_Delet()

{

intfd;

inti;

charsales_name1[NAME_SIZE];

charsales_name2[NAME_SIZE];

if((fd=open("./salesman.db",O_RDWR))==-1)

{

perror("Sales_man_Deletopensalesman.db");

exit(-1);

}

do

{

printf("SYSTEM:

请输入用户名:

\n");

scanf("%s",sales_name1);

printf("SYSTEM:

请再次输入用户名:

\n");

scanf("%s",sales_name2);

if(strcmp(sales_name1,sales_name2)==0)

{

break;

}else

{

printf("SYSTEM:

两次输入不一致,请确认!

\n");

}

}while

(1);

do

{

memset(&sales2,0,sizeof(sales2));

if((i=read(fd,&sales2,sizeof(sales2)))==-1)

{

perror("Sales_man_Deletread");

exit(-1);

}

if(strcmp(sales2.name,sales_name1)==0&&sales2.sales_index==0)

{

sales2.sales_index=1;

lseek(fd,-sizeof(sales2),SEEK_CUR);

if(write(fd,&sales2,sizeof(sales1))==-1)

{

perror("Sales_man_Deletwrite");

exit(-1);

}

printf("SYSTEM:

销售员%s删除成功!

\n",sales2.name);

close(fd);

return0;

}

if(i

{

printf("SYSTEM:

您输入的用户名不存在,请确认!

\n");

return-1;

}

}while

(1);

}

intAdmin_Set()

{

inti;

intchoice;

while

(1)

{

printf("\n>>>>>>>>>>>>>>>GO<<<<<<<<<<<<<<<\n");

do

{

choice=8;

printf("SYSTEM:

设置选项:

\n");

printf("\t...更改管理员密码:

1...\n");

printf("\t...显示销售员信息:

2...\n");

printf("\t...增加销售员:

3...\n");

printf("\t...删除销售员:

4...\n");

printf("\t...退出设置:

0...\n");

scanf("%d",&choice);

getchar();

}while(choice!

=1&&choice!

=2&&choice!

=3&&choice!

=4&&choice!

=0);

switch(choice)

{

case1:

i=Admin_Code_Check();

if(0==i)

{

Admin_Code_Change();

}

break;

case2:

Sales_man_Show();

break;

case3:

Sales_man_Add();

break;

case4:

Sales_man_Delet();

break;

case0:

return0;

}

}

}

Admin_Set目录下makefile:

../$(OBJS_DIR)/Admin_Set.o:

Admin_Set.c

$(CC)-c$^-o$@

Check_Out.c文件:

#include"../head/head.h"

intAccount()

{

intfd,i;

inthour1;

intnum;

time_tp;

structtm*q;

if((fd=open("./backup.db",O_RDWR))==-1)

{

perror("Accountopenbackup.db");

exit(-1);

}

time(&p);

q=localtime(&p);

printf("SYSTEM:

请输入船只编号:

\n");

scanf("%d",&num);

do

{

memset(&visitor1,0,sizeof(visitor1));

if((i=read(fd,&visitor1,sizeof(visitor1)))==-1)

{

perror("Accountreadbackup.db");

exit(-1);

}

if(i

{

printf("SYSTEM:

没有该船只编号记录,请确认!

\n");

return-1;

}

if(num==visitor1.boat_no&&visitor1.index==0)

{

if(q->tm_mday!

=visitor1.day)

{

Set_Null();//防止前一天忘记退出系统,并且有游客未结账的情况

continue;

}

visitor1.index=1;

time(&p);

q=localtime(&p);

hour1=(q->tm_hour-visitor1.hour)*60+q->tm_min-visitor1.min;

if(hour1%30!

=0)

{

hour1=(hour1/30+1)*30;//以每半小时计费

}

visitor1.expense=visitor1.price*hour1/60.0;

printf("SYSTEM:

船只编号:

%d,结算找零:

%.1f\n",visitor1.boat_no,visitor1.deposit-visitor1.expense);

/*-----------------------结算小票打印格式控制------------------------*/

/*printf(">>>>>>>>>>划艇编号:

%d<<<<<<<<<<\n",visitor1.boat_no);

printf("%d类划艇:

每小时%d元,押金%d元!

\n",visitor1.type,visi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1