|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Jianbaiyi 于 2023-6-19 16:11 编辑
注册登录功能没有实现,代码可以运行,不能把注册的账号储存在文件中,还可以注册重复账号,其他功能该怎么做到,我用的是vs studio
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#define N 100
#define M 1000
typedef struct userinfo
{
char Accont[N]; //账号
char Password[N];//密码
char ID[N]; //身份证号
char People_name[N];//用户姓名
}USER;
void MainMenu();//登录注册主菜单界面
void Sign_up_Menu();//注册菜单界面
void Log_in_Menu();//登录菜单界面
void BMainMenu();//B端主菜单界面
void CMainMenu();//C端主菜单界面
void Register_system();//用户登记注册菜单函数
void Log_in();//系统用户登录函数
void Sign_in();//新用户注册函数
int sign = 0;
char ACCOUNT[N];
int main()
{
int n;
USER user[M];
Register_system();
return 0;
}
//登录注册主菜单界面
void MainMenu()
{
system("cls");
printf("-----------------------------------\n");
printf("| |\n");
printf("|欢迎使用ofo共享单车借车系统 |\n");
printf("|1:用户登录 |\n");
printf("|2:用户注册 |\n");
printf("|0:退出系统 |\n");
printf("| |\n");
printf("-----------------------------------\n");
}
//B端主菜单界面
void BMainMenu()
{
system("cls");
printf("-----------------------------------\n");
printf("| |\n");
printf("| 请选择你需要的服务 |\n");
printf("| 1:按单车号查询 |\n");
printf("| 2:按借车时间查询 |\n");
printf("| 3:按照还车时间查询 |\n");
printf("| 4:按使用者查询 |\n");
printf("| 0:退出 |\n");
printf("| |\n");
printf("-----------------------------------\n");
}
//C端主菜单界面
void CMainMenu()
{
system("cls");
printf("-----------------------------------\n");
printf("| |\n");
printf("| 请选择你需要的服务 |\n");
printf("| 1:租车 |\n");
printf("| 2:还车 |\n");
printf("| 3:充值 |\n");
printf("| 4:余额查询 |\n");
printf("| 5:租车查询 |\n");
printf("| 0:退出 |\n");
printf("| |\n");
printf("-----------------------------------\n");
}
//注册菜单界面
void Sign_up_Menu()
{
system("cls");
printf("-----------------------------------\n");
printf("| |\n");
printf("| 请选择你需要的服务 |\n");
printf("| 1:注册账号 |\n");
printf("| 2:返回*用户登录注册界面* |\n");
printf("| 0:退出 |\n");
printf("| |\n");
printf("-----------------------------------\n");
}
//登录菜单界面
void Log_in_Menu()
{
system("cls");
printf("-----------------------------------\n");
printf("| |\n");
printf("| 请选择你需要的服务 |\n");
printf("| 1:登录账号 |\n");
printf("| 2:返回*用户登录注册界面* |\n");
printf("| 0:退出 |\n");
printf("| |\n");
printf("-----------------------------------\n");
}
//用户登记注册函数菜单
void Register_system()
{
int select;
MainMenu();
scanf_s("%d", &select);
switch (select)
{
case 0:
printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
exit(0);
case 1:
Log_in();
return;
case 2:
Sign_in();
return;
default:
printf("\n输入错误,输入任意键返回 *登录注册主菜单界面* ...\n");
scanf_s("%*c%*c");
system("cls");
Register_system();
return;
}
}
//新用户注册函数
void Sign_in()
{
int select;
char Accont[N], Password1[N], Password2[N], ID[N], People_name[N];
FILE* fp;
Sign_up_Menu();
if (fopen_s(&fp, "userinfo.dat", "r") != 0)
{
printf("无法找到该文件\n");
exit(0);
}
fclose(fp);
scanf_s("%d", &select);
switch (select)
{
case 1:
while (1)
{
FILE* fp;
int i;
char Accont1[N], password1[N], ID[N], People_name[N];
int sign1 = 0;
system("cls");
printf("请输入注册账号(九位数数字):\n");
scanf_s("%s", Accont, N);
if (fopen_s(&fp, "userinfo.dat", "r") != 0)
{
printf("无法找到该文件\n");
exit(0);
}
for (i = 0; Accont[i] != '\0'; i++) // 检查是否为九位账号
{
if (isdigit(Accont[i]) == 0) // 检查账号是否为数字账号
{
sign1 = 1; break;
}
}
if (i >= 10 || sign1 == 1 || i < 9)
{
sign1 = 1;
printf("未按要求注册账号,请重新注册! \n");
printf("\n输入任意键返回 *新用户注册界面* ...\n");
scanf_s("%*c%*c");
fflush(stdin);
Sign_in();
return;
}
while (!feof(fp))
{
fscanf_s(fp, "%s %s %s %s", &Accont1, &password1, &ID, &People_name);
if (strcmp(Accont, Accont1) == 0)
{
fclose(fp);
printf("该账号已被注册,请重新注册!\n");
printf("\n输入任意键返回 *新用户注册界面* ...\n");
scanf_s("%*c%*c");
sign1 = 1;
fflush(stdin);
Sign_in();
return;
}
}
fclose(fp);
if (i == 9 && sign1 == 0)
{
printf("注册账号符合要求。\n");
break;
}
}
if (fopen_s(&fp, "userinfo.dat", "a") != 0)
{
printf("无法找到该文件\n");
exit(0);
}
printf("请输入你的身份证号:\n");
scanf_s("%s", ID, N);
printf("请输入你的姓名:\n");
scanf_s("%s", People_name, N);
printf("请输入账号密码:\n");
scanf_s("%s", Password1, N);
printf("请再次输入密码:\n");
scanf_s("%s", Password2, N);
if (strcmp(Password1, Password2) == 0)
{
fprintf(fp, "\n%s %s %s %s\n", Accont, Password1, ID, People_name);
fclose(fp);
printf("****新用户创建成功( ̄▽ ̄)**** \n");
printf("\n输入任意键返回 *登录注册主菜单界面* ...\n");
scanf_s("%*c%*c");
system("cls");
MainMenu();
return;
}
else
{
fflush(stdin);
printf("\n****两次输入密码不一致!!!! 请重新注册****\n");
printf("\n输入任意键返回 *系统用户注册界面* ...\n");
scanf_s("%*c%*c");
Sign_in();
return;
}
case 2:
printf("\n按任意键返回*用户登录注册界面*\n");
scanf_s("%*c%*c");
system("cls");
Register_system();
return;
case 0:
printf("\n成功退出系统!期待你的下次使用O(∩_∩)O,祝你生活愉快!\n");
exit(0);
default:
printf("\n输入错误,无该菜单,输入任意键返回 *系统用户注册界面* ...\n");
scanf_s("%*c%*c");
system("cls");
Sign_in();
return;
}
}
//系统用户登录函数
void Log_in()
{
int select;
char Accont[N], Password[N];
char Accont1[N], Password1[N], ID1[N], People_name1[N];
FILE* fp;
if (fopen_s(&fp, "userinfo.dat", "a") != 0)
{
printf("无法找到该文件\n");
exit(0);
}
fclose(fp);
Log_in_Menu();
scanf_s("%d", &select);
switch (select)
{
case 1:
if (fopen_s(&fp, "userinfo.dat", "r") != 0)
{
printf("无法找到该文件\n");
exit(0);
}
printf("请输入账号:\n");
scanf_s("%s", Accont, N);
printf("请输入密码:\n");
scanf_s("%s", Password, N);
while (!feof(fp))
{
fscanf_s(fp, "%s %s", Accont1, Password1);
if (strcmp(Accont, "000000") == 0 && strcmp(Password, "000000") == 0)
{
sign = 1; //系统管理员标识符
fclose(fp);
printf("账号登录成功!!尊敬的无敌帅气管理员欢迎你使用\n *欢迎主子使用ofo共享单车借车系统* \n");
printf("\n输入任意键前往 *系统管理员功能菜单界面* ...\n");
scanf_s("%*c%*c");
return;
}
if (strcmp(Accont, Accont1) == 0 && strcmp(Password, Password1) == 0)
{
strcpy_s(ACCOUNT, Accont);
sign = 2; //普通用户标识符
fclose(fp);
printf("账号登录成功!!尊敬的用户欢迎你使用 *欢迎使用ofo共享单车借车系统*\n");
printf("\n输入任意键前往 *系统用户功能菜单界面* ...\n");
scanf_s("%*c%*c");
}
}
case 2:
printf("\n按任意键返回*用户登录注册界面*\n");
scanf_s("%*c%*c");
system("cls");
Register_system();
return;
case 0:
printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
exit(0);
default:
printf("\n输入错误,输入任意键返回 *登录菜单界面* ...\n");
scanf_s("%*c%*c");
system("cls");
Log_in();
}
if (sign == 0)
{
printf("账号密码错误!! 请重新输入......\n");
printf("如若忘记账号密码,请联系管理员\n");
printf("\n输入任意键返回 *系统用户登录界面* ...\n");
scanf_s("%*c%*c");
Log_in();
return;
}
}
修改后的代码 - #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <time.h>
- #define N 100
- #define M 1000
- typedef struct userinfo
- {
- char Account[N]; // 账号
- char Password[N]; // 密码
- char ID[N]; // 身份证号
- char People_name[N]; // 用户姓名
- } USER;
- void MainMenu();
- void Sign_up_Menu();
- void Log_in_Menu();
- void Register_system();
- void Log_in();
- void Sign_in();
- int checkDuplicateAccount(const char* account);
- int main()
- {
- Register_system();
- return 0;
- }
- void MainMenu()
- {
- system("cls");
- printf("-----------------------------------\n");
- printf("| |\n");
- printf("| 欢迎使用ofo共享单车借车系统 |\n");
- printf("| 1:用户登录 |\n");
- printf("| 2:用户注册 |\n");
- printf("| 0:退出系统 |\n");
- printf("| |\n");
- printf("-----------------------------------\n");
- }
- void Sign_up_Menu()
- {
- system("cls");
- printf("-----------------------------------\n");
- printf("| |\n");
- printf("| 请选择你需要的服务 |\n");
- printf("| 1:注册账号 |\n");
- printf("| 2:返回用户登录注册界面 |\n");
- printf("| 0:退出 |\n");
- printf("| |\n");
- printf("-----------------------------------\n");
- }
- void Register_system()
- {
- int select;
- MainMenu();
- scanf("%d", &select);
- switch (select)
- {
- case 0:
- printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
- exit(0);
- case 1:
- Log_in();
- return;
- case 2:
- Sign_in();
- return;
- default:
- printf("\n输入错误,输入任意键返回登录注册主菜单界面...\n");
- fflush(stdin);
- getchar();
- system("cls");
- Register_system();
- return;
- }
- }
- void Sign_in()
- {
- int select;
- char Account[N], Password1[N], Password2[N], ID[N], People_name[N];
- FILE* fp;
- Sign_up_Menu();
- if (fopen_s(&fp, "userinfo.dat", "a") != 0)
- {
- printf("无法找到该文件\n");
- exit(0);
- }
- fclose(fp);
- scanf("%d", &select);
- switch (select)
- {
- case 1:
- while (1)
- {
- FILE* fp;
- int i;
- char Account1[N], password1[N], ID[N], People_name[N];
- int sign1 = 0;
- system("cls");
- printf("请输入注册账号(九位数数字):\n");
- scanf("%s", Account);
- if (fopen_s(&fp, "userinfo.dat", "r") != 0)
- {
- printf("无法找到该文件\n");
- exit(0);
- }
- for (i = 0; Account[i] != '\0'; i++) // 检查是否为九位账号
- {
- if (!isdigit(Account[i])) // 检查账号是否为数字账号
- {
- sign1 = 1;
- break;
- }
- }
- if (i >= 10 || sign1 == 1 || i < 9)
- {
- sign1 = 1;
- printf("未按要求注册账号,请重新注册! \n");
- printf("\n输入任意键返回新用户注册界面...\n");
- fflush(stdin);
- getchar();
- Sign_in();
- return;
- }
- while (!feof(fp))
- {
- fscanf_s(fp, "%s %s %s %s", Account1, password1, ID, People_name);
- if (strcmp(Account, Account1) == 0)
- {
- fclose(fp);
- printf("该账号已被注册,请重新注册!\n");
- printf("\n输入任意键返回新用户注册界面...\n");
- fflush(stdin);
- getchar();
- sign1 = 1;
- Sign_in();
- return;
- }
- }
- fclose(fp);
- if (i == 9 && sign1 == 0)
- {
- printf("注册账号符合要求。\n");
- break;
- }
- }
- if (fopen_s(&fp, "userinfo.dat", "a") != 0)
- {
- printf("无法找到该文件\n");
- exit(0);
- }
- printf("请输入你的身份证号:\n");
- scanf("%s", ID);
- printf("请输入你的姓名:\n");
- scanf("%s", People_name);
- printf("请输入账号密码:\n");
- scanf("%s", Password1);
- printf("请再次输入密码:\n");
- scanf("%s", Password2);
- if (strcmp(Password1, Password2) == 0)
- {
- fprintf(fp, "%s %s %s %s\n", Account, Password1, ID, People_name);
- fclose(fp);
- printf("新用户创建成功( ̄▽ ̄) \n");
- printf("\n输入任意键返回登录注册主菜单界面...\n");
- fflush(stdin);
- getchar();
- system("cls");
- MainMenu();
- return;
- }
- else
- {
- fflush(stdin);
- printf("\n两次输入密码不一致!!!! 请重新注册\n");
- printf("\n输入任意键返回系统用户注册界面...\n");
- fflush(stdin);
- getchar();
- Sign_in();
- return;
- }
- case 2:
- printf("\n按任意键返回用户登录注册界面\n");
- fflush(stdin);
- getchar();
- system("cls");
- Register_system();
- return;
- case 0:
- printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
- exit(0);
- default:
- printf("\n输入错误,无该菜单,输入任意键返回系统用户注册界面...\n");
- fflush(stdin);
- getchar();
- system("cls");
- Sign_in();
- return;
- }
- }
- void Log_in()
- {
- int select;
- char Account[N], Password[N];
- char Account1[N], Password1[N], ID1[N], People_name1[N];
- FILE* fp;
- if (fopen_s(&fp, "userinfo.dat", "a") != 0)
- {
- printf("无法找到该文件\n");
- exit(0);
- }
- fclose(fp);
- Log_in_Menu();
- scanf("%d", &select);
- switch (select)
- {
- case 1:
- if (fopen_s(&fp, "userinfo.dat", "r") != 0)
- {
- printf("无法找到该文件\n");
- exit(0);
- }
- printf("请输入账号:\n");
- scanf("%s", Account);
- printf("请输入密码:\n");
- scanf("%s", Password);
- while (!feof(fp))
- {
- fscanf_s(fp, "%s %s", Account1, Password1);
- if (strcmp(Account, "000000") == 0 && strcmp(Password, "000000") == 0)
- {
- sign = 1; // 系统管理员标识符
- fclose(fp);
- printf("账号登录成功!尊敬的管理员欢迎你使用\n");
- printf("\n输入任意键前往系统管理员功能菜单界面...\n");
- fflush(stdin);
- getchar();
- return;
- }
- if (strcmp(Account, Account1) == 0 && strcmp(Password, Password1) == 0)
- {
- strcpy_s(ACCOUNT, Account);
- sign = 2; // 普通用户标识符
- fclose(fp);
- printf("账号登录成功!尊敬的用户欢迎你使用\n");
- printf("\n输入任意键前往系统用户功能菜单界面...\n");
- fflush(stdin);
- getchar();
- }
- }
- break;
- case 2:
- printf("\n按任意键返回用户登录注册界面\n");
- fflush(stdin);
- getchar();
- system("cls");
- Register_system();
- return;
- case 0:
- printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
- exit(0);
- default:
- printf("\n输入错误,输入任意键返回登录菜单界面...\n");
- fflush(stdin);
- getchar();
- system("cls");
- Log_in();
- return;
- }
- if (sign == 0)
- {
- printf("账号密码错误,请重新输入\n");
- printf("如若忘记账号密码,请联系管理员\n");
- printf("\n输入任意键返回系统用户登录界面...\n");
- fflush(stdin);
- getchar();
- Log_in();
- return;
- }
- }
复制代码
|
|