📄 library.c
字号:
else
break;
}
if(j <= L->length)
{
if(!p)
{
printf("出现错误!\n");
return ERROR;
}
if(p->rd.num == rd.num)
{
printf("该用户存在!\n");
return ERROR;
}
else
{
InsertyonghuList(yl,j,rd);
yl->length++;
}
}
else
{
InsertyonghuList(yl,j,rd);
yl->length++;
}
return OK;
}
void Addyonghulist() // 添加用户函数
{
reader rd;
int j;
printf("\n请输入要添加用户的信息:\n");
printf("请输入该用户编号:");
scanf("%d",&rd.num);
printf("请输入该用户名称:");
scanf("%s",rd.name);
rd.count=0;
for(j=0;j<N;j++)
{
rd.bw[j].borrownum=0;
rd.bw[j].btime[0]=0;
rd.bw[j].btime[1]=0;
rd.bw[j].btime[2]=0;
rd.bw[j].ltime[0]=0;
rd.bw[j].ltime[1]=0;
rd.bw[j].ltime[2]=0;
}
if(Addyonghu(yl,rd))
{
printf("添加成功!\n");
}
else
{
printf("添加失败!\n");
}
}
status Deleteyonghulist() //删除用户函数
{
yonghuList p;
int n;
int j=1;
printf("请输入要删除的用户编号:");
scanf("%d",&n);
p=yl->next;
while(p && j<yl->length && n>p->rd.num)
{
p=p->next;
j++;
}
if(!p)
{
printf("出现错误!\n");
return ERROR;
}
if(Deleteyonghu(j,n))
{
printf("删除成功!\n");
yl->length--;
}
else
printf("删除失败!\n");
return OK;
}
status Modifyyonghulist() //修改用户函数
{
yonghuList p;
int n;
printf("请输入要修改的用户编号:");
scanf("%d",&n);
if(Modifyyonghu(n))
printf("修改成功!\n");
else
printf("修改失败!\n");
return OK;
}
void Printyonghu(yonghuList L) // 显示用户
{
yonghuList p;
int i;
p=L->next;
printf("\n以下 %d 个用户信息分别为:\n",L->length);
printf("用户编号 名称 借书编号 借书时间 还书时间\n");
while(p!=NULL)
{
printf(" %5d %8s %10d %4d%3d%3d %4d%3d%3d\n",p->rd.num,p->rd.name,p->rd.bw[0].borrownum,
p->rd.bw[0].btime[0],p->rd.bw[0].btime[1],p->rd.bw[0].btime[2],p->rd.bw[0].ltime[0],p->rd.bw[0].ltime[1],p->rd.bw[0].ltime[2]);
if(p->rd.count)
{
for(i=1;i<p->rd.count;i++)
{
printf(" %5d %8s %10d %4d%3d%3d %4d%3d%3d\n",p->rd.num,p->rd.name,p->rd.bw[i].borrownum,
p->rd.bw[i].btime[0],p->rd.bw[i].btime[1],p->rd.bw[i].btime[2],p->rd.bw[i].ltime[0],p->rd.bw[i].ltime[1],p->rd.bw[i].ltime[2]);
}
}
p=p->next;
}
}
void Findyonghulist()
{
int n;
printf("请输入所要查找的用户编号:");
scanf("%d",&n);
Findyonghu(n);
}
void Printyonghulist() // 显示用户函数
{
Printyonghu(yl);
}
status bookborrowexit(book bk) // 判断借阅图书是否存在
{
int flag=0;
bookList p;
if(bl)
{
p=bl->next;
while(p)
{
if(p->bk.num==bk.num)
{
if(p->bk.curremain>0)
{
p->bk.curremain--;
return OK;
}
else
{
printf("此书没有现存!\n");
return ERROR;
}
flag=1;
}
else
p=p->next;
}
if(!flag)
return ERROR;
}
else
{
printf("没有图书!\n");
return ERROR;
}
}
status booklendexit(reader rd,book bk) // 判断还书是否存在
{
yonghuList p;
bookList q;
int i,j;
p=yl->next;
if(bl)
{
while(p )
{
if(p->rd.num == rd.num)
{
break;
}
else
p=p->next;
}
q=bl->next;
while(q)
{
if(q->bk.num==bk.num)
{
for(i=0;i<p->rd.count;i++)
{
if(p->rd.bw[i].borrownum==bk.num)
{
q->bk.curremain++;
p->rd.bw[i].borrownum=0;
p->rd.bw[i].btime[0]=0;
p->rd.bw[i].btime[1]=0;
p->rd.bw[i].btime[2]=0;
p->rd.bw[i].ltime[0]=0;
p->rd.bw[i].ltime[1]=0;
p->rd.bw[i].ltime[2]=0;
for(j=i;j<p->rd.count;j++)
p->rd.bw[j]=p->rd.bw[j+1];
p->rd.count--;
return OK;
}
}
}
else
q=q->next;
}
return ERROR;
}
else
{
printf("没有此图书!\n");
return ERROR;
}
}
void yonghuborrowexit(reader rd) // 判断用户借书是否存在
{
yonghuList p;
book bk;
int flag=0;
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
if(yl)
{
p=yl->next;
while(p)
{
if(p->rd.num==rd.num)
{
flag=1;
printf("用户可以借书!\n");
printf("请输入所要借图书的编号:");
scanf("%d",&bk.num);
if(bookborrowexit(bk))
{
if(p->rd.count < N)
{
p->rd.bw[p->rd.count].borrownum=bk.num;
p->rd.bw[p->rd.count].btime[0]=timeinfo->tm_year+1900;
p->rd.bw[p->rd.count].btime[1]=timeinfo->tm_mon+1;
p->rd.bw[p->rd.count].btime[2]=timeinfo->tm_mday;
p->rd.bw[p->rd.count].ltime[0]=p->rd.bw[p->rd.count].btime[0];
p->rd.bw[p->rd.count].ltime[1]=p->rd.bw[p->rd.count].btime[1]+1;
if(p->rd.bw[p->rd.count].ltime[1]>12)
{
p->rd.bw[p->rd.count].ltime[1]-=12;
p->rd.bw[p->rd.count].ltime[0]++;
}
p->rd.bw[p->rd.count].ltime[2]=p->rd.bw[p->rd.count].btime[2];
p->rd.count++;
printf("此书借阅成功!\n");
break;
}
else
{
printf("已达到借阅极限!\n你最多可以借阅 %d !\n",N);
break;
}
}
else
{
printf("你输入的信息错误!\n");
break;
}
}
else
p=p->next;
}
if(!flag)
{
printf("你输入的用户不存在!\n请重新输入!\n");
}
}
else
printf("没有用户记录!\n");
}
void yonghulendexit(reader rd) // 判断用户还书是否存在
{
yonghuList p;
book bk;
int flag=0;
if(yl)
{
p=yl->next;
while(p)
{
if(p->rd.num==rd.num)
{
flag=1;
printf("用户可以还书!\n");
printf("请输入所要还的图书的编号:");
scanf("%d",&bk.num);
if(booklendexit(rd,bk))
{
printf("还书成功!\n");
break;
}
else
{
printf("你输入的图书不存在!\n");
break;
}
}
else
p=p->next;
}
if(!flag)
{
printf("你输入的用户不存在!\n请重新输入!\n");
}
}
else
printf("没有用户记录!\n");
}
void yonghu() // 用户系统
{
int i;
printf("\n欢迎进入用户系统!\n");
printf("<1>创建用户\n");
printf("<2>添加用户\n");
printf("<3>删除用户\n");
printf("<4>修改用户\n");
printf("<5>显示用户\n");
printf("<6>查找用户\n");
printf("<0>退出\n");
while(scanf("%d",&i),i)
{
switch(i)
{
case 1:Createyonghulist();break;
case 2:Addyonghulist();break;
case 3:Deleteyonghulist();break;
case 4:Modifyyonghulist();break;
case 5:Printyonghulist();break;
case 6:Findyonghulist();break;
case 0:exit(0);break;
}
}
}
void Addbooklist() //添加图书函数
{
book bk;
printf("\n请输入要添加图书的信息:\n");
printf("请输入该图书编号:");
scanf("%d",&bk.num);
printf("请输入该图书名称:");
scanf("%s",bk.name);
printf("请输入该图书作者:");
scanf("%s",bk.writer);
printf("请输入该图书的现存量:");
scanf("%d",&bk.curremain);
printf("请输入该图书的库存量:");
scanf("%d",&bk.sumremain);
if(AddBook(bl,bk))
{
printf("添加成功!\n");
}
else
{
printf("添加失败!\n");
}
}
status Deletebooklist() // 删除图书函数
{
bookList p;
int n;
int j=1;
printf("请输入要删除的图书编号:");
scanf("%d",&n);
p=bl->next;
while(p && j<bl->length && n>p->bk.num)
{
p=p->next;
j++;
}
if(!p)
{
printf("出现错误!\n");
return ERROR;
}
if(DeleteBook(j,n))
{
printf("删除成功!\n");
bl->length--;
}
else
printf("删除失败!\n");
return OK;
}
status Modifybooklist() // 修改图书函数
{
bookList p;
int n;
printf("请输入要修改的图书编号:");
scanf("%d",&n);
if(ModifyBook(n))
printf("修改成功!\n");
else
printf("修改失败!\n");
return OK;
}
void Printbooklist() // 显示图书函数
{
Printbook(bl);
}
void tushu() // 图书系统
{
int i;
printf("\n欢迎进入图书系统!\n");
printf("<1>创建图书\n");
printf("<2>添加图书\n");
printf("<3>删除图书\n");
printf("<4>修改图书\n");
printf("<5>显示图书\n");
printf("<6>查找图书\n");
printf("<0>退出\n");
while(scanf("%d",&i),i)
{
switch(i)
{
case 1:CreateBookList();break;
case 2:Addbooklist();break;
case 3:Deletebooklist();break;
case 4:Modifybooklist();break;
case 5:Printbooklist();break;
case 6:FindBooklist();break;
case 0:exit(0);break;
}
}
}
void jieshu() // 借书系统
{
reader rd;
printf("\n欢迎进入借书系统!\n");
printf("请输入用户编号:");
scanf("%d",&rd.num);
yonghuborrowexit(rd);
}
void huanshu() //还书系统
{
reader rd;
printf("\n欢迎进入还书系统!\n");
printf("请输入用户编号:");
scanf("%d",&rd.num);
yonghulendexit(rd);
}
void Admin() // 管理员
{
int n,i;
char c[5];
char m[5];
m[0]='a';m[1]='d';m[2]='m';m[3]='i';m[4]='n';
getchar();
printf("请输入密码:");
for(i=0;i<5;i++)
{
c[i]=getch();
if(c[i]>='0'||c[i]<='9'||c[i]>='a'||c[i]<='z'||c[i]>='A'||c[i]<='Z')
putchar('*');
}
if(c[0]==m[0]&&c[1]==m[1]&&c[2]==m[2]&&c[3]==m[3]&&c[4]==m[4])
{
printf("\n\n\r\r欢迎管理员登录!\n\n");
printf("\r\r<1>用户系统\n");
printf("\r\r<2>图书系统\n");
printf("\r\r<0>退出系统\n");
while(scanf("%d",&n),n){
switch(n)
{
case 1:yonghu();break;
case 2:tushu();break;
case 0:exit(0);break;
}
}
}
else
printf("\n密码不正确!\n");
}
void Yonghu() // 用户
{
int n;
printf("\r\r欢迎用户登录!\n\n");
printf("\r\r<1>借书系统\n");
printf("\r\r<2>还书系统\n");
printf("\r\r<0>退出系统\n");
while(scanf("%d",&n),n){
switch(n)
{
case 1:jieshu();break;
case 2:huanshu();break;
case 0:exit(0);break;
}
}
}
void main()
{
int n;
printf("\r\r!图书管理系统!\n\n");
printf("\r\r<1>管理员登录\n");
printf("\r\r<2>用户登录\n");
printf("\r\r<0>退出系统\n");
while(scanf("%d",&n),n)
{
switch(n)
{
case 1:Admin();break;
case 2:Yonghu();break;
case 0:exit(0);break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -