You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1175 lines
31 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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();
}