From 72d387806e2d1d087d1d30a55c5bdc6c5d56846f Mon Sep 17 00:00:00 2001 From: 18570281412 <1509636344@qq.com> Date: Fri, 11 Jan 2019 17:21:20 +0800 Subject: [PATCH] adopt --- BOOKS.c | 1174 ++++++++++++++++++++++++++++++++++++++++++++++++++++ books.book | 1 + 2 files changed, 1175 insertions(+) create mode 100644 BOOKS.c create mode 100644 books.book diff --git a/BOOKS.c b/BOOKS.c new file mode 100644 index 0000000..5d74f6f --- /dev/null +++ b/BOOKS.c @@ -0,0 +1,1174 @@ +#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(); +} + diff --git a/books.book b/books.book new file mode 100644 index 0000000..317ba6d --- /dev/null +++ b/books.book @@ -0,0 +1 @@ + 001 C 27 Ȼѧ 12 18 002 Python 30 Ȼѧ 12 10 003 20 5 40 ַid 27 999 999 \ No newline at end of file