slighly clean up pedning listrole

This commit is contained in:
stmctommyau 2023-09-09 23:10:03 +08:00
parent b15ed51c8d
commit e5e6ffe5a8
No known key found for this signature in database
GPG Key ID: 87B1991E1277F054

View File

@ -537,7 +537,6 @@ struct Map* sortTrans(void * ddb,int choice){
//user control
struct user add_user(struct user db);
struct user list_user(struct user db);
void * showUser(void * ddb,int index);
struct Map* SortUser(void * ddb,int choice);
void print_user(void * ddb, int cur, int end,struct Map* map);
@ -565,7 +564,6 @@ void user_control(){
};
lister(&db,NULL,db.db.row_count,"User",SortItems,3,print_user,SortUser,showUser);
db = read_db_user();
db = list_user(db);
break;
case 3:
break;
@ -640,79 +638,6 @@ struct user delete_user(struct user db,int index){
return read_db_user();
}
struct Map* sortUser(struct user db,int choice);
struct user list_user(struct user db){
int choice = -1;
int page = 0;
int page_size = PAGE_SIZE;
int total_pages = ceil((double)db.db.row_count / page_size);
int row = db.db.row_count;
struct Map* map = NULL;
do{
Cls();
welcome_message();
printf("User list\n");
printf("0 exit\n");
printf("1 sort User decending\n");
printf("2 sort User ascending\n");
printf("3 sort Role decending\n");
printf("4 sort Role ascending\n");
printf("5 sort ID decending\n");
printf("6 sort ID ascending\n");
if(page+1==total_pages){
print_user(&db,page*page_size,db.db.row_count,map);
}else{
print_user(&db,page*page_size,(page+1)*page_size,map);
}
//page control
int current_page_size = page_size+8;
if(page+1 == total_pages){
current_page_size = row - page*page_size+6;
}
printf("%d next page\n",current_page_size+1);
printf("%d previous page\n",current_page_size+2);
printf("%d set page size\n",current_page_size+3);
bool valid;
do{
valid = true;
printf("Please input your choice\n>");
fflush_stdin();
scanf("%d",&choice);
if(choice <=6 && choice > 0){
printf("sorting...\n");
map = sortUser(db,choice);
}else if(choice == current_page_size+1 ){
if(page + 1 < total_pages){
page++;
}else{
printf("Already at last page\n");
valid = false;
}
}else if(choice == current_page_size+2){
if(page > 0){
page--;
}else{
printf("Already at first page\n");
valid = false;
}
}else if(choice == current_page_size+3){
printf("Enter page size: ");
fflush_stdin();
scanf("%d", &page_size);
total_pages = ceil((double)row / page_size);
}else if(choice >= 7 && choice <= current_page_size){
if(map == NULL){
db = *((struct user *)showUser(&db,choice - 7 + page_size*page));
}else{
db = *((struct user *)showUser(&db,map[choice - 7 + page_size*page].key));
}
}else if(choice != 0){
printf("Invalid choice\n");
valid = false;
}
}while(!valid);
}while(choice != 0);
return db;
}
void print_user(void * ddb, int cur, int end,struct Map* map){
struct user db = *((struct user*)ddb);