(该系统在DEV编译器中不出现问题,在VC6.0中,要注意这样子设置就可以了,在“工程”->“设置”->“C/C++”->“工程选项中”在”/c“之前加上“/Zm1000”)
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
#include <conio.h>//对密码输入保护的一个函数包含
//#include <cctype>//对密码输入保护的一个函数包含
#include<sstream>//调用txt文件时的时间函数包含文件
using namespace std;
#define SIZE 4 //定义银行业务窗口数目,“SIZE”可以自己修改
#define QNKH 269 //查看文档时,通过传值匹配用的
#define QNGLY 656//查看文档时,通过传值匹配用的
#define QNCZY 894//查看文档时,通过传值匹配用的
typedef struct knode{//客户信息结构体定义OK
char id[12];//客户身份证号码 在客户注册之后保存,暂时用2001、2002、2003之类来模拟
char psw[12];//客户密码 在客户注册之后保存
char yw[12];//客户选择的业务(“0”表示默认值,"非现金","现金") 在客户登录之后保存
char numd[12];//存放客户的等待号码 在客户登录之后保存
char numw[12];//客户所在的窗口序号 在客户办理业务时赋值
char czyid[12];//存放受理业务的操作员id,便于系统进行统计分析 在客户办理业务时赋值
char cg[12];//"0"表示默认值,成功/缺到
char enuse[12];//"可用"/“不可用”
struct knode *next;
}KNode,*KList;
typedef struct gnode{//管理员/操作员信息结构体定义 操作员的信息都是由管理员来管理,通过属性来区分OK
string id;//操作员工作ID(想定为1001、1002、1003之类,管理员用0001、0002之类的)
string psw;//操作员密码(限定6位)
string quxian;//权限(“1”表示管理员,“0”表示操作员)
string num;//操作员工作的服务窗口序号(默认为“0”)//这个只有操作员有,每天对操作员信息存档
struct gnode *next;
}GNode, *GList;
struct Wnode{//定义一个业务窗口结构体 //存放该文件的第一行有,两个数,
//第一个表示已经处理了的总数(包括未到的),第二个表示已经排队,但是未到的OK
char kx[12]; //用来判断该窗口是不是空闲,“0”是默认值,也是表示空闲,但是也要当操作员id不是默认值的时候,“1”表示忙碌
char ckczyid[12];//办理业务的操作员ID
char ckid[12];//客户ID
char finally_cznumber[12];//存放该操作员处理了业务的个数,可以按这个处理量来进行一个业务评选的排名
char weidao[12];//已经分派号码,但未进行操作的
}WNode[SIZE+1];//注意,这里的下表是从1开始,0号,存放的是第一行表头信息
typedef struct Qnode{//队列 OK
KNode data;//元素的属性(客户的结构体定义)
struct Qnode *next;
}QNode,*QList;
typedef struct LinkQueue{//队列的指针定义 OK
QList front;//队头指针
QList rear;//队尾指针
}LinkQueue;
//以下区域是所有调用函数的申明
string password(void);//密码输入显示*的保护模式输入函数 OK
string time_title(void);//用于文件存档时的时间操作函数 OK
string time_title2(void);//用于当日业务查看时的title函数调用 OK
void show_time(void);//显示日期函数 OK
bool K_InitList(KList &K);//构造一个空的线性表K OK
int K_ListLength(KList K);//计算链表K的元素个数 OK
bool A_Existadmin(void); //测试administrationtxt文件是不是存在 OK
bool K_Existkhzc(void);//测试当天的客户注册txt文件是不是存在 OK
bool K_Existywsl(void); //测试当天的业务受理txt文件是不是存在 OK
bool Q_Existw(void); //判断当天的窗口信息txt文件是不是存在 OK
bool K_ropenkhzc(void); //打开当天的客户注册txt文件 OK
void K_readzc(KList &K, int &n);//将txt文件中的数据读到K链表到中 OK
void K_readywsl(KList &K, int &n);//将txt文件中的数据读到K链表到中 OK
void K_savezc(KList &K, int n, KNode q);//将K链表中的数据写入到txt文件中去 OK
void K_saveywsl(KList &K, int n, KNode q);//将K链表中的数据写入到txt文件中去 OK
bool G_InitList(GList &G);//构造一个空的线性表G OK
bool Q_InitList(QList &Q);//构造一个空的队列Q OK
bool Q_EnQueue(LinkQueue &Q, KNode e);//入队操作 OK
bool Q_DeQueue(LinkQueue &Q, KNode &e);//出队操作 OK
int Q_Length(LinkQueue Q);//求队列长度 OK
void G_AddTxt(GList &G, int &n);//将administration.txt文件的内容写入管理员链表G中 OK
void G_CinTxt(GList &G, int n, string id, string psw, string quxian, string num);//注释如下面两行 OK
//将链表G中的信息写入到administration.txt文件中
//将administration.txt文件中的信息进行输出
void W_strtoint(Wnode &w, int &czn, int &wein);//将字符串数转换成int型的数,然后返回,用于在窗口中统计个数用的OK
void W_thedays(int year, int &sum, int month);//返回输入的年月当月的天数 OK
//以下区域是界面函数的申明
void main_welcome(void); //副页 OK
void main_interface(void);//主界面 OK
void kh_interface(void);//客户登录界面 OK
void khzc_interface(void);//客户注册界面 OK
void kh_welcome(KNode kh);//客户欢迎界面 OK
void kh_information(KNode kh,char yw);//客户选号信息界面 OK
void kh_seepaidui(KNode kh);//客户查看当前排队情况界面 OK
void gly_interface(void);//管理员登录界面 OK
void gly_control(GNode gly);//管理员管理界面 OK
void gly_ywshow(GNode gly);//查看业务受理情况OK
void gly_ontimeyw(GNode gly);//查看当天实时业务受理情况OK
void gly_seedayyw(GNode gly);//查看某日业务OK
void gly_seemonthyw(GNode gly);//查看某月业务 OK
void gly_seeczy(GNode gly);//查看管理员(或者操作员)详细信息 OK
void gly_addczy(GNode gly); // 添加管理员(或者操作员)信息 OK
void gly_updataczy(GNode gly); //修改管理员(或者操作员)信息OK
void gly_deleteczy(GNode gly); //删除管理员(或者操作员)信息OK
void czy_interface(void);//操作员登录界面 OK
void czy_ywinterface(GNode czy, int wnum);//操作员业务受理窗口界面 OK
void czy_ywshow(GNode czy, int wnum);//操作员业务情况查看界面 OK
void czy_ywshouli(GNode czy, int wnum);//操作员业务受理界面OK
void czy_success(GNode czy, int wnum, KNode e); //操作员成功处理OK
void czy_next(GNode czy, int wnum, KNode e); //操作员继续呼叫下一位OK
void Help_interface(void);//帮助主界面 OK
void Help_kh1(void);//客户帮助文档界面(未登录的) OK
void Help_gly1(void);//管理员帮助文档界面(未登录的)OK
void Help_czy1(void);//操作员帮助文档界面(未登录的)OK
void Help_kh(KNode kh, int n);//客户帮助文档界面 OK
void Help_khtuichu(KNode kh, int n);//客户帮助文档退出中转界面OK
void Help_gly(GNode gly, int n);//管理员帮助文档界面OK
void Help_glytuichu(GNode gly, int n);//管理员帮助文档退出中转界面 OK
void Help_czy(GNode czy, int n, int wnum);//操作员帮助文档界面OK
void Help_czytuichu(GNode czy, int n, int wnum);//操作员帮助文档退出中转界面OK
//以下是main函数,提供各个窗口跳转的函数接口
int main(void){//主函数
char str;
while(1)
{
main_welcome();
cout<<"\n\n\n";
cout<<"\t\t\t是否继续(Y/N):";
cout<<"输入字母'Y'(不区分大小写),界面将调整至主页,其他任意键,将结束系统运行。"<<endl;
cout<<"请输入您想进行的操作:"<<endl;
cout<<"\t\t\t→";
cin>>str;
cout<<"\n\n";
if(str == 'y' || str == 'Y')
continue;
else
return 0;
}
system("pause");
return 0;
}
//以下区域是所有调用函数的具体实现
string password(){ //密码输入显示*的保护模式输入函数 OK
char c;
int i=0;
string pas;
while ((c=getch())!='\r') {
if (c=='\b') { //处理退格键
putch(c);
putch(' ');
putch(c);
if (!pas.empty())
pas=pas.erase(pas.size()-1,1);
}
else if (isprint(c)){//只用可显示字符做密码
putch('*');
pas+=c;
}
}
return pas;
}
string time_title(){//用于文件存档时的时间操作函数 OK
string tr;
time_t timep;
struct tm *p;
time(&timep);
p=gmtime(&timep);
stringstream ss1, ss2, ss3; //
ss1 << 1900+p->tm_year; //将年份的int型转化成string型
ss2 << 1+p->tm_mon; //将月份的int型转化成string型
ss3 << p->tm_mday; //将天数的int型转化成string型
tr = ss1.str() + ss2.str() + ss3.str();
return tr;
}
string time_title2(void){//时间函数2,直接显示年月日的函数,用于文件名操作的 OK
time_t t = time(0);
char tmp[64];
string th;
strftime(tmp, sizeof(tmp), "%Y%m%d",localtime(&t) );
th = tmp;
return tmp;
}
void show_time(void){//仅仅只是显示日期用的函数 OK
time_t timer =time(NULL);
printf("\t\t现在时间:%s\n",ctime(&timer)); //得到日历时间
}
bool K_InitList(KList &K){//构造一个空的线性表L OK
K = new KNode;//分配空间
if (!K) //如果存储分配失败,exit(false);
exit(false);
K->next = NULL;
return true;
}
int K_ListLength(KList K){//计算链表L的元素个数 OK
int i = 0;//计数器初始值为0
KList p = K->next;//p指向第1个结点
while (p){//未到末尾
i++;//计数器+1
p = p->next;//p指向下一个结点
}
return i;//返回链表的长度,也就是L中数据元素的个数
}
bool A_Existadmin(void){ //测试administrationtxt文件是不是存在 OK
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k = "administrator";
sprintf(a,"%s.txt",k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
int n = 1;
char idd[12] = "操作员ID";
char psww[12] = "密码";
char yww[12] ="操作权限";
char enusee[12] = "窗口";
char idd1[12] = "admin";
char psww1[12] = "admin";
char yww1[12] ="1";
char enusee1[12] = "0";
//下面进行创建文件,该文件要包含一个n = 0,以及表头部分
fp=fopen(a,"w+");//用为读写建立一个新的文本文件
fprintf(fp,"%d\n",n); //写入n
fprintf(fp,"%s\t%s\t%s\t%s\n",idd,psww,yww,enusee);//写操作
fprintf(fp,"%s\t%s\t%s\t%s\n",idd1,psww1,yww1,enusee1);//写操作
fclose(fp); //关闭文件
_sleep(2000);//延时2秒,方便您查看提示信息
return false;
}
else{
cout<<"\t\t成功打开"<<a<<"文件"<<endl;
return true;
}
}
bool K_Existkhzc(void){ //测试当天的客户注册txt文件是不是存在 OK
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k = "客户注册";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
int n = 0;
char idd[12] = "客户ID";
char psww[12] = "密码";
char yww[12] ="业务类型";
char enusee[12] = "是否可用";
//下面进行创建文件,该文件要包含一个n = 0,以及表头部分
fp=fopen(a,"w+");//用为读写建立一个新的文本文件
fprintf(fp,"%d\n",n); //写入n
fprintf(fp,"%s\t%s\t%s\t%s\n",idd,psww,yww,enusee);//写操作
fclose(fp); //关闭文件
_sleep(2000);//延时2秒,方便您查看提示信息
return false;
}
else{
cout<<"\t\t成功打开"<<a<<"文件"<<endl;
return true;
}
}
bool K_Existywsl(void){ //测试当天的客户注册txt文件是不是存在 OK
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k = "业务受理";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
int n = 0;
char idd[12] = "客户ID";
char yww[12] ="业务类型";
char nn[12] = "等待号码";
char numm[12] ="窗口";
char czyidd[12] = "操作员ID";
char cgg[12] = "成功办理?";
//下面进行创建文件,该文件要包含一个n = 0,以及表头部分
fp=fopen(a,"w+");//用为读写建立一个新的文本文件
fprintf(fp,"%d\n",n); //写入n
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",idd,yww,nn,numm,czyidd,cgg);//写操作
fclose(fp); //关闭文件
_sleep(2000);//延时2秒,方便您查看提示信息
return false;
}
else{
cout<<"\t\t成功打开"<<a<<"文件"<<endl;
return true;
}
}
bool Q_Existw(void){ //测试当天的窗口信息txt文件是不是存在 OK
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k = "窗口信息";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j, i;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
int size = SIZE;
int sum = 0;
int sumw = 0;
strcpy(WNode[0].ckczyid,"操作员ID");
strcpy(WNode[0].kx,"是否空闲");
strcpy(WNode[0].ckid,"客户ID");
strcpy(WNode[0].finally_cznumber,"完成客户");
strcpy(WNode[0].weidao,"缺到客户");
for (i = 1; i <= SIZE; i++){
strcpy(WNode[i].ckczyid,"0");
strcpy(WNode[i].kx,"0");
strcpy(WNode[i].ckid,"0");
strcpy(WNode[i].finally_cznumber,"0");
strcpy(WNode[i].weidao,"0");
}
//下面进行创建文件,该文件要包含一个n = 0,以及表头部分
fp=fopen(a,"w+");//用为读写建立一个新的文本文件
fprintf(fp,"%d\n",size); //写入size
fprintf(fp,"%d\n",sum); //写入sum
fprintf(fp,"%d\n",sumw); //写入sumw
for (i = 0; i <= SIZE; i++)
fprintf(fp,"%s\t%s\t%s\t%s\t%s\n",WNode[i].ckczyid,WNode[i].kx,WNode[i].ckid,WNode[i].finally_cznumber,WNode[i].weidao);//写操作
fclose(fp); //关闭文件
_sleep(2000);//延时2秒,方便您查看提示信息
return false;
}
else{
cout<<"\t\t成功打开"<<a<<"文件"<<endl;
return true;
}
}
bool K_ropenkhzc(void){ //打开当天的客户注册txt文件 OK
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k = "客户注册";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){puts("error");return false;}
return true;
}
void K_readzc(KList &K, int &n){//将txt文件中的数据读到K链表到中 OK
FILE *fp=NULL; //注意传参数时传的值要正确
char *k = "客户注册";
string tempstring;
char b[10] = {0};
char a[30] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用读写的形式打开文件
if(fp==0){puts("error");exit(0);}
int i;
KList p;
p = K;
fscanf(fp, "%d\n",&n);//读入n
for (i = 1; i <= n+1; i++){
KList qq;
qq = new KNode;
qq->next = p->next;
fscanf(fp,"%s%s%s%s\n",qq->id,qq->psw,qq->yw,qq->enuse); //读入数据
p->next = qq;
p = qq;
}
fclose(fp); //关闭文件
}
void K_readywsl(KList &K, int &n){//将txt文件中的数据读到K链表到中 OK
FILE *fp=NULL; //注意传参数时传的值要正确
char *k = "业务受理";
string tempstring;
char b[10] = {0};
char a[30] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用读写的形式打开文件
if(fp==0){puts("error");exit(0);}
int i;
KList p;
p = K;
fscanf(fp, "%d\n",&n);//读入n
for (i = 1; i <= n+1; i++){
KList qq;
qq = new KNode;
qq->next = p->next;
fscanf(fp,"%s%s%s%s%s%s\n",qq->id,qq->yw,qq->numd,qq->numw,qq->czyid,qq->cg);//读入数据
p->next = qq;
p = qq;
}
fclose(fp); //关闭文件
}
void K_savezc(KList &K, int n, KNode q){//将K链表中的数据写入到txt文件中去 OK
char ch = '\n'; //注意传参数时传的值要正确
char a[30] = {0};
FILE *fp=NULL;
char *k = "客户注册";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"w");//用读写的形式打开文件
if(fp==0){puts("error");exit(0);}
n = n+1;//添加一个人的信息
fprintf(fp,"%d\n",n); //写入n
KList pp;
pp = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = pp;
while (K){
fprintf(fp,"%s\t%s\t%s\t%s\n",K->id,K->psw,K->yw,K->enuse);//写操作
pp = K->next;//进行链表的空间释放
free(K);
K = pp;
}
fprintf(fp,"%s\t%s\t%s\t%s\n",q.id,q.psw,q.yw,q.enuse);//写操作
fclose(fp); //关闭文件
}
void K_saveywsl(KList &K, int n, KNode q){//将K链表中的数据写入到txt文件中去 OK
char ch = '\n'; //注意传参数时传的值要正确
char a[30] = {0};
FILE *fp=NULL;
char *k = "业务受理";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"w");//用读写的形式打开文件
if(fp==0){puts("业务受理error");exit(0);}
n = n+1;//添加一个人的信息
fprintf(fp,"%d\n",n); //写入n
KList pp;
pp = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = pp;
while (K){
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",K->id,K->yw,K->numd,K->numw,K->czyid,K->cg);//写操作
pp = K->next;//进行链表的空间释放
free(K);
K = pp;
}
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",q.id,q.yw,q.numd,q.numw,q.czyid,q.cg);//写操作
fclose(fp); //关闭文件
}
bool G_InitList(GList &G){//构造一个空的线性表G OK
G = new GNode;////分配空间
if (!G)//如果存储分配失败,exit(false);
exit(false);
G->next = NULL;
return true;
}
bool Q_InitList(LinkQueue &Q){//构造一个空的队列Q OK
Q.front = Q.rear = new QNode;
if (!Q.front) {
cout<<"队列初始化失败!"<<endl;
exit(false);
}//储存分配失败
Q.front->next = NULL;
return true;
}
bool Q_EnQueue(LinkQueue &Q, KNode e){//入队操作 OK
QList p = new QNode;
if (!p)
exit(false);
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return true;
}
bool Q_DeQueue(LinkQueue &Q, KNode &e){//出队操作 OK
if (Q.front == Q.rear)//若队列空,则返回false
return false;
QList p;//定义p
p = Q.front->next;//p指向对头元素
e = p->data;//e保存对头元素的值
Q.front->next = p->next;//修改对头指针
if (Q.rear == p)
Q.rear = Q.front;//最后一个元素被删,队尾指针指向头结点
delete p;
return true;
}
int Q_Length(LinkQueue Q){//求队列长度 OK
int i = 0;
QList p = Q.front;
while (Q.rear != p){
i++;
p = p->next;
}
return i;
}
void G_AddTxt(GList &G, int &n){//将administration.txt文件的内容写入管理员链表G中 OK
int i;
GList p;
ifstream cinFile;//定义一个文件操作名//进行读操作
cinFile.open("administrator.txt");//打开文件
if (!cinFile.is_open()){
cout<<"\t\t\t☆☆☆☆打开文件失败!请检修系统☆☆☆☆"<<endl;
}
p = G;
cinFile>>n;
for (i = 1; i <= n+1; i++){//因为有第一行的表格提示信息,所以为“n+1”
GList q;
q = new GNode;
q->next = p->next;
cinFile>>q->id>>q->psw>>q->quxian>>q->num;
p->next = q;
p = q;
}
cinFile.close();
}
void G_CinTxt(GList &G, int n, string id, string psw, string quxian, string num){
//将链表中的信息添加到administration.txt文件中,同时也将新添加的操作员信息写入 OK
//同时也将administration.txt文件中的信息进行输出
system("cls");//清屏操作
system("color ec");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★管理员以及操作员信息表★★★★★★★★★★★"<<endl;
ofstream coutFile;
coutFile.open("administrator.txt"); //打开文件
if (!coutFile.is_open()){
cout<<"\t\t\t☆☆☆☆打开文件失败!请检修系统☆☆☆☆"<<endl;
}
coutFile<<n;
cout<<"共有";
cout<<n<<"位操作员(包括管理员)";
int i;
GList q;
while (G)
{
coutFile<<G->id<<"\t"<<G->psw<<"\t"<<G->quxian<<"\t"<<G->num<<endl;
cout<<G->id;
for (i = 1; i <= 10-G->id.length(); i++)
cout<<' ';
cout<<G->psw;
for (i = 1; i <= 10-G->psw.length(); i++)
cout<<' ';
cout<<G->quxian;
for (i = 1; i <= 10-G->quxian.length(); i++)
cout<<' ';
cout<<G->num<<endl;
q = G->next;//进行链表的空间释放
free(G);
G = q;
}
coutFile<<id<<"\t"<<psw<<"\t"<<quxian<<"\t"<<num<<endl;
cout<<id;
for (i = 1; i <= 10-id.length(); i++)
cout<<' ';
cout<<psw;
for (i = 1; i <= 10-psw.length(); i++)
cout<<' ';
cout<<quxian;
for (i = 1; i <= 10-quxian.length(); i++)
cout<<' ';
cout<<num<<endl;
coutFile.close();//关闭文件
}
void W_thedays(int year, int &sum, int month){//返回输入的年月当月的天数
int leap;
switch (month)
{
case 1: sum = 31;break;
case 2: sum = 28;break;
case 3: sum = 31;break;
case 4: sum = 30;break;
case 5: sum = 31;break;
case 6: sum = 30;break;
case 7: sum = 31;break;
case 8: sum = 31;break;
case 9: sum = 30;break;
case 10: sum = 31;break;
case 11: sum = 30;break;
case 12: sum = 31;break;
default : printf("date error");break;
}
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
leap = 1;
else
leap = 0;
if(leap == 1 && month == 2)
sum++;
}
//以下区域是界面函数的具体实现
void main_welcome(void){//副页 OK
system("cls");
system("color ec");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"★ 数据结构课程设计 ★\n";
cout<<"★ ★\n";
cout<<"★ ★\n";
cout<<"★ 课题:银行排队系统的设计与实现 ★\n";
cout<<"★ ★\n";
cout<<"★ 制作者:计算机工程系11级2班 石雄伟 ★\n";
cout<<"★ ★\n";
cout<<"★ 指导老师:黄隆华 ★\n";
cout<<"★ ★\n";
cout<<"★ 完成时间:2013年06月 ★\n";
cout<<"★ ★\n";
cout<<"★ ★\n";
cout<<"★ ★\n";
cout<<"★ ★\n";
cout<<"★ ★\n";
cout<<"★ 正在配置系统文件,即将为您跳转至主界面 ★\n";
cout<<"★ ★\n";
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
K_Existkhzc();//如果不存在,就自动创建
Q_Existw();
K_Existywsl();
A_Existadmin();
_sleep(2000);
main_interface();
}
void main_interface(void){//主界面 OK
char xuhao; //业务序号
system("cls");//清屏操作
system("color ec");//设置控制台前景色和背景色
cout<<"★★★★★★★★★★★★★★★中国农业银行主页★★★★★★★★★★★★★★★"<<endl;
cout<<"\n";
cout<< "\t\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n\n";
cout<<"\t\t\t1、客户登录" <<endl;
cout<<"\t\t\t2、客户注册"<<endl;
cout<<"\t\t\t3、管理员登陆"<<endl;
cout<<"\t\t\t4、操作员登陆"<<endl;
cout<<"\t\t\t5、帮助"<<endl;
cout<<"\n\n\n\n";
show_time();//调用时间函数,显示此时的时间
cout<< "\t\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n";
cout<<"★★★★★★★★★★★★★★★中国农业银行主页★★★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;//输入要选择功能对应的序号
switch(xuhao){//OK
case '1': kh_interface(); break;
case '2': khzc_interface(); break;
case '3': gly_interface(); break;
case '4': czy_interface(); break;
case '5': Help_interface(); break;
default: cout<<"您输入的有误,请从新输入!";
_sleep(1000); //延时1秒
main_interface(); //重新调用主界面函数
break;
}
}
void kh_interface(){//客户登录界面 OK
char ch;
string id;//客户身份证ID
string psw;//客户密码
system("cls");//清屏操作
system("color ec");//设置控制台前景色和背景色
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆客户登录界面◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"\n";
cout<<"\t\t\t中国农业银行排队系统"<<endl;
cout<<"\t";
show_time();//调用时间函数,显示此时的时间
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"\t★ ★\n";
cout<<"\t★ 温馨提示: ★\n";
cout<<"\t★ 您即将进行登录操作,您确定要继续进行么? ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ Y、继续 ★\n";
cout<<"\t★ N、返回 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n";
cout<<"\t\t\t请输入您的选择(Y/N):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
if(ch == 'y' || ch == 'Y')
;
else
main_interface();
cout<<"\t\t\t请进行客户登录操作"<<endl;
cout<<"\t\t\t请输入您注册的身份证ID:"<<endl;
cout<<"\t\t\t→";
cin>>id;
//cout<<endl;
cout<<"\t\t\t请输入您的密码(6位):"<<endl;
cout<<"\t\t\t→";
psw = password();
cout<<endl;
//下面先判断是不是存在当天的客户注册txt文件,如果不存在就自动创建一个含有表头内容的文件,然后提示客户进行注册
if (!K_Existkhzc()){//如果打开文件,跳转到客户注册界面
khzc_interface();
}
else{//在下面进行身份id和密码的匹配
FILE *fp=NULL;
char *k = "客户注册";
string tempstring;
char b[10] = {0};
char a[30] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//为输入打开一个文本文件
if(fp==0){
cout<<"\t\t\t☆☆打开文件失败!,请检修系统☆☆"<<endl;
exit(0);
}
int i;
KNode qq;
int n;
fscanf(fp, "%d\n",&n);//读n
for (i = 1; i <= n+1; i++){
fscanf(fp,"%s%s%s%s\n",qq.id,qq.psw,qq.yw,qq.enuse);//读数
if (qq.id == id && qq.psw == psw && (strcmp(qq.enuse,"可用") == 0)){ //成功之后跳转至“客户欢迎界面”OK
cout<<endl;
cout<<"\t\t\t登录成功!"<<endl;
fclose(fp); //关闭文件
_sleep(2000); //延时1秒
kh_welcome(qq);//跳转至操作员业务受理窗口界面 OK
break;
}
}
if (i > n+1){//失败之后,重新加载次页面,重新登录输入操作 OK
cout<<"\t\t\t登录失败!"<<endl;
cout<<"\t\t您输入的密码或用户ID错误,请重新登录!"<<endl;
_sleep(1000); //延时1秒
kh_interface();//操作员登录界面 OK
}
}
}
void khzc_interface(){//客户注册界面 OK
char ch;
//下面检查,是否存在当天的“客户注册txt文件”
if (K_Existkhzc()){;}
char id[12] = {0};//客户身份证ID
string psw1, psw2;//客户密码
system("cls");//清屏操作
system("color ec");//设置控制台前景色和背景色
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆客户注册界面◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"\n";
cout<<"\t\t\t中国农业银行排队系统"<<endl;
cout<<"\t";
show_time();//调用时间函数,显示此时的时间
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"\t★ ★\n";
cout<<"\t★ 温馨提示: ★\n";
cout<<"\t★ 您即将进行注册操作,您确定要继续进行么? ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ Y、继续 ★\n";
cout<<"\t★ N、返回 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n";
cout<<"\t\t\t请输入您的选择(Y/N):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
if(ch == 'y' || ch == 'Y')
;
else
main_interface();
cout<<"\t\t\t请输入您的身份证ID:"<<endl;
cout<<"\t\t\t→";
cin>>id;
//下面判断是否已经注册但还没有登录选号的,如果已经注册了,就显示该ID的注册信息
KNode tempk;
int tempn;
char a[30] = {0};
FILE *fp=NULL;
char *k = "客户注册";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用读的形式打开文件,不存在,则打开失败!
if(fp==0){puts("error");exit(0);}
fscanf(fp,"%d\n",&tempn);
for (int i = 1; i <= tempn+1; i++){
fscanf(fp,"%s%s%s%s\n",tempk.id,tempk.psw,tempk.yw,tempk.enuse);
if ((strcmp(id,tempk.id)) == 0 && (strcmp(tempk.enuse,"可用")) == 0){
fclose(fp);
cout<<"\t\t您上次已经注册成功了,请用上次的注册信息进行登录。"<<endl;
cout<<"\t\t您上次的注册信息如下\n"<<endl;
cout<<"\t\t"<<"客户ID "<<"密码 "<<"业务类型 "<<"是否可用"<<endl;
cout<<"\t\t"<<tempk.id<<'\t'<<tempk.psw<<'\t'<<tempk.yw<<'\t'<<tempk.enuse<<endl;
cout<<"\n\n\t\t请记住您的ID和密码,5秒钟之后,为您跳转至“客户登录界面”";
_sleep(5500);
kh_interface();
}
}
//继续进行注册操作的密码输入
cout<<"\t\t\t请输入密码(6位):"<<endl;
cout<<"\t\t\t→";
psw1 = password();
cout<<endl;
cout<<"\t\t\t请再次输入密码(6位):"<<endl;
cout<<"\t\t\t→";
psw2 = password();
cout<<endl;
//下面匹配两次输入的密码是否相容
if (psw1 == psw2){//将客户注册信息插入到链表以及写入到TXT文档中 000000000
KList K;
KNode q;
int n;
K_InitList(K);//初始化K链表
K_readzc(K,n);//将类似”20130605客户.txt“中的内容读入到K链表中,n存放的是客户注册的总个数
//下面设其他数据项的默认值
sprintf(q.id,"%s",id);
sprintf(q.yw,"%s","0");
sprintf(q.enuse,"%s","可用");
//下面将字符串这样子转换字符数组
int tempi;
for (tempi = 0; tempi < psw1.length(); tempi++)
q.psw[tempi] = psw1[tempi];
q.psw[tempi] = '\0'; //加上字符数组的结束符,不然会读取内存出错
K_savezc(K,n,q);
cout<<"\t\t\t☆☆☆☆注册成功!☆☆☆☆\n";//提示注册成功,
cout<<"\t\t\t今天已经有"<<n<<"位完成了客户注册。"<<endl;
cout<<"\t\t\t您是第"<<n+1<<"位注册客户!"<<endl;
cout<<"\t\t3秒钟之后将自动跳转到客户登录界面";
_sleep(3000); //延时1秒
kh_interface();
}
else {
cout<<"您两次输入密码的不同,请重新注册!";
_sleep(1500); //延时1秒
khzc_interface(); //重新调用客户注册界面
}
}
void kh_welcome(KNode kh){//客户欢迎界面 0
KNode khh = kh;
char xuhao;//对应业务选项的序号
system("cls");//清屏操作
system("color ec");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※※客户欢迎界面※※※※※※※※※※※※※※※※※"<<endl;
cout<<"\n";
cout<< "\t\t\t欢迎登录中国农业银行排队系统"<<endl;
cout<<"\n\n\n";
cout<<"\t\t\t1、现金业务办理" <<endl;
cout<<"\t\t\t2、非现金业务办理"<<endl;
cout<<"\t\t\t3、查看当前排队情况"<<endl;
cout<<"\t\t\t4、查看客户帮助文档"<<endl;
cout<<"\t\t\t5、返回上一界面"<<endl;
cout<<"\t\t\t6、退出"<<endl;
cout<<"\n\n\n\n";
show_time();//调用时间函数,显示此时的时间
cout<< "\t\t\t欢迎登录中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※※客户欢迎界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': kh_information(khh, xuhao); break;
case '2': kh_information(khh, xuhao); break;
case '3': kh_seepaidui(khh); break;
case '4': Help_kh(khh, QNKH); break;
case '5': kh_interface(); break;
case '6': main_interface(); break;
default : cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
kh_welcome(khh); //重新调用客户欢迎界面
break;
}
}
void kh_information(KNode kh,char yw){//客户选号信息界面 OK
KNode khh = kh;
char leixin[12] = {0};
char yww[12] = {0};
char ch = yw;
switch (ch){
case '1': strcpy(leixin,"现金"); strcpy(yww,"现金"); break;
case '2': strcpy(leixin,"非现金"); strcpy(yww,"非现金"); break;
}
if (strcmp("0",khh.yw) == 0){//说明,还没有进行序号分配,然后对客户注册表中的yw进行改写,并将类容写到“业务受理”中
//将客户注册txt中的yw进行改写OK
FILE *fp=NULL;
char *k = "客户注册";
string tempstring;
char b[10] = {0};
char a[30] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//为输入打开一个文本文件
if(fp==0){
cout<<"\t\t\t☆☆打开文件失败!,请检修系统☆☆"<<endl;
exit(0);
}
int i;
KList qq, p, K;
K_InitList(K);
p = K;
int n;
fscanf(fp, "%d\n",&n);//读n
for (i = 1; i <= n+1; i++){
qq = new KNode;
qq->next = p->next;
fscanf(fp,"%s%s%s%s\n",qq->id,qq->psw,qq->yw,qq->enuse);//读数据
if (strcmp(khh.id,qq->id) == 0){
strcpy(qq->yw,leixin);//将客户注册txt中的类容读出来,进行修改
}
p->next = qq;
p = qq;
}
fclose(fp); //关闭文件
//将K链表中的内容写入到txt文本中OK
fp=fopen(a,"w");//为写入打开一个文本文件,不增加个数的函数调用
if(fp==0){
cout<<"\t\t\t☆☆打开文件失败!,请检修系统☆☆"<<endl;
exit(0);
}
fprintf(fp, "%d\n",n);//写入n
qq = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = qq;
while (K){
fprintf(fp,"%s\t%s\t%s\t%s\n",K->id,K->psw,K->yw,K->enuse);//写操作
qq = K->next;//进行链表的空间释放
free(K);
K = qq;
}
fclose(fp); //关闭文件
//将类容写到“业务受理”中OK
KList K1;
K_InitList(K1);
if (K_Existywsl()){;}//判断是否存在该文件,不存在,就创建一个
K_readywsl(K1, n);//将txt文件中的数据读到K1链表到中
//下面对新添加的元素,进行一个赋值
KNode q1;
strcpy(q1.id,khh.id);
strcpy(q1.yw,yww);
strcpy(khh.yw,yww);//将传递用的KNode值改变,不然可以一直选业务类型
stringstream ss1; //字符串流的定义
string tr;
ss1 << n+1; //将排队的序号的int型转化成string型
tr = ss1.str();
int tt, kk;
tt = tr.length();
for (kk = 0; kk < tt; kk++)
q1.numd[kk] = tr[kk];
q1.numd[kk] = '\0';
strcpy(q1.numw,"0");
strcpy(q1.czyid,"0");
strcpy(q1.cg,"0");
K_saveywsl(K1, n, q1);//在函数里面增加一个
system("cls");//清屏操作
system("color ec");//设置控制台前景色和背景色 红色
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆分配等待号码页面◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"\n";
cout<<"\t\t\t中国农业银行排队系统"<<endl;
cout<<"\t\t温馨提示:"<<endl;//
cout<<"\t\t\t您已经成功选号!"<<endl;
cout<<"\t\t\t您选择的是“"<<yww<<"”业务类型"<<endl;
cout<<"\t\t\t您的排队号码为:"<<n+1<<"号"<<endl;
cout<<"\t\t\t请耐心等候,祝你生活愉快!"<<endl;
cout<<"\n\n";
cout<<"\t\t请继续选择您的操作:"<<endl;
cout<<"\t\t\t1、返回上一页"<<endl;
cout<<"\t\t\t2、退出"<<endl;
show_time();//调用时间函数,显示此时的时间
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆分配等待号码页面◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
char xuhao;
cin>>xuhao;
switch(xuhao){
case '1': kh_welcome(khh); break;
case '2': main_interface(); break;
default : main_interface(); break;
}
}
else{//已经选了号的,如果再登录,则直接跳转到“客户查看当前排队情况界面”
kh_seepaidui(khh);//直接跳转到“客户查看当前排队情况界面”
}
}
void kh_seepaidui(KNode kh){//客户查看当前排队情况界面 0000000000000
int n;
KNode khh;
FILE *fp=NULL; //注意传参数时传的值要正确
char *k = "业务受理";
string tempstring;
char b[10] = {0};
char a[30] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用读写的形式打开文件
if(fp==0){puts("error");exit(0);}
fscanf(fp,"%d\n",&n);//读入n就可以了
int tempsumd = 0;//当前排队的人数
for (int i = 1; i <= n+1; i++){
fscanf(fp,"%s%s%s%s%s%s\n",khh.id,khh.yw,khh.numd,khh.numw,khh.czyid,khh.cg);
if (strcmp(khh.id,kh.id) == 0 && strcmp(khh.cg,"0") == 0){
break;
}
if (strcmp(khh.czyid,"0") == 0)
tempsumd++;
}
fclose(fp); //关闭文件
system("cls");//清屏操作
system("color ec");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆查看当前排队情况◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"\n";
cout<<"\t\t\t中国农业银行排队系统"<<endl;
cout<<"\t\t温馨提示:"<<endl;//
cout<<"\t\t\t尊敬的“"<<khh.id<<"”客户,您好!"<<endl;
cout<<"\t\t\t您选择的是“"<<khh.yw<<"”业务类型"<<endl;
cout<<"\t\t\t您的排队号码为:"<<khh.numd<<"号"<<endl;
cout<<"\t\t在您前面还有“"<<tempsumd<<"”人在等候!"<<endl;
cout<<"\t\t请耐心等候,祝你生活愉快!"<<endl;
cout<<"\n\n";
cout<<"\t\t请继续选择您的操作:"<<endl;
cout<<"\t\t\t1、返回上一页"<<endl;
cout<<"\t\t\t2、退出"<<endl;
show_time();//调用时间函数,显示此时的时间
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆查看当前排队情况◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
char xuhao;
cin>>xuhao;
switch(xuhao){
case '1': kh_welcome(khh); break;
case '2': main_interface(); break;
default : main_interface(); break;
}
}
void gly_interface(){//管理员登陆界面 0K
char ch;
string id;//管理员ID
string psw;//管理员密码
system("cls");//清屏操作
GNode gly;//管理员定义
int n, i;//对文件中文件个数进行终止和统计
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆管理员登录界面◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"\n";
cout<<"\t\t\t中国农业银行排队系统"<<endl;
cout<<"\t";
show_time();//调用时间函数,显示此时的时间
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"\t★ ★\n";
cout<<"\t★ 温馨提示: ★\n";
cout<<"\t★ 您即将进行登录操作,您确定要继续进行么? ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ Y、继续 ★\n";
cout<<"\t★ N、返回 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n";
cout<<"\t\t\t请输入您的选择(Y/N):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
if(ch == 'y' || ch == 'Y')
;
else
main_interface();
cout<<"\t\t\t请输入ID:"<<endl;
cout<<"\t\t\t→";
cin>>id;
cout<<"\t\t\t请输入密码(6位):"<<endl;
cout<<"\t\t\t→";
psw = password();//用密码保护方式进行密码输入
cout<<endl;
//在下面进行身份id和密码的匹配 OK
ifstream cinFile;//定义一个文件操作名//进行读操作
cinFile.open("administrator.txt");//打开文件
if (!cinFile.is_open())//判断文件是否被打开
cout<<"\t\t\t☆☆打开文件失败!,请检修系统☆☆"<<endl;
cinFile>>n;
for (i = 1; i <= n+1; i++){
cinFile>>gly.id;
cinFile>>gly.psw;
cinFile>>gly.quxian;
cinFile>>gly.num;
if (id == gly.id && psw == gly.psw && gly.quxian == "1"){ //成功之后跳转至“管理员管理界面” OK
cout<<endl;
cout<<"\t\t\t登录成功!"<<endl;
_sleep(1000); //延时1秒
gly_control(gly);//跳转至管理员管理界面
break;
}
}
if (i > n+1){//失败之后,重新加载次页面,重新登录输入操作 OK
cout<<"\t\t\t登录失败!"<<endl;
cout<<"\t\t您输入的密码或用户ID错误,请重新登录!"<<endl;
_sleep(1000); //延时1秒
gly_interface();//重新跳转至
}
cinFile.close();//文件关闭
}
void gly_control(GNode gly){//管理员管理界面 OK
GNode glyy = gly;
char xuhao;//对应业务选项的序号
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※管理员管理界面※※※※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n";
cout<<"\t\t\t1、查看业务受理情况" <<endl;// void gly_ywshow(void);//查看业务受理情况 0
cout<<"\t\t\t2、查看管理员(或者操作员)信息"<<endl;// void gly_seecay(void);//查看管理员(或者操作员)详细信息 OK
cout<<"\t\t\t3、查看管理员帮助文档"<<endl;//void Help_gly(int n);//查看管理员帮助文档界面 OK
cout<<"\t\t\t4、添加管理员(或者操作员)信息"<<endl;// void gly_addczy(void); //添加管理员(或者操作员)信息 OK
cout<<"\t\t\t5、修改管理员(或者操作员)信息"<<endl;// void gly_updataczy(void);//修改管理员(或者操作员)信息OK
cout<<"\t\t\t6、删除管理员(或者操作员)信息"<<endl;// void gly_deleteczy(void);//删除管理员(或者操作员)信息0
cout<<"\t\t\t7、返回上一界面"<<endl;// OK
cout<<"\t\t\t8、退出"<<endl; // OK
cout<<"\n\n\n";
show_time();//调用时间函数,显示此时的时间
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※管理员管理界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': gly_ywshow(glyy); break;//查看业务受理情况 0
case '2': gly_seeczy(glyy);break;//查看管理员(或者操作员)详细信息 OK
case '3': Help_gly(glyy, QNGLY);break;//查看管理员帮助文档OK
case '4': gly_addczy(glyy); break;// 添加管理员(或者操作员)信息 OK
case '5': gly_updataczy(glyy); break;//修改管理员(或者操作员)信息OK
case '6': gly_deleteczy(glyy); break;//删除管理员(或者操作员)信息OK
case '7': gly_interface(); break;//返回上一界面,也就是返回到管理员登陆界面 OK
case '8': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1500); //延时1.5秒
gly_control(glyy); //重新调用管理员管理界面 OK
break;
}
}
void gly_ywshow(GNode gly){//查看业务受理情况界面 0000000000
GNode glyy = gly;
char xuhao;//对应业务选项的序号
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※业务受理情况查看界面※※※※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n";
cout<<"\t\t\t1、查看当天实时业务受理情况" <<endl;//OK
cout<<"\t\t\t2、查看某日业务受理情况"<<endl;// 0
cout<<"\t\t\t3、查看某月业务受理情况"<<endl;// 0
cout<<"\t\t\t4、返回"<<endl;// OK
cout<<"\t\t\t5、退出"<<endl; // OK
cout<<"\n\n\n";
show_time();//调用时间函数,显示此时的时间
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※管理员管理界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': gly_ontimeyw(glyy); break;// 0
case '2': gly_seedayyw(glyy); break;// 0
case '3': gly_seemonthyw(glyy); break;// 0
case '4': gly_control(glyy); break;//返回上一界面,也就是返回到管理员登陆界面 OK
case '5': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1000); //延时1秒
gly_ywshow(glyy); //重新调用查看业务受理情况界面 OK
break;
}
}
void gly_ontimeyw(GNode gly){//查看当天实时业务受理情况OK
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
GNode glyy = gly;
KList K;
char ch;
K_InitList(K);
int n;
K_readywsl(K, n);//将txt文件中的数据读到K链表到中 OK
cout<<"\t\t 今天共有"<<n<<"人取票办理业务"<<endl;
KList p = K;
int i;
K = K->next;
while(K){
cout<<K->id;
for (i = 1; i <= 10-strlen(K->id); i++)
cout<<' ';
cout<<K->yw;
for (i = 1; i <= 10-strlen(K->yw); i++)
cout<<' ';
cout<<K->numd;
for (i = 1; i <= 10-strlen(K->numd); i++)
cout<<' ';
cout<<K->numw;
for (i = 1; i <= 10-strlen(K->numw); i++)
cout<<' ';
cout<<K->czyid;
for (i = 1; i <= 10-strlen(K->czyid); i++)
cout<<' ';
cout<<K->cg<<endl;
p = K->next;
delete(K);
K = p;
}
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': gly_ywshow(glyy); break; //带参数返回管理员欢迎界面
case '2': main_interface(); break; //OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
gly_ontimeyw(glyy); //管理员帮助文档界面 OK
break;
}
}
void gly_seedayyw(GNode gly){//查看某日业务
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
char riqi[12] = {0};
GNode glyy = gly;
cout<<"请输入你要查询的日期,格式:“20130613”表示查询2013年6月13日的业务记录";
cout<<"\t\t\t→";
cin>>riqi;
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k2 = "业务受理";
char *k1 = "窗口信息";
sprintf(a,"%s%s.txt",riqi,k1);//
fp = fopen(a,"r");
if (fp == 0){
cout<<a<<".txt文件失败,没有该天的记录!"<<endl;
_sleep(2000);
gly_seedayyw(glyy);
}
int n1, n2, n3;
fscanf(fp,"%d\n",&n1);
fscanf(fp,"%d\n",&n2);
fscanf(fp,"%d\n",&n3);
fclose(fp);
cout<<"\t该天共有"<<n2<<"人登录本系统,并成功分派号码!"<<endl;
cout<<"共有"<<n2-n3<<"位客户成功办理业务,"<<n3<<"位客户放弃了业务办理。"<<endl;
sprintf(a,"%s%s.txt",riqi,k2);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if (fp == 0){
cout<<a<<".txt文件失败,没有该天的记录!"<<endl;
_sleep(2000);
gly_seedayyw(glyy);
}
KList K;
K_InitList(K);
int n,i;
KList p;
p = K;
fscanf(fp,"%d\n",&n);//读入n
for (i = 1; i <= n+1; i++){
KList qq;
qq = new KNode;
qq->next = p->next;
fscanf(fp,"%s%s%s%s%s%s\n",qq->id,qq->yw,qq->numd,qq->numw,qq->czyid,qq->cg);//读入数据
p->next = qq;
p = qq;
}
fclose(fp); //关闭文件
cout<<"\t\t 今天共有"<<n<<"人取票办理业务"<<endl;
p = K;
K = K->next;
while(K){
cout<<K->id;
for (i = 1; i <= 10-strlen(K->id); i++)
cout<<' ';
cout<<K->yw;
for (i = 1; i <= 10-strlen(K->yw); i++)
cout<<' ';
cout<<K->numd;
for (i = 1; i <= 10-strlen(K->numd); i++)
cout<<' ';
cout<<K->numw;
for (i = 1; i <= 10-strlen(K->numw); i++)
cout<<' ';
cout<<K->czyid;
for (i = 1; i <= 10-strlen(K->czyid); i++)
cout<<' ';
cout<<K->cg<<endl;
p = K->next;
delete(K);
K = p;
}
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
char ch;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': gly_ywshow(glyy); break; //带参数返回管理员欢迎界面
case '2': main_interface(); break; //OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
gly_seedayyw(glyy); //管理员帮助文档界面 OK
break;
}
}
void gly_seemonthyw(GNode gly){//查看某月业务
GNode glyy = gly;
char m;
int year, month, i;
int sum = 0, sum1 = 0, sum2 = 0;
char riqi[12] = {0};
char dd[4] = {0};
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"请输入你要查询的年月,格式:“2013/06”表示2013年6月的业务详情"<<endl;
cout<<"\t\t\t→";
scanf("%d%c%d",&year, &m, &month);//要输入2009/01,用这种方式
W_thedays(year,sum,month);//求出该月有多少天
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k2 = "业务受理";
char *k1 = "窗口信息";
int n1, n2, n3;
if (month < 10)
sprintf(riqi,"%d0%d",year,month);//将年月赋值成一个字符数组
else
sprintf(riqi,"%d%d",year,month);//将年月赋值成一个字符数组
for (i = 1; i <= sum; i++){
if (i < 10)
sprintf(dd,"0%d",i);
else
sprintf(dd,"%d",i);
sprintf(a,"%s%s%s.txt",riqi,dd,k1);
fp = fopen(a,"r");//打开文件
if (fp == 0){
//cout<<a<<"文件失败,没有该天的记录!"<<endl;
fclose(fp);//关闭文件
}
else {
fscanf(fp,"%d\n",&n1);
fscanf(fp,"%d\n",&n2);
fscanf(fp,"%d\n",&n3);
fclose(fp);//关闭文件
sum1 += n2;
sum2 += n3;
}
}
cout<<"\t该月共有"<<sum1<<"人登录本系统,并成功分派号码!"<<endl;
cout<<"共有"<<sum1-sum2<<"位客户成功办理业务,"<<sum2<<"位客户放弃了业务办理。"<<endl;
cout<<"\t\t\t具体详情如下:\n"<<endl;
//搜索查看业务受理.txt文件
for (i = 1; i <= sum; i++){
if (i < 10)
sprintf(dd,"0%d",i);
else
sprintf(dd,"%d",i);
sprintf(a,"%s%s%s.txt",riqi,dd,k2);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if (fp == 0){
fclose(fp); //关闭文件
}
else{
KList K;
K_InitList(K);
int nn,ii;
KList p;
p = K;
fscanf(fp,"%d\n",&nn);//读入n
for (ii = 1; ii <= nn+1; ii++){
KList qq;
qq = new KNode;
qq->next = p->next;
fscanf(fp,"%s%s%s%s%s%s\n",qq->id,qq->yw,qq->numd,qq->numw,qq->czyid,qq->cg);//读入数据
p->next = qq;
p = qq;
}
fclose(fp); //关闭文件
cout<<"\t"<<riqi<<dd<<"这天共有"<<nn<<"人取票办理业务"<<endl;
p = K;
K = K->next;
while(K){
cout<<K->id;
for (ii = 1; ii <= 10-strlen(K->id); ii++)
cout<<' ';
cout<<K->yw;
for (ii = 1; ii <= 10-strlen(K->yw); ii++)
cout<<' ';
cout<<K->numd;
for (ii = 1; ii <= 10-strlen(K->numd); ii++)
cout<<' ';
cout<<K->numw;
for (ii = 1; ii <= 10-strlen(K->numw); ii++)
cout<<' ';
cout<<K->czyid;
for (ii = 1; ii <= 10-strlen(K->czyid); ii++)
cout<<' ';
cout<<K->cg<<endl;
p = K->next;
delete(K);
K = p;
}
cout<<endl;
}
}
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
char ch;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': gly_ywshow(glyy); break; //带参数返回管理员欢迎界面
case '2': main_interface(); break; //OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
gly_seedayyw(glyy); //管理员帮助文档界面 OK
break;
}
}
void gly_seeczy(GNode gly){//查看管理员(或者操作员)详细信息 00000
GList G, q;
GNode glyy = gly;
int n, i;
G_InitList(G);//初始化G链表
G_AddTxt(G,n);//将Txt文件中的内容读入到G链表中
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★中国农业银行**分行管理员以及操作员信息表★★★★★★★★★"<<endl;
show_time();//调用时间函数,显示此时的时间
ofstream coutFile;//定义一个打开文件
coutFile.open("administrator.txt");//打开文件
if (!coutFile.is_open()){//打开文件失败
cout<<"\t\t\t☆☆☆☆打开文件失败!请检修系统☆☆☆☆"<<endl;
}
coutFile<<n;
cout<<"共有";
cout<<n<<"位操作员(包括管理员)"<<endl;
while (G)
{
coutFile<<G->id<<"\t"<<G->psw<<"\t"<<G->quxian<<"\t"<<G->num<<endl;
cout<<G->id;
for (i = 1; i <= 10-G->id.length(); i++)
cout<<' ';
cout<<G->psw;
for (i = 1; i <= 10-G->psw.length(); i++)
cout<<' ';
cout<<G->quxian;
for (i = 1; i <= 10-G->quxian.length(); i++)
cout<<' ';
cout<<G->num<<endl;
q = G->next;//进行链表的空间释放
free(G);
G = q;
}
coutFile.close();//关闭文件
char xuhao;//定义输入选择的序号
cout<<"\n\n";
cout<<"\t\t☆☆☆☆☆查看数据成功!☆☆☆☆☆" <<endl;
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': gly_control(glyy); break;//返回上一界面,重新调用管理员管理界面 OK
case '2': main_interface(); break; //退出,返回到主界面 OK
default : cout<<"您输入的是任意键,即将为您直接跳转至主界面!!";
_sleep(1000); //延时1秒
main_interface(); //返回到主界面 OK
break;
}
}
void gly_addczy(GNode gly){// 添加管理员(或者操作员)信息 1
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※添加操作员信息界面※※※※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n";
cout<<"\t\t操作提示:"<<endl;
cout<<"\t\t “工号 密码 权限 窗口 ”"<<endl;
cout<<"\t\t管理员信息添加格式如:“0000 111111 1 0”"<<endl;
cout<<"\t\t “工号 密码 权限 窗口 ”"<<endl;
cout<<"\t\t操作员信息添加格式如:“1000 111111 0 0”"<<endl;
cout<<"\t\t其中工号和密码自己定义,“权限”和“窗口”根据提示信息填写"<<endl;
cout<<"\n\n\n";
show_time();//调用时间函数,显示此时的时间
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※添加操作员信息界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要添加的管理员(或者操作员)信息,每条语句之间由空格控制:"<<endl;
cout<<"\t\t “工号 密码 权限 窗口”"<<endl;
cout<<"\t\t→";
int n;
GNode glyy = gly;
string id, psw, quxian, num;
cin>>id>>psw>>quxian>>num;
GList G;
n = G_InitList(G);
G_AddTxt(G,n);//调用//将administration.txt文件的内容写入管理员链表G中
//以下代码是将链表G的信息,加入到administration.txt文件中
n++;//对n进行自加,下一步将添加一个操作员信息
system("cls");//清屏操作
cout<<"★★★★★★★★★中国农业银行**分行管理员以及操作员信息表★★★★★★★★★"<<endl;
show_time();//调用时间函数,显示此时的时间
G_CinTxt(G,n,id,psw,quxian,num);//将administration.txt文件中的信息进行写入输出
char xuhao;//定义输入选择的序号
cout<<"\n\n";
cout<<"\t\t☆☆☆☆☆添加数据成功!☆☆☆☆☆" <<endl;
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': gly_control(glyy); break;//返回上一界面,重新调用管理员管理界面 OK
case '2': main_interface(); break; //退出,返回到主界面 OK
default : cout<<"您输入的是任意键,即将为您直接跳转至主界面!!";
_sleep(1000); //延时1秒
main_interface(); //返回到主界面 OK
break;
}
}
void gly_updataczy(GNode gly){//修改管理员(或者操作员)信息0000
GList G;
GNode glyy = gly;
int n, i = 0;
G_InitList(G);//初始化G
G_AddTxt(G,n);//将txt文件中的内容读入到G链表中来
string id;
string psw1, psw2;
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※修改管理员(或者操作员)信息界面※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n";
cout<<"\t\t操作提示:"<<endl;
cout<<"\t\t输入您要修改的“工号”"<<endl;
cout<<"\t\t管理员工号如:“0000”"<<endl;
cout<<"\t\t操作员工号如:“1000”"<<endl;
cout<<"\t\t其中工号的输入根据要修改的工号输入"<<endl;
cout<<"\t\t可以修改的内容为该工号对应的密码!"<<endl;
cout<<"\n";
show_time();//调用时间函数,显示此时的时间
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※修改管理员(或者操作员)信息界面※※※※※※※※※※※"<<endl;
cout<<"输入您要修改的管理员(或者操作员)的ID:"<<endl;
cout<<"\t\t→";
cin>>id;//输入要修改的ID
//下面根据输入的ID在链表中进行查找,如果查找成功,就继续输入新密码,否则,重新调用该函数
ofstream coutFile;
coutFile.open("administrator.txt");//打开文件 ,进行写操作
if (!coutFile.is_open()){
cout<<"\t\t\t☆☆☆☆打开文件失败!请检修系统☆☆☆☆"<<endl;
}
coutFile<<n;
GList q;
while (G)
{
coutFile<<G->id<<"\t"<<G->psw<<"\t"<<G->quxian<<"\t"<<G->num<<endl;
if (id == G->id)
i = 1;
q = G->next;
free(G);
G = q;
}
coutFile.close();//关闭文件
if (i == 0){
cout<<"\t\t\t您输入的ID不存在,请重新输入ID!"<<endl;
cout<<"\t\t\t请稍等,即将为您跳转!"<<endl;
_sleep(1000);//延时1秒
gly_updataczy(glyy);//重新调用修改管理员(或者操作员)信息界面OK
}
else{
cout<<"\t\t “请您输入新密码”"<<endl;
cout<<"\t\t→";
psw1 = password();
cout<<endl;
cout<<"\t\t “请再次输入新密码”"<<endl;
cout<<"\t\t→";
psw2 = password();
while(psw1 != psw2){
cout<<"您两次输入的密码不一样!请重新输入"<<endl;
cout<<"\t\t “请您输入新密码”"<<endl;
cout<<"\t\t→";
psw1 = password();
cout<<endl;
cout<<"\t\t “请再次输入新密码”"<<endl;
cout<<"\t\t→";
psw2 = password();
}
GList G, q;//要重新定义
int n, i;//要重新定义
G_InitList(G);//要重新定义,进行G链表的初始化操作
G_AddTxt(G,n);//要重新定义,将文件中的内容读入到G链表中
ofstream coutFile;
coutFile.open("administrator.txt");//打开文件
if (!coutFile.is_open()){
cout<<"\t\t\t☆☆☆☆打开文件失败!请检修系统☆☆☆☆"<<endl;
}
coutFile<<n;//写入操作员总个数
system("cls");//清屏操作
cout<<"★★★★★★★★★管理员以及操作员信息表★★★★★★★★★"<<endl;
show_time();//调用时间函数,显示此时的时间
cout<<"\t共有";
cout<<n<<"位操作员(包括管理员)";
while (G)
{
if (id == G->id){
G->psw = psw1;
}
coutFile<<G->id<<"\t"<<G->psw<<"\t"<<G->quxian<<"\t"<<G->num<<endl;
cout<<G->id;
for (i = 1; i <= 10-G->id.length(); i++)
cout<<' ';
cout<<G->psw;
for (i = 1; i <= 10-G->psw.length(); i++)
cout<<' ';
cout<<G->quxian;
for (i = 1; i <= 10-G->quxian.length(); i++)
cout<<' ';
cout<<G->num<<endl;
q = G->next;
free(G);
G = q;
}
coutFile.close();//关闭文件
char xuhao;//定义输入选择的序号
cout<<"\n";
cout<<"\t\t☆☆☆☆☆修改管理员(或操作员)信息成功!☆☆☆☆☆" <<endl;
cout<<"\t\t\t1、返回上一界面"<<endl;
cout<<"\t\t\t2、退出(2或者其他任意键)"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': gly_control(glyy); break;//返回上一界面,重新调用管理员管理界面 OK
case '2': main_interface(); break; //退出,返回到主界面 OK
default : cout<<"\t\t您输入的是任意键,即将为您直接跳转至主界面!!";
_sleep(1000); //延时1秒
main_interface(); //返回到主界面 OK
break;
}
}
}
void gly_deleteczy(GNode gly){//删除管理员(或者操作员)信息0000000 测试出现问题,不能继续下去
GList G;
GNode glyy = gly;
int n, i = 0;
G_InitList(G);//初始化G
G_AddTxt(G,n); //将txt文件中的内容读取到G链表中
string id;
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※删除管理员(或者操作员)信息界面※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n";
cout<<"\t\t操作提示:"<<endl;
cout<<"\t\t输入您要删除的“工号”"<<endl;
cout<<"\t\t管理员工号如:“0000”"<<endl;
cout<<"\t\t操作员工号如:“1000”"<<endl;
cout<<"\t\t其中工号的输入根据要删除的工号输入"<<endl;
cout<<"\t\t删除的内容为该工号对应的管理员(或者操作员所有的信息)!"<<endl;
cout<<"数据删除后将不能恢复,请谨慎操作!!!"<<endl;
cout<<"\n";
show_time();//调用时间函数,显示此时的时间
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※删除管理员(或者操作员)信息界面※※※※※※※※※※※"<<endl;
cout<<"输入您要删除的管理员(或者操作员)的ID:"<<endl;
cout<<"\t\t→";
cin>>id;//输入要删除的ID
//下面根据输入的ID在链表中进行查找,如果查找成功,就进行删除操作,否则,重新调用该函数
ofstream coutFile;
coutFile.open("administrator.txt"); //打开文件,进行写入操作
if (!coutFile.is_open()){
cout<<"\t\t\t☆☆☆☆打开文件失败!请检修系统☆☆☆☆"<<endl;
}
coutFile<<n;//写入n,n表示个数
GList q;//定义一个q,用来对G进行空间释放
while (G)
{
coutFile<<G->id<<"\t"<<G->psw<<"\t"<<G->quxian<<"\t"<<G->num<<endl;
if (id == G->id)
i = 1;
q = G->next;
free(G);
G = q;
}
coutFile.close();//关闭文件
if (i == 0){
cout<<"您要删除的管理员(或操作员)的ID不存在,请重新输入要删除的ID!"<<endl;
cout<<"\t\t\t请稍等,即将为您跳转!"<<endl;
_sleep(2000);//延时2秒钟
gly_deleteczy(glyy);//重新调用删除管理员(或者操作员)信息界面OK
}
else{
GList G, q;//要重新定义
int n, i;//要重新定义
G_InitList(G);//要重新定义,进行G链表的初始化操作
G_AddTxt(G,n);//要重新定义,将文件中的内容读入到G链表中
ofstream coutFile;
coutFile.open("administrator.txt");//打开文件
if (!coutFile.is_open()){
cout<<"\t\t\t☆☆☆☆打开文件失败!请检修系统☆☆☆☆"<<endl;
}
coutFile<<n-1;//写入操作员总个数
system("cls");//清屏操作
cout<<"★★★★★★★★★中国农业银行**分行管理员以及操作员信息表★★★★★★★★★"<<endl;
show_time();//调用时间函数,显示此时的时间
cout<<"\t共有";
cout<<n-1<<"位操作员(包括管理员)";
while (G)
{
if (id == G->id){//刚开始是这里出现错误,
q = G->next;
free(G);
G = q;
}
if (G == NULL) break;//注意,不是判断(G->next == NULL),这里容易出错误
coutFile<<G->id<<"\t"<<G->psw<<"\t"<<G->quxian<<"\t"<<G->num<<endl;
cout<<G->id;
for (i = 1; i <= 10-G->id.length(); i++)
cout<<' ';
cout<<G->psw;
for (i = 1; i <= 10-G->psw.length(); i++)
cout<<' ';
cout<<G->quxian;
for (i = 1; i <= 10-G->quxian.length(); i++)
cout<<' ';
cout<<G->num<<endl;
q = G->next;
free(G);
G = q;
}
coutFile.close();//关闭文件
char xuhao;//定义输入选择的序号
cout<<"\n\n";
cout<<"\t\t☆☆☆☆☆删除管理员(或操作员)信息成功!☆☆☆☆☆" <<endl;
cout<<"\t\t\t1、返回上一界面"<<endl;
cout<<"\t\t\t2、退出(2或者其他任意键)"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': gly_control(glyy); break;//返回上一界面,重新调用管理员管理界面 OK
case '2': main_interface(); break; //退出,返回到主界面 OK
default : cout<<"您输入的是任意键,即将为您直接跳转至主界面!!";
_sleep(1000); //延时1秒
main_interface(); //返回到主界面 OK
break;
}
}
}
void czy_interface(void){//操作员登录界面 OK
char ch;
string title;//文件名,存放时间的比如2013611
string id;//操作员ID
string psw;//操作员密码
GNode czy;
int n, i;//对文件中文件个数进行终止和统计
system("cls");//清屏操作
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆操作员登录界面◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"\n";
cout<<"\t\t\t中国农业银行排队系统"<<endl;
cout<<"\t";
show_time();//调用时间函数,显示此时的时间
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"\t★ ★\n";
cout<<"\t★ 温馨提示: ★\n";
cout<<"\t★ 您即将进行登录操作,您确定要继续进行么? ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ Y、继续 ★\n";
cout<<"\t★ N、返回 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n";
cout<<"\t\t\t请输入您的选择(Y/N):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
if(ch == 'y' || ch == 'Y')
;
else
main_interface();
cout<<"\t\t\t请输入您的操作员ID:"<<endl;
cout<<"\t\t\t→";
cin>>id;
cout<<"\t\t\t请输入密码(6位):"<<endl;
cout<<"\t\t\t→";
psw = password();
cout<<endl;
//在下面进行身份id和密码的匹配 OK
ifstream cinFile;//定义一个文件操作名//进行读操作
cinFile.open("administrator.txt");//打开文件
if (!cinFile.is_open())//判断文件是否被打开
cout<<"\t\t\t☆☆打开文件失败!,请检修系统☆☆"<<endl;
cinFile>>n;//读入n
for (i = 1; i <= n+1; i++){
cinFile>>czy.id;
cinFile>>czy.psw;
cinFile>>czy.quxian;
cinFile>>czy.num;
if (id == czy.id && psw == czy.psw && czy.quxian == "0"){ //成功之后跳转至“操作员业务受理窗口界面”OK
cout<<endl;
cout<<"\t\t\t登录成功!"<<endl;
cinFile.close();//文件关闭
//下面输出哪些窗口是空闲的,
//将窗口信息txt文件写入到那个wNode数组中,
char a[30] = {0};
FILE *fp=NULL;
char *k = "窗口信息";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j, in, tempsum = 0;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
cout<<"打开"<<a<<".txt文件失败"<<endl;
exit(0);
}
int size, temps1, temps2;
fscanf(fp, "%d\n", &size);
fscanf(fp, "%d\n", &temps1);
fscanf(fp, "%d\n", &temps2);
for (in = 0; in <= size; in++){
fscanf(fp, "%s",WNode[in].ckczyid);
fscanf(fp, "%s",WNode[in].kx);
fscanf(fp, "%s",WNode[in].ckid);
fscanf(fp, "%s",WNode[in].finally_cznumber);
fscanf(fp, "%s",WNode[in].weidao);
}
fclose(fp);//文件关闭
//将string类型的ip装换成char*类型
len = id.length();
char ipp[12] = {0};
for (j = 0; j < len ;j++)
ipp[j] = id[j];
for (in = 0; in <= size; in++){
if (strcmp(WNode[in].ckczyid,ipp) == 0){//已经登录过
cout<<"\t\t亲爱的"<<id<<"操作员,您已经在"<<in<<"号窗口登录!"<<endl;
_sleep(2500); //延时1秒
czy_ywinterface(czy, in);//跳转至操作员业务受理窗口界面 OK
break;
}
if (strcmp(WNode[in].ckczyid,"0") == 0)
tempsum++;
}
if (tempsum == 0){
cout<<"\t\t\t您今天没有被安排工作!祝您假日愉快!"<<endl;
cout<<"\t\t\t即将为您跳转至主界面!"<<endl;
_sleep(4000);
main_interface();//返回主界面
}
else{
cout<<"\t\t\t还有"<<tempsum<<"个业务窗口为登录!"<<endl;
cout<<"\t\t未登录的窗口有:";
for (in = 0; in <= size; in++){
if (strcmp(WNode[in].ckczyid,"0") == 0)
cout<<in<<"号、";
}
cout<<endl;
cout<<"\t\t\t请您根据上面提示的空闲窗口进行输入!"<<endl;
cout<<"\t\t\t请输入您要选择的窗口进行登录!"<<endl;
int tempmm, kp = 0, tpp = 0;
while(kp == 0){
cout<<"\t\t\t→";
cin>>tempmm;
tpp = 0;
for (in = 0; in <= size; in++){
if (strcmp(WNode[in].ckczyid,"0") != 0){
if (tempmm == in)
tpp++;
}
}
if(tpp == 0){
kp = 1;
cout<<"\t\t您选择业务窗口成功!祝您工作愉快!"<<endl;
}
else{
cout<<"\t\t\t该窗口已有操作员在上班"<<endl;
cout<<"\t\t\t请您根据上面提示的空闲窗口进行输入!"<<endl;
}
}
//将该操作员的ID号写到txt文件中去
strcpy(WNode[tempmm].ckczyid,ipp);
fp=fopen(a,"w");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
cout<<"打开"<<a<<".txt文件失败"<<endl;
exit(0);
}
fprintf(fp,"%d\n",size);
fprintf(fp,"%d\n",temps1);
fprintf(fp,"%d\n",temps2);
for (in = 0; in <= size; in++){
fprintf(fp,"%s\t%s\t%s\t%s\t%s\n",WNode[in].ckczyid,WNode[in].kx,WNode[in].ckid,WNode[in].finally_cznumber,WNode[in].weidao);
}
fclose(fp);
_sleep(2000); //延时1秒
czy_ywinterface(czy, tempmm);//跳转至操作员业务受理窗口界面 OK
break;
}
}
}
cinFile.close();//文件关闭
if (i > n+1){//失败之后,重新加载次页面,重新登录输入操作 OK
cout<<"登录失败!"<<endl;
cout<<"您输入的密码或用户ID错误,请重新登录!"<<endl;
_sleep(1000); //延时1秒
czy_interface();//操作员登录界面 OK
}
}
void czy_ywinterface(GNode czy, int wnum){//操作员业务受理窗口界面 OK
GNode czyy = czy;
int wn = wnum;
char xuhao;//对应业务选项的序号
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※操作员业务受理窗口界面※※※※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\t\t亲爱的"<<czyy.id<<"操作员现在在"<<wn<<"号窗口登录!"<<endl;
cout<<"\n\n";
cout<<"\t\t\t1、查看业务受理情况" <<endl;//void czy_ywshow(void);//操作员业务情况查看界面
cout<<"\t\t\t2、业务受理操作"<<endl;//
cout<<"\t\t\t3、查看操作员帮助文档"<<endl;//
cout<<"\t\t\t4、返回上一页"<<endl;//
cout<<"\t\t\t5、退出"<<endl;//
cout<<"\n\n\n";
show_time();//调用时间函数,显示此时的时间 OK
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※操作员业务受理窗口界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': czy_ywshow(czyy, wn); break;//操作员业务情况查看界面
case '2': czy_ywshouli(czyy, wn); break;//
case '3': Help_czy(czyy, QNCZY, wn); break;//查看操作员帮助文档0000000记得修改
case '4': czy_interface(); break;//返回上一界面,也就是返回到操作员登录界面 OK
case '5': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1000); //延时1秒
czy_ywinterface(czyy,wn); //重新调用操作员业务受理窗口界面 OK
break;
}
}
void czy_ywshow(GNode czy, int wnum){////操作员业务情况查看界面 OK
GNode czyy = czy;
int wn = wnum;//对应的窗口序号
char xuhao;//对应业务选项的序号
system("cls");
system("color 8e");//设置控制台前景色和背景色 3a 8e 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※操作员业务情况查看界面※※※※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n";
cout<<"\t\t\t今天业务办理详细情况\n";
KList K;
K_InitList(K);
int n;
K_readywsl(K, n);//将txt文件中的数据读到K链表到中 OK
cout<<"\t\t 今天共有"<<n<<"人取票办理业务"<<endl;
KList p = K;
int i;
K = K->next;
while(K){
cout<<K->id;
for (i = 1; i <= 10-strlen(K->id); i++)
cout<<' ';
cout<<K->yw;
for (i = 1; i <= 10-strlen(K->yw); i++)
cout<<' ';
cout<<K->numd;
for (i = 1; i <= 10-strlen(K->numd); i++)
cout<<' ';
cout<<K->numw;
for (i = 1; i <= 10-strlen(K->numw); i++)
cout<<' ';
cout<<K->czyid;
for (i = 1; i <= 10-strlen(K->czyid); i++)
cout<<' ';
cout<<K->cg<<endl;
p = K->next;
delete(K);
K = p;
}
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
show_time();//调用时间函数,显示此时的时间 OK
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※操作员业务受理界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': czy_ywinterface(czyy, wn); break;//返回上一界面 OK
case '2': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1500); //延时1秒
czy_ywshow(czyy,wn); // OK
break;
}
}
void czy_ywshouli(GNode czy, int wnum){//操作员业务受理界面OK
GNode czyy = czy;
KNode e;
int wn = wnum;
char wnn[12] = {0};
sprintf(wnn,"%d",wn);
char xuhao;//对应业务选项的序号
system("cls");
system("color 8e");//设置控制台前景色和背景色 3a 8e 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※操作员业务受理界面※※※※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\t\t\t顾客至上,服务创造美好生活!\n";
//进入的时候就检查是不是空闲的,是空闲的就出队列,分配一个,否则,就是已经分配了
char a[30] = {0}; //如果不存在,就自动创建,一个带有表头的txt文件,并界面跳转至客户注册界面
FILE *fp=NULL;
char *k = "窗口信息";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
cout<<"打开"<<a<<".txt文件失败"<<endl;
exit(0);
}
//读入内容
int size, temp1, temp2;
fscanf(fp, "%d\n", &size);
fscanf(fp, "%d\n", &temp1);
fscanf(fp, "%d\n", &temp2);
for (j = 0; j <= size; j++){
fscanf(fp, "%s",WNode[j].ckczyid);
fscanf(fp, "%s",WNode[j].kx);
fscanf(fp, "%s",WNode[j].ckid);
fscanf(fp, "%s",WNode[j].finally_cznumber);
fscanf(fp, "%s",WNode[j].weidao);
}
fclose(fp);//文件关闭
if ((strcmp(WNode[wn].kx,"1") == 0)){//如果已经分配了(strcmp(WNode[wn].ckczyid,czyy.id) == 0) &&
cout<<"\t\t"<<WNode[wn].ckid<<"客户将在您的窗口办理业务\n";
cout<<"\t\t如果该客户在40秒之后没有来,就选择“继续呼叫下一位”操作\n";
cout<<"\t\t如果成功处理完客户的业务,请选择“处理完成”操作\n\n";
}
else{//否则就是没有分配客户,这就要调用函数进行分配啊
strcpy(WNode[wn].kx, "1");
char *kk = "业务受理";
sprintf(a,"%s%s.txt",b,kk);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
cout<<"打开"<<a<<".txt文件失败"<<endl;
exit(0);
}
//读入内容
int tempn;
LinkQueue Q1;
if(Q_InitList(Q1)){
fscanf(fp, "%d\n", &tempn);
for (j = 0; j <= tempn; j++){
fscanf(fp, "%s%s%s%s%s%s\n",e.id,e.yw,e.numd,e.numw,e.czyid,e.cg);
if (strcmp(e.czyid,e.numw) == 0){//进队操作
Q_EnQueue(Q1,e);
}
}
fclose(fp);//关闭文件
}
if (Q_Length(Q1) == 0){
cout<<"\t\t当前系统中没有排队客户,您可以暂时整理相关资料。\n\n"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";
show_time();//调用时间函数,显示此时的时间 OK
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※操作员业务受理界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': czy_ywinterface(czyy, wn); break;//返回上一界面 OK
case '2': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(2000); //延时1秒
czy_ywshouli(czyy,wn); // OK
break;
}
}
//你需要进行出队操作,将信息窗口的信息改变,ckid可以改写
else{
Q_DeQueue(Q1, e);
strcpy(e.numw, wnn);
strcpy(WNode[wn].ckid,e.id);
//下面对“业务受理”信息改写
KList K;
K_InitList(K);
int nm;
K_readywsl(K,nm);
fp=fopen(a,"w");//用读写的形式打开文件
if(fp==0){puts("业务受理error");exit(0);}
fprintf(fp,"%d\n",nm); //写入n
KList pp;
pp = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = pp;
while (K){
if ((strcmp(K->id,e.id) == 0) && (strcmp(K->cg,"0") == 0)){
strcpy(K->numw,e.numw);//strcpy(K->czyid,czyy.id);//Gnode是string类型的
int pp;
for (pp = 0; pp < czyy.id.length(); pp++)
K->czyid[pp] = czyy.id[pp];
K->czyid[pp] = '\0';
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",K->id,K->yw,K->numd,K->numw,K->czyid,K->cg);
}
else
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",K->id,K->yw,K->numd,K->numw,K->czyid,K->cg);//写操作
pp = K->next;//进行链表的空间释放
free(K);
K = pp;
}
fclose(fp);//文件关闭
//下面对“窗口信息”修改
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"w");//用读写的形式打开文件
fprintf(fp, "%d\n", size);
fprintf(fp, "%d\n", temp1+1);//进行加1操作
fprintf(fp, "%d\n", temp2);
for (int i = 0; i <= SIZE; i++){
fprintf(fp,"%s\t%s\t%s\t%s\t%s\n",WNode[i].ckczyid,WNode[i].kx,WNode[i].ckid,WNode[i].finally_cznumber,WNode[i].weidao);//写操作
}
fclose(fp);//文件关闭
cout<<"\t\t"<<WNode[wn].ckid<<"客户将在您的窗口办理业务\n";
cout<<"\t\t如果该客户在40秒之后没有来,就选择“处理完成!”操作\n";
cout<<"\t\t如果成功处理完客户的业务,请选择“处理完成”操作\n\n";
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、处理完成! ★" <<endl;//void czy_success(GNode czy);
cout<<"\t\t★ 2、呼叫客户! ★"<<endl;//void czy_next(GNode czy);
cout<<"\t\t★ 3、返回 ★"<<endl;//
cout<<"\t\t★ 4、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";
show_time();//调用时间函数,显示此时的时间 OK
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※操作员业务受理界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': czy_success(czyy,wn, e); break;// OK
case '2': czy_next(czyy,wn, e); break;//OK
case '3': czy_ywinterface(czyy, wn); break;//返回上一界面 OK
case '4': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1500); //延时1秒
czy_ywshouli(czyy,wn); // OK
break;
}
}
}
}
void czy_success(GNode czy, int wnum, KNode e){ //操作员成功处理 0
GNode czyy = czy;
int wn = wnum;
char xuhao;//对应业务选项的序号
system("cls");
system("color 8e");//设置控制台前景色和背景色 3a 8e 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※操作员业务操作界面※※※※※※※※※※※※※※※※\n"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\t\t\t顾客至上,服务创造美好生活!\n\n";
char a[30] = {0};
FILE *fp=NULL;
char *k = "窗口信息";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
cout<<"打开"<<a<<"文件失败"<<endl;
exit(0);
}
//读入内容
int size, temp1, temp2;
fscanf(fp, "%d\n", &size);
fscanf(fp, "%d\n", &temp1);
fscanf(fp, "%d\n", &temp2);
for (j = 0; j <= size; j++){
fscanf(fp, "%s",WNode[j].ckczyid);
fscanf(fp, "%s",WNode[j].kx);
fscanf(fp, "%s",WNode[j].ckid);
fscanf(fp, "%s",WNode[j].finally_cznumber);
fscanf(fp, "%s",WNode[j].weidao);
}
fclose(fp);//文件关闭
strcpy(WNode[wn].kx,"0");//改写窗口信息表中的kx属性
strcpy(WNode[wn].ckid,"0");//改写窗口信息中的ckid属性
int sum = atoi(WNode[wn].finally_cznumber);
sprintf(WNode[wn].finally_cznumber,"%d",++sum);//成功办理的个数自加1
//下面对“窗口信息”修改
fp=fopen(a,"w");//用读写的形式打开文件
fprintf(fp, "%d\n", size);
fprintf(fp, "%d\n", temp1);
fprintf(fp, "%d\n", temp2);
for (int i = 0; i <= SIZE; i++){
fprintf(fp,"%s\t%s\t%s\t%s\t%s\n",WNode[i].ckczyid,WNode[i].kx,WNode[i].ckid,WNode[i].finally_cznumber,WNode[i].weidao);//写操作
}
fclose(fp);//文件关闭
//下面改写“业务受理”中的信息
KList K;
K_InitList(K);
K_readywsl(K, sum);
char *kk = "业务受理";
sprintf(a,"%s%s.txt",b,kk);
fp=fopen(a,"w");//用读写的形式打开文件
if(fp==0){puts("业务受理error");exit(0);}
fprintf(fp,"%d\n",sum); //写入n
KList pp;
pp = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = pp;
while (K){
if ((strcmp(K->id,e.id) == 0) && (strcmp(K->cg,"0") == 0))//找该元素
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",K->id,K->yw,K->numd,K->numw,K->czyid,"成功");//写操作
//strcpy(K->cg,"成功");
else
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",K->id,K->yw,K->numd,K->numw,K->czyid,K->cg);//写操作
pp = K->next;//进行链表的空间释放
free(K);
K = pp;
}
fclose(fp); //关闭文件
//下面对“客户注册”信息改写
K_InitList(K);
K_readzc(K, sum);
char *kkk = "客户注册";
sprintf(a,"%s%s.txt",b,kkk);
fp=fopen(a,"w");//用读写的形式打开文件
if(fp==0){puts("error");exit(0);}
fprintf(fp,"%d\n",sum); //写入n
pp = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = pp;
while (K){
if ((strcmp(K->id,e.id) == 0) && (strcmp(K->enuse,"可用") == 0))//找该元素
strcpy(K->enuse,"不可用");
fprintf(fp,"%s\t%s\t%s\t%s\n",K->id,K->psw,K->yw,K->enuse);//写操作
pp = K->next;//进行链表的空间释放
free(K);
K = pp;
}
fclose(fp); //关闭文件
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、继续办理 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";
show_time();//调用时间函数,显示此时的时间 OK
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※操作员业务操作界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': czy_ywinterface(czyy,wn); break;// OK
case '2': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1500); //延时1秒
main_interface(); // OK
break;
}
}
void czy_next(GNode czy, int wnum, KNode e){ //操作员继续呼叫下一位(当前客户未到)
GNode czyy = czy;
int wn = wnum;
char xuhao;//对应业务选项的序号
system("cls");
system("color 8e");//设置控制台前景色和背景色
cout<<"※※※※※※※※※※※※※操作员业务操作界面※※※※※※※※※※※※※※※※\n"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\t\t\t顾客至上,服务创造美好生活!\n\n";
char a[30] = {0};
FILE *fp=NULL;
char *k = "窗口信息";
string tempstring;
char b[10] = {0};
tempstring = time_title2();
int len = tempstring.length();
int j;
for (j = 0; j < len ;j++)
b[j] = tempstring[j];
sprintf(a,"%s%s.txt",b,k);
fp=fopen(a,"r");//用输入的形式打开文件,不存在,则打开失败!
if(fp==0){
cout<<"打开"<<a<<"文件失败"<<endl;
exit(0);
}
//读入内容
int size, temp1, temp2;
fscanf(fp, "%d\n", &size);
fscanf(fp, "%d\n", &temp1);
fscanf(fp, "%d\n", &temp2);
for (j = 0; j <= size; j++){
fscanf(fp, "%s",WNode[j].ckczyid);
fscanf(fp, "%s",WNode[j].kx);
fscanf(fp, "%s",WNode[j].ckid);
fscanf(fp, "%s",WNode[j].finally_cznumber);
fscanf(fp, "%s",WNode[j].weidao);
}
fclose(fp);//文件关闭
strcpy(WNode[wn].kx,"0");//改写窗口信息表中的kx属性
strcpy(WNode[wn].ckid,"0");//改写窗口信息中的ckid属性
int sum = atoi(WNode[wn].weidao);
sprintf(WNode[wn].weidao,"%d",++sum);//缺到的个数自加1
//下面对“窗口信息”修改
fp=fopen(a,"w");//用读写的形式打开文件
fprintf(fp, "%d\n", size);
fprintf(fp, "%d\n", temp1);
fprintf(fp, "%d\n", temp2+1);//未到进行加1
for (int i = 0; i <= SIZE; i++){
fprintf(fp,"%s\t%s\t%s\t%s\t%s\n",WNode[i].ckczyid,WNode[i].kx,WNode[i].ckid,WNode[i].finally_cznumber,WNode[i].weidao);//写操作
}
fclose(fp);//文件关闭
//下面改写“业务受理”中的信息
KList K;
K_InitList(K);
K_readywsl(K, sum);
char *kk = "业务受理";
sprintf(a,"%s%s.txt",b,kk);
fp=fopen(a,"w");//用读写的形式打开文件
if(fp==0){puts("业务受理error");exit(0);}
fprintf(fp,"%d\n",sum); //写入n
KList pp;
pp = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = pp;
while (K){
if ((strcmp(K->id,e.id) == 0) && (strcmp(K->cg,"0") == 0))//找该元素
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",K->id,K->yw,K->numd,K->numw,K->czyid,"缺到");//写操作
else
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",K->id,K->yw,K->numd,K->numw,K->czyid,K->cg);//写操作
pp = K->next;//进行链表的空间释放
free(K);
K = pp;
}
fclose(fp); //关闭文件
//下面对“客户注册”信息改写
K_InitList(K);
K_readzc(K, sum);
char *kkk = "客户注册";
sprintf(a,"%s%s.txt",b,kkk);
fp=fopen(a,"w");//用读写的形式打开文件
if(fp==0){puts("error");exit(0);}
fprintf(fp,"%d\n",sum); //写入n
pp = K->next;//链表的头是个乱码,必须指向下一个
free(K);
K = pp;
while (K){
if ((strcmp(K->id,e.id) == 0) && (strcmp(K->enuse,"可用") == 0))//找该元素
strcpy(K->enuse,"不可用");
fprintf(fp,"%s\t%s\t%s\t%s\n",K->id,K->psw,K->yw,K->enuse);//写操作
pp = K->next;//进行链表的空间释放
free(K);
K = pp;
}
fclose(fp); //关闭文件
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、继续办理 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";
show_time();//调用时间函数,显示此时的时间 OK
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※操作员业务操作界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': czy_ywinterface(czyy,wn); break;// OK
case '2': main_interface(); break; //返回到主界面 OK
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1500); //延时1秒
main_interface(); // OK
break;
}
}
void Help_interface(){//帮助文档主界面 OK
char xuhao;//对应业务选项的序号
system("cls");
system("color 8e");//设置控制台前景色和背景色 3a 8e 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"※※※※※※※※※※※※※帮助文档界面※※※※※※※※※※※※※※※"<<endl;
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"\n\n";
cout<<"\t\t\t1、客户帮助" <<endl;
cout<<"\t\t\t2、管理员帮助"<<endl;
cout<<"\t\t\t3、操作员帮助"<<endl;
cout<<"\t\t\t4、退出"<<endl;//
cout<<"\n\n\n";
show_time();//调用时间函数,显示此时的时间 OK
cout<< "\t\t\t中国农业银行排队系统"<<endl;
cout<<"※※※※※※※※※※※※※帮助文档界面※※※※※※※※※※※※※※※※"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>xuhao;
switch(xuhao){
case '1': Help_kh1(); break;//客户帮助文档界面(未登录进来的)OK
case '2': Help_gly1(); break;//管理员帮助文档界面(未登录进来的)OK
case '3': Help_czy1(); break;//操作员帮助文档界面(未登录进来的)OK
case '4': main_interface(); break; //
default : cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1000); //延时1秒
Help_interface(); //重新调用帮助主界面 OK
break;
}
}
void Help_kh1(){//客户帮助文档界面(未登录进来的)OK
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★客户帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"\n";
cout<<"\t\t欢迎使用中国农业银行客户帮助文档:"<<endl;
//进行内容填充
cout<<"\t\t注意事项:"<<endl;
cout<<"\t\t\t①必须先进行客户注册,然后才能进行客户登录操作;"<<endl;
cout<<"\t\t\t②注册时,须以您的省份证ID进行注册,密码为6位数字。"<<endl;
cout<<"\t\t客户登录后的操作:"<<endl;
cout<<"\t\t\t⑴选择相应业务类型,然后系统会自动分配号码;"<<endl;
cout<<"\t\t\t⑵可以查看当前排队情况;"<<endl;
cout<<"\t\t\t⑶可以查看帮助文档;"<<endl;
cout<<"\t\t\t⑷可以返回上一界面,即返回到客户登录界面;"<<endl;
cout<<"\t\t\t⑸可以退出客户登录。"<<endl;
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★客户帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': Help_interface(); break;//OK
case '2': main_interface(); break; //OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
Help_kh1(); //客户帮助文档界面(未登录进来的)OK
break;
}
}
void Help_gly1(){//管理员帮助文档界面(未登录进来的)OK
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★管理员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"\n";
cout<<"\t\t欢迎使用中国农业银行管理员帮助文档:"<<endl;
//进行内容填充
cout<<"\t\t注意事项:"<<endl;
cout<<"\t\t\t①管理员具有的相关操作,请谨慎操作;"<<endl;
cout<<"\t\t\t②删除后的数据不能进行恢复。"<<endl;
cout<<"\t\t管理员登录后的操作:"<<endl;
cout<<"\t\t\t⑴管理员分为超级管理员和一般管理员;"<<endl;
cout<<"\t\t\t⑵超级管理员具有修改、添加、删除一般管理员和操作员信息;"<<endl;
cout<<"\t\t\t⑶可以查看帮助文档;"<<endl;
cout<<"\t\t\t⑷可以查看业务受理情况"<<endl;
cout<<"\t\t\t⑸可以按业绩查看业务受理情况"<<endl;
cout<<"\t\t\t⑹可以退出。"<<endl;
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★管理员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': Help_interface(); break; //OK
case '2': main_interface(); break;//OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
Help_gly1(); //管理员帮助文档界面(未登录进来的) OK
break;
}
}
void Help_czy1(){//操作员帮助文档界面(未登录进来的)OK
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★操作员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"\n";
cout<<"\t\t欢迎使用中国农业银行操作员帮助文档:"<<endl;
cout<<"\t\t注意事项:"<<endl;
cout<<"\t\t\t①必须先进行操作员登陆,然后才能进行操作;"<<endl;
cout<<"\t\t\t②操作员的信息的修改必须经过管理员实现"<<endl;
cout<<"\t\t登录后的操作:"<<endl;
cout<<"\t\t\t⑴选择相应业务处理方式进行业务处理"<<endl;
cout<<"\t\t\t⑵可以查看当前排队情况;"<<endl;
cout<<"\t\t\t⑶可以查看帮助文档;"<<endl;
cout<<"\t\t\t⑷可以返回上一界面;"<<endl;
cout<<"\t\t\t⑸可以退出。"<<endl;
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★操作员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': Help_interface(); break; //OK
case '2': main_interface(); break;//OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
Help_czy1(); //操作员帮助文档界面(未登录进来的) OK
break;
}
}
void Help_kh(KNode kh, int n){//客户帮助文档界面 OK1
KNode khh = kh;
int qn = n;
char ch;
system("cls");
system("color ec");//设置控制台前景色和背景色 红色
cout<<"★★★★★★★★★★★★★客户帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"\n";
cout<<"\t\t欢迎使用中国农业银行客户帮助文档:"<<endl;
//进行内容填充
cout<<"\t\t注意事项:"<<endl;
cout<<"\t\t\t①必须先进行客户注册,然后才能进行客户登录操作;"<<endl;
cout<<"\t\t\t②注册时,须以您的省份证ID进行注册,密码为6位数字。"<<endl;
cout<<"\t\t客户登录后的操作:"<<endl;
cout<<"\t\t\t⑴选择相应业务类型,然后系统会自动分配号码;"<<endl;
cout<<"\t\t\t⑵可以查看当前排队情况;"<<endl;
cout<<"\t\t\t⑶可以查看帮助文档;"<<endl;
cout<<"\t\t\t⑷可以返回上一界面,即返回到客户登录界面;"<<endl;
cout<<"\t\t\t⑸可以退出客户登录。"<<endl;
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★客户帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': kh_welcome(khh); break; //OK
case '2': Help_khtuichu(khh, qn); break; //OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
Help_kh(khh, qn); //客户帮助文档界面 OK
break;
}
}
void Help_khtuichu(KNode kh, int n){//客户帮助文档退出中转界面 OK
KNode khh = kh;
int qn = n;
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"\t★ ★\n";
cout<<"\t★ 温馨提示: ★\n";
cout<<"\t★ 您已经登录了客户操作,继续退出将退出登录。 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ 1、继续退出 ★\n";
cout<<"\t★ 2、返回上一页 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ ★\n";
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n";
cout<<endl;
show_time();//调用时间函数,显示此时的时间
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': main_interface(); break;
case '2': Help_kh(khh, qn); break;
default: cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1500); //延时1.5秒
Help_khtuichu(khh, qn); //客户帮助文档退出中转界面 OK
break;
}
}
void Help_gly(GNode gly, int n){//管理员帮助文档界面 OK
GNode glyy = gly;
int qn = n;
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★管理员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"\n";
cout<<"\t\t欢迎使用中国农业银行管理员帮助文档:"<<endl;
//进行内容填充
cout<<"\t\t注意事项:"<<endl;
cout<<"\t\t\t①管理员具有的相关操作,请谨慎操作;"<<endl;
cout<<"\t\t\t②删除后的数据不能进行恢复。"<<endl;
cout<<"\t\t管理员登录后的操作:"<<endl;
cout<<"\t\t\t⑴管理员分为超级管理员和一般管理员;"<<endl;
cout<<"\t\t\t⑵超级管理员具有修改、添加、删除一般管理员和操作员信息;"<<endl;
cout<<"\t\t\t⑶可以查看帮助文档;"<<endl;
cout<<"\t\t\t⑷可以返回上一界面,即返回到客户登录界面;"<<endl;
cout<<"\t\t\t⑸可以查看帮助文档;"<<endl;
cout<<"\t\t\t⑹可以返回上一界面,即返回到客户登录界面;"<<endl;
cout<<"\t\t\t⑺可以退出管理员登录。"<<endl;
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★管理员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': gly_control(glyy); break; //带参数返回管理员欢迎界面
case '2': Help_glytuichu(glyy, qn); break; //OK
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
Help_gly(glyy, qn); //管理员帮助文档界面 OK
break;
}
}
void Help_glytuichu(GNode gly, int n){//管理员帮助文档主页退出中转界面 OK
GNode glyy = gly;
int qn = n;
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"\t★ ★\n";
cout<<"\t★ 温馨提示: ★\n";
cout<<"\t★ 您已经登录了管理员操作,继续退出将退出登录。 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ 1、继续退出 ★\n";
cout<<"\t★ 2、返回上一页 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ ★\n";
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n";
cout<<endl;
show_time();//调用时间函数,显示此时的时间
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': main_interface(); break;
case '2': Help_gly(glyy, qn); break;
default: cout<<"您输入的操作序号有误,请从新输入!";
_sleep(1500); //延时1.5秒
Help_glytuichu(glyy, qn); //帮助文档主页退出中转界面1 OK
break;
}
}
void Help_czy(GNode czy, int n, int wnum){//操作员帮助文档界面OK
GNode czyy = czy;
int qn = n;
int wn = wnum;
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"★★★★★★★★★★★★★操作员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"\n";
cout<<"\t\t欢迎使用中国农业银行操作员帮助文档:"<<endl;
cout<<"\t\t注意事项:"<<endl;
cout<<"\t\t\t①必须先进行操作员登陆,然后才能进行操作;"<<endl;
cout<<"\t\t\t②操作员的信息的修改必须经过管理员实现"<<endl;
cout<<"\t\t登录后的操作:"<<endl;
cout<<"\t\t\t⑴选择相应业务处理方式进行业务处理"<<endl;
cout<<"\t\t\t⑵可以查看业务受理情况;"<<endl;
cout<<"\t\t\t⑶可以查看帮助文档;"<<endl;
cout<<"\t\t\t⑷可以返回上一界面;"<<endl;
cout<<"\t\t\t⑸可以退出。"<<endl;
cout<<"\n";
cout<<"\n\t\t谢谢您的使用,请继续选择您的操作:"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n";
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★ 1、返回 ★"<<endl;//
cout<<"\t\t★ 2、退出 ★"<<endl;//
cout<<"\t\t★ ★"<<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★\n\n";;
show_time();//调用时间函数,显示此时的时间
cout<<"★★★★★★★★★★★★★操作员帮助文档★★★★★★★★★★★★★"<<endl;
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': czy_ywinterface(czyy, wn); break; //当参数返回到操作员欢迎界面
case '2': Help_czytuichu(czyy, qn, wn); break; //
default: cout<<"您输入的操作序号有误,请重新输入!";
_sleep(1500); //延时1.5秒
Help_czy(czyy, qn, wn); //操作员帮助文档界面 OK
break;
}
}
void Help_czytuichu(GNode czy, int n, int wnum){//操作员帮助文档退出中转界面 OK
GNode czyy = czy;
int qn = n;
int wn = wnum;
char ch;
system("cls");
system("color 8e");//设置控制台前景色和背景色 0 黑色 c淡红色 e淡黄色 2绿色 7白色 8灰色 9淡蓝色
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"\t★ ★\n";
cout<<"\t★ 温馨提示: ★\n";
cout<<"\t★ 您已经登录了操作员操作,继续退出将退出登录。 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ 1、继续退出 ★\n";
cout<<"\t★ 2、返回 ★\n";
cout<<"\t★ ★\n";
cout<<"\t★ ★\n";
cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n";
cout<<endl;
show_time();//调用时间函数,显示此时的时间
cout<<"输入您要选择的方式(输入对应功能的序号):"<<endl;
cout<<"\t\t\t→";
cin>>ch;
switch(ch){
case '1': main_interface(); break;
case '2': Help_czy(czyy, qn, wn); break;
default: cout<<"您输入的操作序号有误,请从新输入!";
_sleep(2000); //延时2秒
Help_czytuichu(czyy, qn, wn); //操作员帮助文档退出中转界面 OK
break;
}
}