.---+- include -+- tools -+- color.h
| | +- hint.h
| | +- info.h
| |
| +- user -+- user.h
| |
| +- good -+- good.h
| |
| +- order -+- order.h
| |
| +- menu -+- menu.h
| |
| +- interface -+- interface.h <---
| |
| +- config.h
|
+- src -+- tools -+- color.c
| +- hint.c
| +- info.c
|
+- data -+- id.txt
| +- user.txt
| +- good.txt
| +- order.txt
|
+- user -+- user.c
|
+- good -+- good.c
|
+- order -+- order.c
|
+- menu -+- menu.c
|
+- interface -+- mainInterface.c <---
| -+- adminInterface.c
| -+- userInterface.c
| -+- infoInterface.c
| -+- modifyInterface.c
| -+- sellerInterface.c
| -+- goodInterface.c
| -+- buyerInterface.c
|
+- main.c
// interface.h
#define get_username_passwd\
char username[MAX_LEN];\
char passwd[MAX_LEN];\
printf ("Username: ");\
scanf("%s", username);\
printf ("Password: ");\
scanf("%s", passwd);
#define make_login(T, YPE, cond)\
static void T##YPE##_Login() {\
get_username_passwd\
if (cond) { T##YPE##_Interface(); return ; }\
failureMessage();\
}
提醒一下interface.h
中的头文件包含:
// interface.h
#include "tools/hint.h"
#include "menu/menu.h"
#include "user/user.h"
#include "good/good.h"
#include "order/order.h"
// mainInterface.c
#include "interface/interface.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inv() {
invalidMessage();
failureMessage();
}
make_login(U, SER, checkPass(username, passwd, &curUser))
make_login(A, DMIN, strcmp(username, ADMIN_NAME) == 0 && strcmp(passwd, ADMIN_PASS) == 0)
static void USER_SignUp() {
User* u = (User*)malloc(sizeof(User));
printf("Please input your username: ");
scanf("%s", u->name);
printf("Please input your password: ");
scanf("%s", u->passwd);
printf("Please input your phone number: ");
scanf("%s", u->contact);
printf("Please input your address: ");
scanf("%s", u->address);
u->balance = 0;
if (addUser(u)) successMessage();
else failureMessage();
free(u);
}
static HANDLER handler[] = {USER_Login, USER_SignUp, ADMIN_Login};
make_interface(M, AIN)
// userInterface.c
int curUser = -1; // 初始值-1表示不存在
// interface.h
// 当前用户
extern int curUser;