#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
///全局变量
static char glzhanghao[MAX]={“aaaaaa”};///管理员账户唯一
static char glmima[MAX]={“k666666”};
///图书结构体///
typedef struct book
{
char shuming[MAX]; //书名定义
char shuhao[MAX];//书号定义
char zuozhe[MAX];//作者
int shuliang;//书的数量
char fenlei[MAX];//书的分类
char chubanshe[MAX];//书的出版社定义
char banci[MAX];//版次
double jiage;//价格
struct book *next;///下一本书
}Book;//图书结构体
Book * book_head;///图书的头指针
int book_sum;///图书的总数\
//用户结构体
typedef struct user
{
int xuhao1;///用户的序号,用于确定用户
char name[MAX]; //用户姓名定义
char user_zhanghao[MAX];//账号定义
char user_mima[MAX];//账号密码
int zhengjianhao;///证件号
char jieyue[MAX];///用户正在借阅的图书
int n;///用户正在借阅的数量
struct user *next;///下一个用户
}User;//用户结构体
User * user_head;///用户的头指针
int user_sum;///用户的总数
/
void save() //保存数据到文件
{
FILE* fp = fopen(“user.txt”, “wb”);///定义一个指向文件的指针fp,并以只写的方式打开文件
User* t = user_head->next;
while (t)
{
fwrite(t, sizeof(User), 1, fp);
t = t->next;
}
fclose(fp);
FILE *fp1 = fopen("book.txt", "wb");///定义一个指向文件的指针fp,并以只写的方式打开文件
Book* s = book_head->next;
while (s)
{
fwrite(s, sizeof(Book), 1, fp1);///将所有数据输出到fp指向磁盘文件中
s = s->next;
}
fclose(fp1);
}
//创建链表//
void creatbooklist(char *shuming,char *shuhao,char *zuozhe,int shuliang,double jiage,char *fenlei,char *chubanshe,char *banci)///创建图书链表
{
Book p1=(Book)malloc(sizeof(Book));///
p1=book_head;///将头指针赋给p1
while(p1->next)///当p1的next为真时
p1=p1->next;///p1始终指向尾结点
Book *p2=(Book*)malloc(sizeof(Book));
strcpy(p2->shuming ,shuming);
strcpy(p2->shuhao ,shuhao);
strcpy(p2->zuozhe ,zuozhe);
p2->shuliang =shuliang;
p2->jiage =jiage;
strcpy(p2->fenlei ,fenlei);
strcpy(p2->chubanshe ,chubanshe);
strcpy(p2->banci ,banci);
p2->next=NULL;
p1->next=p2;
save();
}
void creatuserlist(char *name,char *user_zhanghao,char *user_mima,int zhengjianhao,char *jieyue)///创建用户信息链表
{
User p1=(User)malloc(sizeof(User));///
p1=user_head;///将头指针赋给p1
while(p1->next)///当p1的next为真时
p1=p1->next;///p1始终指向尾结点
User *p2=(User*)malloc(sizeof(User));
strcpy(p2->name,name);
strcpy(p2->user_zhanghao ,user_zhanghao);
strcpy(p2->user_mima ,user_mima);
p2->zhengjianhao =zhengjianhao;
strcpy(p2->jieyue ,jieyue);
p2->next=NULL;
p1->next=p2;
save();
}
图书管理部分//
void addbook()///添加图书
{
char shuming[MAX]; //书名定义
char shuhao[MAX];//书号定义
char zuozhe[MAX];//作者
int shuliang;//书的数量
double jiage;
char fenlei[MAX];//书的分类
char chubanshe[MAX];//书的出版社定义
char banci[MAX];//版次
printf(“请输入要添加图书的书名、书号、作者、数量、类别\n”);
printf("书名:");
scanf("%s",shuming);
printf("书号:");
scanf("%s",shuhao);
Book *b=(Book*)malloc(sizeof(Book));
b=book_head;
while(b)
{
if(strcmp(b->shuhao,shuhao)==0) {printf("该书号已存在,请重新输入!");addbook();}
b=b->next;
}
printf("作者:");
scanf("%s",zuozhe);
printf("书的数量:");
scanf("%d",&shuliang );
if(shuliang<=0) {printf("数量输入有问题!请重新输入数量!\n");addbook();}
printf("书的价格:");
scanf("%lf",&jiage );
if(jiage<=0) {printf("价格输入有问题!请重新输入价格!\n");addbook();}
printf("书的分类:");
scanf("%s",fenlei);
printf("书的出版社:");
scanf("%s",chubanshe);
printf("书的版次:");
scanf("%s",banci);
++book_sum;
creatbooklist(shuming,shuhao,zuozhe,shuliang,jiage,fenlei,chubanshe,banci);
printf("添加书籍%s成功!\n",shuming);
system("pause");
system("cls");
}
void outbook()///输出全部图书信息
{
int xuhao=1;
if(!book_sum)
{
printf(“本系统内暂无图书,请联系管理员添加图书!\n”);
return ;
}
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
printf(“全部图书信息如下所示:\n”);
printf(“序号 书名 书号 作者 数量 价格 分类 出版社 版次\n”);
while(b)
{
printf("%-9d",xuhao);
printf("%-16s",b->shuming );
printf("%-9s",b->shuhao);
printf("%-9s",b->zuozhe);
printf("%-9d",b->shuliang);
printf("%-9.2lf",b->jiage);
printf("%-9s",b->fenlei);
printf("%-15s",b->chubanshe);
printf("%-9s\n",b->banci);
b=b->next;
++xuhao;
}
}
/查找方式///
void zuozhe()/按作者查找
{
int xuhao=1;
int t=0;
char zuozhe[MAX];
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
printf(“请输入需要查找的作者的图书:”);
scanf("%s",zuozhe);
printf(“该作者的图书信息如下所示:\n”);
printf(“序号 书名 书号 作者 数量 价格 分类 出版社 版次\n”);
while(b)
{
if(strcmp(b->zuozhe,zuozhe)==0)
{
printf("%-9d",xuhao);
printf("%-16s",b->shuming );
printf("%-9s",b->shuhao);
printf("%-9s",b->zuozhe);
printf("%-9d",b->shuliang);
printf("%-9.2lf",b->jiage);
printf("%-9s",b->fenlei);
printf("%-15s",b->chubanshe);
printf("%-9s\n",b->banci);
t=1;
}
b=b->next;
++xuhao;
}
if(t==0)
printf("本系统内暂无该作者的图书的信息!!!");
system("pause");
system("cls");
}
void fenlei()按分类查找
{
int xuhao=1;
int t=0;
char fenlei[MAX];
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
printf(“请输入需要查找的分类的图书:”);
scanf("%s",fenlei);
printf(" 该分类的图书信息如下所示:\n");
printf(“序号 书名 书号 作者 数量 价格 分类 出版社 版次\n”);
while(b)
{
if(strcmp(b->fenlei,fenlei)==0)
{
printf("%-9d",xuhao);
printf("%-16s",b->shuming );
printf("%-9s",b->shuhao);
printf("%-9s",b->zuozhe);
printf("%-9d",b->shuliang);
printf("%-9.2lf",b->jiage);
printf("%-9s",b->fenlei);
printf("%-15s",b->chubanshe);
printf("%-9s\n",b->banci);
t=1;
}
b=b->next;
++xuhao;
}
if(t==0)
printf("本系统内暂无该分类的图书的信息!!!");
system("pause");
system("cls");
}
void shuming()/按书名查找
{
int xuhao=1;
int t=0;
char shuming[MAX];
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
printf(“请输入需要查找的书名:”);
scanf("%s",shuming);
printf(“序号 书名 书号 作者 数量 价格 分类 出版社 版次\n”);
while(b)
{
if(strcmp(b->shuming,shuming)==0)
{
printf("%-9d",xuhao);
printf("%-16s",b->shuming );
printf("%-9s",b->shuhao);
printf("%-9s",b->zuozhe);
printf("%-9d",b->shuliang);
printf("%-9.2lf",b->jiage);
printf("%-9s",b->fenlei);
printf("%-15s",b->chubanshe);
printf("%-9s\n",b->banci);
t=1;
break;
}
b=b->next;
++xuhao;
}
if(t==0)
printf("本系统内暂无%s的信息!!!",shuming[MAX]);
system("pause");
system("cls");
}
/更改库存///
void kucun()
{
int xuhao=1;
int t=0;
int kucun;
char shuming[MAX];
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
printf(“请输入需要修改库存的书名:”);
scanf("%s",shuming);
printf(“序号 书名 书号 作者 数量 价格 分类 出版社 版次\n”);
while(b)
{
if(strcmp(b->shuming,shuming)==0)
{
printf("%-9d",xuhao);
printf("%-16s",b->shuming );
printf("%-9s",b->shuhao);
printf("%-9s",b->zuozhe);
printf("%-9d",b->shuliang);
printf("%-9.2lf",b->jiage);
printf("%-9s",b->fenlei);
printf("%-15s",b->chubanshe);
printf("%-9s\n",b->banci);
t=1;
break;
}
b=b->next;
++xuhao;
}
if(t==0)
printf("本系统内暂无%s的信息!!!",shuming[MAX]);
printf("请输入修改后的库存:");
scanf("%d",&kucun);
printf("是否确认修改?1.是 2.否(请输入1或2选择功能)\n");
int a;
scanf("%d",&a);
if(a==1||a==2)
{
if(a==1)
{
b->shuliang =kucun;
save();
printf("更改库存成功!!!");
}
if(a==2)return;
}
else printf("指令选择有误!!!\n");
system("pause");
system("cls");
}
void sum()
{
int a;
int sum1=0;
int sum2=0;
double sum=0;
printf(“1.查看图书总图书库存量\n”);
printf(“2.查看图书总用户量\n”);
printf(“3.查看图书总图书资产\n”);
scanf("%d",&a);
if(a==1)
{
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
while(b)
{
sum1=sum1+b->shuliang;
b=b->next;
}
printf(“本图书馆的总图书库存为%d\n”,sum1);
}
if(a==2)
{
User *b=(User*)malloc(sizeof(User));
b=user_head->next;
if(b) sum2++;
printf("用户一共有%d位!\n",sum2);
}
if(a==3)
{
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
while(b)
{
double c;
c=b->shuliang*b->jiage;
sum=sum+c;
b=b->next;
}
printf(“本图书馆的图书总价为%.2lf\n”,sum);
}
}
void delbook() //删除图书信息
{
outbook();
printf("请输入待删除的书籍序号(输入 -1 退出删除操作):\n");
int xuhao; scanf("%d", &xuhao);
if (xuhao == -1)
{
printf("已成功退出删除系统!\n");
system("pause");
system("cls");
return;
}
else if (xuhao > book_sum || xuhao <= 0)
{
printf("请正确输入待删除的图书序号!\n");
}
else
{
Book* tb = (Book*)malloc(sizeof(Book));
Book* np = (Book*)malloc(sizeof(Book));
np = book_head;
tb = book_head->next;
for (int i = 1; i < xuhao; ++i)///找到需要删除的位置
{
np = tb;
tb = tb->next;
}
np->next = tb->next;
free(tb);
--book_sum;
save();
printf("该图书已从系统内删除成功!\n");
}
system("pause");
system("cls");
}
用户信息管理/
void outuser()///输出全部用户信息
{
int xuhao1=1;
if(!user_sum)
{
printf(“本系统内暂无用户账号,请联系管理员添加账号!\n”);
return ;
}
User b=(User)malloc(sizeof(User));
b=user_head->next;
printf(“全部用户信息如下所示:\n”);
while(b)
{
printf(“序号:%d\n”,xuhao1);
printf(“姓名:%s\n”,b->name );
printf("账号:%s\n",b->user_zhanghao );
printf("密码:%s\n",b->user_mima);
printf("证件号:%d\n",b->zhengjianhao );
printf("正在借阅的书籍:%s\n" ,b->jieyue);
for(int i=0;i<b->n;i++)
{
printf("%s",b->jieyue[i]);
}
b=b->next;
++xuhao1;
}
}
void adduser()///添加账户
{
char name[MAX]; //用户姓名定义
char user_zhanghao[MAX];//账号定义
char user_mima[MAX];//账号密码
int zhengjianhao;///证件号
// User_book b[10];
char jieyue[MAX];///用户正在借阅的图书
printf(“请输入要添加的账户信息(添加账户时请将用户正在借阅的书籍设为无):\n”);
printf("姓名:");
scanf("%s",name);
printf("账号:");
scanf("%s",user_zhanghao);
printf("密码:");
scanf("%s",user_mima);
printf("证件号:");
scanf("%d",&zhengjianhao );
printf("用户正在借阅的书:");
scanf("%s",jieyue);
++user_sum;
creatuserlist(name,user_zhanghao,user_mima,zhengjianhao,jieyue);
printf("添加用户:%s成功!\n",name);
system("pause");
system("cls");
}
void deluser() //删除用户账号
{
outuser();
printf("请输入待删除的用户序号(输入 -1 退出删除操作):\n");
int xuhao1;
scanf("%d", &xuhao1);
if (xuhao1 == -1)
{
printf("已成功退出删除系统!\n");
system("pause");
system("cls");
return;
}
else if (xuhao1 > user_sum || xuhao1 <= 0)
{
printf("请正确输入待删除的用户序号!\n");
}
else
{
User* tb = (User*)malloc(sizeof(User));
User* np = (User*)malloc(sizeof(User));
np = user_head;
tb = user_head->next;
for (int i = 1; i < xuhao1; ++i)///找到需要删除的位置
{
np = tb;
tb = tb->next;
}
np->next = tb->next;
free(tb);
--user_sum;
save();
printf("该用户账号已从系统内删除成功!\n");
}
system("pause");
system("cls");
}
//借阅部分///
void duzhejieyue()//按书号借阅图书
{
int n=0;
User *l=(User *)malloc(sizeof(User));
l=user_head->next ;
int t=0;
char zh[MAX];
int ID;
int xuhao1=1;
printf(“用户请再输入您的账号以进行接下来的操作!\n”);
scanf("%s",zh);
printf(“请输入您的证件号以进行接下来的操作!\n”);
scanf("%d",&ID);
while(l)
{
if((strcmp(l->user_zhanghao,zh)0)&&(l->zhengjianhaoID)) break;
else if((strcmp(l->user_zhanghao,zh)0)&&(l->zhengjianhao!=ID)) printf(“密码错误!请从新登陆!”);
l=l->next;
++xuhao1;
}
if(IDl->zhengjianhao)
{
int xuhao=1;
char shuhao[MAX];
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
printf(“请输入需要查找的书号的图书:”);
scanf("%s",shuhao);
while(b)
{
if(strcmp(b->shuhao,shuhao)0)
{
printf(" 该图书信息如下所示:\n");
printf(“书名:%s\n”,b->shuming);
printf(“书号:%s\n”,b->shuhao);
printf(“作者:%s\n”,b->zuozhe);
printf(“书的数量:%d\n”,b->shuliang);
printf(“书的价格:%.2lf\n”,b->jiage);
printf(“书的分类:%s\n”,b->fenlei);
printf(“书的出版社:%s\n”,b->chubanshe);
printf(“书的版次:%s\n”,b->banci);
t=1;
break;
}
b=b->next;
}
if(t0)
printf(“本系统内暂无该书号的图书的信息!!!”);
while(b)
{
if(b->shuliang>0)
{
printf(“该图书可以借阅!\n”);
printf(“1.确定借阅!\n”);
printf(“2.退出系统!\n”);
int s;
scanf("%d",&s);
switch(s)
{
case 1:
{
b->shuliang=b->shuliang-1;
User u1=(User)malloc(sizeof(User));
u1=user_head;//用u1指向用户
while(u1->next)
u1=u1->next; //u1始终指向尾结点
User u2=(User)malloc(sizeof(User));
u2=user_head->next;
while(u2)
{
if(u2->zhengjianhao ==ID)
{
printf(“姓名:%s\n”,u2->name );
printf(“账号:%s\n”,u2->user_zhanghao );
printf(“证件号:%d\n”,u2->zhengjianhao );
break;
}
u2=u2->next;
}
while(u2)
{
strcat(u2->jieyue ,b->shuming);
break;
}
save();
printf(“借阅成功!!!”);
}
case 2:return ;
}
}
else {printf("该图书库存不足,欢迎下次借阅!");break;}
}
}
}
void backbook() 还书
{
int n=0;
User *l=(User *)malloc(sizeof(User));
l=user_head->next ;
int t=0;
char zh[MAX];
int ID;
int xuhao1=1;
printf(“用户请再输入您的账号以进行接下来的操作!\n”);
scanf("%s",zh);
printf(“请输入您的证件号以进行接下来的操作!\n”);
scanf("%d",&ID);
while(l)
{
if((strcmp(l->user_zhanghao,zh)0)&&(l->zhengjianhaoID)) break;
l=l->next;
++xuhao1;
}
if(ID==l->zhengjianhao)
printf(“您借阅图书有:”);
printf("%s\n",l->jieyue);
printf(“请输入您要归还的图书书名:”);
char c[MAX];
scanf("%s",c);
int lent=strlen©;
char p;
while(p=strstr(l->jieyue,c))//找到l->jieyue中第一次与c匹配的地址,若找不到返回NULL
{//strstr
while((p+lent)!=’\0’)
{//能找到
p=(p+lent);//从开始找到的位置将去掉c的那部分复制过来
p++;
}
*p=’\0’;//s串打上结束标志
}
Book b=(Book)malloc(sizeof(Book));
b=book_head->next;
while(b)
{
if(strcmp(b->shuming,c)==0)
{
b->shuliang=b->shuliang+1;
break;
}
b=b->next;
}
printf(“您现在借阅图书有:”);
printf("%s\n",l->jieyue);
save();
}
//菜单//
void menu_chazhao()/查找方式的菜单/
{
int c;
system(“color 0B”);
system(“cls”);
printf("\t\t\t ◆◇请选择查找方式◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇1.按书名查找◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇2.按作者查找◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇3.按分类查找◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇0.退出◇◆\t\t\t\t\n" );
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf("\t\t\t ◆◇请选择功能◇◆\t\t\t\t\n");
scanf("%d",&c);system(“cls”);
switch©
{
case 1: shuming();system(“pause”);menu_chazhao();break;
case 2: zuozhe();system(“pause”);menu_chazhao();break;
case 3: fenlei();system(“pause”);menu_chazhao();break;
case 0: return ;
default:printf(“指令错误,请重新输入!!!\n”);system(“pause”);system(“cls”);break;
}
}
void menu_chazhaouser()/查找方式的菜单/
{
int c;
system(“color 0B”);
system(“cls”);
printf("\t\t\t ◆◇借阅图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇1.按书名查找◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇2.按作者查找◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇3.按分类查找◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇4.借阅图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇0.退出◇◆\t\t\t\t\n" );
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf("\t\t\t ◆◇请选择功能◇◆\t\t\t\t\n");
scanf("%d",&c);system(“cls”);
switch©
{
case 1: shuming();system(“pause”);menu_chazhaouser();break;
case 2: zuozhe();system(“pause”);menu_chazhaouser();break;
case 3: fenlei();system(“pause”);menu_chazhaouser();break;
case 4: duzhejieyue();system(“pause”);menu_chazhaouser();break;
case 0: return ;
default:printf(“指令错误,请重新输入!!!\n”);system(“pause”);system(“cls”);break;
}
}
void menu_gly()//管理员管理菜单
{
//load();
int b;
system(“color 0B”);
system(“cls”);
printf(“登录成功!!!欢迎使用图书管理系统!!!\n”);
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf( “\t\t\t◆◇管理员管理系统◇◆\t\t\t\t\n” );
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf("\t\t\t ◆◇请选择管理模式◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇1.添加图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇2.删除图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇3.查找图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇4.更改图书库存◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇5.显示全部图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇6.添加读者账户◇◆\n" );
printf("\t\t\t ◆◇7.浏览读者信息◇◆\t\t\t\t\n" );
printf("\t\t\t◆◇8.删除读者信息◇◆\n" );
printf("\t\t ◆◇9.查看图书库存和总读者量◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇0.退出◇◆\t\t\t\t\n" );
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf("\t\t\t ◆◇请选择功能◇◆\t\t\t\t\n");
scanf("%d",&b);system(“cls”);
switch(b)
{
case 1:addbook();system(“pause”);menu_gly();system(“pause”);break;
case 2: delbook();system(“pause”);menu_gly();system(“pause”);break;
case 3:menu_chazhao();system(“pause”);menu_gly();system(“pause”);break;
case 4:kucun();system(“pause”);menu_gly();system(“pasue”);break;
case 5: outbook();system(“pause”);menu_gly();system(“pause”);break;
case 6: adduser();system(“pause”);menu_gly();system(“pause”);break;
case 7: outuser();system(“pause”);menu_gly();system(“pause”);break;
case 8: deluser();system(“pause”);menu_gly();system(“pause”);break;
case 9: sum();system(“pause”);menu_gly();system(“pause”);break;
case 0:return ;
default:printf(“指令错误,请重新输入!!!\n”);system(“pause”);system(“cls”);break;
}
}
void menu_jyz()//借阅者/
{
int c;
system("color 0B");
system("cls");
printf( "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n" );
printf( "\t\t\t ◆◇读者借阅系统◇◆\t\t\t\t\n" );
printf( "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n" );
printf("\t\t\t ◆◇请选择读者模式◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇1.借阅图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇2.归还图书◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇3.退出系统◇◆\t\t\t\t\n" );
printf( "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n" );
printf("\t\t\t ◆◇请选择功能◇◆\t\t\t\t\n");
scanf("%d",&c);system("cls");
switch(c)
{
case 1: menu_chazhaouser();system("pause");break;
case 2: backbook();system("pause");break;
case 3:return ;
default:printf("指令错误,请重新输入!!!\n");system("pause");system("cls");break;
}
}
void gly_dl()管理员登陆///
{
char zh[MAX];
char mm[MAX];
system(“color 0B”);
system(“cls”);
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf("\t\t\t ◆◇请登录管理员账户◇◆\t\t\t\t\n" );
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf("\t\t\t 温馨提示:请正确输入账号与密码!!\t\t\t\t\n" );
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf(“账号:”);
scanf("%s",zh);
printf(“密码:”);
scanf("%s",mm);
if(strcmp(glzhanghao,zh)==0&&strcmp(glmima,mm)==0) menu_gly();
else
{
printf("账号或密码出错!!!");
system("pause");
system("cls");
}
}
void user_jyz()借阅者登陆
{
system(“cls”);
char a[MAX],b[MAX];
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
printf("\t\t\t ◆◇请输入用户账户◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇请输入用户密码◇◆\t\t\t\t\n" );
printf( “〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n” );
scanf("%s",a);
scanf("%s",b);
//int xuhao1=1;
//int t=0;
User u=(User)malloc(sizeof(User));
u=user_head->next;
while(u)
{
if(strcmp(u->user_zhanghao,a)==0)
{
if(strcmp(u->user_mima,b)==0) menu_jyz();
else {printf(“密码输入错误!”);system(“pause”);system(“cls”);break;}
}
//t=1;
u=u->next;
// ++xuhao1;
}
}
///
void load() //从文件中加载数据
{
book_head = (Book*)malloc(sizeof(Book));///创建图书头结点
book_head->next = NULL;///将其next域置为NULL
book_sum = 0;///将图书总数初始化为0
FILE* fp1;///定义一个指向文件的指针fp1
fp1 = fopen("book.txt", "rb");///以只读的方式打开book.txt
if (fp1 == NULL)///如果文件为空,存储失败
{
fp1 = fopen("book.txt", "wb");
if (fp1 == NULL)
{
printf("图书存储失败!\n");
exit(0);
}
fclose(fp1);
}
else///如果文件不为空
{
Book* bp = (Book*)malloc(sizeof(Book));///建立一个图书节点
bp = book_head;///令他为头指针
Book* tp = (Book*)malloc(sizeof(Book));
while (fread(tp, sizeof(Book), 1, fp1))///fread从文件中读取一个数据块 读入数据
///从fp1指向的文件中读入一个Book长度的数据,存储到节点中
///读取book.txt文件,实现将文件中数据存入tp链表中
{
bp->next = tp;
++book_sum;///图书总数加1
tp = tp->next;///指针后移
tp = (Book*)malloc(sizeof(Book));///再建立一个节点
bp = bp->next;
}
fclose(fp1);
}
user_head = (User*)malloc(sizeof(User));
user_head->next = NULL;
user_sum = 0;
FILE* fp2;
fp2 = fopen("user.txt", "rb");
if (fp2 == NULL)
{
system("color 0B");
printf("本系统暂时无读者用户账号,请管理员添加读者用户账号!!!\n");
system("pause");
system("cls");
menu_gly();
return ;
printf("账户存储失败!!!\n");
exit(0);
}
User* np = (User*)malloc(sizeof(User));
np = user_head;
User* t = (User*)malloc(sizeof(User));
while (fread(t, sizeof(User), 1, fp1))
{
np->next = t;
++user_sum;///用户总数加1
t = t->next;///指针后移
t = (User*)malloc(sizeof(User));
np = np->next;
}
fclose(fp2);
}
//主函数//
void main()
{
int i;
int a=0;
int sum=0;
char zh[MAX];
char mm[MAX];
load();
system("color 0B");
system("cls");
printf( "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n" );
printf( "\t\t\t ◆◇图书管理系统◇◆\t\t\t\t\n" );
printf( "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n" );
printf( "\t\t\t~~~欢迎使用图书管理系统~~~\t\t\t\n");
printf( "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n" );
printf("\t\t\t ◆◇请选择登录模式◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇1.管理员登录◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇2.读者登录◇◆\t\t\t\t\n" );
printf("\t\t\t ◆◇3.退出系统◇◆\t\t\t\t\n" );
printf( "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n" );
scanf("%d",&i);system("cls");
switch(i)
{
case 1: gly_dl();main();break;
case 2: user_jyz();main();break;
case 3:printf("\t\t\t ~~~谢谢使用!!!~~~\t\t\t \n" );exit(0);
}
}