#include <stdio.h>
#include <stdlib.h>
#include "windows.h"
#include "string.h"
#define S_MAX 50
int user_count = 0; //用户信息的总数
int book_count = 0;
char ini_path[100] = { "\0" }; //数据文件的绝对路径
char user_path[100] = { "\0" }; //用户数据文件的绝对路径
char book_path[100] = { "\0" };
int book_pos = 0; //book数组的计数
int user_pos = 0;
struct user_data
{
char name[10];
char book_name[50];
}user[S_MAX];
struct book_data
{
char no[10];
char name[50];
char author[30];
char money[10];
char in_or_out[10];
char user_name[10];
}book[S_MAX];
void read_file() //从文件读取数据
{
user_pos = 0;
int i;
for (i = 0; i<S_MAX; i++)
{
memset(user[i].name, '\0', 10);
memset(user[i].book_name, '\0', 50);
memset(book[i].no, '\0', 10);
memset(book[i].name, '\0', 50);
memset(book[i].author, '\0', 30);
memset(book[i].money, '\0', 10);
memset(book[i].in_or_out, '\0', 10);
memset(book[i].user_name, '\0', 10);
}
user_count = GetPrivateProfileInt("USER", "user_count", 0, user_path);
book_count = GetPrivateProfileInt("book", "book_count", 0, book_path);
for (i = 0; i<user_count; i++)
{
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
GetPrivateProfileString(t, "name", "", user[i].name, 10, user_path);
GetPrivateProfileString(t, "book_name", "", user[i].book_name, 50, user_path);
user_pos++;
}
for (i = 0; i<book_count; i++)
{
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
GetPrivateProfileString(t, "no", "", book[i].no, 10, book_path);
GetPrivateProfileString(t, "name", "", book[i].name, 50, book_path);
GetPrivateProfileString(t, "author", "", book[i].author, 30, book_path);
GetPrivateProfileString(t, "money", "", book[i].money, 10, book_path);
GetPrivateProfileString(t, "in_or_out", "", book[i].in_or_out, 10, book_path);
GetPrivateProfileString(t, "user_name", "", book[i].user_name, 10, book_path);
book_pos++;
}
}
void write_file()
{
int i;
for (i = 0; i<user_count; i++)
{
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
WritePrivateProfileString(t, "name", NULL, user_path);
WritePrivateProfileString(t, "book_name", NULL, user_path);
WritePrivateProfileString(t, "no", NULL, book_path);
WritePrivateProfileString(t, "name", NULL, book_path);
WritePrivateProfileString(t, "author", NULL, book_path);
WritePrivateProfileString(t, "money", NULL, book_path);
WritePrivateProfileString(t, "in_or_out", NULL, book_path);
WritePrivateProfileString(t, "user_name", NULL, book_path);
}
char temp[5] = { "\0" };
int temp_count = 0;
for (i = 0; i<user_pos; i++)
{
if (strcmp(user[i].name, "") == 0)
{
continue;
}
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
WritePrivateProfileString(t, "name", user[i].name, user_path);
WritePrivateProfileString(t, "book_name", user[i].book_name, user_path);
temp_count++;
}
sprintf(temp, "%d", temp_count);
WritePrivateProfileString("USER", "user_count", temp, user_path);
temp_count = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].no, "") == 0)
{
continue;
}
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
WritePrivateProfileString(t, "no", book[i].no, book_path);
WritePrivateProfileString(t, "name", book[i].name, book_path);
WritePrivateProfileString(t, "author", book[i].author, book_path);
WritePrivateProfileString(t, "money", book[i].money, book_path);
WritePrivateProfileString(t, "in_or_out", book[i].in_or_out, book_path);
WritePrivateProfileString(t, "user_name", book[i].user_name, book_path);
temp_count++;
}
sprintf(temp, "%d", temp_count);
WritePrivateProfileString("BOOK", "book_count", temp, book_path);
}
void search_user_name() //按借书人姓名查询
{
system("cls");
char search_key[10] = { "\0" };
printf("请输入要查询图书借书人:");
scanf("%s", search_key);
int i;
int s[10] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };
int s_i = 0;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].user_name, search_key) == 0)
{
find = 1;
s[s_i] = i;
s_i++;
printf("\n编 号: %s", book[i].no);
printf("\n名 称: %s", book[i].name);
printf("\n作 者: %s", book[i].author);
printf("\n金 额: %s", book[i].money);
printf("\n状 态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
else
{
for (i = 0; i<s_i; i++)
{
printf("\n\n第%d本书: %s", i + 1, book[i].name);
}
printf("\n\n共%d本", i);
}
fflush(stdin);
getchar();
}
void search_book_author() //按图书作者查询
{
system("cls");
char search_key[50] = { "\0" };
printf("请输入要查询图书的作者:");
scanf("%s", search_key);
int i;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].author, search_key) == 0)
{
find = 1;
printf("\n编 号: %s", book[i].no);
printf("\n名 称: %s", book[i].name);
printf("\n作 者: %s", book[i].author);
printf("\n金 额: %s", book[i].money);
printf("\n状 态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
fflush(stdin);
getchar();
}
void search_book_name() //按图书名称查询
{
system("cls");
char search_key[50] = { "\0" };
printf("请输入要查询图书的名称:");
scanf("%s", search_key);
int i;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].name, search_key) == 0)
{
find = 1;
printf("\n编 号: %s", book[i].no);
printf("\n名 称: %s", book[i].name);
printf("\n作 者: %s", book[i].author);
printf("\n金 额: %s", book[i].money);
printf("\n状 态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
fflush(stdin);
getchar();
}
void search_book_no() //按图书编号查询
{
system("cls");
char search_key[10] = { "\0" };
printf("请输入要查询图书的编号:");
scanf("%s", search_key);
int i;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].no, search_key) == 0)
{
find = 1;
printf("\n编 号: %s", book[i].no);
printf("\n名 称: %s", book[i].name);
printf("\n作 者: %s", book[i].author);
printf("\n金 额: %s", book[i].money);
printf("\n状 态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
fflush(stdin);
getchar();
}
void search_all_book() //查询所有图书
{
system("cls");
if (book_pos == 0)
{
printf("真TM穷,一本书都没有");
}
else
{
int i;
printf("共有%d本书\n", book_pos);
for (i = 0; i<book_pos; i++)
{
printf("\n编号:%s 名称:%s 作者:%s 金额:%s 状态:%s", book[i].no, book[i].name, book[i].author, book[i].money, book[i].in_or_out);
if (strcmp(book[i].in_or_out, "out") == 0)
{
printf(" 借书人:%s", book[i].user_name);
}
}
}
fflush(stdin);
getchar();
}
void search_all_user() //查询所有用户
{
system("cls");
if (user_pos == 0)
{
printf("要倒闭了?一个人都没有!");
}
else
{
int i;
printf("共有%d个用户\n", user_pos);
for (i = 0; i<user_pos; i++)
{
printf("\n用户名称: %s 借书名称: ", user[i].name);
if (strcmp(user[i].book_name, "") != 0)
{
printf("%s", user[i].book_name);
}
else
{
printf("未借书");
}
}
}
fflush(stdin);
getchar();
}
void No7() //查询
{
int f = 1;
int sel;
while (f)
{
system("cls");
printf(" *********************************\n");
printf(" * *\n");
printf(" * 图书管理系统--查询 *\n");
printf(" * *\n");
printf(" * 1.按图书编号查询 *\n");
printf(" * *\n");
printf(" * 2.按图书名称查询 *\n");
printf(" * *\n");
printf(" * 3.按作者查询 *\n");
printf(" * *\n");
printf(" * 4.按借书人姓名查询 *\n");
printf(" * *\n");
printf(" * 5.查询所有图书 *\n");
printf(" * *\n");
printf(" * 6.查询所有用户 *\n");
printf(" * *\n");
printf(" * 0.返回主菜单 *\n");
printf(" * *\n");
printf(" *********************************\n");
printf("请选择:(1,2,3,4,5,6,0) ");
fflush(stdin);
scanf("%d", &sel);
getchar();
switch (sel)
{
case 1:
search_book_no();
break;
case 2:
search_book_name();
break;
case 3:
search_book_author();
break;
case 4:
search_user_name();
break;
case 5:
search_all_book();
break;
case 6:
search_all_user();
break;
case 0:
f = 0;
break;
default:
break;
}
}
}
void No6() //用户信息删除
{
system("cls");
char del_key[10] = { "\0" };
printf("请输入要删除的用户名称:");
scanf("%s", del_key);
int i, del_pos;
int find = 0;
for (i = 0; i<user_pos; i++)
{
if (strcmp(user[i].name, del_key) == 0)
{
find = 1;
printf("\n姓 名: %s", user[i].name);
if (strlen(user[i].book_name)>0)
{
printf("\n所借书籍: %s", user[i].book_name);
}
del_pos = i;
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
fflush(stdin);
getchar();
return;
}
while (1)
{
fflush(stdin);
printf("\n\n确认要删除该记录吗?(y/n):");
char t;
scanf("%c", &t);
if (t == 'y' || t == 'Y')
{
if (strlen(user[del_pos].book_name)>0)
{
printf("\n\n该用户尚有书籍未归还,不能删除!");
fflush(stdin);
getchar();
return;
}
strcpy(user[del_pos].name, "");
strcpy(user[del_pos].book_name, "");
write_file();
printf("\n\n删除成功!");
read_file();
fflush(stdin);
getchar();
break;
}
else if (t == 'N' || t == 'n')
{
printf("\n\n你选择了不删除,按任意键返回!");
fflush(stdin);
getchar();
break;
}
else
{
continue;
}
}
}
//请在回复后发余下部分