功能:
①新建账号密码,然后通过二者的匹配登录系统,这样可以保证是本校同学才能使用,另外还可以修改密码。
②添加图书的基本信息,如 书号,书名,作者,出版社,类别,进库量;
③删除图书,通过图书的书名进行删除;
④图书查询,通过图书的书号,书名,作者或者类别进行检索;
⑤浏览图书的库存,将所有数目展示出来;
⑥借书登记,先判断是否有这本数,然后进行借书人学号,姓名,归还截止期限,借书书名进行登记
⑦还书情况查看。
⑧借阅情况查看。
⑨会员登录,通过数据文件中的已注册的账号密码来登录到图书管理系统。
⑩修改密码
#include <stdio.h>
#define N 100
#include <string.h>
struct user_register{
long long user_name; // 账号
char password[20]; // 密码
};
struct user_register user[N];
int user_volume = 0;
struct borrow{
int call; //书号
char title[30]; // 书名
int student; //学号
char name[30]; // 姓名
char date_range[20]; // 归还日期
};
struct borrow lend[N];
int lending = 0; // $
struct books{
int call; // 书号
char name[30]; //书名
char author[20]; // 作者
int amount; //进库量
};
struct books book[N];
int numberbook = 0; //$
int lend_books[N]={0}; //$
void add();
void output();
void glance();
void data();
int reading();
int check_in();
int outputdan();
void total();
int login();
int log_in();
int store();
int manager();
int repetition();
int remove1();
int cancel();
int change();
int main()
{
int num1, num2, num3 = 0;
int ch;
char assist;
int num, num4, num5, num6, num7, num8, num9;
int ch1;
char x;
while(1)
{
ch1 = 0;
printf("--------------时越图书--------------\n");
printf("| 注意在登陆前请先刷新系统!!! |\n");
printf("|-----------------------------------\n");
printf("| 1.会员登陆!!|\n");
printf("| 2.账号注册!!|\n");
printf("| 3.管理员登陆!|\n");
printf("| 4.刷新系统!!|\n");
printf("| 5.修改密码!!|\n");
printf("| 6.退出系统!!|\n");
printf("------------------------------------\n");
printf("请选择:");
scanf("%d", &ch1);
scanf("%c", &x);
if(ch1 == 1)
{
if(num3 == 3)
{
printf("输入错误次数已达上限!!!\n");
return 0;
}
num3 += 1;
num2 = log_in();
if(num2 == 0)
{
system("cls");
printf(" \n");
printf(" 登录成功!!\n");
printf(" \n");
break;
}
else if(num2 == 1)
{
printf("密码错误, 重新输入!!\n");
}
else if(num2 == 2)
{
printf("账号错误, 重新输入!!\n");
}
}
else if(ch1 == 2)
{
num6 = login();
system("cls");
if(num6 == 1)
{
printf("账号重复!!\n");
}
else
{
printf(" \n");
printf(" 注册成功!!");
printf(" \n");
}
}
else if(ch1 == 3)
{
num3 = manager();
if(num3 == 0)
{
system("cls");
printf("\t登陆成功!!\n");
}
else
{
printf("\t登陆失败\n");
}
break;
}
else if(ch1 == 6)
{
printf("成功退出!!\n");
return 0;
}
else if(ch1 == 4)
{
num4 = store();
if(num4 == 1)
{
system("cls");
printf(" \n");
printf(" 刷新成功!!\n");
printf(" \n");
}
else
{
printf("刷新失败!!\n");
}
}
else if(ch1 == 5)
{
num9 = change();
if(num9 == 0)
{
printf("\t修改成功!!");
}
else
{
printf("\t无此账号!");
}
}
}
while(1)
{
ch = 0;
printf("-------------时越图书--------------\n");
printf(" 1.添加图书信息\n");
printf(" 2.所有图书\n");
printf(" 3.写入文件\n");
printf(" 4.浏览图书库存\n");
printf(" 5.读取文件\n");
printf(" 6.借书登记\n");
printf(" 7.所有借出图书\n");
printf(" 8.归还图书\n");
printf(" 9.删除图书\n");
printf(" 10.查询图书\n");
printf(" 11.退出系统\n");
printf("-----------版权所有.祯哥-----------\n");
printf("请选择:");
scanf("%d", &ch);
scanf("%c", &assist);
switch(ch)
{
case 1:
add();
printf("添加成功!!!!!\n");
break;
case 2:
output();
break;
case 3:
data();
printf("写入文件成功!!!\n");
break;
case 4:
glance();
break;
case 5:
num = reading();
if(num == 1)
{
printf("文件读取错误\n");
}
else{
printf("读取成功!!\n");
}
break;
case 6:
num1 = check_in();
if(num1 == 1)
{
printf("无此图书!!!\n");
}
else if(num1 == 2)
{
printf("此图书以借出,请过段时间再来!!\n");
}
else
{
printf("借书成功,请按时归还!!\n");
}
break;
case 7:
total();
break;
case 8:
num7 = remove1();
if(num7 == 0)
{
printf("\t归还成功!!");
}
else
{
printf("\t归还失败!");
}
break;
case 9:
num8 = cancel();
if(num8 == 0)
{
printf("\t删除成功!!\n");
}
else if(num8 == 2)
{
printf("\t图书已借出,暂时无法删除!!\n");
}
else
{
printf("\t删除失败!\n");
}
break;
case 10:
outputdan();
break;
case 11:
return 0;
default:
printf("输入错误,请重新输入!!!!\n");
}
}
return 0;
}
int change() // 修改密码
{
system("cls");
printf("-------------------所有图书-----------------------\n");
long long pass;
int i;
printf("请输入账号:");
scanf("%lld", &pass);
for(i = 0;i < user_volume;i++)
{
if(pass == user[i].user_name)
{
printf("请输入密码:");
scanf("%s", user[i].password);
FILE *fp;
fp = fopen("账号密码.zz", "wb");
fwrite(&user_volume, sizeof(int), 1, fp);
fwrite(user, sizeof(struct user_register), user_volume, fp);
fclose(fp);
return 0;
}
}
return 1;
printf("--------------------------------------------------\n");
}
int outputdan() // 查询图书
{
system("cls");
printf("-------------------所有图书-----------------------\n");
int i, j;
printf("请输入书号:");
scanf("%d", &i);
for(j = 0;j < numberbook;j++)
{
if(i == book[j].call)
{
if(lend_books[j] == 1)
{
printf("\t图书已借出!!\n");
}
printf("\t书号\t书名\t作者\t进库量\n");
printf("\t%d\t%s\t%s\t%d\n", book[j].call, book[j].name, book[j].author, book[j].amount);
return 0;
}
}
printf("无此图书\n");
return 0;
printf("--------------------------------------------------\n");
}
int cancel() // 删除图书
{
system("cls");
printf("-----------时越图书--------------\n");
int book1;
int i, j;
printf("请输入书号:");
scanf("%d", &book1);
for(i = 0;i < numberbook;i++)
{
if(book1 == book[i].call)
{
for(j = i;j < numberbook;j++)
{
if(lend_books[j] == 1)
{
return 2;
}
book[j] = book[j + 1];
}
numberbook = numberbook - 1;
return 0;
}
}
return 1;
printf("--------------------------------\n");
}
int remove1() // 归还图书
{
system("cls");
printf("-----------时越图书--------------\n");
int book;
int i, j;
printf("请输入书号:");
scanf("%d", &book);
for(i = 0;i < lending;i++)
{
if(book == lend[i].call)
{
for(j = i;j < lending-1;j++)
{
lend[j] = lend[j+1];
}
lending = lending-1;
lend_books[i] = 0;
return 0;
}
}
return 1;
printf("--------------------------------\n");
}
int manager() // 管理员账号密码
{
system("cls");
printf("-----------时越图书--------------\n");
int i;
long long name;
char password[20];
long long nam = 2829162281ULL;// 或者 UL
char pass[] = "ls.5201314";
printf(" 请输入账号:");
scanf("%lld", &name);
printf(" 请输入密码:");
scanf("%s", password);
if(name == nam)
{
for(i = 0;i < strlen(pass);i++)
{
if(password[i] != pass[i])
{
return 1;
}
}
return 0;
}
return 1;
printf("--------------------------------\n");
}
int login() //账号注册
{
system("cls");
int num = 0;
printf("----------时越图书.注册界面----------------\n");
printf("请输入账号(只允许输入数字!):");
scanf("%lld", &user[user_volume].user_name);
num = repetition();
if(num == 1)
{
return 1;
}
printf("请输入密码:");
scanf("%s", user[user_volume].password);
user_volume += 1;
FILE *fp;
fp = fopen("账号密码.zz", "wb");
fwrite(&user_volume, sizeof(int), 1, fp);
fwrite(user, sizeof(struct user_register), user_volume, fp);
fclose(fp);
printf("--------------------------------------------\n");
}
int repetition() // 判断账号是否重复
{
int i;
for(i = 0;i < user_volume;i++)
{
if(user[user_volume].user_name == user[i].user_name)
{
return 1;
}
}
return 0;
}
int store()
{
FILE * fw;
fw = fopen("账号密码.zz", "rb");
fread(&user_volume, sizeof(int), 1, fw);
fread(user, sizeof(struct user_register), user_volume, fw);
fclose(fw);
return 1;
}
int log_in()
{
system("cls");
printf("-----------------时越图书.登录界面----------\n");
long long num1;
char num2[20];
printf("请输入账号:");
scanf("%lld", &num1);
printf("请输入密码:");
scanf("%s", num2);
int i, j;
for(i = 0;i < user_volume;i++)
{
if(num1 == user[i].user_name)
{
for(j = 1;j < 20;j++)
{
if(num2[j] == '\0' && user[i].password[j] == '\0')
{
return 0;
}
if(num2[j] == '\0' || user[i].password[j] == '\0')
{
return 1;
}
if(num2[j] != user[i].password[j])
{
return 1;
}
}
}
}
return 2;
printf("------------------------------------------------\n");
}
void total() // 所有借出图书
{
printf("---------------时越图书------------\n");
system("cls");
if(lending == 0)
{
printf("无借出图书\n");
}
int i;
printf("序号\t书号\t书名\t学号\t姓名\t归还日期\n");
for(i = 0;i < lending;i++)
{
printf("%d\t%d\t%s\t%d\t%s\t%s\n", i+1, lend[i].call, lend[i].title, lend[i].student, lend[i].name, lend[i].date_range);
}
printf("-----------------------------------\n");
}
int check_in() // 借书
{
system("cls");
int i;
int j = 0;
int t1;
char a[20];
printf("请输入书号:");
scanf("%d", &t1);
for(i = 0;i < numberbook;i++)
{
if(t1 == book[i].call)
{
if(lend_books[i] == 1)
{
return 2;
}
j = 1;
break;
}
}
if(j == 0)
{
return 1;
}
printf("---------------时越图书------------\n");
lend[lending].call = t1;
strcpy(lend[lending].title, book[i].name);
printf("请输入姓名:");
scanf("%s", lend[lending].name);
printf("请输入学号:");
scanf("%d", &lend[lending].student);
printf("请输入归还日期:");
scanf("%s", lend[lending].date_range);
lending += 1;
lend_books[i] = 1;
printf("------------------------------------\n");
return 0;
}
void data() // 读取文件
{
system("cls");
FILE *fp;
fp = fopen("图书信息", "wb");
fwrite(&numberbook, sizeof(int), 1, fp);
fwrite(book, sizeof(struct books), numberbook, fp);
fclose(fp);
}
int reading()
{
system("cls");
FILE * fp;
fp = fopen("图书信息", "rb");
if(fp == NULL)
{
return 1;
}
fread(&numberbook, sizeof(int), 1, fp);
fread(book, sizeof(struct books), numberbook, fp);
fclose(fp);
}
void add()
{
system("cls");
printf("---------------时越图书------------\n");
printf("录入第%d本书\n", numberbook + 1);
printf("\t书号:");
scanf("%d", &book[numberbook].call);
printf("\t书名:");
scanf("%s", book[numberbook].name);
printf("\t作者:");
scanf("%s", book[numberbook].author);
printf("\t进库量:");
scanf("%d", &book[numberbook].amount);
numberbook += 1;
printf("-----------------------------------\n");
}
void output()
{
system("cls");
printf("-------------------所有图书-----------------------\n");
int i;
printf("序号\t书号\t书名\t作者\t进库量\n");
for(i = 0;i < numberbook;i++)
{
printf("%d\t%d\t%s\t%s\t%d\n", i+1, book[i].call, book[i].name, book[i].author, book[i].amount);
}
printf("--------------------------------------------------\n");
}
void glance()
{
system("cls");
int i;
printf("-----------所有图书库存量如下-------------\n");
printf("序号\t书名\t库量\n");
for(i = 0;i < numberbook;i++)
{
printf("%d\t%s\t%d\n", i+1, book[i].name, book[i].amount);
}
printf("==========================================\n");
}