#include"stdio.h"
#include"conio.h"
#include"string.h"
# include "time.h"
struct node
{
long boo_num; //书籍编号
char boo_name[128]; // 书名
char boo_writer[128]; //作者
char boo_pub[128]; //出版社
int boo_price; //书的价格 %d
char pub_date[64]; //出版日期
int boo_state; //1没借,0已借出
int bor_time; //书籍被借次数
};
struct reader
{
long rea_num; //读者编号
char rea_name[128]; //读者 姓名
long boo_num; //书籍编号
char bor_name[128]; // 书名
int rea_kind; //类型0为老师,1为学生
int rea_fk; //罚款钱数0
int boo_year; // 借书的日期
int boo_month;
int boo_day;
int if_return; //1 yes 0 no
};
struct log
{
char user[20];
char pass[20];
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void books_init() /////////////////初始化模块//////////////////////
{
FILE *fp,*fp1,*fp2;
char ch;
int i;
struct node book[10]={{9001001,"C cheng xu she ji","Tan Haoqiang","QinghuaDaxueChubanshe",26,"2005/7/3",0,10},{
9001002,"BiaozhunRibenYu","Hanshaoxaing","RenmingJiaoyuChubanshe",63,"2005/4/1",1,6},{
9001003,"Gaodengshuxue","TongjiDaxuexi","GaodengShuxueChubanshe",23,"2007/6/6",0,4},{
9001004,"Daxueyingyu","LIyinHua","ShanghaiWaiyuChubanshe",34,"2002/1/1",1,7},{
9001005,"WuLIXue","MaWenWei","GaodengJiaoyuChubanshe",31,"2006/3/5",0,13}};
struct reader mon[10]={{8001,"zhangsan",9001001,"C cheng xu she ji",1,0,2009,6,2,0},{
8002,"lisi",9001005,"WuLIXu",0,0,2009,6,4,0},{
8002,"lisi",9001003,"Gaodengshuxue",0,0,2009,6,4,0}};
struct log zhmm[10]={{"admin","123456"}};
printf("\n初始化==》\n\n");
printf("\n初始化将重置所有··书架书籍数据··读者数据··登陆数据··确定要初始化(Y/N)?\n");
printf(" ");
ch=getchar();
if(ch!='Y'&&ch!='y')
return;
fp=fopen("books.dat","wb");
fp1=fopen("readers.dat","wb");
fp2=fopen("log.dat","wb");
for(i=0;i<5;i++)
{
fwrite(&book[i],sizeof(struct node),1,fp);
}
for(i=0;i<3;i++)
{
fwrite(&mon[i],sizeof(struct reader),1,fp1);
}
fwrite(&zhmm[0],sizeof(struct log),1,fp2);
printf("************************************************ 数据已重置!*****************");
fclose(fp);
fclose(fp1);
fclose(fp2);
return;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void new_book() ///////新书入库模块
{
printf("==》新书入架==》");
printf("\n为图书馆加入新书\n");
FILE *fp;
int i,j;
char ch;
struct node book[128];
fp=fopen("books.dat","rb");
if(fp==NULL)
{
printf("打开文件出错,请检查文件!");
return;
}
for(i=0;!feof(fp);i++)
fread(&book[i],sizeof(struct node),1,fp);
j=i-1;
printf(" *请输入新书本号:");
scanf("%ld",&book[j].boo_num);
ch=getchar();
printf(" *请输入新书书名:");
gets(book[j].boo_name);
printf(" *请输入新书作者:");
gets(book[j].boo_writer);
printf(" *请输入新书出版社:");
gets(book[j].boo_pub);
printf(" *请输入新书的价格:");
scanf("%d",&book[j].boo_price);
ch=getchar();
printf(" *请输入新的出版日期(格式:2009/9/9):");
gets(book[j].pub_date);
book[j].boo_state=1;
book[j].bor_time=0;
printf("\n");
fclose(fp);
printf("书籍编号 书名 出版社 出版时间 价格");
printf("\n%ld\t\t%s\t\t %s \t\t%s \t\t %d\n",book[j].boo_num,book[j].boo_name,book[j].boo_pub,book[j].pub_date,book[j].boo_price);
printf("请检查输入信息是否正确,按(Y或y)开始登记新书信息\n");
printf(" ");
ch=getchar();
if(ch!='Y'&&ch!='y')
{
printf("\n操作已取消\n");
return;
}
fp=fopen("books.dat","wb");
if(fp==NULL)
{
printf("打开文件出错,请检查文件");
return;
}
for(i=0;i<j+1;i++)
fwrite(&book[i],sizeof(struct node),1,fp);
/* for(i=0;i<j+1;i++)
{
printf("%ld\t%s\t%s %d %d\n",book[i].boo_num,book[i].boo_name,book[i].boo_pub,book[i].bor_time,book[i].boo_state);
}
*/
printf("\n\n ***新书信息登记成功!\n\n");
fclose(fp);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void del_book() //旧书删了
{
printf("\n==》书籍丢失\n\n");
FILE *fp;
char ch;
long num;
int i,j,t=0;
fp=fopen("books.dat","rb");
if(fp==NULL)
{
printf("ERRO");
return;
}
struct node book[128];
for(i=0;!feof(fp);i++)
fread(&book[i],sizeof(struct node),1,fp);
j=i-1;
printf("请您输入要删的书的编号:");
scanf("%ld",&num);
for(i=0;i<j;i++)
{
if(book[i].boo_num==num)
{
t=1;
printf("%ld\t%s\t%s %d %d\n",book[i].boo_num,book[i].boo_name,book[i].boo_pub,book[i].bor_time,book[i].boo_state);
}
}
if(t==0)
{
printf("无此书信息,请检查输入是否有误\n\n");
return;
}
fclose(fp);
printf("确定要删除此书的信息?按(Y或y)开始删除操作\n");
printf(" ");
ch=getchar();
ch=getchar();
if(ch!='Y'&&ch!='y')
{
printf("操作已取消!");
return;
}
fp=fopen("books.dat","wb");
for(i=0;i<j;i++)
{
if(book[i].boo_num!=num)
{
printf("%ld\t%s\t%s %d %d\n",book[i].boo_num,book[i].boo_name,book[i].boo_pub,book[i].bor_time,book[i].boo_state);
fwrite(&book[i],sizeof(struct node),1,fp);
}
}
printf(" ******删除书籍信息处理完成\n");
fclose(fp);
return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int log() /////////////登陆模块//////////////////
{
FILE *fp;
time_t now;
//return(1);
int i,j=0,m,times=0,t=0,select=1;
char acco[20],pass[20];
struct log log1[128];
fp=fopen("log.dat","rb");
if(fp==NULL)
{
printf("打开文件出错,请联系管理员!");
return(0);
}
for(i=0;!feof(fp);i++)
fread(&log1[i],sizeof(struct log),1,fp);
printf("\n==》登陆\n");
printf("\n请先登录!\n");
printf(" *1. 管理员登录\n");
printf(" *2. 普通用户登录\n");
printf(" *3. 没有账户,请先注册\n");
printf(" *0. 退出\n\n");
printf("请选择:");
m=getche();
printf("\n");
now=time(NULL);
if(m=='1')
{
printf("\n==》登陆==》管理员登陆\n\n");
while(times<3)
{
j=0;
printf("\n请输入管理员密码:");
while(1)
{
pass[j]=getche();
if(pass[j]==13)
break;
printf("\b");
putchar('*');
j++;
}
pass[j]='\0';
printf("\n");
for(j=0;j<i-1;j++)
{
//printf("%s\t%s\n",log1[j].user,log1[j].pass);
if((strcmp(log1[j].user,"admin")==0)&&(strcmp(log1[j].pass,pass)==0))
{
printf("********************************身份:管理员 登陆时间:%s\n",ctime(&now));
return(1);
}
}
printf("密码错误,请重新输入!");
times++;
}
printf("您已经连续错密码三次,系统将自动退出!\n");
return(0);
}
if(m=='2')
{
printf("\n==》登陆==》普通用户登陆\n\n");
while(times<3)
{
printf("请输入用户名:");
gets(acco);
printf("\n");
printf("请输入密码:");
while(1)
{
pass[j]=getche();
if(pass[j]==13)
break;
printf("\b");
putchar('*');
j++;
}
pass[j]='\0';
printf("\n");
for(j=0;j<i-1;j++)
{
if((strcmp(log1[j].user,acco)==0)&&(strcmp(log1[j].pass,pass)==0))
{
printf("******************************身份:普通用户 登陆时间: