开发成长之路(5)-- C语言从入门到开发(仿ATM机项目,我写的第一个项目)
作者:互联网
文章目录
项目需求分析
时间过得是真的快啊,这么快C语言的基础语法就讲过去了,是时候开始讲项目了。
那就进项目吧,需求分析。
1、需要有操作界面。最好能有光标定位的。
2、实现登录注册功能,其中账号限制六位数字,密码限制八位数字与英文结合。
3、实现存取款功能
4、实现转账功能,双方的数据都需要有改变
5、实现账户信息搜索功能,分精确搜索和模糊搜索。搜索账户、搜索存取款、搜索转账。时间搜索、账号搜索等。
6、以上这些功能都需要持久化,即程序重启之后之前的操作都还在。
各位可以先自行实现,如果对需求有不清楚的可以发在评论区。
几张大图过后放上我当初写的代码,那可是我的处女作啊!!!
单纯写代码多枯燥啊,这都是某些人给我发来的桌面大图。
放码过来
// main.c
#include "public.h"
#include "master.h"
#include "supermaster.h"
#include "user.h"
#include "other.h"
int main ()
{
mymes();
newuser("info.txt");
newreport("repo.txt");
_login(head,3);
return 0;
}
//public.h
#ifndef _PUBLIC_H_
#define _PUBLIC_H_
/*
为了节约字数,此处省略内容请前往第三篇中获取
https://blog.csdn.net/qq_43762191/article/details/116189876
*/
typedef struct reported
{
int amount;//交易金额
int rflag; //交易方式 1、存款 2、取款 3、转账转出 4、转账转入
int lastmoney;//余额
int lastmoney2;//收款者的余额
int number1;//付款账户
int number2;//入款账户
char time[12];//操作时间
} REPORT_T;
typedef struct point
{
void *pData; //指向数据域
struct point *next; //指向下一个节点
} POINT_T;
FILE * fp;
FILE * rfp;
POINT_T * pTemp;
REPORT_T * rTemp;
POINT_T * pNode;
POINT_T * rNode;
POINT_T * head ;
POINT_T * rhead;
extern FILE * fp;
extern FILE * rfp;
extern POINT_T * head; //用户的头
extern POINT_T * rhead; //账单的头
extern POINT_T * pTemp; //用户临时指针
extern REPORT_T * rTemp; //账单临时指针
extern POINT_T * pNode; //接用户的头
extern POINT_T * rNode; //接账单的头
//打开文件
FILE * open(char * filename);
//用户信息链表写入文件
void List_to_file(POINT_T * head,FILE * fp,int size);
//账户链表写入文件
void rList_to_file(POINT_T * head,FILE * fp,int size);
//文件写入链表
POINT_T * File_to_list(FILE * fp,int size);
//初始化用户
void newuser();
//初始化账单
void newreport(char * filename);
//创建头结点
POINT_T * creat(TEST_T *data );
//新增节点
void add (POINT_T * head,TEST_T *data );
#endif
// initiaze.c
#include "public.h"
void newuser(char * filename)
{
TEST_T * pData = NULL;
fp=fopen(filename,"r+");
if (fp==NULL)
{
fp=fopen(filename,"w+");
head=creat(NULL);
pData=(TEST_T *)malloc(sizeof(TEST_T));
if(pData==NULL)
{
gotoxy(36,14);
printf("申请内存失败");
exit(1);
}
memset(pData,0,sizeof(TEST_T));
strcpy(pData->name,"admin");
strcpy(pData->pwd,"123456");//填充第一个数据
pData->number=10000001;
pData->flag=0;
add(head,pData);
pData=(TEST_T *)malloc(sizeof(TEST_T));
if(pData==NULL)
{
gotoxy(36,14);
printf("申请内存失败");
exit(1);
}
memset(pData,0,sizeof(TEST_T));
strcpy(pData->name,"fck");
strcpy(pData->pwd,"123456");
pData->number=10000002;
pData->flag=1;
add(head,pData);
pData=(TEST_T *)malloc(sizeof(TEST_T));
if(pData==NULL)
{
gotoxy(36,14);
printf("申请内存失败");
exit(1);
}
memset(pData,0,sizeof(TEST_T));
strcpy(pData->name,"lzx");
strcpy(pData->pwd,"123456");
pData->number=10000003;
pData->flag=2;
pData->money=500;
add(head,pData);
pData=(TEST_T *)malloc(sizeof(TEST_T));
if(pData==NULL)
{
gotoxy(36,14);
printf("申请内存失败");
exit(1);
}
memset(pData,0,sizeof(TEST_T));
strcpy(pData->name,"lml");
strcpy(pData->pwd,"123456");
pData->number=10000004;
pData->flag=3;
add(head,pData);
pData=(TEST_T *)malloc(sizeof(TEST_T));
if(pData==NULL)
{
gotoxy(36,14);
printf("申请内存失败");
exit(1);
}
memset(pData,0,sizeof(TEST_T));
strcpy(pData->name,"lzk");
strcpy(pData->pwd,"123456");
pData->number=10000005;
pData->flag=2;
pData->money=500;
add(head,pData);
List_to_file(head,fp,sizeof(TEST_T));
pNode = head ;
}
else
{
head = File_to_list(fp,sizeof(TEST_T));
pNode = head ;
}
}
//初始化账单
void newreport(char * filename)
{
REPORT_T * rData = NULL;
rfp=fopen(filename,"r+");
if (rfp==NULL)
{
rfp=fopen(filename,"w+");
rhead=creat(NULL);
//add(rhead,rData);
}
else
{
rhead = File_to_list(rfp,sizeof(REPORT_T));
rNode = rhead;
}
}
//file.c
#include"public.h"
//打开文件
FILE * open(char * filename)
{
FILE *fp=NULL;
fp=fopen(filename,"r+");
if (fp==NULL)
{
fp=fopen(filename,"w+");
}
return fp;
}
//用户链表写入文件
void List_to_file(POINT_T * head,FILE * fp,int size)
{
POINT_T * pNode=head;
rewind(fp);
while(pNode->next!=NULL)
{
pNode=pNode->next;
//将数据写入文件
fwrite(pNode->pData,size,1,fp);
}
fflush(fp);
}
//账户链表写入文件
void rList_to_file(POINT_T * rhead,FILE * rfp,int size)
{
REPORT_T * rTemp=NULL;
POINT_T * rNode=rhead;
rewind(rfp);
while(rNode->next!=NULL)
{
rNode=rNode->next;
rTemp=rNode->pData;
//将数据写入文件
fwrite(rTemp,size,1,fp);
}
fflush(rfp);
}
//文件写入链表
POINT_T * File_to_list( FILE* p, int size)
{
void * data = NULL;
POINT_T * head = NULL;
int ret = -1;
// 创建链表头节点
head = creat(NULL);
rewind(p);
// 对数据域开辟空间
data = malloc(size);
memset(data, 0, sizeof(size));
while (1)
{
// 读取大小为size的数据内容
ret = fread(data, size, 1, p);
if (ret < 1)
{
// 未读取到数据内容,表示文件已到结尾
break;
}
// 添加到链表
add(head, data);
data = malloc(size);
memset(data, 0, sizeof(size));
}
return head;
}
//other.h
#ifndef _OTHER_H_
#define _OTHER_H_
//统一登录页面
void face();
void face1();
void face2();
//光标定位
void gotoxy(int x,int y);
//打星星
void flouwer(int i);
//光标移动和它的辅助函数
int key_press();
int kreturn();
//显示我的个人信息
void mymes();
//计算节点数
int Count(POINT_T * head);
//查找用户数据
POINT_T * find(POINT_T *head,int index);
//用户名模糊查询
void fuzzyreserch(POINT_T * head);
//辅助函数
char* my_strstr(const char* dest, const char* src);
//输入函数
void getstr(char str[],int maxLen,int type,int isplainText);
//统一登录函数
void _login(POINT_T * head,int p);
//登录选择
void login_choose();
//打印链表
void print(POINT_T * head);
//获取系统当前时间、年、月、日
void getLocalTime(char szTime[]);
#endif
//other.c
#include "public.h"
#include "master.h"
#include "supermaster.h"
#include "user.h"
#include "other.h"
// 辅助函数
//光标
void gotoxy(int x,int y)
{
COORD pos={x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
}
//计算节点数
int Count(POINT_T * head)
{
int count=0;
POINT_T *pNode1=head;
while (pNode1->next!=NULL)
{
if(pNode1->next!=NULL)
{
pNode1=pNode1->next;
count++;
}
}
return count;
}
//输入输出函数
/*
为了节约字数,这个函数请前往第二篇寻找,太长了不给发
https://blog.csdn.net/qq_43762191/article/details/116176611
*/
//统一登录界面
void face()
{
printf("学号: XXXXXXXXXX \n");
printf("姓名: XXX ");
gotoxy(8,5);
flouwer(80);
gotoxy(36,9);
printf("ATM机系统统一登录界面");
gotoxy(43,10);
printf("版本1.0");
gotoxy(8,12);
flouwer(80);
gotoxy(100,25);
printf("按ESC键退出");
gotoxy(20,16);
printf("1、用户名登录");
gotoxy(20,17);
printf("2、账号登录");
}
/账号登录页面
void face1()
{
system("cls");
gotoxy(8,5);
flouwer(80);
gotoxy(36,9);
printf("ATM机系统统一登录界面");
gotoxy(43,10);
printf("版本1.0");
gotoxy(8,12);
flouwer(80);
gotoxy(100,25);
printf("按ESC键退出");
gotoxy(20,16);
printf("账号(8位):");
gotoxy(20,17);
printf("密码(6位):");
}
///用户名登录页面//
void face2()
{
system("cls");
gotoxy(8,5);
flouwer(80);
gotoxy(36,9);
printf("ATM机系统统一登录界面");
gotoxy(43,10);
printf("版本1.0");
gotoxy(8,12);
flouwer(80);
gotoxy(100,25);
printf("按ESC键退出");
gotoxy(20,16);
printf("用户名 :");
gotoxy(20,17);
printf("密码(6位):");
}
统一登录函数
void _login(POINT_T * head,int p)//p用于限制输入次数
{
char i[1]={0};
int j=0;
int inum=0;
char anum[8]={0};
int count=0;
int q=0;
char name[8]={0};
char pwd[6]={0};
POINT_T *pNode1=head;
TEST_T * tTemp = NULL;
q=p;
if(q<=0)
{
printf("无法登录");
exit(-1);
}
count=Count(pNode1);
face();
gotoxy(20,18);
printf("你的选择是:");
getstr(i,2,1,0);
switch(i[0])
{
case 49:
{
face2();
gotoxy(32,16);
getstr(name,9,0,0);
while(pNode1->next!=NULL)
{
pNode1 = pNode1->next;
tTemp = pNode1->pData;
if (strcmp(tTemp->name,name)==0)
{
pTemp = pNode1;
gotoxy(32,17);
getstr(pwd,7,0,1);
gotoxy(32,19);
printf("登录验证中,请稍等······");
if(strcmp(pwd,tTemp->pwd)==0)
{
Sleep(300);
system("cls");
gotoxy(40,10);
printf("登陆成功");
Sleep(300);
system("cls");
if (tTemp->flag==0)
{
supermaster_fuction_choose(head);
}
else if(tTemp->flag==1)
{
master_fuction_choose(head);
}
else if(tTemp->flag==2)
{
user_fuction_choose(pTemp,head,rhead);
}
else
{
Sleep(300);
system("cls");
gotoxy(40,10);
printf("无效用户,登录失败");
gotoxy(40,11);
q=q-1;
printf("你还有%d次机会",q);
Sleep(1000);
system("cls");
_login(head,q);
}
}
else
{
Sleep(300);
system("cls");
gotoxy(40,10);
printf("密码错误,登录失败");
gotoxy(40,11);
q=q-1;
printf("你还有%d次机会",q);
Sleep(1000);
system("cls");
_login(head,q);
}
}
}
Sleep(300);
system("cls");
gotoxy(40,10);
printf("用户名错误,登录失败");
gotoxy(40,11);
q=q-1;
printf("你还有%d次机会",q);
Sleep(1000);
system("cls");
_login(head,q);
}break;
case 50:
{
face1();
gotoxy(32,16);
getstr(anum,9,1,0);
inum=atoi(anum);
while(pNode1->next!=NULL)
{
pNode1 = pNode1->next;
tTemp = pNode1->pData;
if (tTemp->number==inum)
{
pTemp = pNode1;
gotoxy(32,17);
getstr(pwd,7,0,1);
gotoxy(32,19);
printf("登录验证中,请稍等······");
if(strcmp(pwd,tTemp->pwd)==0)
{
Sleep(300);
system("cls");
gotoxy(40,10);
printf("登陆成功");
Sleep(300);
system("cls");
if (tTemp->flag==0)
{
supermaster_fuction_choose(head);
}
else if(tTemp->flag==1)
{
master_fuction_choose(head);
}
else if(tTemp->flag==2)
{
user_fuction_choose(pTemp,head,rhead);
}
else
{
Sleep(300);
system("cls");
gotoxy(40,10);
printf("无效用户,登录失败");
gotoxy(40,11);
q=q-1;
printf("你还有%d次机会",q);
Sleep(1000);
system("cls");
_login(head,q);
}
}
else
{
Sleep(300);
system("cls");
gotoxy(40,10);
printf("密码错误,登录失败");
gotoxy(40,11);
q=q-1;
printf("你还有%d次机会",q);
Sleep(1000);
system("cls");
_login(head,q);
}
}
}
Sleep(300);
system("cls");
gotoxy(40,10);
printf("用户名错误,登录失败");
gotoxy(40,11);
q=q-1;
printf("你还有%d次机会",q);
Sleep(1000);
system("cls");
_login(head,q);
}break;
default:
{
system("cls");
_login(head,q);
}
}
}
//打星星
void flouwer(int i)
{
int j=0;
for(j=0;j<i;j++)
{
printf("*");
}
}
//个人信息
void mymes()
{
gotoxy(36,12);
printf("学号: DX190221 ");
gotoxy(36,14);
printf("姓名: 吴林锋 ");
gotoxy(56,15);
printf("按任意键继续");
getch();
system("cls");
}
/*
为了节约字数,此处省略内容请前往第三篇中获取
https://blog.csdn.net/qq_43762191/article/details/116189876
*/
//光标移动和它的辅助函数
int key_press()
{
int key;//接收键盘位移键
int k;
int xpos=36;//这个数据还有待进一步调整
int ypos=9;
gotoxy(xpos,ypos);
while(key = getch())
{
if(key=='\n')
{
printf("tuichu");
exit(-1);
}
switch(key)
{
case 0xE0:
switch(key=getch())
{
case 72:
{
ypos--;
gotoxy(xpos,ypos);
k=kreturn(xpos,ypos);
return k;
};break;
case 80:
{
ypos++;
gotoxy(xpos,ypos);
k=kreturn(xpos,ypos);
return k;
};break;
case 75:
{
xpos-=16;
gotoxy(xpos,ypos);
k=kreturn(xpos,ypos);
return k;
};break;
case 77:
{
xpos+=16;
gotoxy(xpos,ypos);
k=kreturn(xpos,ypos);
return k;
};break;
}
}
}
}
int kreturn(int xpos,int ypos)
{
if(xpos==36&&ypos==10)
{
return 1;
}
if(xpos==52&&ypos==10)
{
return 2;
}
if(xpos==68&&ypos==10)
{
return 3;
}
if(xpos==36&&ypos==11)
{
return 4;
}
}
/查找用户数据//
POINT_T * find(POINT_T *head,int index)
{
int f=0;
POINT_T *pNode=NULL;
int count=0;
pNode=head;
count=Count(head);
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
if(count<index)
{
gotoxy(28,8);
printf("查无此人");
Sleep(300);
system("cls");
master_fuction_choose(head);
}
while(pNode->next!=NULL)
{
if(index==f)
{
return pNode;
}
pNode=pNode->next;
f++;
}
}
/不能直接返回继续输账号//
//获取系统当前时间、年、月、日
void getLocalTime(char szTime[])
{
time_t now ;
struct tm *tm_now ;
time(&now) ;
tm_now = localtime(&now) ;
sprintf(szTime, "%d-%02d-%02d\n",tm_now->tm_year+1900, tm_now->tm_mon+1, tm_now->tm_mday) ;
}
//用户名模糊查询
void fuzzyreserch(POINT_T * head)
{
char r[12]={0};//用来接收收入的名字
char s[12]={0};//用来接收数据域中的名字
POINT_T * pTempp = head;
TEST_T * tTempp = NULL;
system("cls");
printf("请输入用户名中的连续一串");
getstr(r,7,0,0);
while(pTempp->next!=NULL)
{
pTempp=pTempp->next;
tTempp=pTempp->pData;
s[12]=NULL;
strcpy(s,tTempp->name);
if (my_strstr(s,r) == NULL)
{
printf("");
}
else if (my_strstr(s,r) != NULL)
{
printf("\n");
printf("用户名:%s\t用户账号:%d\t用户密码:%s\t用户余额:\t",tTempp->name,tTempp->number,tTempp->pwd,tTempp->money);
if (tTempp->flag==0)
{
printf("超级管理员\n");
}
else if(tTempp->flag==1)
{
printf("普通管理员\n");
}
else if (tTempp->flag==2)
{
printf("普通用户\n");
}
else
{
printf("已被注销用户\n");
}
}
}
printf("此为所有查询结果\n按任意键继续");
getch();
}
//辅助函数
char* my_strstr(const char* dest, const char* src)
{
char* start = (char*)dest;//在这里需要强制类型转换成char*
char* substart = (char*)src;
char* cp = (char*)dest;//cp就是用来保存首地址的
assert(dest != NULL);
assert(src != NULL);
while (*cp)
{
start = cp;
while (*start != '\0' && *substart !='\0' && *start == *substart)
{
start++;
substart++;
}
if (*substart == '\0')
{
return cp;
}
substart = (char*)src;
cp++;//cp++可以得到原起始位置的下一个位置
}
return NULL;
}
//master.h
#ifndef _MASTER_H_
#define _MASTER_H_
//系统管理员功能界面
void master_face();
//管理员功能选择与执行
void master_fuction_choose(POINT_T * head);
//注册新用户
void mnewadd();
//管理员查找用户
void mfind(POINT_T * head);
//管理员精确查找用户
void mjqfind(POINT_T * head);
//管理员显示所有用户
void mprint(POINT_T * head);
//管理员修改用户密码
void mmodify(POINT_T *head);
//注销用户
void cancel(POINT_T * head);
//(管理员)返回上一级
void mback(POINT_T * head);
#endif
//master.c
#include "public.h"
#include "master.h"
#include "other.h"
//系统管理员功能界面
void master_face()
{
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
gotoxy(36,9);
printf("ATM机系统管理员功能界面:");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(43,10);
printf("版本1.0");
gotoxy(8,12);
printf("您需要什么操作?");
gotoxy(8,13);
printf("按键 :1、新增用户\t2、查询用户信息\t\t3、修改用户密码");
gotoxy(15,14);
printf("4、注销用户\t5、返回上登录页面/退出操作系统");
gotoxy(8,17);
printf("请选择:");
}
//管理员操作选项
void master_fuction_choose(POINT_T * head)
{
char ii[1]={0}; //用于接收选择
int i=0,j=0,k=0,l=0;
int index=0;
master_face();
getstr(ii,2,1,0);
switch (ii[0])
{
case 49:
{
system("cls");
mnewadd(head);
};break;
case 50:
{
system("cls");
mfind(head);
};break;
case 51:
{
system("cls");
mmodify(pNode);
};break;
case 52:
{
system("cls");
cancel(pNode);
};break;
case 53:
{
system("cls");
mback(head);
};break;
case 54:
{
system("cls");
mback(head);
}break;
default :
{
gotoxy(48,15);
printf("错误指令,请重新输入\n");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
master_fuction_choose(head);
}
}
}
//开户
void mnewadd(POINT_T * head)
{
char ch[5]; //用于添加用户名字
int count=0; //用于新增用户编号
char aflag[1]={0}; //添加选择
int iflag=0;
int j=0;
char pwd1[7];
char pwd2[7];
TEST_T * newadd =NULL;
system("cls");
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
gotoxy(36,9);
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(36,10);
printf("添加 1.管理员账号 2.普通用户账号");
gotoxy(36,11);
printf("你的选择是 :");
getstr(aflag,2,1,0);
iflag=atoi(aflag);
if(iflag==2)
{
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
gotoxy(28,6);
printf("请输入新添用户名字:");
getstr(ch,9,2,0);
gotoxy(28,10);
printf("请输入新添用户密码:");
getstr(pwd1,7,1,0);
if (strlen(pwd1)!=6)
{
gotoxy(28,14);
printf("请设置六位数密码!");
Sleep(500);
system("cls");
gotoxy(28,4);
printf("请设置六位数密码!");
mnewadd(head);
}
gotoxy(28,12);
printf("请再次输入新添用户密码:");
getstr(pwd2,7,0,1);
if(strcmp(pwd1,pwd2)==0)
{
count=Count(head)+10000001;//这个放上面就出问题了
newadd=(TEST_T *)malloc(sizeof(TEST_T));
if( newadd==NULL )
{
gotoxy(28,7);
printf("申请内存失败");
exit(1);
}
memset(newadd,0,sizeof(TEST_T));
strcpy(newadd->name,ch);
strcpy(newadd->pwd,pwd1);
newadd->number=count;
newadd->flag=iflag;
newadd->money=0;
add(head,newadd);
getch();
gotoxy(27,18);
printf("完成!");
List_to_file(head,fp,sizeof(TEST_T));
Sleep(300);
system("cls");
gotoxy(0,1);
gotoxy(27,20);
printf("账号:%d\t用户名:%s\t普通用户",newadd->number,newadd->name);
gotoxy(53,24);
printf("1.返回功能页面\t2.退出系统3、返回登录页面");
gotoxy(53,25);
printf("你的选择是 :");
scanf("%d",&j);
system("cls");
if (j==1)
{
master_fuction_choose(head);
}
else if (j==3)
{
_login(head,3);
}
else
{
exit(0);
}
}
else
{
system("cls");
gotoxy(40,9);
printf("两次密码输入不一致,未能成功开户");
gotoxy(13,17);
printf("1.返回功能页面\t2.退出系统3、返回登录页面");
gotoxy(13,20);
printf("你的选择是 :");
scanf("%d",&j);
system("cls");
if (j==1)
{
master_fuction_choose(head);
}
else if (j==3)
{
_login(head,3);
}
else
{
exit(0);
}
}
}
else if(iflag==1)
{
system("cls");
gotoxy(48,15);
printf("权限不足,请重新选择");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
mnewadd(head);
}
else
{
system("cls");
gotoxy(48,15);
printf("错误指令,请重新输入");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
mnewadd(head);
}
}
//管理员查找用户
void mfind(POINT_T * head)
{
char t[1]={0};
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(26,9);
printf("请选择");
gotoxy(26,10);
printf("添加 1、通过账号精确查询 2、通过用户名模糊查询 3、显示所有用户");
gotoxy(26,11);
printf("你的选择是 :");
getstr(t,2,1,0);
switch(t[0])
{
case 49:
{
system("cls");
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
mjqfind(head);
}break;
case 50:
{
system("cls");
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
fuzzyreserch(head);
mback(head);
}break;
case 51:
{
system("cls");
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
mprint(head);
}
default :
{
system("cls");
mfind(head);
}
}
}
///管理员精确查找用户/
void mjqfind(POINT_T * head)
{
int count=0;
int iindex=0;//互换
char aindex[8]={0};
int j=0;
TEST_T * tTemp = NULL;
system("cls");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(3,5);
printf("请输入查询用户卡号:");
getstr(aindex,9,1,0);
iindex=atoi(aindex);
count=Count(head);
if(count<iindex-10000000)
{
Sleep(300);
system("cls");
gotoxy(48,13);
printf("查无此人");
gotoxy(48,14);
printf("请稍等···");
Sleep(2000);
system("cls");
mjqfind(head);
}
pTemp=find(head,iindex-10000000);
tTemp = pTemp->pData;
if(tTemp->flag!=3)
{
gotoxy(13,7);
printf("用户姓名:%s\t用户账号:%d\t用户余额:%d\t",tTemp->name,tTemp->number,tTemp->money);
if (tTemp->flag==0)
{
printf("超级管理员");
}
else if(tTemp->flag==1)
{
printf("普通管理员");
}
else if (tTemp->flag==2)
{
printf("普通用户");
}
else
{
printf("系统故障");
}
}
else if (tTemp->flag==3)
{
gotoxy(13,7);
printf("该用户已被注销");
}
else
{
gotoxy(13,7);
printf("该用户不存在\n");
}
gotoxy(63,27);
printf("1.返回功能页面\t2.退出系统3、返回登录页面");
gotoxy(13,10);
printf("你的选择是 :");
scanf("%d",&j);
system("cls");
if (j==1)
{
master_fuction_choose(head);
}
else if (j==3)
{
_login(head,3);
}
else
{
exit(0);
}
}
//管理员显示所有用户
void mprint(POINT_T * head)
{
int ypos=3;
POINT_T * pall=head;
TEST_T * tTemp=NULL;
gotoxy(3,1);
printf("用户名");
gotoxy(18,1);
printf("用户账号");
gotoxy(33,1);
printf("用户余额");
while(pall->next!=NULL)
{
pall=pall->next;
tTemp=pall->pData;
if(tTemp->flag!=3)
{
gotoxy(3,ypos);
printf("%s",tTemp->name);
gotoxy(18,ypos);
printf("%d",tTemp->number);
gotoxy(33,ypos);
printf("%d",tTemp->money);
gotoxy(48,ypos);
if (tTemp->flag==0)
{
printf("\t超级管理员\n");
}
else if (tTemp->flag==1)
{
printf("\t管理员\n");
}
else
{
printf("\t普通用户\n");
}
ypos++;
}
else
{
printf("");
}
}
gotoxy(100,25);
printf("请输入任意键继续");
getch();
mback(head);
}
//管理员修改自己、用户密码
void mmodify(POINT_T *head)
{
char ayuan[8]={0};//接收账号
int iyuan=0,j=0;
int a=0;
char pwd1[7]; //原密码
char pwd2[7]; //修改后密码
char pwd3[7]; //二次输入密码
int count=0; //修改位置标杆
POINT_T *pNode=NULL;
POINT_T *pTemp=NULL;
TEST_T * tTemp=NULL;
pNode=head;
pTemp=head;
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,15);
flouwer(83);
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(28,4);
printf("请输入要修改的用户的账号:");
getstr(ayuan,9,1,0);
iyuan=atoi(ayuan);
count=Count(head);
if(count<iyuan-10000000)
{
Sleep(300);
system("cls");
gotoxy(48,13);
printf("查无此人");
gotoxy(48,14);
printf("请稍等···");
Sleep(2000);
system("cls");
master_fuction_choose(head);
}
while(pNode->next!=NULL)
{
pNode=pNode->next;
tTemp=pNode->pData;
if(tTemp->number==iyuan)
{
if (tTemp->flag==3)
{
printf("\n该用户已被注销\n");
printf("按键:1、继续进行撤销操作\t2、返回功能页面\t\t其他任意键:退出系统\n");
printf("你的选择是:");
scanf("%d",&a);
if (a==1)
{
system("cls");
mmodify(head);
}
else if (a==2)
{
system("cls");
master_fuction_choose(head);
}
else
{
exit(-1);
}
}
for(j=3;j>0;j--)
{
gotoxy(28,6);
printf("请输入原密码:");
getstr(pwd1,7,1,1);
if (strcmp(pwd1,tTemp->pwd)==0)
{
gotoxy(28,7);
printf("密码正确,可以开始修改");
gotoxy(28,8);
printf("请输入修改后的密码:");
getstr(pwd2,7,1,1);
if (strlen(pwd2)!=6)
{
gotoxy(28,14);
printf("请设置六位数密码!");
Sleep(500);
system("cls");
gotoxy(28,4);
printf("请设置六位数密码!");
mmodify(head);
}
gotoxy(28,10);
printf("请再次输入修改后的密码:");
getstr(pwd3,7,1,1);
if (strcmp(pwd2,pwd3)==0)
{
strcpy(tTemp->pwd,pwd2);
if (strcmp(tTemp->pwd,pwd2)==0)
{
gotoxy(28,12);
printf("修改完成");
gotoxy(52,13);
printf("密码为:%s", tTemp->pwd);
gotoxy(52,14);
printf("密码请妥善保管");
List_to_file(head,fp,sizeof(TEST_T));
gotoxy(52,15);
mback(head);
}
else
{
Sleep(200);
system("cls");
gotoxy(48,15);
printf("修改失败");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
mmodify(pTemp);
}
}
else
{
Sleep(300);
system("cls");
gotoxy(48,15);
printf("两次密码输入不一致");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
mmodify(pTemp);
}
}
else
{
system("cls");
gotoxy(28,1);
printf("密码错误,还有%d次机会\n",j-1);
gotoxy(8,3);
flouwer(83);
gotoxy(8,15);
flouwer(83);
gotoxy(28,4);
printf("请输入要修改的用户的账号:");
printf("%d",iyuan);
}
}
}
}
}
//注销用户
void cancel(POINT_T * head)
{
int count=0;
char al[8]={0};//转换
int i=0,il=0,j=0;
POINT_T *pNode=NULL;
TEST_T * tTemp=NULL;
pNode=head;
Sleep(100);
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(28,4);
printf("请输入注销用户卡号:");
getstr(al,9,1,0);
il=atoi(al);
count=Count(head)+10000000;
if (count<il||il-10000000<0)
{
Sleep(300);
system("cls");
gotoxy(48,15);
printf("查无此用户");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
cancel(head);
}
pTemp=find(pNode,il-10000000);
tTemp=pTemp->pData;
Sleep(100);
system("cls");
if (tTemp->money==0)
{
if(tTemp->flag==2)
{
tTemp->flag=3;
gotoxy(28,5);
printf("注销成功");
List_to_file(head,fp,sizeof(TEST_T));
gotoxy(13,19);
printf("1.返回功能页面\t2.退出系统3、返回登录页面");
gotoxy(13,20);
printf("你的选择是 :");
scanf("%d",&j);
system("cls");
if (j==1)
{
master_fuction_choose(head);
}
else if (j==3)
{
_login(head,3);
}
else
{
exit(0);
}
}
else if(tTemp->flag!=0||tTemp->flag!=1)
{
Sleep(300);
system("cls");
gotoxy(48,15);
printf("权限不足");
gotoxy(23,27);
printf("1.返回功能页面\t2.退出系统\t3、返回登录页面");
gotoxy(23,28);
printf("你的选择是 :");
scanf("%d",&j);
system("cls");
if (j==1)
{
master_fuction_choose(head);
}
else if (j==3)
{
_login(head,3);
}
else
{
exit(0);
}
}
else
{
Sleep(300);
system("cls");
gotoxy(48,15);
printf("查无此用户");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
cancel(head);
}
master_fuction_choose(head);
}
else
{
system("cls");
gotoxy(48,15);
printf("该用户还有存款,不予注销");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
master_fuction_choose(head);
}
}
//(管理员)返回上一级
void mback(POINT_T * head)
{
int j=0;
Sleep(100);
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
gotoxy(28,6);
printf("确定返回吗?");
gotoxy(28,7);
printf("按键:0、返回登录页面\t1、功能界面\t2、退出系统");
gotoxy(28,8);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==1)
{
system("cls");
master_fuction_choose(head);
}
else if(j==2)
{
exit(0);
}
else
{
system("cls");
mback( head) ;
}
}
//user.h
#ifndef _USER_H_
#define _USER_H_
//系统用户功能界面
void user_face();
//用户功能选择
void user_fuction_choose(POINT_T * pTemp,POINT_T * head,POINT_T * rhead);
//余额查询
void moneyreserch(POINT_T * pTemp);
//存款
void moneyin(POINT_T * pTemp,POINT_T * rhead);
//取款
void moneyout(POINT_T * pTemp,POINT_T * rhead);
//转账
void moneychange(POINT_T * pTemp,POINT_T * head,POINT_T * rhead);
//修改密码
void pwdchange(POINT_T * pTemp);
//(用户)返回上一级
void uback(POINT_T * pTemp,POINT_T * head,POINT_T * rhead);
//用户纪录查询
void reportfind(POINT_T * pTemp,POINT_T * rhead,POINT_T * head);
//交易记录按时间查询
void timereserch(POINT_T * pTemp,POINT_T * rhead);
#endif
//user.c
#include "public.h"
#include "user.h"
#include "other.h"
//系统用户功能界面
void user_face()
{
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(8,5);
flouwer(83);
gotoxy(36,9);
printf("ATM机尊敬的用户功能界面");
gotoxy(43,10);
printf("版本1.0");
gotoxy(8,12);
printf("您需要什么操作?\n");
gotoxy(8,13);
printf("按键 :1.余额查询");
gotoxy(15,14);
printf("2.存款");
gotoxy(15,15);
printf("3.取款");
gotoxy(15,16);
printf("4.转账");
gotoxy(15,17);
printf("5.密码修改");
gotoxy(15,18);
printf("6.所有交易记录查询");
gotoxy(15,19);
printf("7.按交易时间查询交易记录");
gotoxy(15,20);
printf("8.返回上一级或退出系统");
gotoxy(8,24);
flouwer(83);
gotoxy(8,22);
printf("请选择:");
}
//用户功能选择
void user_fuction_choose(POINT_T * pTemp,POINT_T * head,POINT_T * rhead)
{
char a[1]={0};
user_face();
getstr(a,2,1,0);
switch (a[0])
{
case 49:
{
system("cls");
moneyreserch(pTemp);
}break;
case 50:
{
system("cls");
moneyin(pTemp,rhead);
}break;
case 51:
{
system("cls");
moneyout(pTemp,rhead);
}break;
case 52:
{
system("cls");
moneychange(pTemp,head,rhead);
}break;
case 53:
{
system("cls");
pwdchange(pTemp);
}break;
case 54:
{
system("cls");
reportfind(pTemp,rhead,head);
}break;
case 55:
{
system("cls");
timereserch(pTemp,rhead);
}break;
case 56:
{
system("cls");
uback(pTemp,head,rhead);
}break;
default :
{
printf("错误指令,请重新输入\n");
system("cls");
user_fuction_choose(pTemp,head,rhead);
}break;
}
}
//余额查询
void moneyreserch(POINT_T * pTemp)
{
int b=0;
TEST_T * tTemp=NULL;
tTemp=pTemp->pData;
system("cls");
gotoxy(20,10);
printf("您的账户余额为 :%d\n",tTemp->money);
gotoxy(60,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&b);
if(b==0)
{
system("cls");
_login(head,3);
}
else if(b==2)
{
exit(0);
}
else if(b==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
exit(0);
}
}
//存款
void moneyin(POINT_T * pTemp,POINT_T * rhead)
{
char cszTime[10] = {0}; //时间数组
char ack[8]={0};
int ick=0;
int d=0;
TEST_T * tTemp=NULL;
REPORT_T * newadd=NULL;
tTemp=pTemp->pData;
system("cls");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
gotoxy(20,10);
printf("当前余额为:%d",tTemp->money);
gotoxy(20,13);
printf("请输入整百数额,单次存款上限为万元,谢谢合作\n");
gotoxy(20,12);
printf("请输入存款额 :");
getstr(ack,6,1,0);
ick=atoi(ack);
if (ick<=0)
{
system("cls");
gotoxy(50,10);
printf("请不要输入空额");
Sleep(500);
moneyin(pTemp,rhead);
}
if (ick>=0&&ick%100==0)
{
tTemp->money=tTemp->money+ick;
List_to_file(head,fp,sizeof(TEST_T));
Sleep(1000);
system("cls");
getLocalTime(cszTime); //获取时间
//存款纪录写入文件
newadd=(REPORT_T *)malloc(sizeof(REPORT_T));
if( newadd==NULL )
{
gotoxy(28,7);
printf("申请内存失败");
exit(1);
}
memset(newadd,0,sizeof(REPORT_T));
newadd->rflag=1;
newadd->amount=ick;
newadd->lastmoney=tTemp->money;
newadd->number1=0;
newadd->number2=tTemp->number;
strcpy(newadd->time,cszTime); //时间写入
add(rhead,newadd);
List_to_file(rhead,rfp,sizeof(REPORT_T));
gotoxy(20,12);
printf("存款完成!");
gotoxy(20,13);
printf("存款后账户余额为:%d",tTemp->money);
gotoxy(60,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(60,28);
printf("你的选择是:");
scanf("%d",&d);
if(d==0)
{
system("cls");
_login(head,3);
}
else if(d==2)
{
exit(0);
}
else if(d==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
exit(0);
}
}
else
{
gotoxy(20,15);
printf("请按提示规格存款\n");
gotoxy(20,16);
printf("稍等···");
Sleep(2000);
system("cls");
moneyin(pTemp,rhead);
}
}
//取款
void moneyout(POINT_T * pTemp,POINT_T * rhead)
{
char aqk[8]={0};
int iqk=0;
int e=0;
char qszTime[10]; //时间数组
TEST_T * tTemp=NULL;
REPORT_T * newadd=NULL;
tTemp=pTemp->pData;
system("cls");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(8,5);
flouwer(83);
gotoxy(8,16);
flouwer(83);
gotoxy(20,10);
printf("当前余额为:%d",tTemp->money);
gotoxy(20,13);
printf("请输入整百数额,单次取款上限为万元,谢谢合作\n");
gotoxy(20,12);
printf("请输入取款额 :");
getstr(aqk,6,1,0);
iqk=atoi(aqk);
if (iqk<=0)
{
system("cls");
gotoxy(50,10);
printf("请不要输入空额");
Sleep(500);
moneyout(pTemp,rhead);
}
if (iqk>=0&&iqk%100==0&&iqk<=tTemp->money)
{
tTemp->money=tTemp->money-iqk;
List_to_file(head,fp,sizeof(TEST_T));
getLocalTime(qszTime); //获取时间
//取款记录存入链表
newadd=(REPORT_T *)malloc(sizeof(REPORT_T));
if( newadd==NULL )
{
gotoxy(28,7);
printf("申请内存失败");
exit(1);
}
memset(newadd,0,sizeof(REPORT_T));
newadd->rflag=2;
newadd->amount=iqk;
newadd->lastmoney=tTemp->money;
newadd->number1=tTemp->number;
newadd->number2=0;
strcpy(newadd->time,qszTime); //时间写入
add(rhead,newadd);
List_to_file(rhead,rfp,sizeof(REPORT_T));
system("cls");
gotoxy(20,12);
printf("取款完成!尊敬的用户,现金请当面点清,离去概不负责");
gotoxy(20,13);
printf("取款后账户余额为:%d",tTemp->money);
gotoxy(60,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&e);
if(e==0)
{
system("cls");
_login(head,3);
}
else if(e==2)
{
exit(0);
}
else if(e==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
exit(0);
}
}
else if (iqk>=0&&iqk%100==0&&iqk>=tTemp->money)
{
gotoxy(20,14);
printf("目前账户余额为 %d,余额不足",tTemp->money);
gotoxy(20,15);
printf("稍等···");
Sleep(2000);
system("cls");
moneyout(pTemp,rhead);
}
else
{
gotoxy(20,15);
printf("请按提示规格取款\n");
gotoxy(20,16);
printf("稍等···");
Sleep(2000);
system("cls");
moneyout(pTemp,rhead);
}
}
//转账
void moneychange(POINT_T * pTemp,POINT_T * head,POINT_T * rhead)
{
char zszTime[10]; //时间数组
char ah[8]={0};//转入账户
int ih=0;
char azh[6]={0};//转账金额
int izh=0;
int g=0;
int j=0;
int sure=0; //转账确认
int count=0;
TEST_T * tTemp=NULL; //付出者
TEST_T * tTempm2=NULL; //转账用//接收者
POINT_T * pNode=head;
REPORT_T * newadd=NULL;
tTemp=pTemp->pData;
system("cls");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(36,6);
printf("目前账户余额为:%d",tTemp->money);
gotoxy(36,8);
printf("请输入转账账户:");
getstr(ah,9,1,0);
ih=atoi(ah);
if (tTemp->number == ih)
{
gotoxy(36,9);
printf("给自己转账是没有意义的,请重新选择");
Sleep(900);
system("cls");
moneychange(pTemp,head,rhead);
}
gotoxy(36,9);
printf("请输入转账金额:");
getstr(azh,6,1,0);
izh=atoi(azh);
if (izh<=0)
{
system("cls");
gotoxy(50,10);
printf("请不要输入空额");
Sleep(500);
moneychange(pTemp,head,rhead);
}
if (izh>tTemp->money)
{
gotoxy(36,11);
printf("当前余额不足");
moneychange(pTemp,head,rhead);
}
else if(izh < 0 || izh % 100 != 0)
{
gotoxy(36,11);
printf("请按规格转账");
moneychange(pTemp,head,rhead);
}
else
{
count=Count(pNode);
while(pNode->next!=NULL)
{
for(g=0;g<count;g++)
{
pNode=pNode->next;
tTempm2=pNode->pData;
if (tTempm2->number==ih && tTempm2->flag==2)
{
gotoxy(36,11);
printf("请再次确认是否转账 》》》确认转账请按 》》》‘1’,取消转账按任意键");
gotoxy(36,12);
printf("XX银行竭力保护您的财产安全");
gotoxy(36,13);
printf("你的选择是:");
scanf("%d",&sure);
if (sure !=1 )
{
uback(pTemp,head,rhead);
}
system("cls");
gotoxy(36,11);
printf("转账成功");
tTemp->money=tTemp->money-izh;
tTempm2->money=tTempm2->money+izh;
List_to_file(head,fp,sizeof(TEST_T));
getLocalTime(zszTime); //获取时间
//转账转出纪录写入文件
newadd=(REPORT_T *)malloc(sizeof(REPORT_T));
if( newadd==NULL )
{
gotoxy(28,7);
printf("申请内存失败");
exit(1);
}
memset(newadd,0,sizeof(REPORT_T));
newadd->rflag=3;
newadd->amount=izh;
newadd->lastmoney=tTemp->money;
newadd->lastmoney2=tTempm2->money;
newadd->number1=tTemp->number;//谁出钱
newadd->number2=tTempm2->number;//谁收钱
strcpy(newadd->time,zszTime); //时间写入
add(rhead,newadd);
//转账转入纪录写入链表
List_to_file(rhead,rfp,sizeof(REPORT_T));
gotoxy(36,12);
printf("当前余额为:%d",tTemp->money);
//光标位置都不对
gotoxy(60,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
exit(0);
}
}
}
gotoxy(36,11);
printf("转账失败。可能原因:1、账号错误。2、无法向管理员发起转账。");
gotoxy(60,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
exit(0);
}
}
}
}
//修改密码
void pwdchange(POINT_T * pTemp)
{
int i=0,k=0;
char pwd1[7];
char pwd2[7]; //修改后密码
char pwd3[7]; //二次输入密码
TEST_T * tTemp=NULL;
tTemp=pTemp->pData;
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
gotoxy(100,25);
printf("按ESC键退出系统");
for(k=3;k>0;k--)
{
gotoxy(28,6);
printf("请输入原密码:");
gotoxy(52,6);
getstr(pwd1,7,1,1);
if (strcmp(pwd1,tTemp->pwd)==0)
{
gotoxy(28,8);
printf("请输入修改后的密码:");
gotoxy(52,8);
getstr(pwd2,7,1,1);
gotoxy(28,10);
printf("请再次输入修改后的密码:");
gotoxy(52,10);
getstr(pwd3,7,1,1);
if (strcmp(pwd2,pwd3)==0)
{
strcpy(tTemp->pwd,pwd2);
if (strcmp(tTemp->pwd,pwd2)==0)
{
gotoxy(28,12);
printf("修改完成");
gotoxy(52,12);
printf("密码为:%s",tTemp->pwd);
gotoxy(50,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&k);
if(k==0)
{
system("cls");
_login(head,3);
}
else if(k==2)
{
exit(0);
}
else if(k==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
exit(0);
}
}
else
{
gotoxy(28,12);
printf("修改失败");
Sleep(200);
system("cls");
pwdchange(pTemp);
}
}
else
{
gotoxy(28,12);
printf("两次密码输入不一致");
Sleep(300);
system("cls");
pwdchange(pTemp);
}
}
else
{
gotoxy(28,12);
printf("密码错误,还有%d次机会\n",k);
}
}
}
//账户记录查询
void reportfind(POINT_T * pTemp,POINT_T * rhead,POINT_T * head)
{
int l=0;
int x=0;
int i=1;//序号计数
int w=0;//节点偏移
int y=0;//查询页码
int countnt=0;
int ypos=2;//打印列数递增
char ch='0';
POINT_T * temp = rhead;
TEST_T * tt = NULL;//当前登录者
REPORT_T * nn=NULL;
tt = pTemp->pData;
countnt=Count(rhead);
if ( countnt==0 )
{
printf("您的账户没有一条纪录\n");
printf("按ESC键退出系统\n");
printf("按任意键返回功能页面");
ch=getch(); //用这个来弄ESC
if(ch==27)
{
exit(0);
}
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
countnt=(countnt-1)/10+1;
printf("共有%d页纪录\n",countnt);
printf("请输入要查询的页数,\n如需退出请按0页\n");
scanf("%d",&y);
system("cls");
if (y==0)
{
system("cls");
uback(pTemp,head,rhead);
}
else if(y>=countnt+1||y<0)
{
printf("无此页");
Sleep(1000);
system("cls");
uback(pTemp,head,rhead);
}
else
{
y=10*(y-1)+1;
gotoxy(3,1);
printf("序号");
gotoxy(18,1);
printf("时间");
gotoxy(33,1);
printf("金额");
gotoxy(48,1);
printf("余额");
gotoxy(63,1);
printf("摘要");
gotoxy(78,1);
printf("交易发生源");
for(w=0;w<y;w++)
{
temp = temp->next;
}
while(temp!= NULL)
{
nn = temp->pData;
if(x<10)
{
if (tt->number==nn->number1)//打印个人纪录//他是出账者或入账者
{
gotoxy(3,ypos);
printf("%d",i);//i要递增
gotoxy(18,ypos);
printf("%s",nn->time);
gotoxy(33,ypos);
printf("%d",nn->amount);
gotoxy(48,ypos);
printf("%d",nn->lastmoney);
gotoxy(63,ypos);
if(nn->rflag==1)
{
printf("存款");
}
else if(nn->rflag==2)
{
printf("取款");
}
else if(nn->rflag==3)
{
printf("账户转出");
}
else
{
printf("erro");
}
gotoxy(78,ypos);
if(nn->rflag==1||nn->rflag==2)
{
printf("ATM");
}
else if(nn->rflag==3)
{
printf("%d",nn->number2);
}
else if(nn->rflag==4)
{
printf("%d",nn->number1);
}
else
{
printf("erro");
}
ypos++;
i++;
x++;
}
else if(tt->number==nn->number2)
{
gotoxy(3,ypos);
printf("%d",i);//i要递增
gotoxy(18,ypos);
printf("%s",nn->time);
gotoxy(33,ypos);
printf("%d",nn->amount);
gotoxy(48,ypos);
printf("%d",nn->lastmoney2);
gotoxy(63,ypos);
printf("账户转入");
gotoxy(78,ypos);
printf("%d",nn->number1);
ypos++;
i++;
x++;
}
temp = temp->next;
}
else
{
printf("按任意键继续");
getch();
system("cls");
reportfind(pTemp,rhead,head);
}
printf("\n");
}
}
printf("按任意键继续");
getch();
system("cls");
gotoxy(50,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&l);
if(l==0)
{
system("cls");
_login(head,3);
}
else if(l==2)
{
exit(0);
}
else if(l==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
uback(pTemp,head,rhead);
}
}
//(用户)返回上一级
void uback(POINT_T * pTemp,POINT_T * head,POINT_T * rhead)
{
int m=0;
gotoxy(60,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(50,28);
printf("你的选择是:");
scanf("%d",&m);
if(m==0)
{
system("cls");
_login(head,3);
}
else if(m==2)
{
exit(0);
}
else if(m==1)
{
system("cls");
user_fuction_choose(pTemp,head,rhead);
}
else
{
exit(0);
}
}
//交易记录按时间模糊查询
void timereserch(POINT_T * pTemp,POINT_T * rhead)
{
int i=1;//序号
int ypos=2;//坐标
char ch='0';
int emun1 = 0;//纪录月份//大月为1
int emun2 = 0;//纪录月份//小月为2
char ayear1[8] = {0}; //起始时间
char amonth1[4] = {0};
char aday1[4] = {0};
int iyear1 = 0;
int imonth1 = 0;
int iday1 = 0;
char ayear2[8] = {0}; //结束时间
char amonth2[4] = {0};
char aday2[4] = {0};
int iyear2 = 0;
int imonth2 = 0;
int iday2 = 0;
char searchtime_begin[20] = {0};
char searchtime_end[20] = {0};
POINT_T * tmp = rhead;
REPORT_T * linshi=NULL;
TEST_T * peo = NULL;
peo = pTemp->pData;
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(44,3);
printf("请输入起始查询年(XXXX)、月(XX)、日(XX)");
gotoxy(44,4);
printf("-");
gotoxy(47,4);
printf("-");
gotoxy(40,4);
getstr(ayear1,5,1,0);
gotoxy(45,4);
getstr(amonth1,3,1,0);
gotoxy(48,4);
getstr(aday1,3,1,0);
iyear1 = atoi(ayear1);
imonth1 = atoi(amonth1);
iday1 = atoi(aday1);
sprintf(searchtime_begin,"%d-%02d-%02d",iyear1,imonth1,iday1);
if (strlen(ayear1)!=4||strlen(amonth1)!=2||strlen(aday1)!=2)
{
gotoxy(0,7);
printf("请按格式输入\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
if (imonth1>12||imonth1<0)
{
gotoxy(0,7);
printf("请输入正确月份\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
if (imonth1==1||imonth1==3||imonth1==5||imonth1==7||imonth1==8||imonth1==10||imonth1==12)
{
emun1=1;
}
else
{
emun1=2;
}
if (emun1==1)
{
if (iday1>31||iday1<0)
{
gotoxy(0,7);
printf("请输入正确日期\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
}
if (emun1==2)
{
if (iday1>30||iday1<0)
{
gotoxy(0,7);
printf("请输入正确日期\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
}
gotoxy(44,6);
printf("请输入结束查询年(XXXX)、月(XX)、日(XX)");
gotoxy(44,7);
printf("-");
gotoxy(47,7);
printf("-");
gotoxy(40,7);
getstr(ayear2,5,1,0);
gotoxy(45,7);
getstr(amonth2,3,1,0);
gotoxy(48,7);
getstr(aday2,3,1,0);
system("cls");
iyear2 = atoi(ayear2);
imonth2 = atoi(amonth2);
iday2 = atoi(aday2);
sprintf(searchtime_end,"%d-%02d-%02d",iyear2,imonth2,iday2);
if (strlen(ayear2)!=4||strlen(amonth2)!=2||strlen(aday2)!=2)
{
gotoxy(0,9);
printf("请按格式输入\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
if (imonth2>12||imonth2<0)
{
gotoxy(0,7);
printf("请输入正确月份\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
if (imonth2==1||imonth2==3||imonth2==5||imonth2==7||imonth2==8||imonth2==10||imonth2==12)
{
emun2=1;
}
else
{
emun2=2;
}
if (emun2==1)
{
if (iday2>31||iday2<0)
{
gotoxy(0,7);
printf("请输入正确日期\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
}
if (emun2==2)
{
if (iday2>30||iday2<0)
{
gotoxy(0,7);
printf("请输入正确日期\n按其他任意键重新输入");
getch();
system("cls");
timereserch(pTemp,rhead);
}
}
if (strncmp(searchtime_begin,searchtime_end,10)>0)
{
gotoxy(20,6);
printf("起始时间大于结束时间,请重新输入");
gotoxy(20,7);
printf("按ESC键退出系统,按其他任意键重新输入");
ch = getch();
if(ch==27)
{
exit(0);
}
system("cls");
timereserch(pTemp,rhead);
}
//
gotoxy(3,1);
printf("序号");
gotoxy(18,1);
printf("时间");
gotoxy(33,1);
printf("金额");
gotoxy(48,1);
printf("余额");
gotoxy(63,1);
printf("摘要");
gotoxy(78,1);
printf("交易发生源");
while(tmp->next != NULL)
{
tmp = tmp->next;
linshi = tmp->pData;
if (strncmp(searchtime_begin,linshi->time, 10)>=0&&strncmp(searchtime_end,linshi->time, 10)<=0)
{
if (peo->number==linshi->number1||peo->number==linshi->number2)//打印个人纪录//他是出账者或入账者
{
gotoxy(3,ypos);
printf("%d",i);//i要递增
gotoxy(18,ypos);
printf("%s",linshi->time);
gotoxy(33,ypos);
printf("%d",linshi->amount);
gotoxy(48,ypos);
printf("%d",linshi->lastmoney);
gotoxy(63,ypos);
if(linshi->rflag==1)
{
printf("存款");
}
else if(linshi->rflag==2)
{
printf("取款");
}
else if(linshi->rflag==3)
{
printf("转账转出");
}
else if(linshi->rflag==4)
{
printf("转账转入");
}
else
{
printf("erro");
}
gotoxy(78,ypos);
if(linshi->rflag==1||linshi->rflag==2)
{
printf("ATM");
}
else if(linshi->rflag==3)
{
printf("%d",linshi->number2);
}
else if(linshi->rflag==4)
{
printf("%d",linshi->number1);
}
else
{
printf("erro");
}
ypos++;
i++;
}
}
else
{
getch();
system("cls");
timereserch(pTemp,rhead);
}
printf("\n");
}
uback(pTemp,head,rhead);
}
//supermaster.h
#ifndef _SUPERMASTER_H_
#define _SUPERMASTER_H_
//系统管理员功能界面
void supermaster_face();
//管理员功能选择与执行
void supermaster_fuction_choose(POINT_T * head);
//注册新用户
void snewadd(POINT_T * head);
//超级管理员查找用户
void sfind(POINT_T * head);
//超级精确查找用户数据
void sfinded(POINT_T * head);
//分类查询
void breakfind(POINT_T * head);
//显示所有用户
void print(POINT_T * head);
//超级管理员修改用户密码//
void smodify(POINT_T *head);
//注销用户
void scancel(POINT_T * head);
//(管理员)返回上一级
void sback(POINT_T * head);
#endif
//supermaster.c
#include "public.h"
#include "other.h"
#include "supermaster.h"
//超级管理员功能界面
void supermaster_face()
{
gotoxy(8,5);
flouwer(83);
gotoxy(36,9);
printf("ATM机超级管理员功能界面");
gotoxy(43,10);
printf("版本1.0");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(8,12);
printf("您需要什么操作?");
gotoxy(8,13);
printf("按键 :1.新增用户或管理员\t2.查询人员信息\t\t3.查询所有用户");
gotoxy(15,14);
printf("4.注销用户或管理员\t5.人员密码修改\t\t6.返回登录/退出系统");
gotoxy(8,16);
flouwer(83);
gotoxy(8,17);
printf("请选择:");
}
//超级管理员操作选项
void supermaster_fuction_choose(POINT_T * head)
{
char i[1]={0};
int j=0,k=0,l=0;
int index=0;
supermaster_face();
getstr(i,2,1,0);
switch (i[0])
{
case 49:
{
system("cls");
snewadd(head);
}break;
case 50:
{
system("cls");
sfind(head);
}break;
case 51:
{
system("cls");
print(head);
} break;
case 52:
{
system("cls");
scancel(head);
}break;
case 53:
{
system("cls");
smodify(head);
}break;
case 54:
{
system("cls");
sback(head);
}break;
default :
{
gotoxy(48,15);
printf("错误指令,请重新输入");
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
supermaster_fuction_choose(head);
}break;
}
}
//开户
void snewadd(POINT_T * head)
{
char ch[12]; //用于添加用户名字
int count=0; //用于新增用户编号
char aflag[1]={0}; //添加选择
int iflag=0;
int j=0;
char pwd1[8];//密码需要满6位
char pwd2[8];
TEST_T * newadd =NULL;
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(38,10);
printf("添加 1.管理员账号 2.普通用户账号 3.算了不加了");
gotoxy(38,11);
printf("你的选择是:");
getstr(aflag,2,1,0);
iflag=atoi(aflag);
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
gotoxy(100,25);
printf("按ESC键退出系统");
if(iflag==1)
{
gotoxy(28,6);
printf("请输入新添管理员名字(限8位):");
getstr(ch,9,2,0);
gotoxy(28,10);
printf("请输入新添管理员密码(限6位):");
getstr(pwd1,7,1,1);
if (strlen(pwd1)!=6)
{
gotoxy(28,14);
printf("请设置六位数密码!");
Sleep(500);
system("cls");
gotoxy(28,4);
printf("请设置六位数密码!");
snewadd(head);
}
gotoxy(28,12);
printf("请再次输入新添管理员密码:");
getstr(pwd2,7,1,1);
}
else if(iflag==2)
{
gotoxy(28,6);
printf("请输入新添用户名字(限8位):");
getstr(ch,9,2,0);
gotoxy(28,10);
printf("请输入新添用户密码(限6位):");
getstr(pwd1,7,1,1);
if (strlen(pwd1)!=6)
{
gotoxy(28,14);
printf("请设置六位数密码!");
Sleep(500);
system("cls");
gotoxy(28,4);
printf("请设置六位数密码!");
snewadd(head);
}
gotoxy(28,12);
printf("请再次输入新添用户密码:");
getstr(pwd2,7,1,1);
}
else if(iflag==3)
{
gotoxy(48,16);
printf("请稍等···");
Sleep(1000);
system("cls");
supermaster_fuction_choose(head);
}
else
{
system("cls");
gotoxy(48,15);
printf("格式错误,请重新选择");
gotoxy(48,16);
printf("请稍等···");
Sleep(1500);
system("cls");
snewadd(head);
}
if(strcmp(pwd1,pwd2)==0)
{
newadd = (TEST_T *)malloc(sizeof(TEST_T));
if(newadd==NULL)
{
gotoxy(28,7);
printf("申请内存失败");
exit(1);
}
memset(newadd,0,sizeof(TEST_T));
count=Count(head)+10000001;
strcpy(newadd->name,ch);
strcpy(newadd->pwd,pwd1);
newadd->number=count;
newadd->flag=iflag;
newadd->money=0;
add(head,newadd);
gotoxy(28,15);
printf("添加完成");
gotoxy(28,16);
if (iflag == 1)
{
printf("用户名:%s\t账号:%d\t余额:%d\t普通管理员",newadd->name,newadd->number,newadd->money);
}
else
{
printf("用户名:%s\t账号:%d\t余额:%d\t普通用户",newadd->name,newadd->number,newadd->money);
}
List_to_file(head,fp,sizeof(TEST_T));
}
gotoxy(50,19);
printf("按键 :1、返回操作页面\t2、保存并退出");
gotoxy(50,20);
printf("你的选择是:");
scanf("%d",&j);
system("cls");
if (j==1)
{
supermaster_fuction_choose(head);
}
else
{
exit(0);
}
}
//超级管理员查找用户
void sfind(POINT_T * head)
{
char l[1]={0};
char s[1]={0};
int j=0;
system("cls");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(40,8);
printf("1、分类查询\t2、条件查询");
gotoxy(40,9);
printf("你的选择是:");
getstr(l,2,1,0);
switch(l[0])
{
case 49:
{
system("cls");
breakfind(head);
}break;
case 50:
{
gotoxy(40,11);
printf("1、依账号查询\t2、用户名模糊查询");
gotoxy(40,12);
printf("你的选择是:");
getstr(s,2,1,0);
if (s[0]=='1')
{
system("cls");
sfinded(head);
}
else if(s[0]=='2')
{
system("cls");
fuzzyreserch(head);
system("cls");
supermaster_fuction_choose(head);
}
else
{
system("cls");
sfind(head);
}
}break;
default:
{
sfind(head);
}break;
}
}
//超级精确查找用户数据
void sfinded(POINT_T * head)
{
int count=0;
char aindex[8]={0};
int iindex=0,j=0;
TEST_T * tTemp = NULL;
//这一块属于精确查询///
system("cls");
gotoxy(100,25);
printf("按ESC键退出系统");
printf("请输入查询用户卡号\n");
getstr(aindex,9,1,0);
iindex=atoi(aindex);
count=Count(head);
if(count<iindex-10000000)
{
Sleep(300);
system("cls");
gotoxy(48,13);
printf("查无此人");
gotoxy(48,14);
printf("请稍等···");
Sleep(2000);
system("cls");
supermaster_fuction_choose(head);
}
pTemp=find(head,iindex-10000000);
tTemp=pTemp->pData;
if(tTemp->flag==1)
{
gotoxy(13,7);
printf("用户名:%s\t用户账号%d\t用户余额:%d\t普通管理员",tTemp->name,tTemp->number,0);
}
else if (tTemp->flag==2)
{
gotoxy(13,7);
printf("用户名:%s\t用户账号:%d\t用户余额:%d\t普通用户",tTemp->name,tTemp->number,tTemp->money);
}
else if (tTemp->flag==0)
{
gotoxy(13,7);
printf("姓名:%s\t账号:%d\t超级管理员",tTemp->name,tTemp->number,tTemp->pwd);
}
else if (tTemp->flag==3)
{
gotoxy(13,7);
printf("用户名:%s\t用户账号:%d\t该用户已被注销",tTemp->name,tTemp->number);
}
else
{
gotoxy(13,7);
printf("该用户不存在\n");
}
gotoxy(68,27);
printf("按键:0、返回\t1、功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
//分类查询
void breakfind(POINT_T * head)
{
int ypos=15;//位置变量 //为什么被初始化成0了
int j=0;
char index[2]={0};
POINT_T * pfind=head;
TEST_T * tTmep=NULL;
gotoxy(40,10);
printf("选择查询:1、所有管理员\t2、所有活跃用户");
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(40,11);
printf("你的选择是:");
getstr(index,2,1,0);
gotoxy(3,13);
printf("用户名");
gotoxy(18,13);
printf("用户账号");
gotoxy(33,13);
printf("用户余额");
while(pfind->next!=NULL)
{
pfind=pfind->next;
tTmep=pfind->pData;
if(tTmep->flag!=3)
{
switch(index[0])
{
case 49:
{
if (tTmep->flag==1)
{
gotoxy(3,ypos);
printf("%s",tTmep->name);
gotoxy(18,ypos);
printf("%d",tTmep->number);
gotoxy(33,ypos);
printf("%d",tTmep->money);
gotoxy(48,ypos);
printf("普通管理员");
ypos++;
}
} break;
case 50:
{
if (tTmep->flag==2)
{
gotoxy(3,ypos);
printf("%s",tTmep->name);
gotoxy(18,ypos);
printf("%d",tTmep->number);
gotoxy(33,ypos);
printf("%d",tTmep->money);
gotoxy(48,ypos);
printf("普通用户");
ypos++;
}
} break;
default :
{
gotoxy(40,13);
printf("格式错误,请重新选择");
Sleep(400);
breakfind(pfind);
}break;
}
}
}
gotoxy(58,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(58,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
//超级管理员显示所有用户
void print(POINT_T * head)
{
int ypos=3;
POINT_T * pall=head;
TEST_T * tTemp=NULL;
gotoxy(3,1);
printf("用户名");
gotoxy(18,1);
printf("用户账号");
gotoxy(33,1);
printf("用户余额");
while(pall->next!=NULL)
{
pall=pall->next;
tTemp=pall->pData;
if(tTemp->flag!=3)
{
gotoxy(3,ypos);
printf("%s",tTemp->name);
gotoxy(18,ypos);
printf("%d",tTemp->number);
gotoxy(33,ypos);
printf("%d",tTemp->money);
gotoxy(48,ypos);
if (tTemp->flag==0)
{
printf("\t超级管理员\n");
}
else if (tTemp->flag==1)
{
printf("\t管理员\n");
}
else
{
printf("\t普通用户\n");
}
ypos++;
}
else
{
printf("");
}
}
sback(head);
}
//超级管理员修改用户密码
void smodify(POINT_T *head)
{
char ai[8]={0};//修改哪一个数据
int ii=0;
int j=0;//计数
char pwd1[7]; //原密码
char pwd2[7]; //修改后密码
char pwd3[7]; //二次输入密码
int count=0; //修改位置标杆
POINT_T *pNode=NULL;
POINT_T *pTemp=NULL;
TEST_T * tTemp1=NULL;
pNode=head;
pTemp=head;
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(28,4);
printf("请输入要修改的用户的账号:");
getstr(ai,9,1,0);
ii=atoi(ai);
count=Count(head);
if(count<ii-10000000||ii-10000000<=0)
{
gotoxy(28,8);
printf("查无此人");
Sleep(300);
system("cls");
smodify(pNode);
}
while(pNode->next!=NULL)
{
pNode=pNode->next;
tTemp1=pNode->pData;
if(tTemp1->number==ii)
{
if (tTemp1->flag==3)
{
gotoxy(28,8);
printf("该用户已注销,打扰了");
gotoxy(58,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(58,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==1)
{
system("cls");
supermaster_fuction_choose(head);
}
else
{
exit(0);
}
}
for(j=3;j>0;j--)
{
gotoxy(28,6);
printf("请输入原密码:");
gotoxy(52,6);
getstr(pwd1,7,1,1);
if (strcmp(pwd1,tTemp1->pwd)==0)
{
gotoxy(28,8);
printf("请输入修改后的密码:");
gotoxy(52,8);
getstr(pwd2,7,1,1);
if (strlen(pwd2)!=6)
{
gotoxy(28,14);
printf("请设置六位数密码!");
Sleep(500);
system("cls");
gotoxy(28,4);
printf("请设置六位数密码!");
smodify(head);
}
gotoxy(28,10);
printf("请再次输入修改后的密码:");
gotoxy(52,10);
getstr(pwd3,7,1,1);
if (strcmp(pwd2,pwd3)==0)
{
strcpy(tTemp1->pwd,pwd2);
if (strcmp(tTemp1->pwd,pwd2)==0)
{
gotoxy(28,12);
printf("修改完成");
gotoxy(52,12);
printf("密码为:%s", tTemp1->pwd);
List_to_file(head,fp,sizeof(TEST_T));
gotoxy(68,27);
printf("按键:0、返回\t1、功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
else
{
Sleep(200);
system("cls");
gotoxy(28,12);
printf("修改失败");
gotoxy(28,13);
printf("请稍等···");
Sleep(1000);
system("cls");
gotoxy(28,4);
printf("请输入要修改的用户的账号:");
printf("%d",ii);
}
}
else
{
gotoxy(28,12);
printf("两次密码输入不一致");
gotoxy(28,13);
printf("请稍等···");
Sleep(1000);
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,15);
flouwer(83);
gotoxy(28,1);
printf("还有%d次机会\n",j-1);
gotoxy(28,4);
printf("请输入要修改的用户的账号:");
printf("%d",ii);
}
}
else
{
system("cls");
gotoxy(28,1);
printf("密码错误,还有%d次机会\n",j-1);
gotoxy(8,3);
flouwer(83);
gotoxy(8,15);
flouwer(83);
gotoxy(28,4);
printf("请输入要修改的用户的账号:");
printf("%d",ii);
}
}
system("cls");
supermaster_fuction_choose(head);
}
}
}
//注销账号
void scancel(POINT_T * head)
{
int count=0;
char al[8]={0};//转换
int i=0,il=0,j=0;
POINT_T *pNode=NULL;
TEST_T * tTemp=NULL;
pNode=head;
Sleep(100);
system("cls");
gotoxy(8,3);
flouwer(83);
gotoxy(8,14);
flouwer(83);
gotoxy(100,25);
printf("按ESC键退出系统");
gotoxy(28,4);
printf("请输入注销用户卡号:");
getstr(al,9,1,0);
il=atoi(al);
count=Count(head);
if(count<il-10000000||il-10000000<=0)
{
gotoxy(28,8);
printf("查无此人");
Sleep(300);
system("cls");
scancel(pNode);
}
pTemp=find(pNode,il-10000000);
tTemp=pTemp->pData;
Sleep(100);
system("cls");
if (tTemp->money==0)
{
if(tTemp->flag==1||tTemp->flag==2)
{
tTemp->flag=3;
gotoxy(28,5);
printf("注销成功");
List_to_file(head,fp,sizeof(TEST_T));
gotoxy(58,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(58,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
else if(tTemp->flag==0)
{
gotoxy(28,5);
printf("不要注销自己,你会后悔\n");
gotoxy(48,27);
printf("按键:0、返回\t1、功能界面\t2、退出系统\t3、继续注销其他用户");
gotoxy(48,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==3)
{
system("cls");
scancel(head);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
else if(tTemp->flag==3)
{
gotoxy(28,5);
printf("已被注销账户\n");
gotoxy(48,27);
printf("按键:0、返回\t1、功能界面\t2、退出系统\t3、继续注销其他用户");
gotoxy(48,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==3)
{
system("cls");
scancel(head);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
else
{
gotoxy(28,5);
printf("查无此用户\n");
gotoxy(48,27);
printf("按键:0、返回\t1、功能界面\t2、退出系统\t3、继续注销其他用户");
gotoxy(48,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==3)
{
system("cls");
scancel(head);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
}
else
{
gotoxy(28,5);
printf("该用户还有存款,不予注销");
gotoxy(48,27);
printf("按键:0、返回\t1、功能界面\t2、退出系统\t3、继续注销其他用户");
gotoxy(48,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==3)
{
system("cls");
scancel(head);
}
else
{
system("cls");
supermaster_fuction_choose(head);
}
}
}
//(超级管理员)返回上一级
void sback(POINT_T * head)
{
int j=0;
gotoxy(58,27);
printf("按键:0、返回登录页面\t1、返回功能界面\t2、退出系统");
gotoxy(68,28);
printf("你的选择是:");
scanf("%d",&j);
if(j==0)
{
system("cls");
_login(head,3);
}
else if(j==2)
{
exit(0);
}
else if(j==1)
{
system("cls");
supermaster_fuction_choose(head);
}
else
{
exit(0);
}
}
标签:head,--,ATM,system,gotoxy,C语言,printf,else,cls 来源: https://blog.csdn.net/qq_43762191/article/details/116208753