ATM交界页面
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
//用户数据
typedef struct bank
{
char account;
char psw;
longmoney;
char name;
char id;
}Bank;
//节点
typedef struct node
{
Bank data;
struct node *next;
struct node *prev;
}Node;
//头指针
Node *Head=NULL;
//查找
Bank *SearchLinkList(char *paccount)
{
Node *p=Head;
if(p==NULL)
return 0;
while(p!=NULL&&strcmp((p->data).account,paccount))
p=p->next;
if(!p)
return 0;
else
return &(p->data);
}
//追加
void AppendLinkList(Bank *Data)
{
Node *pNode = (Node*)malloc(sizeof(Node));
strcpy(pNode->data.account,Data->account);
strcpy(pNode->data.psw,Data->psw);
strcpy(pNode->data.name,Data->name);
pNode->data.money=Data->money;
strcpy(pNode->data.id,Data->id);
pNode->next=NULL;
Node*p=Head;
if(p==NULL)
{
Head=pNode;
pNode->next=NULL;
pNode->prev=NULL;
}
else
{
while(p->next)
p=p->next;
p->next=pNode;
pNode->prev=p;
}
}
//删除
intDeleteLinkList(char *paccount)
{
Node *p=Head;
if(p==NULL)
return 1;
while(p!=NULL&&strcmp(p->data.account,paccount))
p=p->next;
if(!p)
return 1;
else
free(p);
return 0;
}
//读取文件里的数据并存入连表
int ReadFile()
{
FILE* fp = fopen("bank.txt","a+");
Bank *data =(Bank *) malloc(sizeof(Bank));
if(!fp)
{
printf("打开文件失败 !\n");
return -1;
}
else
{
while(1)
{
int i = fscanf(fp ,"%10s%16s%10ld%10s%18s",data->account,data->psw,&(data->money),data->name,data->id);
fscanf(fp,"%*[^\n]");
if(i==5)
AppendLinkList(data);
else
break;
}
}
free(data);
fclose(fp);
}
//将连表里的数据定写入文件
intWriteFile()
{
FILE* fp = fopen("bank.txt","w+");
if(!fp)
{
printf("打开文件失败!\n");
return -1;
}
else
{
Node* p=Head;
while(p)
{
fprintf(fp,"%10s%16s%10ld %10s %18s\n ",p->data.account,p->data.psw,p->data.money,p->data.name,p->data.id);
p=p->next;
}
}
fclose(fp);
exit(0);
}
//主界面
void welcome1()
{
printf("\n*********欢迎使用虚拟银行自动取款机**********\n");
printf("\n*********************************************\n");
printf("\n|| 请选择业务种类 ||\n");
printf("\n|| 1注册 ||\n");
printf("\n|| 2登陆 ||\n");
printf("\n|| 0退出 ||\n");
printf("\n*********************************************\n");
}
//注册用户需知界面
void welcome2()
{
printf("\n*********************************************\n");
printf("\n|| 新用户注册需知 ||\n");
printf("\n|| 1请填写真实身份 ||\n");
printf("\n|| 2存款金额不得少于100元 ||\n");
printf("\n|| 3若出现任资金丢失或信息泄漏本行概不负责 ||\n");
printf("\n|| 4若取机多吐现金请及时送还否则视为盗窃 ||\n");
printf("\n|| 继续请按1 返回请按2 退出请按0 ||\n");
printf("\n*********************************************\n");
}
//登陆成功界面
void welcome3()
{
printf("\n*********欢迎使用虚拟银行自动取款机***********\n");
printf("\n**********************************************\n");
printf("\n 登陆成功请选择业务种类 ||\n");
printf("\n 1取款 2查询 ||\n");
printf("\n 3存款 4注销 ||\n");
printf("\n 5修改密码 6返回主页面||\n");
printf("\n 退出请按0 ||\n");
printf("\n**********************************************\n");
}
//查询显示
void welcome4(Bank *Data)
{
printf("\n**************************************************\n");
printf("\n|| 您的个人信息如下 ||\n");
printf("\n|| 姓名:%10s ||\n",Data->name);
printf("\n|| 账号:%10s ||\n",Data->account);
printf("\n|| 身份证号:%18s ||\n",Data->id);
printf("\n|| 余额:%10lu元 ||\n",Data->money);
printf("\n|| 返回上级请按2 退出请按0 ||\n");
printf("\n**************************************************\n");
}
//注册函数
void reg()
{
int a=0;
char account;
char name;
char id;
char psw1;
char psw;
long Money=0;
Bank newuser;
for(;;)
{
welcome2();
printf("请选择:\n");
scanf("%d",&a);
scanf("%*[^\n]");
scanf("%*c");
if(a==1)
{
printf("请输入您的账号(10个字符以内):\n");
scanf("%s",account);
scanf("%*[^\n]");
scanf("%*c");
if(strlen(account)>10)
{
printf("\n********************************************\n");
printf("\n|| 输入有误账号不能超过10个字符 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n********************************************\n");
scanf("%d", &a);
scanf("%*[^\n]");
scanf("%*c");
if(a==1)
continue;
else if(a==2)
break;
else if(a==0)
WriteFile();
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
if(SearchLinkList(account)!=NULL)
{
printf("该账号已存在请重新输入\n");
break;
}
else
strcpy(newuser.account,account);
while(1)
{
printf("请输入您的密码(16个字符以内):\n");
scanf("%s",psw);
scanf("%*[^\n]");
scanf("%*c");
if(strlen(psw)>16)
{
printf("\n************************************************\n");
printf("\n|| 输入有误密码不能超过16个字符 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n************************************************\n");
scanf("%d", &a);
scanf("%*[^\n]");
scanf("%*c");
if(a==0)
WriteFile();
else if(a==1)
continue;
else if(a==2)
break;
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
else
{
printf("请再次输入您的密码:\n");
scanf("%s",psw1);
scanf("%*[^\n]");
scanf("%*c");
if(!strcmp(psw,psw1))
strcpy(newuser.psw,psw);
else
{
printf("\n************************************************\n");
printf("\n|| 输入有误两次密码输入不一致 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n************************************************\n");
scanf("%d", &a);
scanf("%*[^\n]");
scanf("%*c");
if(a==0)
WriteFile();
else if(a==1)
continue;
else if(a==2)
break;
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
}
break;
}
if(a==2)
break;
while(1)
{
printf("请输入您的姓名(10个字符以内):\n");
scanf("%s",name);
scanf("%*[^\n]");
scanf("%*c");
if(strlen(name)>10)
{
printf("\n************************************************\n");
printf("\n|| 输入有误姓名不能超过10个字符 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n************************************************\n");
scanf("%d", &a);
scanf("%*[^\n]");
scanf("%*c");
if(a==0)
WriteFile();
else if(a==1)
continue;
else if(a==2)
break;
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
else
strcpy(newuser.name,name);
break;
}
if(a==2)
break;
while(1)
{
printf("请输入您的身份(18个字符):\n");
scanf("%s",id);
scanf("%*[^\n]");
scanf("%*c");
if(strlen(id)!=18)
{
printf("\n************************************************\n");
printf("\n|| 输入有误身份证号必须为18个字符 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n************************************************\n");
scanf("%d", &a);
scanf("%*[^\n]");
scanf("%*c");
if(a==0)
WriteFile();
else if(a==1)
continue;
else if(a==2)
break;
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
else
strcpy(newuser.id,id);
break;
}
if(a==2)
break;
while(1)
{
printf("请输入您的存款金额(不得小于100元)\n");
scanf("%lu", &Money);
scanf("%*[^\n]");
scanf("%*c");
if(Money<100)
{
printf("\n************************************************\n");
printf("\n|| 输入有误存款金额小于100元 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n************************************************\n");
scanf("%d", &a);
if(a==0)
WriteFile();
else if(a==1)
continue;
else if(a==2)
break;
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
else
newuser.money=Money;
break;
}
AppendLinkList(&(newuser));
welcome4(&newuser);
scanf("%d",&a);
scanf("%*[^\n]");
scanf("%*c");
if(a==0)
WriteFile();
else if(a==2)
break;
else
{
printf("输入有误系统自动返回!\n");
break;
}
}
else if(a==2)
break;
else if(a==0)
WriteFile();
else
printf("输入有误系统自动返回!");
}
}
//登陆函数
void login()
{
char Account;
char Passwd;
longMoney;
Bank * User;
printf("请输入您的账号:\n");
scanf("%s",Account);
printf("请输入您的密码:\n");
scanf("%s",Passwd);
if(SearchLinkList(Account)!=NULL)
{
User=SearchLinkList(Account);
if(!strcmp(User->psw,Passwd))
{
for(;;)
{
int flg;
welcome3();
scanf("%d",&flg);
scanf("%*[^\n]");
scanf("%*c");
if(flg==1)
{
for(;;)
{
printf("请输入您的取款金额!\n");
scanf("%lu",&Money);
scanf("%*[^\n]");
scanf("%*c");
if(Money<0)
{
printf("输入有误请重新输入!\n");
continue;
}
if(User->money<Money)
{
printf("您的余额不足请重新输入!\n");
continue;
}
else
{
User->money=User->money-Money;
printf("取款成功!\n");
}
break;
}
continue;
}
else if(flg==2)
{
int a;
welcome4(User);
scanf("%d",&a);
scanf("%*[^\n]");
scanf("%*c");
if(a==0)
WriteFile();
else if(a==2)
continue;
else
printf("输入有误系统自动返回\n");
continue;
}
else if(flg==3)
{
printf("请输入您的存款金额:\n");
scanf("%lu",&Money);
scanf("%*[^\n]");
scanf("%*c");
if(Money>0)
{
User->money+=Money;
printf("存款成功!\n");
}
else
printf("输入有误系统自动返回!\n");
continue;
}
else if(flg==4)
{
if(!DeleteLinkList(Account))
{
printf("注销成功!\n");
break;
}
else
printf("注销失败系统自动返回!\n");
continue;
}
else if(flg==5)
{
while(1)
{ int b;
char psw1;
char psw;
printf("请输入您的新密码(15个字符以内):\n");
scanf("%s",psw);
scanf("%*[^\n]");
scanf("%*c");
if(strlen(psw)>16)
{
printf("\n************************************************\n");
printf("\n|| 输入有误密码不能超过16个字符 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n************************************************\n");
scanf("%d", &b);
scanf("%*[^\n]");
scanf("%*c");
if(b==0)
WriteFile();
else if(b==1)
continue;
else if(b==2)
break;
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
else
{
printf("请再次输入您的密码:\n");
scanf("%s",psw1);
scanf("%*[^\n]");
scanf("%*c");
if(!strcmp(psw,psw1))
strcpy(User->psw,psw);
else
{
printf("\n************************************************\n");
printf("\n|| 输入有误两次密码输入不一致 ||\n");
printf("\n|| 重新输入请按1 ||\n");
printf("\n|| 返回请按2 退出请按0 ||\n");
printf("\n************************************************\n");
scanf("%d", &b);
scanf("%*[^\n]");
scanf("%*c");
if(b==0)
WriteFile();
else if(b==1)
continue;
else if(b==2)
break;
else
{
printf("输入有误系统自动返回!\n");
continue;
}
}
printf("密码修改成功!\n");
break;
}
}
continue;
}
else if(flg==6)
break;
else if(flg==0)
WriteFile();
else
printf("输入有误系统自动返回!\n");
}
}
else
printf("输入密码有误请重新登陆!\n");
}
else
printf("输入账号有误请重新登陆!\n");
}
/*void init()
{
Bank wensheng;
strcpy(wensheng.name,"wensheng");
strcpy(wensheng.account,"030840910");
strcpy(wensheng.psw,"030840910");
strcpy(wensheng.id,"420983198805122414");
wensheng.money=20000000;
Bank xiaoping;
strcpy(xiaoping.name,"xiaoping");
strcpy(xiaoping.account,"030840911");
strcpy(xiaoping.psw,"030840911");
strcpy(xiaoping.id,"420983198805122415");
xiaoping.money=30000000;
AppendLinkList(&wensheng);
AppendLinkList(&xiaoping);
}
*/
//主函数
int main(void)
{
intnum;
Bank *User;
ReadFile();
// init();
for(;;)
{
welcome1();
scanf("%d",&num);
scanf("%*[^\n]");
scanf("%*c");
if(num==1)
reg();
else if(num==2)
login();
else if(num==0)
WriteFile();
else
printf("输入有误系统自动返回!(596)\n");
}
WriteFile();
return 0;
}
没看懂,是干吗用的?还是自己写的C控制台模拟ATM? 额,自几c语言写的,不是说提交原创吗》? 浩森 发表于 2013-11-12 23:40 static/image/common/back.gif
没看懂,是干吗用的?还是自己写的C控制台模拟ATM?
额,自己写c语言控制摩羯ATM,不是说提交一篇原创不就可以了吗 {:soso_e179:}你牛 Hidzom 发表于 2013-11-13 17:16 static/image/common/back.gif
你牛
彩笔一个,你猜牛
页:
[1]