直接上代码不解释,文章末尾有惊喜哦!
typedef struct book{
char*name;
int id;
int count;
int status;
structbook *next;
Book *head = NULL;
intnbook =0;
int main(){
welcome();
return0;
}void welcome(){
printf("*************************欢迎使用图书管理系统*************************\n");
while(1){
printf("-------------------------------------\n");
printf("请输入项目前编号执行相关操作:\n");
printf("\n[1] 管理员入口\n\n[2] 学生入口\n\n[0] 退出\n\n");
switch(land()){
case'1':
while(1){
if(usrmanager()){
continue;
}else{
break;
}
}
break;
case'2':
while(1){
if(usrstudent()){
continue;
}else{
break;
}
}
break;
case'0':
exit(0);
default:
error("采集项目参数失败");
}
}
}char land(){
char c, flag;
int i;
while(1){
for(i =0; (c = getchar()) !='\n'; flag = c, ++i)
;
if(i ==1){
if(flag =='1'|| flag =='2'|| flag =='0'){
return flag;
}
}elseif(i ==0){
continue;
}
error("[请输入命令: 1 / 2 / 0 选择项目]");
}
return'\0';
}voiderror(char*s){
fprintf(stderr, "%s\n", s);
}char dostudent(){
char c, flag;
int i;
while(1){
for(i =0; (c = getchar()) !='\n'; flag = c, ++i )
;
if(i ==1){
if(flag =='1'|| flag =='2'|| flag =='3'|| flag =='0'){
return flag;
}
}elseif(i ==0){
continue;
}
error("[请输入命令: 1 / 2 / 3/ 0 选择项目]");
}
}int usrstudent(){
printf("-------------------------------------\n");
printf("请输入项目前编号执行相关操作:\n\n");
printf("[1] 借阅图书\n[2] 归还图书\n[3] 查看馆存图书\n");
printf("[0] 返回主页\n");
switch(dostudent()){
case'1':
borrowbook();
break;
case'2':
returnbook();
break;
case'3':
viewbook();
break;
case'0'