#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Menu()//菜单1
{
printf(" -------------------------------\n");
printf("| 请输入数字查询 |\n");
printf("| 1.查询图书/用户基本情况 |\n");
printf("| 2.借/还书 |\n");
printf("| 3.图书排序 |\n");
printf("| 0.退出 |\n");
printf(" -------------------------------\n");
}
void Menu_1() {//菜单2
printf(" -------------------------------\n");
printf(" | 请输入查询字母 |\n");
printf(" |A.查询图书 |\n");
printf(" |B.查询用户 |\n");
printf(" -------------------------------\n");
}
void Menu_2() {//菜单3
printf(" -------------------------------\n");
printf(" | 请输入查询字母 |\n");
printf(" |A.借书 |\n");
printf(" |B.还书 |\n");
printf(" -------------------------------\n");
}
struct borrow {//用户借书信息
char book_num[4];
char book_name[20];
double book_price;
}Borrow;
struct user {//用户基本信息
int book_id;
char user_name[10];
char user_sex[5];
int borrow_num;
int borrow_max;
borrow inf[8];
}User;
struct book {//图书基本信息
char book_num[4];
char book_name[20];
double book_price;
int book_sum;
int exist_num;
}Book, tmp;//tmp结构体用于图书排序时存储图书信息
int main() {
user User[6] = { {1,"杨凯","男",1,8,{"A01","Java 程序设计",36}},
{2,"吕何","女",1,6,{"A01","Java 程序设计",36}},
{3,"刘江","女",1,6,{"A01","Java 程序设计",36}},
{4,"肖燕","男",2,4,{{"A01","Java 程序设计",36},{"B03","J2EE 编程指南",28}}},
{5,"章征","男",1,4,{"A01","Java 程序设计",36}},
{6,"刘宝","男",2,4,{{"C01","C 程序设计",20.5},{"B03","J2EE 编程指南",28}}} };
book Book[4] = { {"A01","Java 程序设计",36,4,4},
{"B03","J2EE 编程指南",28,1,1},
{"B04","CSS 手册",25,9,9},
{"C01","C 程序设计",20.5,26,26} };
while (1) {
loop6:Menu();//loop6:程序起始位置,主菜单
int choose_1;
int m;//m==图书证号
char u[10];//u==输入的图书编号
char choose_2;
char book_num[4];
int p = 0;
intp1 = 0;//p==循环4次
int p2 = 0;
char choose_3;
int i = 0;
loop0:scanf("%d", &choose_1);//loop0:重新输入选择
getchar();
if (choose_1 >= 0 && choose_1 <= 3) {
switch (choose_1) {//选择主菜单功能
case 1:
Menu_1();//调用菜单1
scanf("%c", &choose_2);//选择菜单1功能
if (choose_2 != 'A' && choose_2 != 'B') {
printf("请输入正确的字母\n");
}
else {
if (choose_2 == 'A') {//进入查书功能
printf("请输入查找的图书编号\n");
getchar();
loop7:scanf("%s", book_num);
for (i = 0; i < 4; i++) {
if (strcmp(book_num, Book[i].book_num) == 0) {//判断并输出所查图书信息
printf("图书编号:%s\t图书名称:%s\t图书价格:%lf\t", Book[i].book_num, Book[i].book_name, Book[i].book_price);
printf("图书总数:%d\t现存数量:%d\n", Book[i].book_sum, Book[i].exist_num);
break;
}
}
if (i==4) {
printf("请输入正确的图书编号\n");
goto loop7;
}
}
else {
printf("请输入图书证编号\n");
loop8:scanf("%d", &m);
if (m > 0 && m < 7) {//判断查询借书情况
printf("图书证号:%d\t姓名:%s\n共借书%d册,", User[m - 1].book_id, User[m - 1].user_name, User[m - 1].borrow_num);
printf("借书情况如下:\n", User[m - 1].borrow_max - User[m - 1].borrow_num);
for (p = 0; p <= User[m - 1].borrow_num; p++) {
if (User[m - 1].inf[p].book_price != 0) {
printf("图书编号:%s\t图书名称:%s\t", User[m - 1].inf[p].book_num, User[m - 1].inf[p].book_name);
printf("图书价格:%lf\n", User[m - 1].inf[p].book_price);
}
}
}
else {
printf("请输入正确的图书编号\n");
goto loop8;
}
}
}
break;
case 2:
Menu_2();
loop3:scanf("%c", &choose_3);//loop3:重新输入选择
if (choose_3 == 'A') {
printf("请输入您的图书证号\n");
loop1:scanf("%d", &m);
if (m > 0 && m < 7) {
printf("请选择所借书编号\n");
loop2: scanf("%s", u);
p = 0;
for (p = 0; p < 4; p++) {//借书功能
if (strcmp(u, Book[p].book_num) == 0) {
if (Book[p].exist_num > 0 && User[m - 1].borrow_num < User[m - 1].borrow_max && User[m - 1].borrow_num >= 0) {
Book[p].exist_num = Book[p].exist_num - 1;
User[m - 1].borrow_num = User[m - 1].borrow_num + 1;
for (p2 = 0; p2 < 8; p2++) {
if (User[m - 1].inf[p2].book_price == 0) {
strcpy(User[m - 1].inf[p2].book_num, Book[p].book_num);
strcpy(User[m - 1].inf[p2].book_name, Book[p].book_name);
User[m - 1].inf[p2].book_price = Book[p].book_price;
printf("借书成功,您借的书是%s,您还可以借%d本书\n", Book[p].book_name, User[m - 1].borrow_max - User[m - 1].borrow_num);
break;
}
}
break;
}
else {//借书失败
printf("此书已无存货或您已到达最大借书数量\n");
goto loop6;
}
}
}
if (p == 4) {
printf("请输入正确的图书编号\n");
goto loop2;
}
}
else {
printf("请输入正确的图书证号\n");
goto loop1;
}
}
else {
if (choose_3 == 'B') {
printf("请输入您的图书证号\n");
loop4:scanf("%d", &m);
if (m > 0 && m < 7) {
printf("请选择所还书编号\n");
loop5: scanf("%s", u);
for (p = 0; p < 4; p++) {
if (strcmp(u, Book[p].book_num) == 0) {//判断能否还书
if (User[m - 1].borrow_num > 0) {
User[m - 1].borrow_num--;
Book[p].exist_num++;
for (p2 = 0; p2 < 8; p2++) {//还书功能
if (strcmp(u, User[m - 1].inf[p2].book_num) == 0) {
User[m - 1].inf[p2].book_price = 0;
printf("还书成功,您还的是%s,您还有%d本书待还\n", Book[p].book_name, User[m - 1].borrow_num);
break;
}
}
break;
}
else {
printf("您未借此书\n");
goto loop5;
}
}
}
if (p == 4) {
printf("请输入正确的图书编号\n");
goto loop5;
}
}
else {
printf("请输入正确的图书证号\n");
goto loop4;
}
}
else {
printf("请输入正确的字母(A/B)\n");
goto loop3;
}
}
break;
case 3://图书排序
for (p = 0; p <= 2; p++) {
for (p1 = 0; p1 <= 2; p1++) {
if (Book[p1].book_price > Book[p1 + 1].book_price) {
tmp = Book[p1];
Book[p1] = Book[p1 + 1];
Book[p1 + 1] = tmp;
}
}
}
for (p = 0; p <= 3; p++) {//输出排序
printf("图书编号:%s\t图书名称:%s\t", Book[p].book_num, Book[p].book_name);
printf("图书价格:%lf\t图书总数:%d\t现存数量:%d\n", Book[p].book_price, Book[p].book_sum, Book[p].exist_num);
}
break;
case 0:exit(0);
break;
}
}
else {
printf("请输入正确的数字\n");
goto loop0;
}
}
return 0;
}