|
|
|
@ -0,0 +1,405 @@
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
#include<string.h>
|
|
|
|
|
#include<stdlib.h>
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
void welcome();/*用户界面*/
|
|
|
|
|
void admini();/*管理员界面*/
|
|
|
|
|
void creat();/*创建函数*/
|
|
|
|
|
void baocun(int m);/*保存函数*/
|
|
|
|
|
void search();/*查询函数*/
|
|
|
|
|
void search_name();/*按姓名查找函数*/
|
|
|
|
|
void search_account();/*按账号查找函数*/
|
|
|
|
|
void change(); /*修改函数*/
|
|
|
|
|
int daoru(); /*导入函数*/
|
|
|
|
|
void liulan(); /*浏览函数*/
|
|
|
|
|
void yonghu();/*用户功能*/
|
|
|
|
|
void shanchu();/*删除函数*/
|
|
|
|
|
void zengjia();/*增加函数*/
|
|
|
|
|
struct user
|
|
|
|
|
{
|
|
|
|
|
char name[20];
|
|
|
|
|
char id[100];
|
|
|
|
|
char account[100];
|
|
|
|
|
char password[20];
|
|
|
|
|
int balance=0;
|
|
|
|
|
}user[500];
|
|
|
|
|
int main(void)
|
|
|
|
|
{
|
|
|
|
|
int num;
|
|
|
|
|
printf("请选择序号\n");
|
|
|
|
|
printf("****1.用户功能****\n****2.管理员功能****\n");
|
|
|
|
|
scanf("%d",&num);
|
|
|
|
|
switch(num)
|
|
|
|
|
{
|
|
|
|
|
case 1:yonghu();break;
|
|
|
|
|
case 2:admini();break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void admini()
|
|
|
|
|
{
|
|
|
|
|
system("color f5");
|
|
|
|
|
int num;
|
|
|
|
|
printf("请输入序号\n");
|
|
|
|
|
printf("**** 0.首次创建用户 ****\n");
|
|
|
|
|
printf("**** 1.查询用户信息 ****\n");
|
|
|
|
|
printf("**** 2.修改用户信息 ****\n");
|
|
|
|
|
printf("**** 3.删除用户 ****\n");
|
|
|
|
|
printf("**** 4.增加用户 ****\n");
|
|
|
|
|
printf("**** 5.返回主菜单 ****\n");
|
|
|
|
|
scanf("%d",&num);
|
|
|
|
|
switch(num)
|
|
|
|
|
{
|
|
|
|
|
case 0:creat();break;
|
|
|
|
|
case 1:search();break;
|
|
|
|
|
case 2:change();break;
|
|
|
|
|
case 3:shanchu();break;
|
|
|
|
|
case 4:zengjia();break;
|
|
|
|
|
case 5:main();break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void yonghu()
|
|
|
|
|
{
|
|
|
|
|
system("color f4");
|
|
|
|
|
char account1[100],password1[20];
|
|
|
|
|
int i,n,balance1,balance2;
|
|
|
|
|
int m=daoru();
|
|
|
|
|
printf("请登录输入账号\n");
|
|
|
|
|
scanf("%s",account1);
|
|
|
|
|
for(i=0;i<m;i++);
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(account1,user[i-1].account)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入密码\n");
|
|
|
|
|
scanf("%s",password1);
|
|
|
|
|
if(strcmp(password1,user[i-1].password)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("登陆成功\n");
|
|
|
|
|
printf("存款请按1,取款请按2");
|
|
|
|
|
scanf("%d",&n);
|
|
|
|
|
switch(n)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
printf("请输入存款余额:\n");
|
|
|
|
|
scanf("%d",&balance1);
|
|
|
|
|
user[i].balance=user[i].balance+balance1;
|
|
|
|
|
baocun(m);
|
|
|
|
|
printf("存款成功\n");
|
|
|
|
|
printf("您的余额为:%d",user[i].balance);
|
|
|
|
|
printf("\n");
|
|
|
|
|
main();break;
|
|
|
|
|
case 2:
|
|
|
|
|
printf("请输入取款余额\n");
|
|
|
|
|
scanf("%d",&balance2);
|
|
|
|
|
user[i].balance=user[i].balance-balance2;
|
|
|
|
|
baocun(m);printf("取款成功");printf("您的余额为:%d",user[i].balance);
|
|
|
|
|
printf("\n");
|
|
|
|
|
main();break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
printf("登录失败");main();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
printf("登录失败");main();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void creat()
|
|
|
|
|
{
|
|
|
|
|
int i,m;
|
|
|
|
|
printf("请输入需要创建信息的用户人数(1--500):\n");
|
|
|
|
|
scanf("%d",&m);
|
|
|
|
|
for (i=0;i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入用户姓名: ");
|
|
|
|
|
scanf("%s",&user[i].name);
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("请输入身份证号码: ");
|
|
|
|
|
scanf("%s",&user[i].id);
|
|
|
|
|
printf("请输入用户账号: ");
|
|
|
|
|
scanf("%s",&user[i].account);
|
|
|
|
|
printf("请输入用户密码: ");
|
|
|
|
|
scanf("%s",&user[i].password);
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("\n一个用户的信息档案创建完毕!请输入下一个用户的信息\n");
|
|
|
|
|
}
|
|
|
|
|
baocun(m);
|
|
|
|
|
main();
|
|
|
|
|
}
|
|
|
|
|
void search()/*查询函数*/
|
|
|
|
|
{
|
|
|
|
|
int x,y;
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
printf("\n按账号查询请按1\n ; 按姓名查询请按2\n ; 进入主函数按3\n");
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
if(x>=1&&x<=3)
|
|
|
|
|
{
|
|
|
|
|
y=1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
y=0;
|
|
|
|
|
printf("您输入有误,请重新选择!\n");
|
|
|
|
|
}
|
|
|
|
|
}while(y==0);system("cls");
|
|
|
|
|
while(y==1)
|
|
|
|
|
{
|
|
|
|
|
switch(x)
|
|
|
|
|
{
|
|
|
|
|
case 1:printf("按账号查询\n");search_account();;break;
|
|
|
|
|
case 2:printf("按姓名查询\n");search_name();break;
|
|
|
|
|
case 3:system("cls");
|
|
|
|
|
main();break;
|
|
|
|
|
default:break;
|
|
|
|
|
}
|
|
|
|
|
system("cls");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void search_name()/*按姓名查找函数*/
|
|
|
|
|
{
|
|
|
|
|
char name1[10];
|
|
|
|
|
int i,t;
|
|
|
|
|
int m=daoru();
|
|
|
|
|
printf("请输入要查找的姓名:\n");
|
|
|
|
|
scanf("%s",name1);
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
if(strcmp(name1,user[i].name)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n已找到此人,其记录为:\n");
|
|
|
|
|
printf("名字:%s\n账号:%s\n",user[i].name,user[i].account);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(i==m)
|
|
|
|
|
printf("\n对不起,查无此人\n");
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("返回查询函数请按1\n,继续查询账号请按2\n");
|
|
|
|
|
scanf("%d",&t);
|
|
|
|
|
switch(t)
|
|
|
|
|
{
|
|
|
|
|
case 1:search();break;
|
|
|
|
|
case 2: break;
|
|
|
|
|
default:break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void search_account()/*按账号查找函数*/
|
|
|
|
|
{
|
|
|
|
|
char account1[10];
|
|
|
|
|
int i,t;
|
|
|
|
|
int m=daoru();
|
|
|
|
|
printf("请输入要查找的账号:\n");
|
|
|
|
|
scanf("%s",account1);
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
if(strcmp(account1,user[i].account)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n已找到此人,其记录为:\n");
|
|
|
|
|
printf("名字:%s\n账号:%s\n",user[i].name,user[i].account);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(i==m)
|
|
|
|
|
printf("\n对不起,查无此人\n");
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("返回查询函数请按1\n,继续查询请按2\n");
|
|
|
|
|
scanf("%d",&t);
|
|
|
|
|
switch(t)
|
|
|
|
|
{
|
|
|
|
|
case 1:search();break;
|
|
|
|
|
case 2: break;
|
|
|
|
|
default:break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void change() /*修改函数*/
|
|
|
|
|
{
|
|
|
|
|
char name[20];
|
|
|
|
|
char sex;
|
|
|
|
|
char id[100];
|
|
|
|
|
char account[100];
|
|
|
|
|
char password[20];
|
|
|
|
|
int i,f,n,c,x,a;
|
|
|
|
|
char num[100];
|
|
|
|
|
int m=daoru(); /*导入文件内的信息*/
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("请输入要修改的用户的姓名:\n");
|
|
|
|
|
scanf("%s",name);
|
|
|
|
|
for(f=1,i=0;f&&i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(user[i].name,name)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n已找到此人,原始记录为:\n");
|
|
|
|
|
printf("名字:%s\n账号:%s\n",user[i].name,user[i].account);
|
|
|
|
|
printf("\n确实要修改此人信息请按1\n ; 不修改请按0\n");
|
|
|
|
|
scanf("%d",&n);
|
|
|
|
|
if(n==1)
|
|
|
|
|
{
|
|
|
|
|
printf("\n需要进行修改的选项\n 1.账号2.姓名 3.密码\n");
|
|
|
|
|
printf("请输入你想修改的那一项序号:\n");
|
|
|
|
|
scanf("%d",&c);
|
|
|
|
|
if(c>3||c<1)
|
|
|
|
|
printf("\n选择错误,请重新选择!\n");
|
|
|
|
|
}
|
|
|
|
|
f=0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(f==1)
|
|
|
|
|
printf("\n对不起,查无此人!\n");
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
switch(c)
|
|
|
|
|
{
|
|
|
|
|
case 1:printf("账号改为: ");
|
|
|
|
|
scanf("%s",&num);
|
|
|
|
|
strcpy(user[i-1].account,num);
|
|
|
|
|
break;
|
|
|
|
|
case 2:printf("姓名改为: ");
|
|
|
|
|
scanf("%s",name);
|
|
|
|
|
strcpy(user[i-1].name,name);
|
|
|
|
|
break;
|
|
|
|
|
case 3:printf("密码改为");
|
|
|
|
|
scanf("%s",password);
|
|
|
|
|
strcpy(user[i-1].password,password);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("\n是否确定所修改的信息?\n 是 请按1 ; \n不,重新修改 请按2: \n");
|
|
|
|
|
scanf("%d",&a);
|
|
|
|
|
}
|
|
|
|
|
while(a==2);
|
|
|
|
|
printf("\n浏览修改后的所有用户信息:\n");
|
|
|
|
|
printf("\n");
|
|
|
|
|
baocun(m);
|
|
|
|
|
liulan();
|
|
|
|
|
printf("\n继续修改请按1,不再修改请按0\n");
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
switch(x)
|
|
|
|
|
{
|
|
|
|
|
case 1:change();break;
|
|
|
|
|
case 0:break;
|
|
|
|
|
default :break;
|
|
|
|
|
}system("cls");
|
|
|
|
|
}
|
|
|
|
|
void baocun(int m) /*保存文件函数*/
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
FILE *fp;
|
|
|
|
|
if ((fp=fopen("D:\\user_list.txt","wb"))==NULL)
|
|
|
|
|
{
|
|
|
|
|
printf ("此文件不能打开\n");
|
|
|
|
|
exit(0);
|
|
|
|
|
}
|
|
|
|
|
for (i=0;i<m;i++)
|
|
|
|
|
if (fwrite(&user[i],sizeof(struct user),1,fp)!=1)
|
|
|
|
|
printf("file write error\n");
|
|
|
|
|
fclose(fp);
|
|
|
|
|
}
|
|
|
|
|
int daoru() /*导入函数*/
|
|
|
|
|
{
|
|
|
|
|
FILE*fp;
|
|
|
|
|
int i=0;
|
|
|
|
|
if((fp=fopen("D:\\user_list.txt","rb"))==NULL)
|
|
|
|
|
{
|
|
|
|
|
printf ("cannot open file\n");
|
|
|
|
|
exit(0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
fread(&user[i],sizeof(struct user),1,fp);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
while(feof(fp)==0);
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
return(i-1);
|
|
|
|
|
}
|
|
|
|
|
void liulan() /*浏览函数*/
|
|
|
|
|
{
|
|
|
|
|
int i,j;
|
|
|
|
|
int m=daoru();
|
|
|
|
|
printf("\n账户号\t姓名\n");
|
|
|
|
|
for(i=0;i<m;i++)
|
|
|
|
|
printf("\n %s\t%s\n",user[i].account,user[i].name);
|
|
|
|
|
printf("按任意键继续\n");
|
|
|
|
|
getchar();
|
|
|
|
|
getchar();system("cls");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void shanchu() /*删除函数*/
|
|
|
|
|
{
|
|
|
|
|
int m=daoru();
|
|
|
|
|
int i,j,n,x,y,e;
|
|
|
|
|
char account1[100];
|
|
|
|
|
printf("\n 原来的用户信息:\n");
|
|
|
|
|
liulan();
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("请输入要删除的用户的账号:\n");
|
|
|
|
|
scanf("%s",account1);
|
|
|
|
|
for(y=1,i=0;y&&i<m;i++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(user[i].account,account1)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("\n已找到此人,原始记录为:\n");
|
|
|
|
|
printf("\n账户号\t姓名\n");
|
|
|
|
|
printf("\n %s\t%s\n",user[i].account,user[i].name);
|
|
|
|
|
printf("\n确实要删除此人信息请按1,不删除请按0\n");
|
|
|
|
|
scanf("%d",&n);
|
|
|
|
|
if(n==1)
|
|
|
|
|
{
|
|
|
|
|
for(j=i;j<m-1;j++)
|
|
|
|
|
{
|
|
|
|
|
user[j]=user[j+1];
|
|
|
|
|
}
|
|
|
|
|
y=0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(y==0)
|
|
|
|
|
m=m-1;
|
|
|
|
|
else
|
|
|
|
|
printf("\n对不起,查无此人!\n");
|
|
|
|
|
printf("\n 浏览删除后的所有用户信息:\n");
|
|
|
|
|
baocun(m);
|
|
|
|
|
liulan();
|
|
|
|
|
printf("\n继续删除请按0,不再删除请按1\n");
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
switch(x)
|
|
|
|
|
{
|
|
|
|
|
case 0:shanchu();break;
|
|
|
|
|
case 1:break;
|
|
|
|
|
default :break;
|
|
|
|
|
}system("cls");main();
|
|
|
|
|
}
|
|
|
|
|
void zengjia()
|
|
|
|
|
{
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int x,num=0,i;
|
|
|
|
|
int m=daoru();
|
|
|
|
|
printf("\n 原来的用户信息:\n");
|
|
|
|
|
liulan();
|
|
|
|
|
fp=fopen("D:\\user_list.txt","a");
|
|
|
|
|
printf("请输入新加的用户数量");
|
|
|
|
|
scanf("%d",&x);
|
|
|
|
|
for(i=m;i<(x+m);i++)
|
|
|
|
|
{
|
|
|
|
|
printf("请输入用户姓名: ");
|
|
|
|
|
scanf("%s",&user[i].name);
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("请输入身份证号码: ");
|
|
|
|
|
scanf("%s",&user[i].id);
|
|
|
|
|
printf("请输入用户账号: ");
|
|
|
|
|
scanf("%s",&user[i].account);
|
|
|
|
|
printf("请输入用户密码: ");
|
|
|
|
|
scanf("%s",&user[i].password);
|
|
|
|
|
num=num+1;
|
|
|
|
|
system("cls");
|
|
|
|
|
}
|
|
|
|
|
m=m+num;
|
|
|
|
|
printf("\n浏览所有用户信息\n");
|
|
|
|
|
baocun(m);
|
|
|
|
|
liulan();
|
|
|
|
|
fclose(fp);main();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|