学生信息管理系统
整个代码C实现,利用链表实现学生信息和账户信息的增删改查。
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define USR_NAME_LEN 30
#define USR_PWD_LEN 30
#define COURSE_NUM 3
#define USR_ACCOUNT_LOC 50
#define USR_INFO_LOC 50
enum { ADMIN, GUEST }; //管理员 0, 客户 1
typedef int USR_ROLE; //用户角色
//账号
typedef struct usr_account_tag
{
char usr_name[USR_NAME_LEN]; //用户姓名
char usr_pwd[USR_PWD_LEN]; //用户密码
USR_ROLE usr_role; //角色
struct usr_account_tag *pNext_Usr_Account;
}USR_ACCOUNT, *pUSR_ACCOUNT;
//课程
typedef struct course
{
int course_id;
double course_score;
}COURSE, *pCOURSE;
//学生信息
typedef struct usr_infor_tag
{
int usr_id;
char usr_name[USR_NAME_LEN];
COURSE course[COURSE_NUM];
struct usr_infor_tag *pNext_Usr_Infor;
}USR_INFOR, *pUSR_INFOR;
void system_init(const char* config_file_name, pUSR_ACCOUNT *pUsr_Acount, pUSR_INFOR *pUsr_Infor);
USR_ROLE role_confirm(pUSR_ACCOUNT pUsr_Account);
void show_system_menu(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List, pUSR_INFOR *ppUsr_Infor_List);
void show_search_menu(USR_ROLE role, pUSR_INFOR pUsr_Infor_List);
//查找学生信息
void search_usr_infor_all(pUSR_INFOR pUsr_Infor_List);
void search_usr_infor_by_name(pUSR_INFOR pUsr_Infor_List);
void search_usr_infor_by_id(pUSR_INFOR pUsr_Infor_List);
//增删改学生信息
void add_usr_infor(USR_ROLE role, pUSR_INFOR *ppUsr_Infor_List);
void upt_usr_infor(USR_ROLE role, pUSR_INFOR *ppUsr_Infor_List);
void del_usr_infor(USR_ROLE role, pUSR_INFOR *ppUsr_Infor_List);
//更新学生信息到文件
void save_usr_infor_file(pUSR_INFOR *ppUsr_Infor_List);
//增删改用户信息
void add_usr_account(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List);
void upt_usr_account(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List);
void del_usr_account(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List);
//更新账户信息到文件
void save_usr_account_file(pUSR_ACCOUNT *ppUsr_Acount_List);
//查找用户信息
void search_usr_account(USR_ROLE role, pUSR_ACCOUNT pUsr_Acount_List);
void system_exit();
SIMS.c
#include "SIMS.h"
extern char usr_account_loc[USR_ACCOUNT_LOC]; //账户文件地址
extern char usr_info_loc[USR_INFO_LOC] ; //学生信息文件地址
//系统初始化函数。初始化内存中的学生信息链表和账号列表
void system_init(const char* config_file_name, pUSR_ACCOUNT *ppUsr_Acount, pUSR_INFOR *ppUsr_Infor)
{
FILE *fp;
fp = fopen(config_file_name, "r");
if (NULL == fp)
{
perror("fopen");
return;
}
//usr_account_loc[USR_ACCOUNT_LOC] = { 0 }; //账户文件地址
//usr_info_loc[USR_INFO_LOC] = { 0 }; //学生信息文件地址
fscanf(fp, "%s", usr_account_loc);
fscanf(fp, "%s", usr_info_loc);
fclose(fp); //关闭配置文件
FILE *fp_usr_account;
FILE *fp_usr_info;
fp_usr_account = fopen(usr_account_loc, "r");
if (NULL == fp_usr_account)
{
perror("fopen:user_account.txt");
return;
}
//读取usr_account文件信息
//加载文件信息到链表,插到链表尾部
USR_ACCOUNT usr_account;
while (memset(&usr_account, 0, sizeof(USR_ACCOUNT)), fscanf(fp, "%s %s%d", usr_account.usr_name, usr_account.usr_pwd, &usr_account.usr_role) != EOF)
{
pUSR_ACCOUNT pNew = (pUSR_ACCOUNT)calloc(1, sizeof(USR_ACCOUNT));
strcpy(pNew->usr_name, usr_account.usr_name);
strcpy(pNew->usr_pwd, usr_account.usr_pwd);
pNew->usr_role = usr_account.usr_role;
pNew->pNext_Usr_Account = NULL;
if (NULL == *ppUsr_Acount)
{
*ppUsr_Acount = pNew;
}
else
{
pUSR_ACCOUNT pCur = *ppUsr_Acount, pPre = *ppUsr_Acount;
while (pCur)
{
pPre = pCur;
pCur = pCur->pNext_Usr_Account;
}
pPre->pNext_Usr_Account = pNew;
}
}
fclose(fp_usr_account); //关闭usr_account文件
fp_usr_info = fopen(usr_info_loc, "r");
if (NULL == fp_usr_info)
{
perror("fopen");
return;
}
//读取usr_infor文件信息
//加载文件信息到链表,按照序号利用有序插法插入链表
USR_INFOR usr_infor;
while (memset(&usr_infor, 0, sizeof(USR_INFOR)),
fscanf(fp_usr_info, "%d%s",&usr_infor.usr_id, usr_infor.usr_name)!= EOF)
{
pUSR_INFOR pNew = (pUSR_INFOR)calloc(1, sizeof(USR_INFOR));
pNew->usr_id = usr_infor.usr_id;
strcpy(pNew->usr_name, usr_infor.usr_name);
pNew->pNext_Usr_Infor = NULL;
for (int i = 0; i < COURSE_NUM; i++)
{
fscanf(fp_usr_info, "%d%lf", &pNew->course[i].course_id, &pNew->course[i].course_score);
}
pUSR_INFOR pCur = *ppUsr_Infor;
pUSR_INFOR pPre = *ppUsr_Infor;
if (NULL == *ppUsr_Infor)
{
*ppUsr_Infor = pNew;
}
else if (usr_infor.usr_id < pCur->usr_id)
{
pNew->pNext_Usr_Infor = pCur;
*ppUsr_Infor = pNew;
}
else
{
while (pCur)
{
if (usr_infor.usr_id < pCur->usr_id)
{
pPre->pNext_Usr_Infor = pNew;
pNew->pNext_Usr_Infor = pCur;
break;
}
pPre = pCur;
pCur = pCur->pNext_Usr_Infor;
}
if (NULL == pCur) //插入尾部
{
pPre->pNext_Usr_Infor = pNew;
}
}
}
fclose(fp_usr_info);
}
//验证账号信息,根据输入的用户名和密码检查
USR_ROLE role_confirm(pUSR_ACCOUNT pUsr_Account)
{
system("cls");
char usr_name[USR_NAME_LEN];
char usr_pwd[USR_PWD_LEN];
printf("Enter usr_name: ");
scanf("%s", usr_name);
char c;
int idx = 0;
printf("Enter usr_password:");
while (1)
{
c = getch();
if (c == '\r')
{
break;
}
else if (c == '\b' && idx >= 0)
{
if (idx == 0)
{
continue;
}
else
{
printf("\b \b");
idx--;
}
}
else
{
printf("*");
usr_pwd[idx++] = c;
}
}
usr_pwd[idx] = '\0';
//查询账户信息,验证账户是否存在
if (NULL == pUsr_Account)
{
printf("No Account!!!!\n");
return -1;
}
else
{
while (pUsr_Account) //遍历查找账户名
{
if (strcmp(usr_name, pUsr_Account->usr_name) == 0)
{
if (strcmp(usr_pwd, pUsr_Account->usr_pwd) == 0)
{
printf("\n\n****Login Success!!!****\n\n");
system("pause");
getchar();
return pUsr_Account->usr_role;
}
else
{
printf("\n\n****Password error, login failed!!!****\n\n");
printf("Enter the account and password again? y or n. Please input: ");
rewind(stdin);
char ch;
scanf("%c", &ch);
if ('n' == ch)
{
return -2;
}
else
{
return -1;
}
}
}
pUsr_Account = pUsr_Account->pNext_Usr_Account;
}
printf("\n\n****No account, login failed!!!****\n\n");
printf("Enter the account and password again? y or n. Please input: ");
rewind(stdin);
char ch;
scanf("%c", &ch);
if ('n' == ch)
{
return -2;
}
else
{
return -1;
}
return -1;
}
}
void show_system_menu(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List, pUSR_INFOR *ppUsr_Infor_List)
{
char sel;
int k = 1;
while (k)
{
system("cls");
if (ADMIN == role) //管理员界面
{
printf("*******************************************************************************************************\n");
printf("************************** Student Information Managenment System **************************\n");
printf("*******************************************************************************************************\n");
printf("* *\n");
printf("* 1. Search student Information *\n");
printf("* 2. Add student Information *\n");
printf("* 3. Update student Information *\n");
printf("* 4. Delete student Information *\n");
printf("* 5. Add user Account *\n");
printf("* 6. Update user Account *\n");
printf("* 7. Delete user Account *\n");
printf("* 8. Search user Account *\n");
printf("* 9. Exit *\n");
printf("* *\n");
printf("*******************************************************************************************************\n");
printf("*******************************************************************************************************\n");
}
else if (GUEST == role)
{
printf("*******************************************************************************************************\n");
printf("************************** Student Information Managenment System **************************\n");
printf("*******************************************************************************************************\n");
printf("* *\n");
printf("* 1. Search student Information *\n");
printf("* 9. Exit *\n");
printf("* *\n");
printf("*******************************************************************************************************\n");
printf("*******************************************************************************************************\n");
}
printf("\n\n");
printf("==> Your Select:");
rewind(stdin);
scanf("%c", &sel);
switch (sel)
{
case '1': show_search_menu(role, *ppUsr_Infor_List); break;
case '2':
if (ADMIN == role)
{
add_usr_infor(role, ppUsr_Infor_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '3':
if (ADMIN == role)
{
upt_usr_infor(role, ppUsr_Infor_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '4':
if (ADMIN == role)
{
del_usr_infor(role, ppUsr_Infor_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '5':
if (ADMIN == role)
{
add_usr_account(role, ppUsr_Acount_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '6':
if (ADMIN == role)
{
upt_usr_account(role, ppUsr_Acount_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '7':
if (ADMIN == role)
{
del_usr_account(role, ppUsr_Acount_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '8':
if (ADMIN == role)
{
search_usr_account(role, *ppUsr_Acount_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '9': k = 0; system_exit(); break;
default:
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
break;
}
}
}
void show_search_menu(USR_ROLE role, pUSR_INFOR pUsr_Infor_List)
{
char sel;
while (1)
{
system("cls");
if (ADMIN == role) //管理员界面
{
printf(" 0. Search All\n");
}
printf(" 1. Search By Name\n");
printf(" 2. Search By ID\n");
printf(" 3. Return\n");
printf("\n\n");
printf("==> Your Select:");
rewind(stdin);
scanf("%c", &sel);
switch (sel)
{
case '0':
if (ADMIN == role)
{
search_usr_infor_all(pUsr_Infor_List);
}
else if (GUEST == role)
{
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
}
break;
case '1': search_usr_infor_by_name(pUsr_Infor_List); break;
case '2': search_usr_infor_by_id(pUsr_Infor_List); break;
case '3': return; break;
default:
rewind(stdin);
printf("Input ERROR!!! Please input again.\n");
system("pause");
break;
}
}
}
//查找学生信息
void search_usr_infor_all(pUSR_INFOR pUsr_Infor_List)
{
pUSR_INFOR pFind = pUsr_Infor_List;
system("cls");
printf("All information is: \n\n");
while (pFind)
{
printf("%03d %-8s", pFind->usr_id, pFind->usr_name);
for (int i = 0; i < COURSE_NUM; i++)
{
printf("%4d %-8.2f", pFind->course[i].course_id, pFind->course[i].course_score);
}
printf("\n");
pFind = pFind->pNext_Usr_Infor;
}
printf("\n");
system("pause");
rewind(stdin);
}
void search_usr_infor_by_name(pUSR_INFOR pUsr_Infor_List)
{
pUSR_INFOR pFind = pUsr_Infor_List;
char search_name[USR_NAME_LEN] = "";
int flag = 0;
system("cls");
printf("Please input the name of student: ");
scanf("%s", search_name);
while (pFind)
{
if (strcmp(search_name, pFind->usr_name) == 0)
{
printf("%03d %-8s", pFind->usr_id, pFind->usr_name);
for (int i = 0; i < COURSE_NUM; i++)
{
printf("%4d %-8.2f", pFind->course[i].course_id, pFind->course[i].course_score);
}
printf("\n");
flag = 1;
break;
}
pFind = pFind->pNext_Usr_Infor;
}
if (0 == flag)
{
printf("Not found this student!!!\n");
}
system("pause");
rewind(stdin);
}
void search_usr_infor_by_id(pUSR_INFOR pUsr_Infor_List)
{
pUSR_INFOR pFind = pUsr_Infor_List;
int search_id;
int flag = 0;
system("cls");
printf("Please input the Num of student: ");
scanf("%d", &search_id);
while (pFind)
{
if (search_id==pFind->usr_id)
{
printf("%03d %-8s", pFind->usr_id, pFind->usr_name);
for (int i = 0; i < COURSE_NUM; i++)
{
printf("%4d %-8.2f", pFind->course[i].course_id, pFind->course[i].course_score);
}
printf("\n");
flag = 1;
break;
}
pFind = pFind->pNext_Usr_Infor;
}
if (0 == flag)
{
printf("Not found this student!!!\n");
}
system("pause");
rewind(stdin);
}
//增删改学生信息
void add_usr_infor(USR_ROLE role, pUSR_INFOR *ppUsr_Infor_List)
{
pUSR_INFOR pNew = (pUSR_INFOR)calloc(1, sizeof(USR_INFOR));
pUSR_INFOR pCur = NULL;
pUSR_INFOR pPre = NULL;
int flag;
while (1)
{
pCur = pPre = *ppUsr_Infor_List;
flag = 1;
system("cls");
printf("Please input a student's information. \n");
printf("Such as: {id name} and %d course{course_id course_score}. \n",COURSE_NUM);
rewind(stdin);
scanf("%d%s", &pNew->usr_id, pNew->usr_name);
for (int i = 0; i < COURSE_NUM; i++)
{
scanf("%d%lf", &pNew->course[i].course_id, &pNew->course[i].course_score);
}
if (NULL == *ppUsr_Infor_List)
{
*ppUsr_Infor_List = pNew;
}
else if (pNew->usr_id < pCur->usr_id)
{
pNew->pNext_Usr_Infor = pCur;
*ppUsr_Infor_List = pNew;
}
else
{
while (pCur)
{
if (pNew->usr_id < pCur->usr_id)
{
pPre->pNext_Usr_Infor = pNew;
pNew->pNext_Usr_Infor = pCur;
break;
}
else if (pNew->usr_id == pCur->usr_id) //存在学生
{
flag = 0;
break;
}
pPre = pCur;
pCur = pCur->pNext_Usr_Infor;
}
if (NULL == pCur) //插入尾部
{
pPre->pNext_Usr_Infor = pNew;
}
}
if (flag)
{
printf("\nAdd success!!!\n");
save_usr_infor_file(ppUsr_Infor_List);
//system("pause");
}
else
{
printf("List have existed!!!\n");
}
printf("\n Input y to continus add, or any key else to return:");
rewind(stdin);
char c;
scanf("%c", &c);
if ('y' != c)
{
break;
}
}
}
void upt_usr_infor(USR_ROLE role, pUSR_INFOR *ppUsr_Infor_List)
{
pUSR_INFOR pFind = *ppUsr_Infor_List;
int flag = 0;
int upt_id;
system("cls");
rewind(stdin);
printf("Please input update student's ID: ");
scanf("%d", &upt_id);
while (pFind)
{
if (pFind->usr_id == upt_id)
{
printf("Please update the student's information:\n");
printf("Such as: {id name} and %d course{course_id course_score}. \n", COURSE_NUM);
scanf("%d%s", &pFind->usr_id, pFind->usr_name);
for (int i = 0; i < COURSE_NUM; i++)
{
scanf("%d%lf", &pFind->course[i].course_id, &pFind->course[i].course_score);
}
flag = 1;
break;
}
pFind = pFind->pNext_Usr_Infor;
}
if (0 == flag)
{
printf("Not found this student!!!\n");
}
else
{
printf("\nUpdate success!!!\n");
save_usr_infor_file(ppUsr_Infor_List);
}
system("pause");
}
void del_usr_infor(USR_ROLE role, pUSR_INFOR *ppUsr_Infor_List)
{
pUSR_INFOR pFind = *ppUsr_Infor_List;
pUSR_INFOR pPre = pFind;
int flag = 0;
int del_id;
system("cls");
rewind(stdin);
printf("Please input delete student's ID: ");
scanf("%d", &del_id);
while (pFind)
{
if (pFind->usr_id == del_id)
{
pPre->pNext_Usr_Infor = pFind->pNext_Usr_Infor;
free(pFind);
pFind = NULL;
flag = 1;
break;
}
pPre = pFind;
pFind = pFind->pNext_Usr_Infor;
}
if (0 == flag)
{
printf("Not found this student!!!\n");
}
else
{
printf("\nDelete success!!!\n");
save_usr_infor_file(ppUsr_Infor_List);
}
system("pause");
}
//更新学生信息到文件
void save_usr_infor_file(pUSR_INFOR *ppUsr_Infor_List)
{
FILE *fp;
fp = fopen(usr_info_loc, "w");
if (NULL == fp)
{
perror("fopen:usr_infor.txt, update failed!!!");
system("pause");
return;
}
pUSR_INFOR pCur = *ppUsr_Infor_List;
while (pCur)
{
fprintf(fp, "%03d %-10s", pCur->usr_id, pCur->usr_name);
for (int i = 0; i < COURSE_NUM; i++)
{
fprintf(fp, "%4d %-7.2f", pCur->course[i].course_id, pCur->course[i].course_score);
}
fprintf(fp, "\n");
pCur = pCur->pNext_Usr_Infor;
}
fclose(fp);
}
//增删改用户信息
void add_usr_account(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List)
{
pUSR_ACCOUNT pNew = (pUSR_ACCOUNT)calloc(1, sizeof(USR_ACCOUNT));
pUSR_ACCOUNT pCur = NULL, pPre = NULL;
while (1)
{
pPre=pCur = *ppUsr_Acount_List;
int flag = 0;
system("cls");
printf("Please input a account's information. \n");
printf("Such as:usr_name usr_pwd usr_role.\n");
rewind(stdin);
scanf("%s%s%d", pNew->usr_name, pNew->usr_pwd, &pNew->usr_role);
if (NULL == *ppUsr_Acount_List)
{
*ppUsr_Acount_List = pNew;
flag = 1;
}
else
{
while (pCur)
{
if (strcmp(pCur->usr_name, pNew->usr_name) == 0)
{
printf("List have existed!!!\n");
break;
}
pPre = pCur;
pCur = pCur->pNext_Usr_Account;
}
if (pCur == NULL) //遍历,插到尾部
{
pPre->pNext_Usr_Account = pNew;
flag = 1;
}
}
if (flag)
{
printf("\nAdd success!!!\n");
save_usr_account_file(ppUsr_Acount_List);
}
printf("\n Input y to continus add, or any key else to return:");
rewind(stdin);
char c;
scanf("%c", &c);
if ('y' != c)
{
break;
}
}
}
void upt_usr_account(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List)
{
pUSR_ACCOUNT pFind = *ppUsr_Acount_List;
int flag = 0;
char upt_name[USR_NAME_LEN] = "";
system("cls");
rewind(stdin);
printf("Please input update account's name: ");
scanf("%s", upt_name);
while (pFind)
{
if (strcmp(pFind->usr_name,upt_name)==0)
{
printf("Please update the account's information:\n");
printf("Such as:usr_name usr_pwd usr_role.\n");
rewind(stdin);
scanf("%s%s%d", pFind->usr_name, pFind->usr_pwd, &pFind->usr_role);
flag = 1;
break;
}
pFind = pFind->pNext_Usr_Account;;
}
if (0 == flag)
{
printf("Not found this account!!!\n");
}
else
{
printf("\nUpdate success!!!\n");
save_usr_account_file(ppUsr_Acount_List);
}
system("pause");
}
void del_usr_account(USR_ROLE role, pUSR_ACCOUNT *ppUsr_Acount_List)
{
pUSR_ACCOUNT pFind = *ppUsr_Acount_List;
pUSR_ACCOUNT pPre = pFind;
int flag = 0;
char del_name[USR_NAME_LEN]="";
system("cls");
rewind(stdin);
printf("Please input delete account's name: ");
scanf("%s", del_name);
while (pFind)
{
if (strcmp(pFind->usr_name, del_name) == 0)
{
pPre->pNext_Usr_Account = pFind->pNext_Usr_Account;
free(pFind);
pFind = NULL;
flag = 1;
break;
}
pPre = pFind;
pFind = pFind->pNext_Usr_Account;
}
if (0 == flag)
{
printf("Not found this account!!!\n");
}
else
{
printf("\nDelete success!!!\n");
save_usr_account_file(ppUsr_Acount_List);
}
system("pause");
}
//更新账户信息到文件
void save_usr_account_file(pUSR_ACCOUNT *ppUsr_Acount_List)
{
FILE *fp;
fp = fopen(usr_account_loc, "w");
if (NULL == fp)
{
perror("fopen:usr_account.txt, update failed!!!");
system("pause");
return;
}
pUSR_ACCOUNT pCur = *ppUsr_Acount_List;
while (pCur)
{
fprintf(fp, "%-15s %-10s %d\n", pCur->usr_name, pCur->usr_pwd,pCur->usr_role);
pCur = pCur->pNext_Usr_Account;
}
fclose(fp);
}
//查找用户信息
void search_usr_account(USR_ROLE role, pUSR_ACCOUNT pUsr_Acount_List)
{
pUSR_ACCOUNT pFind = pUsr_Acount_List;
char search_name[USR_NAME_LEN] = "";
int flag = 0;
system("cls");
printf("Please input the name of account: ");
scanf("%s", search_name);
while (pFind)
{
if (strcmp(search_name, pFind->usr_name) == 0)
{
printf("\nName:%-10s Pwd:%-10s Role:%s\n\n", pFind->usr_name, pFind->usr_pwd, pFind->usr_role ? "GUEST" : "ADMIN");
flag = 1;
break;
}
pFind = pFind->pNext_Usr_Account;
}
if (0 == flag)
{
printf("Not found this account!!!\n");
}
system("pause");
rewind(stdin);
}
//系统退出
void system_exit()
{
system("cls");
printf("****LOG OUT!!!***\n");
system("pause");
}
main.c
#include "SIMS.h"
char usr_account_loc[USR_ACCOUNT_LOC] = { 0 }; //账户文件地址
char usr_info_loc[USR_INFO_LOC] = { 0 }; //学生信息文件地址
int main(int argc, char *argv[])
{
if (argc != 2)
{
printf("error args\n");
return -1;
}
pUSR_ACCOUNT usr_account_list = NULL;
pUSR_INFOR usr_infor_list = NULL;
system_init(argv[1], &usr_account_list, &usr_infor_list);
int role;
Login:
role = role_confirm(usr_account_list);
if (-1 == role) //登录失败,退出程序
{
goto Login;
}
if (-2 == role)
{
printf("*****Log out!!!*****\n\n");
return -1;
}
show_system_menu(role, &usr_account_list, &usr_infor_list);
return 0;
}
三个txt文件:configure.txt, usr_account.txt, usr_infor.txt
- configure.txt
usr_account.txt
usr_infor.txt
- usr_account.txt
admin admin 0
Tom 123 1
Robin 111 1
Alex 456 1
Jack 456 1
Mark 456 1
Sam 456 1
Alex 456 1
- usr_infor.txt
001 Sam 1001 72.50 1002 90.50 1003 90.50
002 Alex 1001 83.50 1002 99.50 1003 71.00
003 Robin 1001 89.50 1002 70.50 1003 80.00
004 Jack 1001 70.50 1002 56.50 1003 70.00
005 Mark 1001 60.50 1002 79.50 1003 81.50
006 Tom 1001 80.50 1002 89.50 1003 70.00
007 Alex 1001 67.50 1002 89.50 1003 70.50