mysql函数UserManage

本文介绍了一个用户管理系统的类设计,包括用户注册、登录、修改信息等功能。详细解释了如何通过类方法实现用户数据的增删改查操作。

Class UserManage{
private:
char myuserid[20];//用户的id,未登陆前为空
time logintime;//用户登陆时间,并用于计算停留时间
char loginhost[20];//上站地点
public:
int NewUser(char *userid,char *passwd);
//新建一个用户,判断时候已经存在,其他资料暂时为空,firstlogintime,权限等设缺省值。
int UserLogin(char *userid,char *passwd);
//用户登陆验证密码,
int ChangePasswd(char *oldpasswd,char *newpasswd);
//修改密码,要求原密码一致
int ChangePriDate(char *newname,char *newemail,char *newaddr);
//改变基本数据,名称,email,住址.
int ModifyNumData(int addlogin,int addpost);
//修改文章数,上站次数,等是数据...注意调用对象
int UserLogout();
//用户退出,修改lastlogin,staytime,loginhost等。


//普通查询命令

int QueryCommonData(const char *userid,int& loginnum,
char *username,int& postnum,time& lastlogin,char *lasthost);
//查询网友基本信息

//特权指令,函数在完成功能前,先判断权限。
int QueryPriData(const char *userid,char *email,char *addr);
//查询基本信息,普通人只能查自己,有特权人才能查其他人。
int ModifyUserLevel(bool isadd, unsigned log level);
//修改用户的权限
int ModifyUserId(char *oldid,char *newid,
char *newemail,char *newaddr);
//修改用户的基本数据
int ModifyUserNumdata(char *userid,int addlogin,int addpost);
//修改用户的文章数等数据。
int ModifyUserPasswd(char *userid,char *newpasswd);
//修改用户密码
}

以下是一个在visual studio2022版下写的图书管理系统的未完善的程序,包含了头文件和源代码,请根据其中已有的代码,完成未写完的程序 #pragma once //用户 读者 图书 借还信息 有四种数据(如何定义一个链表,能够装所有的类型) //定义节点 typedef struct Node { void* data; //万能指针,指向任意数据的地址 void* struct Node* next; //后继节点指针 }Node; typedef struct List { int size; //节点个数 Node* front; //头指针 Node* tail; //尾指针 }List; typedef void (*LISTCALLBACK)(void*); void list_init(List* list); void list_pushBack(List* list,void* val); void list_transfrom(List* list, LISTCALLBACK fun); #ifndef _MENU_H_ #define _MENU_H_ //预处理指令,防止头文件重复包含 #include<stdio.h> //提示选择 int select(); //主菜单 int mainMenu(); //用户管理菜单 int userMenu(); #endif // !_MENU_H_ #pragma once /*@枚举用户类型*/ enum UserType { UT_SysAdminUser = 1, //系统管理员 Ut_BookAdminUser, //图书管理员 Ut_CommonUser //普通用户 }; /*@用户*/ typedef struct User { unsigned long number; //用户编号 char password[20]; //用户密码 int type; //用户类型 }User; User* createEmptyUser(); User* user_fromString(const char* str); void user_print(User* user);#pragma once #include"List.h" #include"User.h" typedef struct UserManage { List userList; //存储所有用户 }UserManage; void userManage_init(UserManage* umage); void userManage_loadData(UserManage* umage,const char* filename); //用户管理操作 void userManage_operation(UserManage* umage); //用户信息输入 void userManage_input(UserManage* umage); //用户信息修改 void userManage_modify(UserManage* umage); //用户信息删除 void userManage_remove(UserManage* umage); //用户信息显示 void userManage_show(UserManage* umage); //用户密码修改 void userManage_modifyPassword(UserManage* umage);#include "List.h" #include<malloc.h> void list_init(List* list) { list->size = 0; list->front = list->tail = calloc(1, sizeof(Node)); if (list->front == NULL) { printf("head create failed\n"); return; } } Node* createNode(void* val) { Node* newNode = calloc(1, sizeof(Node)); if (!newNode) { printf("newNode create failed\n"); return NULL; } newNode->data = val; return newNode; } void list_pushBack(List* list, void* val) { Node* newNode = createNode(val); newNode->next = list->tail->next; list->tail->next = newNode; list->tail = newNode; list->size++; } void list_transfrom(List* list, LISTCALLBACK fun) { Node* curNode = list->front->next; while (curNode) { fun(curNode->data); curNode = curNode->next; } }#include"Menu.h" #include<stdbool.h> #include<stdlib.h> #include"UserManage.h" UserManage userManage; //用户管理 void quit() { exit(0); } void init() { userManage_init(&userManage); } void run() { int op = mainMenu(); switch (op) { case 1: //用户管理 userManage_operation(&userManage); break; case 2: break; case 3: break; case 4: break; case 5: quit(); break; } } void print(void* val) { printf("%d ", (int)val); } int main() { init(); while (true) { run(); } return 0; }#include "Menu.h" //提示选择 int select() { int op = -1; printf("select>"); scanf("%d", &op); return op; } //主菜单 int mainMenu() { printf("**********************************\n"); printf("* 1.用户管理 *\n"); printf("* 2.读者管理 *\n"); printf("* 3.图书管理 *\n"); printf("* 4.图书流通管理 *\n"); printf("* 5.退出系统 *\n"); printf("**********************************\n"); return select(); } //用户管理菜单 int userMenu() { printf("**********************************\n"); printf("* 1.用户信息输入 *\n"); printf("* 2.用户信息修改 *\n"); printf("* 3.用户信息删除 *\n"); printf("* 4.用户信息显示 *\n"); printf("* 5.用户密码修改 *\n"); printf("* 6.返回主菜单 *\n"); printf("**********************************\n"); return select(); }#include "User.h" #include<stdio.h> #include<malloc.h> User* createEmptyUser() { User* user = calloc(1, sizeof(User)); if (!user) { printf("user create failed\n"); return NULL; } return user; } User* user_fromString(const char* str) { //创建一个空User User* user = createEmptyUser(); //分割字符串 int ret = sscanf(str, "%lu %s %d", &user->number, user->password, &user->type); if (ret <= 0) { printf("sscanf failed\n"); free(user); return NULL; } return user; } void user_print(User* user) { printf("%lu %s %d\n", user->number, user->password, user->type); }#include "UserManage.h" #include"Menu.h" #include<stdbool.h> void userManage_init(UserManage* umage) { list_init(&umage->userList); //读取文件 userManage_loadData(umage,"./data/user.txt"); } void userManage_loadData(UserManage* umage,const char* filename) { FILE* fp = fopen(filename, "r"); if (!fp) { perror("file open failed\n"); return; } //读取数据 //把表头读出来,并丢掉 char buf[BUFSIZ] = { 0 }; fgets(buf, BUFSIZ, fp); //读取正式的内容 while (!feof(fp)) { fgets(buf, BUFSIZ, fp); //如果成功,放入链表 list_pushBack(&umage->userList, user_fromString(buf)); } fclose(fp); } void userManage_operation(UserManage* umage) { bool isDone = false; while (!isDone) { int op = userMenu(); switch (op) { case 1: userManage_input(umage); break; case 2: userManage_modify(umage); break; case 3: userManage_remove(umage); break; case 4: userManage_show(umage); break; case 5: userManage_modifyPassword(umage); break; case 6: isDone = true; break; } } } void userManage_input(UserManage* umage) { printf("请输入用户(用户ID、密码、类型)>"); User* user = createEmptyUser(); scanf("%lu %s %d", &user->number, user->password, &user->type); list_pushBack(&umage->userList, user); printf("用户添加成功!\n"); } void userManage_modify(UserManage* umage) { } void userManage_remove(UserManage* umage) { } void userManage_show(UserManage* umage) { list_transfrom(&umage->userList, user_print); } void userManage_modifyPassword(UserManage* umage) { }
06-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值