/*************************
* 运行环境:vc6.0
*************************/
#include /*头文件名*/
#include
#include
#define Max 3 /*定义最大借书权限(可更改)*/
typedef struct book /*图书类型*/
{
char book_num[10];
char book_name[20];
int book_kc;
int book_xc;
struct book *next;
}BK;
typedef struct borrow /*借书数目类型*/
{
char borrow_book_num[10];
}BO;
typedef struct reader /*读者类型*/
{
char reader_num[10];
char reader_name[10];
int right;
BO borrow[Max]; /*嵌套借书数目类型*/
struct reader * next;
}RD;
BK *h_book; /*图书指针*/
RD *h_reader; /*读者指针*/
int Menu(); /*主菜单*/
void Menu_select(); /*主菜单选择函数*/
void Init(); /*初始化函数*/
void Init_reader(); /*初始化读者*/
void Init_book(); /*初始化图书*/
void Insert_New_Book(); /*增加新书*/
void Insert_New_Reader(); /*增加新读者*/
void del_old_book(); /*删除旧图书*/
void del_old_reader(); /*删除旧读者(就是已经不存在或毕业的同学)*/
void book_not_enough(); /*库存不足信息函数*/
int Find(); /*查找函数*/
void Find_Select(); /*查找选择菜单*/
void Find_Reader(); /*查找读者*/
void Find_Book(); /*查找图书*/
void Borrow_Book(); /*借书函数*/
void Return_Book(); /*还书函数*/
void about(); /*"关于系统的说明"函数*/
int Print(); /*打印函数*/
void Print_Select(); /*打印选择函数*/
void Print_book(); /*打印图书信息*/
void Print_reader(); /*打印读者信息*/
void Save(); /*保存信息函数*/
void Save_Reader(); /*保存读者信息*/
void Save_Book(); /*保存图书信息*/
void Load(); /*加载信息函数*/
void Load_Reader(); /*加载读者信息*/
void Load_Book(); /*加载图书信息*/
int Menu()
{ int sn;
printf("\n\t\t图书管理系统主菜单\n");
printf("=================================================\n");
printf("*\t0----退出系统 6----关于系统 \t*\n");
printf("*\t1----新书入库 7----旧书出库 \t*\n");
printf("*\t2----增新读者 8----删旧读者 \t*\n");
printf("*\t3----图书查询 9----输出全部信息\t*\n");
printf("*\t4----借书登记 10----库存不足图书\t*\n");
printf("*\t5----还书管理 11----保存当前信息\t*\n");
printf("=================================================\n");
printf("请选择相应代码:"); /*代码选择模式(下同)*/
for(;;)
{ scanf("%d",&sn);
fflush(stdin);
if(sn<0||sn>11)
printf("\n错误!请重新输入:");
else break;
}
return sn;
}
void Menu_select()
{
for(;;) /*循环调用模式,保证能进行重复操作(下同)*/
{
switch(Menu())
{ case 0:
system("cls");
Save();
printf("\n\n\t文件保存成功!\n");
printf("\n\n\tGoodBye!\n");
getch();
exit(0);
case 1:Insert_New_Book();break; /*功能调用*/
case 2:Insert_New_Reader();break;
case 3:Find_Select();break;
case 4:Borrow_Book();break;
case 5:Return_Book();break;
case 6:about();break;
case 7:del_old_book();break;
case 8:del_old_reader();break;
case 9:Print_Select();break;
case 10:book_not_enough();break;
case 11:Save(); Load();
printf("\n文件保存成功!按任意键进行下步操作....");
getch(); system("cls");break;
default:printf("\n错误!");exit(0);
}
}
}
void Init() /*初始化*/
{
Init_reader();
Init_book();
}
void Init_reader() /*初始化读者信息(从键盘输入一组数据)*/
{
RD *p0;
int i;
printf("\n读者初始化开始,请输入读者信息..\n包括编号.姓名..\n");
p0=(RD *)malloc(sizeof(RD));
h_reader=p0;
printf("\n请输入读者的信息:\n");
printf("ReaderNo.:"); /*输入读者编号(唯一)*/
scanf("%s",p0->reader_num);
printf("ReaderName:"); /*输入读者姓名(不唯一)*/
scanf("%s",p0->reader_name);
p0->right=0;
for(i=0;i
strcpy(p0->borrow[i].borrow_book_num,"0");
/*所借图书直接置为0(即没有借书)*/
p0->next=NULL;
printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");
/*头接点建立完毕*/
getch();
system("cls");
}
void Init_book() /*初始化图书信息(从键盘输入一组数据)*/
{
BK *p0;
printf("\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n");
p0=(BK *)malloc(sizeof(BK));
h_book=p0;
printf("\n请输入图书信息:\n");
printf("BookNo.:"); /*输入图书编号(唯一)*/
scanf("%s",p0->book_num);
printf("BookName:"); /*输入图书名称(不唯一)*/
scanf("%s",p0->book_name);
printf("Number:"); /*输入图书数量*/
scanf("%d",&p0->book_kc);
p0->book_xc=p0->book_kc; /*开始时图书现存量和库存量相等*/
p0->next=NULL;
printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
................
void main()
{
FILE *fp_book,*fp_reader;
if((fp_book=fopen("Book.dat","rb"))==NULL||(fp_reader=fopen("Reader.dat","rb"))==NULL)
{
about(); /*第一次启动系统,则进行初始化,否则进行加载*/
Init();
}
else
Load();
Menu_select(); /*调用主菜单*/
}