- 直接上代码不解释
#include <stdio.h> #include <stdlib.h> #include <string.h> #define AVAILABLE 0 #define UNAVAILABLE 1 #define MAXNAME 30 #define CLEAR "cls" typedef struct book{ char *name; int id; int count; int status; struct book *next; }Book; void welcome(); void error(char *); // [异常提醒] char land(); // [主页面项目] int usrstudent(); // [学生入口]返回 0表示返回主页 1表示继续执行本函数 int usrmanager(); // [管理员入口]返回 0表示返回主页 1表示继续执行本函数 int viewbook(); // [查看图书]返回打印的图书个数 失败返回-1 int addbook(); // [注册图书]添加图书成功 返回图书id 失败返回-1 int modbook(); // [修改图书]修改图书信息 成功后返回id 失败 -1 int delbook(); // [注销图书]删除成功 返回被删除图书的id 失败返回-1 void printbook(Book *); // [打印图书] Book *lookup(char *, int); // [搜索图书] int borrowbook(); // [借阅图书] int returnbook(); // [归还图书] Book *head = NULL; int nbook = 0; int main(){ welcome(); return 0; } 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; } }else if(i == 0){ continue; } error("[请输入命令: 1 / 2 / 0 选择项目]"); } return '\0'; } void error(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 == '