#include "BOOKS.h" BOOK*head_BOOK = NULL; BOOK*BAR_BOOK = NULL; int books()//入口 { /*conshow_BOOK *UI设置 *读取 *选择浏览或借退 *保存并退出 */ in_BOOK(); book_function_choose(); save_BOOK(); return 0; } void book_function_info(int choice)//用户功能菜单 { Settitle("|学生选课系统|普通用户|"); system("cls"); showtitle(); char o[3][30] = {"浏 览 现 有 课 程 信 息","选 课 与 退 课","退 出 账 号"}; int i,j = 0,k=-1; for(i = 0; i <= 2;i++,k++) { if(choice == i) setcolor(0,15); setposition(LB+21,START+i+k+3); printf("%s",o[j++]); setcolor(11,0); } setposition(LB,INFO+1); if(strcmp(book1 , "o") == 0) {book1[0] = ' ' ; book1[1] = 0;} if(strcmp(book2 , "o") == 0) {book2[0] = ' ' ; book2[1] = 0;} if(strcmp(book3 , "o") == 0) {book3[0] = ' ' ; book3[1] = 0;} printf("已选课程:%s %s %s",book1,book2,book3); setposition(LB,INFO+2); printf("(%d/3)",booknum); } void book_function_choose()//用户功能菜单的实现 { int choice = 0; while(1) { book_function_info(choice); setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); HideCursor(); char a,b; b = getch(); if(b==-32) a = getch(); fflush(stdin); if(a == UP && b == -32) { choice--; } else if(a == DOWN && b == -32) { choice++; } else if(b==13){ if(choice == 0) conshow_BOOK_choice(0); else if(choice == 1) borrowandreturn_BOOK_choice(0); else if(choice == 2) login1(); break; } else{ setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); } if(choice<0) choice = 2; if(choice>2) choice = 0; } } void book_type_menu_info(int choice)//书本的课程类型菜单 { Settitle("|学生选课系统|课程类型|"); system("cls");//清屏 showtitle();//打印提示信息 char o[7][14] = {" 语言类 "," 人文科学 "," 经济学 "," 策略 "," 自然科学 ","天文学"," 医学 "};//设置选项内容 int i,j = 0; for(i = 0; i <= 6;i++) { if(choice == i)//如果传进来的选择与当前要打印的相同 setcolor(0,15);//将更改当前被选中的选项颜色 setposition(LB+25,START+i+1); printf("%s",o[j++]); setcolor(11,0);//改回来 } } int book_type_menu_choose()//书本的课程类型菜单的实现 { system("cls"); showtitle(); int choice = 0; while(1) { book_type_menu_info(choice); setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); HideCursor(); char a,b; b = getch(); if(b==-32) a = getch(); fflush(stdin); if(a == UP && b == -32) { choice--; } else if(a == DOWN && b == -32) { choice++; } else if(b==13){ return choice; break; } else{ setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); } if(choice<0) choice = 6; if(choice>6) choice = 0; } } void new_info() { Settitle("|学生选课系统|管理员功能|"); system("cls"); showtitle(); setposition(LB+5,START+1); printf("录 入 注 意 事 项 :"); setposition(LB+5,START+2); printf("录入课程所有信息长度超过20字符将自动省略超过部分"); setposition(LB+5,START+3); printf("同样的课程编号相同,不同的课程编号不同"); setposition(LB+5,START+4); printf("课程类型不可自定义"); setposition(LB+5,START+5); printf("录入任何信息若包含空格将自动省略第一个空格及其后面部分"); } void newone_BOOK()//键入新建内容 { new_info(); char y; char id[200]; //编号 char name[200]; //课程 char author[200]; //学分 char type[200]; //课程类型 --->选项 类 char publish[200]; //学时 char o[7][14] = {" 语言类 "," 人文科学 "," 经济学 "," 策略 "," 自然科学 ","天文学"," 医学 "}; do{ setposition(LB,INFO); clean(); setposition(LB,INFO); printf("编号:"); fflush(stdin); scanf("%s",id);id[20] = 0; BOOK *now = head_BOOK; if(now!=NULL) { while(now!=NULL) { if(strcmp(now->id,id) == 0) { char yes; setposition(LB,INFO+1); printf("已存在该课程,是否快速录入(y/任意键退出)"); yes = getch(); setposition(LB,INFO+2); if(yes == 'y' || yes == 'Y') { now->num++; save_BOOK(); printf("快速录入成功!"); } else{ printf("课程编号重复!"); save_BOOK(); } setposition(LB,INFO+3); Sleep(800); fflush(stdin); system("pause"); admin_BOOK_choice(); } now = now->next; } } setposition(LB,INFO+1); printf("课程:"); fflush(stdin); scanf("%s",name);name[20] = 0; setposition(LB,INFO+2); printf("学分:"); fflush(stdin); scanf("%s",author); author[20] = 0; setposition(LB,INFO+3); printf("课程类型:"); fflush(stdin); strcpy(type , o[book_type_menu_choose()]); new_info(); setposition(LB,INFO); printf("编号:"); printf("%s",id); setposition(LB,INFO+1); printf("课程:"); printf("%s",name); setposition(LB,INFO+2); printf("学分:"); printf("%s",author); setposition(LB,INFO+3); printf("课程类型:"); printf("%s",type); setposition(LB,INFO+4); printf("学时:"); fflush(stdin); scanf("%s",publish);publish[20] = 0; fflush(stdin); setposition(LB,INFO+5); if(newok_BOOK(id,name,author,type,publish,1)) { printf("录入成功!\n"); Settitle("|学生选课系统|管理员|录入课程信息|录入成功|"); int cnt = 0,cnt2; for(cnt2 = 0; cnt2 < 3; cnt2++) { setposition(LB+10,INFO+5); printf(" "); Sleep(300); setposition(LB+10,INFO+5); for(cnt = 0;cnt < 3;cnt++) { printf("."); Sleep(300); } } } else printf("录入失败\n"); Sleep(800); new_info(); setposition(LB,INFO); printf("是否继续新增(y/任意键)\n"); y = getch(); fflush(stdin); }while(y == 'y' || y == 'Y'); save_BOOK(); admin_BOOK_choice(); } int newok_BOOK(char*id,char*name,char*author,char*type,char*publish,int num)//写入新建内容 { BOOK *new1 = NULL; BOOK *now = head_BOOK; new1 = (BOOK*)malloc(sizeof(BOOK)); if(new1 == NULL) { return 0;//返回0表示失败 } if(head_BOOK==NULL) { head_BOOK = new1; head_BOOK->next = NULL; } else{ while(now->next!=NULL) { now = now->next; } now->next = new1; } new1->next = NULL; id[20] = 0; name[20] = 0; author[20] = 0; publish[20] = 0; strcpy(new1->id,id); strcpy(new1->name,name); strcpy(new1->author,author); strcpy(new1->type,type); strcpy(new1->publish,publish); new1->num = num; return 1; } void showall_BOOK(int peo)//显示全部 { Settitle("|学生选课系统|显示全部课程|"); int k = 2; mpsort_BOOK(); BOOK *now = head_BOOK; setposition(LB,INFO+1); if(now == NULL) { printf("无课程信息"); } else{ printf("%-10s%-10s%-10s%-10s%-10s%-10s","编号","课程","学分","课程类型","学时","可选人数"); while(now!=NULL) { setposition(LB,INFO+k); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->id,now->name,now->author,now->type,now->publish,now->num); now = now->next; k++; } } setposition(LB,INFO+k+1); system("pause"); if(peo == 0) books(); admin_BOOK_choice(); } void in_BOOK()//读取文件 { head_BOOK = NULL; BAR_BOOK = NULL; if((fp_BOOK = fopen("books.book","r"))==NULL) { if((fp_BOOK = fopen("books.book","w"))==NULL) { system("cls"); printf("课程文件丢失"); } else { close_BOOK(); return; } } if(fgetc(fp_BOOK)==EOF) return; rewind(fp_BOOK); while(!feof(fp_BOOK)) { char id[21]; //编号 char name[21]; //课程 char author[21]; //学分 char type[21]; //课程类型 --->选项 类 char publish[21]; //学时 int num; //可选人数 fscanf(fp_BOOK,"%s%s%s%s%s%d",id,name,author,type,publish,&num); newok_BOOK(id,name,author,type,publish,num); } mpsort_BOOK(); close_BOOK(); } void save_BOOK()//保存文件 { BOOK *now = head_BOOK; if((fp_BOOK = fopen("books.book","w"))==NULL) { system("cls"); showtitle(); setposition(LB,INFO); printf("打开文件失败"); Sleep(3000); exit(0); } while(now!=NULL) { fprintf(fp_BOOK," %s %s %s %s %s %d",now->id,now->name,now->author,now->type,now->publish,now->num); now = now->next; } close_BOOK(); return; } void close_BOOK()//关闭文件 { if(fclose(fp_BOOK)) { system("cls"); showtitle(); setposition(LB,INFO); printf("关闭文件失败"); Sleep(3000); exit(0); } } void mpsort_BOOK()//冒泡 { /* char id[20]; //编号 * char name[20]; //课程 * char author[20]; //学分 * char type[20]; //课程类型 --->选项 类 * char publish[20]; //学时 * int num; */ BOOK *i = NULL; BOOK *j = NULL; if(head_BOOK == NULL) return; for(i = head_BOOK; i->next!=NULL;i = i->next) { for(j = head_BOOK; j->next!=NULL; j = j->next) { if(strcmp(j->id,j->next->id) > 0) { exchange_BOOK(j->id,j->next->id); exchange_BOOK(j->name,j->next->name); exchange_BOOK(j->author,j->next->author); exchange_BOOK(j->type,j->next->type); exchange_BOOK(j->publish,j->next->publish); int temp = j->num; j->num = j->next->num; j->next->num = temp; } } } } void exchange_BOOK(char*a,char*b) { char temp[30]; strcpy(temp,a); strcpy(a,b); strcpy(b,temp); } void alter_BOOK_info() { Settitle("|学生选课系统|管理员|修改课程信息|"); system("cls"); showtitle(); setposition(LB+5,START+1); printf("修 改 课 程 信 息 注 意 事 项 :"); setposition(LB+5,START+2); printf("编 号 不 可 重 复"); setposition(LB+5,START+3); printf("任何信息长度不可多于20个字符,多出部分自动省略"); setposition(LB+5,START+4); printf("课程可选人数必须为数字,若不是数字则本次修改作废"); setposition(LB+5,START+5); printf("任何信息若包含空格将自动省略第一个空格及其后面部分"); setposition(LB+5,START+6); printf("课程可选人数小于0将自动调整为0"); } void alter_BOOK() { BOOK *repair = NULL; char id[200]; //编号 char name[200]; //课程 char author[200]; //学分 char type[200]; //课程类型 --->选项 类 char publish[200]; //学时 int num; char o[7][14] = {" 语言类 "," 人文科学 "," 经济学 "," 策略 "," 自然科学 ","天文学"," 医学 "}; alter_BOOK_info(); setposition(LB+5,INFO); printf("要修改的课程编号:"); fflush(stdin); scanf("%s",id);id[20] = 0; alter_BOOK_info(); mpsort_BOOK(); BOOK *now = head_BOOK; setposition(LB,INFO); if(now == NULL) { printf("无课程信息"); setposition(LB,INFO+1); system("pause"); admin_BOOK_choice(); } else{ printf("%-10s%-10s%-10s%-10s%-10s%-10s","编号","课程","学分","课程类型","学时","可选人数"); int k = 1; while(now!=NULL) { if(strcmp(id,now->id) == 0) { repair = now; setposition(LB,INFO+k); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->id,now->name,now->author,now->type,now->publish,now->num); k++; break; } now = now->next; } if(k == 1) { setposition(LB,INFO); clean(); setposition(LB,INFO); printf("无课程信息"); Sleep(800); admin_BOOK_choice(); } } setposition(LB,INFO+2); printf("编号:"); fflush(stdin); scanf("%s",id);id[20] = 0; now = head_BOOK; setposition(LB,INFO+1+2); if(now == NULL) { clean(); setposition(LB,INFO+1+2); printf("无课程信息"); setposition(LB,INFO+2+2); system("pause"); admin_BOOK_choice(); } if(now != NULL) { while(now!=NULL) { if(strcmp(now->id,id) == 0) { char id2[20]; strcpy(id2,repair->id); if(strcmp(id,repair->id)==0) break; setposition(LB,INFO+1+2); printf("课程编号重复!"); setposition(LB,INFO+2+2); Sleep(800); fflush(stdin); system("pause"); admin_BOOK_choice(); } now = now->next; } } setposition(LB,INFO+1+2); printf("课程:"); fflush(stdin); scanf("%s",name);name[20] = 0; setposition(LB,INFO+2+2); printf("学分:"); fflush(stdin); scanf("%s",author);author[20] = 0; setposition(LB,INFO+3+2); printf("课程类型:"); fflush(stdin); strcpy(type , o[book_type_menu_choose()]); new_info(); setposition(LB,INFO); printf("编号:"); printf("%s",id); setposition(LB,INFO+1); printf("课程:"); printf("%s",name); setposition(LB,INFO+2); printf("学分:"); printf("%s",author); setposition(LB,INFO+3); printf("课程类型:"); printf("%s",type); setposition(LB,INFO+4); printf("学时:"); fflush(stdin); scanf("%s",publish);publish[20] = 0; fflush(stdin); setposition(LB,INFO+5); printf("可选人数:"); fflush(stdin); if(scanf("%d",&num)==0) { fflush(stdin); setposition(LB,INFO+5); clean(); setposition(LB,INFO+5); printf("输入错误"); setposition(LB,INFO+6); system("pause"); admin_BOOK_choice(); } if(num <= 0) num = 0; fflush(stdin); strcpy(repair->id,id); strcpy(repair->name,name); strcpy(repair->author,author); strcpy(repair->type,type); strcpy(repair->publish,publish); repair->num = num; setposition(LB,INFO+6); printf("修改成功!\n"); Settitle("|学生选课系统|管理员|修改课程信息|修改成功|"); int cnt = 0,cnt2; for(cnt2 = 0; cnt2 < 3; cnt2++) { setposition(LB+10,INFO+6); printf(" "); Sleep(300); setposition(LB+10,INFO+6); for(cnt = 0;cnt < 3;cnt++) { printf("."); Sleep(300); } } save_BOOK(); setposition(LB,INFO+8); system("pause"); admin_BOOK_choice(); } void del_BOOK_info() { Settitle("|学生选课系统|管理员|删除课程|"); system("cls"); showtitle(); setposition(LB+5,START+1); printf("删 除 课 程 信 息 注 意 事 项 :"); setposition(LB+5,START+2); printf("删 除 后 不 可 恢 复"); setposition(LB+5,START+5); printf("输 入 编 号 删 除 超 过 20 个 字 符 部 分 自 动 省 略"); } void del_BOOK() { del_BOOK_info(); char id[200]; //编号 setposition(LB,INFO); printf("要删除的课程编号:"); fflush(stdin); scanf("%s",id);id[20] = 0; del_BOOK_info(); BOOK *now = head_BOOK; setposition(LB,INFO); if(now == NULL) { printf("无课程信息"); setposition(LB,INFO+1); system("pause"); admin_BOOK_choice(); } else{ printf("%-10s%-10s%-10s%-10s%-10s%-10s","编号","课程","学分","课程类型","学时","可选人数"); int k = 1; while(now->next!=NULL) { if(strcmp(id,now->next->id) == 0) { setposition(LB,INFO+1); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->next->id,now->next->name,now->next->author,now->next->type,now->next->publish,now->next->num); k++; break; } now = now->next; } if(k == 1) { if(strcmp(head_BOOK->id,id) == 0) { setposition(LB,INFO+1); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",head_BOOK->id,head_BOOK->name,head_BOOK->author,head_BOOK->type,head_BOOK->publish,head_BOOK->num); } else{ setposition(LB,INFO); clean(); setposition(LB,INFO); printf("无课程信息"); setposition(LB,INFO+1); system("pause"); admin_BOOK_choice(); } } } printf("删除成功!"); now = head_BOOK; if((fp_BOOK = fopen("books.book","w"))==NULL) { system("cls"); showtitle(); setposition(LB,INFO); printf("打开文件失败"); Sleep(3000); exit(0); } while(now!=NULL) { if(strcmp(now->id,id)!=0) fprintf(fp_BOOK,"%s %s %s %s %s %d ",now->id,now->name,now->author,now->type,now->publish,now->num); now = now->next; } close_BOOK(); in_BOOK(); setposition(LB,INFO+2); system("pause"); admin_BOOK_choice(); } void conshow_BOOK_choice(int peo) { int choice = 0; while(1) { conshow_BOOK_menu(choice); setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); HideCursor(); char a,b; b = getch(); if(b==-32) a = getch(); fflush(stdin); if(a == UP && b == -32) { choice--; } else if(a == DOWN && b == -32) { choice++; } else if(b==13){ if(choice == 5) showall_BOOK(peo); if(choice == 3) conshow_BOOK(book_type_menu_choose()+10,peo); conshow_BOOK(choice,peo); break; } else{ setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); } if(choice<0) choice = 5; if(choice>5) choice = 0; } } void conshow_BOOK_menu(int choice) { Settitle("|学生选课系统|检索课程|"); char con[6][26] = {"按编号","按课程","按学分","按课程类型","按学时","全部"}; system("cls"); showtitle(); int i,j = 0; for(i = 0; i <= 5;i++) { if(choice == i) setcolor(0,15); setposition(LB+25,START+i+1); printf("%s",con[j++]); setcolor(11,0); } } void conshow_BOOK(int fun,int peo) { int flag = fun;//-1表示查询编号 if(fun == -1) fun = 0; BOOK *now = head_BOOK; setposition(LB,INFO); if(now == NULL) { printf("无课程信息"); Sleep(800); if(peo == 0) books(); admin_BOOK_choice(); } printf("%-10s%-10s%-10s%-10s%-10s%-10s","编号","课程","学分","课程类型","学时","可选人数"); if(fun==0) { char id[200]; setposition(LB,INFO+1); printf("编号:"); fflush(stdin); scanf("%s",id);id[20] = 0; setposition(LB,INFO+1); clean(); fflush(stdin); int k = 1; while(now!=NULL) { if(strcmp(id,now->id) == 0) { setposition(LB,INFO+k); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->id,now->name,now->author,now->type,now->publish,now->num); k++; BAR_BOOK = now; } now = now->next; } if(k == 1) { setposition(LB,INFO); clean(); setposition(LB,INFO); printf("无课程信息"); Sleep(800); if(peo == 0) books(); admin_BOOK_choice(); } } if(fun==1) { char id[200]; setposition(LB,INFO+1); printf("课程:"); fflush(stdin); scanf("%s",id);id[20] = 0; setposition(LB,INFO+1); clean(); fflush(stdin); int k = 1; while(now!=NULL) { if(strcmp(id,now->name) == 0) { setposition(LB,INFO+k); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->id,now->name,now->author,now->type,now->publish,now->num); k++; } now = now->next; } if(k == 1) { setposition(LB,INFO); clean(); setposition(LB,INFO); printf("无课程信息"); Sleep(800); if(peo == 0) books(); admin_BOOK_choice(); } } if(fun==2) { char id[200]; setposition(LB,INFO+1); printf("学分:"); fflush(stdin); scanf("%s",id);id[20] = 0; fflush(stdin); int k = 1; while(now!=NULL) { if(strcmp(id,now->author) == 0) { setposition(LB,INFO+k); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->id,now->name,now->author,now->type,now->publish,now->num); k++; } now = now->next; } if(k == 1) { setposition(LB,INFO); clean(); setposition(LB,INFO); printf("无课程信息"); Sleep(800); if(peo == 0) books(); admin_BOOK_choice(); } } if(fun==4) { char id[200]; setposition(LB,INFO+1); printf("学时:"); fflush(stdin); scanf("%s",id);id[20] = 0; fflush(stdin); setposition(LB,INFO+1); clean(); int k = 1; while(now!=NULL) { if(strcmp(id,now->publish) == 0) { setposition(LB,INFO+k); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->id,now->name,now->author,now->type,now->publish,now->num); k++; } now = now->next; } if(k == 1) { setposition(LB,INFO); clean(); setposition(LB,INFO); printf("无课程信息"); Sleep(800); if(peo == 0) books(); admin_BOOK_choice(); } } if(fun>=10) { fun-=10; char o[7][14] = {" 语言类 "," 人文科学 "," 经济学 "," 策略 "," 自然科学 ","天文学"," 医学 "}; fflush(stdin); int k = 1; while(now!=NULL) { if(strcmp(o[fun],now->type) == 0) { setposition(LB,INFO+k); printf("%-10.8s%-10.8s%-10.8s%-10.8s%-10.8s%-10d",now->id,now->name,now->author,now->type,now->publish,now->num); k++; } now = now->next; } if(k == 1) { setposition(LB,INFO); clean(); setposition(LB,INFO); printf("无课程信息"); Sleep(800); if(peo == 0) books(); admin_BOOK_choice(); } } printf("\n "); system("pause"); if(flag != -1){ if(peo == 0) books(); admin_BOOK_choice(); } } void borrowandreturn_BOOK_info() { Settitle("|学生选课系统|选课与退课|"); system("cls"); showtitle(); setposition(LB+5,START+1); printf("选 课 与 退 课 注 意 事 项 :"); setposition(LB+5,START+2); printf("输入所有信息长度超过20字符将自动省略超过部分"); setposition(LB+5,START+3); printf("最多可以选三门课"); setposition(LB+5,START+4); printf("一次只能选一门课或退一门课"); setposition(LB+5,START+5); printf("录入任何信息若包含空格将自动省略第一个空格及其后面部分"); } void borrow_BOOK(int peo) { borrowandreturn_BOOK_info(); Settitle("|学生选课系统|选课与退课|选课|"); conshow_BOOK(-1,peo); setposition(LB,INFO+2); clean(); setposition(LB,INFO+2); if(peo == 0) { if(BAR_BOOK->num <= 0|| user->booknum >= 3) { printf("无法选课!"); } else{ BAR_BOOK->num--; booknum++; user->booknum = booknum; if(strcmp(user->book1,"o") == 0) { strcpy(user->book1,BAR_BOOK->id); strcpy(book1,BAR_BOOK->id); } else if(strcmp(user->book2,"o") == 0) { strcpy(user->book2,BAR_BOOK->id); strcpy(book2,BAR_BOOK->id); } else if(strcmp(user->book3,"o") == 0) { strcpy(user->book3,BAR_BOOK->id); strcpy(book3,BAR_BOOK->id); } printf("选课成功!"); save(); } } if(peo == 1) { if(BAR_BOOK->num <= 0|| ADMIN.booknum >= 3) { printf("无法选课!"); } else{ BAR_BOOK->num--; ADMIN.booknum++; if(strcmp(ADMIN.book1,"o") == 0) { strcpy(ADMIN.book1,BAR_BOOK->id); strcpy(book1,BAR_BOOK->id); } else if(strcmp(ADMIN.book2,"o") == 0) { strcpy(ADMIN.book2,BAR_BOOK->id); strcpy(book2,BAR_BOOK->id); } else if(strcmp(ADMIN.book3,"o") == 0) { strcpy(ADMIN.book3,BAR_BOOK->id); strcpy(book3,BAR_BOOK->id); } printf("选课成功!"); admin_save(); } } save_BOOK(); setposition(LB,INFO+3); system("pause"); if(peo == 0) books(); admin_BOOK_choice(); BAR_BOOK = NULL; } void return_BOOK(int peo) { borrowandreturn_BOOK_info(); Settitle("|学生选课系统|选课与退课|退课|"); conshow_BOOK(-1,peo); setposition(LB,INFO+2); clean(); setposition(LB,INFO+2); if(peo == 0) { if(strcmp(user->book1,BAR_BOOK->id) != 0&&strcmp(user->book2,BAR_BOOK->id) != 0&&strcmp(user->book3,BAR_BOOK->id) != 0) { printf("无法退课!"); } else{ BAR_BOOK->num++; if(strcmp(user->book1,BAR_BOOK->id) == 0) { strcpy(user->book1,user->book2); strcpy(book1,book2); strcpy(user->book2,user->book3); strcpy(book2,book3); strcpy(user->book3,"o"); strcpy(book3,"o"); } else if(strcmp(user->book1,BAR_BOOK->id) == 0) { strcpy(user->book2,user->book3); strcpy(book2,book3); strcpy(user->book3,"o"); strcpy(book3,"o"); } else if(strcmp(user->book1,BAR_BOOK->id) == 0) { strcpy(user->book3,"o"); strcpy(book3,"o"); } printf("退课成功!"); booknum--; user->booknum = booknum; save(); } } if(peo == 1) { if(strcmp(ADMIN.book1,BAR_BOOK->id) != 0&&strcmp(ADMIN.book2,BAR_BOOK->id) != 0&&strcmp(ADMIN.book3,BAR_BOOK->id) != 0) { printf("无法退课!"); } else{ BAR_BOOK->num++; if(strcmp(ADMIN.book1,BAR_BOOK->id) == 0) { strcpy(ADMIN.book1,ADMIN.book2); strcpy(book1,book2); strcpy(ADMIN.book2,ADMIN.book3); strcpy(book2,book3); strcpy(ADMIN.book3,"o"); strcpy(book3,"o"); } else if(strcmp(ADMIN.book1,BAR_BOOK->id) == 0) { strcpy(ADMIN.book2,ADMIN.book3); strcpy(book2,book3); strcpy(ADMIN.book3,"o"); strcpy(book3,"o"); } else if(strcmp(ADMIN.book1,BAR_BOOK->id) == 0) { strcpy(ADMIN.book3,"o"); strcpy(book3,"o"); } printf("退课成功!"); ADMIN.booknum--; admin_save(); } } save_BOOK(); setposition(LB,INFO+3); system("pause"); BAR_BOOK = NULL; if(peo == 0) books(); admin_BOOK_choice(); } void borrowandreturn_BOOK_choice(int peo) { system("cls"); showtitle(); int choice = 0; while(1) { borrowandreturn_BOOK_menu(choice); setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); HideCursor(); char a,b; b = getch(); if(b==-32) a = getch(); fflush(stdin); if(a == UP && b == -32) { choice--; } else if(a == DOWN && b == -32) { choice++; } else if(b==13){ if(choice == 0) borrow_BOOK(peo); if(choice == 1) return_BOOK(peo); if(choice == 2) back_BOOK(peo); break; } else{ setposition(19,12); printf("输入“↑”或“↓”,回车键确认"); } if(choice<0) choice = 2; if(choice>2) choice = 0; } } void borrowandreturn_BOOK_menu(int choice) { Settitle("|学生选课系统|选课与退课|"); system("cls"); showtitle(); char o[3][30] = {"选 课","退 课","返回上一级"}; int i,j = 0,k=-1; for(i = 0; i <= 2;i++,k++) { if(choice == i) setcolor(0,15); setposition(LB+21,START+i+k+3); printf("%s",o[j++]); setcolor(11,0); } setposition(LB,INFO+1); } void back_BOOK(int peo) { if(peo == 0) books(); else admin_BOOK_choice(); }