首页 > 代码库 > 图书管理系统
图书管理系统
本程序需要五个文件:
缓存区 // 用来临时存放图书信息
图书信息库 // 用来存放备份
账号 // 用来存储账号、密码和昵称
借书记录 // 用来存储每个用户的借书记录
数据个数 // 用来存储用户的个数和图书的种类
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #include<algorithm> using namespace std; struct library{ int ID; char name[30]; double price; char author[30]; int quan; char itd[2000]; }stu[100]; struct asccount{ char AcName[30]; char password[12]; char nickname[30]; }sta[100]; struct Book{ char Name[30]; char time[40]; }; struct node{ char users[30]; int sexes; struct Book book[30]; int r; node *Next; }; typedef struct node *L; L pre, hnj=NULL, kl = new node; L HEAD = new node; char strr[30]; int num=42,LLL,jj=2,logo=0,h=0,F=1,k=2,huan; void display(void);//显示图书信息管理菜单* void load(void);//把图书信息加载到内存* void save(void);//将数据保存到磁盘* void Sort(void);//排序* void SortByScore(void);//按书名首字母排序* void AscendVyPick(void);//按单价升序排序* void DesendByPick(void);//按单价降序排序* int cmp1(library a, library b);//按书名首字母排序判断* int cmp2(library a, library b);//按单价升序排序判断* int cmp3(library a, library b);//按单价降序排序判断* void IdArrange(void);//重新整理书号* void Find(void);//查找* void add(void);//添加* void edit(void);//修改* void DeleteAll(void);//删除所有信息* void PrintRecord(void);//输出一条记录* void FindByName(void);//按书名查找* void FindByNum(void);//按书号查找* void FindByAuthor(void);//按作者查找* void output(void);//输出所有图书信息* void over(void);//结束程序* void Huifu(void);//恢复出厂设置* void PrinEdit(void);//输出修改菜单* void FindEdit(void);//输出查找菜单* void PrintSort(void);//输出排序菜单* void CheckUser(void);//检验账号的合法性* void addUser(void);//新建账号* void findPassword(void);//找回密码* void EditPassword(void);//修改密码* void loadUser(void);//将账号读入内存* void saveUser(void);//将账号存入磁盘* void printuser(void);//输出账号菜单* int ling(void);//账号登录* void PrintBorrow(void);//打印借书管理系统菜单* void Menu(void);//图书信息管理* void Borrow(void);//图书借还系统* void BorrowRecord(L q);//借书记录* void BorrowBook(L q, L y);//借书* void SendBook(L q, L y);//还书* L LookUser(L head);//用户搜索* void loadBorrow(L head);//将借书记录加载到内存* void saveBorrow(L head);//将用户借书记录加载到磁盘* void FuactionIntrod(void);//系统功能介绍* void Intropeople(void);//开发人员介绍* void Mainmenu(void);//打印主菜单* void hhk(void);//打印操作错误 * void loaduu(void);//数据数加载到内存* void saveuu(void);//数据数加载到磁盘* void Cpy(void);//备份图书信息* int main() { int i,selt; LLL = 1; loaduu(); if(!ling()) return 0; system("cls"); load(); while(1){ Mainmenu(); scanf("%d",&selt); switch(selt){ case 1: Menu(); saveuu(); break; case 2: Borrow(); break; case 3: FuactionIntrod(); break; case 4: system("cls"); Intropeople(); break; case 5: system("cls"); if(ling() == 0){return 0;} system("cls"); break; case 6: saveuu(); system("cls"); over(); return 0; default : system("cls"); hhk(); system("cls"); break; } } return 0; } //数据数加载到内存 void loaduu(void) { FILE *fp; fp = fopen("数据个数.txt", "r"); fscanf(fp, "%d", &num); fscanf(fp, "%d", &jj); fclose(fp); k = jj; } //数据数加载到磁盘 void saveuu(void) { FILE *fp; fp = fopen("数据个数.txt", "w"); fprintf(fp, "%d\n", num); fprintf(fp, "%d\n", jj); fclose(fp); } //备份图书信息 void Cpy(void) { FILE *fp; int i; fp = fopen("图书信息库.txt", "w"); for(i = 0; i < num; i++){ fprintf(fp, "%d\n",stu[i].ID); fprintf(fp, "%s\n",stu[i].name); fprintf(fp, "%.2lf\n",stu[i].price); fprintf(fp, "%s\n",stu[i].author); fprintf(fp, "%d\n",stu[i].quan); fprintf(fp, "%s\n",stu[i].itd); } fclose(fp); printf("\t\t\t备份成功!!\n"); system("PAUSE"); system("cls"); } //打印主菜单 void Mainmenu(void) { printf("\t ************************************************************\n"); if(LLL){ printf("\t * 欢迎使用29组的图书管理系统 *\n"); LLL = 0; } else{ printf("\t * *\n"); printf("\t * 您可以进行以下操作: *\n"); } printf("\t * *\n"); printf("\t * 图书信息管理 请按 1 *\n"); printf("\t * *\n"); printf("\t * 图书借还管理 请按 2 *\n"); printf("\t * *\n"); printf("\t * 系统功能介绍 请按 3 *\n"); printf("\t * *\n"); printf("\t * 开发人员介绍 请按 4 *\n"); printf("\t * *\n"); printf("\t * 切换账号 请按 5 *\n"); printf("\t * *\n"); printf("\t * 退出系统 请按 6 *\n"); printf("\t * *\n"); printf("\t ************************************************************\n\n"); } //系统功能介绍 void FuactionIntrod(void) { system("cls"); printf("本系统能执行以下操作:\n\n"); printf("一、登录界面功能介绍\n\n"); printf("1.登录账号\n\n2.注册新账号\n\n3.密码找回\n\n4.修改密码\n\n\t\t\t "); system("PAUSE"); system("cls"); printf("二、图书信息管理系统功能介绍\n\n"); printf("1. 查找功能\n\n"); printf("1)按书号查找\n2)按书名查找\n3)按作者查找\n4)输出所有图书信息\n\n"); printf("2. 排序功能\n\n"); printf("1)按书名首字母排序\n2)按单价升序排序\n3)按单价降序排序\n\n"); printf("3. 修改功能\n\n"); printf("1)添加\n\n 可添加任意本书\n\n2)删除一本图书\n3)删除全部图书\n\n"); printf("4. 恢复图书信息\n\n 如错误删除图书信息,可恢复上一次备份的图书信息\n\n"); printf("5.备份图书信息\n\n\t\t\t "); system("PAUSE"); system("cls"); printf("三、图书借还系统功能介绍\n\n"); printf("1.借阅图书功能\n\n"); printf("此功能可使用户借阅本系统中现存的图书\n\n"); printf("2.还书功能\n\n"); printf("此功能可方便用户还书\n\n"); printf("3. 用户借书还书记录查询功能\n\n"); printf("此功能可查询个人借书和还书记录\n\n"); printf("4. 用户借书还书信誉查询功能\n\n"); printf("此功能可查询借书者的个人信誉值,若信誉值低于60将不能再通过本系统借书,同时,每一年年末都会对信誉值进行统计,\n"); printf("并将所有用户信誉值恢复为100。\n\n"); printf("信誉值扣除标准:\n\n"); printf("1)借的书需在两个工作日内归还,逾期还书 每次扣除信誉值 5。\n"); printf("2)对图书造成损坏或丢失的 每次扣除信誉值 10 , 并原价赔偿。\n"); printf("3)超过还书时间一个工作日的,信誉值将被直接清零,并不能在本系统进行任何操作。\n\n"); printf("四、切换账号功能\n\n 可以切换账号\n\n\t\t\t "); system("PAUSE"); system("cls"); } //检验账号的合法性 void CheckUser(void) { int i,flag = 0; char ss[30],sf[10]; printf("\t\t\t\t请输入登录账号:\n\n\t\t\t\t "); scanf("%s",ss); for(i = 0; i < jj; i++){ if(strcmp(sta[i].AcName, ss) == 0){ strcpy(strr, ss); flag = 1; break; } } if(!flag){ printf("\n\t\t\t\t此账号还未注册!!\n\n\t\t\t "); system("PAUSE"); system("cls"); return; } printf("\t\t\t\t请输入密码:\n\n\t\t\t\t "); scanf("%s",sf); if(strcmp(sta[i].password, sf) == 0){ h = 0; flag = 2; } if(flag == 1){ system("cls"); printf("\t\t\t\t密码错误!!\n\n\t\t\t "); system("PAUSE"); system("cls"); h++; return ; } else if(flag == 2) logo = 1; } //将账号存入磁盘 void saveUser(void) { int i; FILE *fp; fp = fopen("账号.txt", "w"); for(i = 0; i <= jj; i++){ fprintf(fp, "%s\n", sta[i].AcName); fprintf(fp, "%s\n", sta[i].password); fprintf(fp, "%s\n", sta[i].nickname); } fclose(fp); } //新建账号 void addUser(void) { FILE *fp; int j=0,i; char c[12],str[30]; printf("\t\t\t请输入账号:\n\n\t\t\t "); scanf("%s",str); for(i = 0; i < jj; i++){ if(strcmp(sta[i].AcName, str) == 0){ printf("\t\t\t该账号已被注册,请从新申请!!\n\n\t\t\t "); system("PAUSE"); return ; } } strcpy(sta[jj].AcName, str); printf("\t\t\t请输入密码(密码长度不超过十个字符):\n\n\t\t\t "); scanf("%s", sta[jj].password); printf("\t\t\t请再输入一次密码:\n\n\t\t\t "); scanf("%s",c); if(strcmp(sta[jj].password, c) != 0){ printf("\t\t\t两次密码不一致请从新申请\n\n\t\t\t"); system("PAUSE"); system("cls"); printf("\n"); addUser(); j = 1; } if(j) return ; printf("\n\t\t\t请输入昵称\n\n\t\t\t "); scanf("%s",sta[jj].nickname); saveUser(); printf("\t\t\t\t账号申请成功!!\n\n\t\t\t"); jj++; strcpy(kl->users, sta[jj-1].AcName); kl->sexes = 0; strcpy(kl->book[0].Name, "0"); strcpy(kl->book[0].time, "0"); kl->r = 100; kl->Next = NULL; hnj = kl; saveuu(); loadBorrow(HEAD); saveBorrow(HEAD); system("PAUSE"); } //找回密码 void findPassword(void) { int i; char a[30]; printf("\t\t\t请输入要找回的账号:\n\t\t\t"); scanf("%s",a); for(i = 0; i < jj; i++) if(strcmp(sta[i].AcName, a) == 0){ printf("\t\t\t密码:%s\n",sta[i].password); return ; } printf("\t\t\t\t查无此账号!!\n\n\t\t\t"); system("PAUSE"); } //修改密码 void EditPassword(void) { int i,K=0,KK=0; char a[30]; printf("\t\t\t 请输入要修改密码的账号:\n\t\t\t "); scanf("%s",a); for(i = 0; i < jj; i++) if(strcmp(sta[i].AcName, a) == 0){ printf("\n\t\t\t 请输入原密码:\n\t\t\t "); scanf("%s",a); if(strcmp(sta[i].password, a) != 0){ printf("\n\t\t\t\t密码错误!!\n\n\t\t\t "); system("PAUSE"); system("cls"); return ; } printf("\n\t\t\t 请输入新密码:\n\t\t\t "); scanf("%s",a); if(strcmp(sta[i].password, a) == 0){ printf("\n\t\t\t新密码与原密码重复,请从新修改!!\n\n\t\t\t "); system("PAUSE"); system("cls"); return ; } strcpy(sta[i].password, a); printf("\t\t\t 请输入下面的验证码:\n"); srand((unsigned)time(NULL)); K = rand(); printf("\n\t\t\t\t %d\n\t\t\t\t ",K); scanf("%d",&KK); if(KK != K){ printf("\n\t\t\t验证码错误!!\n"); system("PAUSE"); system("cls"); return ; } printf("\n\t\t\t\t修改密码成功!!\n"); saveUser(); system("PAUSE"); system("cls"); return ; } printf("\n\t\t\t\t查无此账号!!\n\n\t\t\t"); system("PAUSE"); } //将账号读入内存 void loadUser(void) { int i; freopen("账号.txt", "r", stdin); for(i = 0; i < jj; i++){ scanf("%s",sta[i].AcName); scanf("%s",sta[i].password); scanf("%s",sta[i].nickname); } freopen("CON", "r", stdin); } //输出账号菜单 void printuser(void) { printf("\t\t\t************************************\n"); printf("\t\t\t* 登录 请按 1 *\n"); printf("\t\t\t* 注册新账号 请按 2 *\n"); printf("\t\t\t* 找回密码 请按 3 *\n"); printf("\t\t\t* 修改密码 请按 4 *\n"); printf("\t\t\t* 退出程序 请按 5 *\n"); printf("\t\t\t************************************\n"); } //账号登录 int ling(void) { int sh,i; hnj=NULL, kl = new node; h = logo = 0; while(1){ printuser(); loadUser(); loaduu(); scanf("%d",&sh); switch(sh){ case 1: CheckUser(); break; case 2: addUser(); saveuu(); system("cls"); break; case 3: findPassword(); system("cls"); break; case 4: EditPassword(); break; case 5: system("cls"); printf("\n"); printf("\t\t\t欢迎下次使用小哥哥的图书管理系统\n"); return 0; default : system("cls"); hhk();system("cls"); break; } if(logo) return 1; if(h == 3){ printf("\t\t\t密码错误三次,系统将自动关闭!!\n\n"); printf("\t\t\t欢迎下次使用小哥哥的图书管理系统\n"); return 0; } } } //恢复出厂设置 void Huifu(void) { freopen("图书信息库.txt", "r",stdin); for(num = 0; num < 42; num++){ scanf("%d",&stu[num].ID); scanf("%s",stu[num].name); scanf("%lf",&stu[num].price); scanf("%s",stu[num].author); scanf("%d",&stu[num].quan); scanf("%s",stu[num].itd); } freopen("CON", "r", stdin); save(); system("cls"); printf("\t\t\t恢复成功!!\n"); } void PrintRecord(int i)//输出一条记录 { printf("\t\t\t书号:%04d\n",stu[i].ID); printf("\t\t\t书名:%s\n",stu[i].name); printf("\t\t\t价格:%.2lf\n",stu[i].price); printf("\t\t\t作者:%s\n",stu[i].author); printf("\t\t\t库存:%d\n",stu[i].quan); printf("\n简介:%s\n\n",stu[i].itd); } //图书信息管理 void Menu(void) { int select; system("cls"); load(); while(1){ display(); scanf("%d",&select); switch(select){ case 1: Find(); break; case 2: Sort(); break; case 3: edit(); break; case 4: Huifu(); break; case 5: Cpy(); break; case 6: system("cls"); return ; default : hhk(); system("cls"); break; } } } //显示图书信息管理菜单 void display(void) { char str[3][20] = {"查找 请按 1","排序 请按 2","修改 请按 3"}; int i,j; printf("\t ************************************************************\n"); printf("\t * *\n"); printf("\t * 您可以进行以下操作: *\n"); printf("\t * *\n"); printf("\t * 查找 请按 1 *\n"); printf("\t * *\n"); printf("\t * 排序 请按 2 *\n"); printf("\t * *\n"); printf("\t * 修改 请按 3 *\n"); printf("\t * *\n"); printf("\t * 恢复图书信息 请按 4 *\n"); printf("\t * *\n"); printf("\t * 备份图书信息 请按 5 *\n"); printf("\t * *\n"); printf("\t * 返回上一级菜单 请按 6 *\n"); printf("\t * *\n"); printf("\t ************************************************************\n\n"); } //打印开发人员信息 void Intropeople(void) { printf("\t ************************************************************\n"); printf("\t * *\n"); printf("\t * 开发人员信息 *\n"); printf("\t * *\n"); printf("\t * 计科二班 贾迪 *\n"); printf("\t * *\n"); printf("\t * 计科二班 阚雯雯 *\n"); printf("\t * *\n"); printf("\t * 计科二班 李正玉 *\n"); printf("\t ************************************************************\n\n"); system("PAUSE"); system("cls"); } void hhk(void)//打印操作错误 { int i; printf("\n"); printf("\t\t\t 操作错误,请从新选择操作选项!!\n\n"); system("PAUSE"); } //结束程序 void over() { printf("\n"); printf("\t\t\t小哥哥图书管理系统祝您阅读愉快!!!\n"); } //把图书信息加载到内存 void load() { int i; freopen("缓存区.txt", "r", stdin); for(i = 0; i < num; i++){ scanf("%d",&stu[i].ID); scanf("%s",stu[i].name); scanf("%lf",&stu[i].price); scanf("%s",stu[i].author); scanf("%d",&stu[i].quan); scanf("%s",stu[i].itd); } freopen("CON", "r", stdin); } //将数据保存到磁盘 void save() { int i; FILE *fp; fp = fopen("缓存区.txt", "w"); for(i = 0; i < num; i++){ fprintf(fp, "%d\n",stu[i].ID); fprintf(fp, "%s\n",stu[i].name); fprintf(fp, "%.2lf\n",stu[i].price); fprintf(fp, "%s\n",stu[i].author); fprintf(fp, "%d\n",stu[i].quan); fprintf(fp, "%s\n",stu[i].itd); } fclose(fp); } //输出修改菜单 void PrinEdit() { printf("\t ************************************************************\n"); printf("\t * *\n"); printf("\t * 您可以进行以下操作: *\n"); printf("\t * *\n"); printf("\t * 添加 请按 1 *\n"); printf("\t * *\n"); printf("\t * 删除一本图书 请按 2 *\n"); printf("\t * *\n"); printf("\t * 删除全部图书 请按 3 *\n"); printf("\t * *\n"); printf("\t * 返回上一级菜单 请按 4 *\n"); printf("\t * *\n"); printf("\t ************************************************************\n\n"); } void add()//添加 { FILE *fp; fp = fopen("缓存区.txt","a"); int n,p,i; double q; char str[30],st[1000]; printf("\t\t\t 亲,请输入你需要添加几项\n\n\t\t\t "); scanf("%d",&n); for(i = num+1; i <= num+n; i++){ fprintf(fp, "%d\n",i); stu[i-1].ID = i; printf("\t\t\t 请输入书名\n\n\t\t\t "); scanf("%s",str); strcpy(stu[i-1].name, str); fprintf(fp, "%s\n",str); printf("\t\t\t 请输入价格\n\n\t\t\t "); scanf("%lf",&q); stu[i-1].price = q; fprintf(fp, "%.2lf\n",q); printf("\t\t\t 请输入作者\n\n\t\t\t "); scanf("%s",str); strcpy(stu[i-1].author, str); fprintf(fp, "%s\n",str); printf("\t\t\t 请输入该书的数量\n\n\t\t\t "); scanf("%d",&p); stu[i-1].quan = p; fprintf(fp, "%d\n",p); printf("\t\t\t 请输入该书的简介\n\n\t\t\t "); scanf("%s",st); strcpy(stu[i-1].itd, st); fprintf(fp, "%s\n",st); } num += n; fclose(fp); save(); saveuu(); } //删除所有信息 void DeleteAll() { FILE *fp; if((fp = fopen("缓存区.txt", "w")) == NULL){ printf("数据库加载失败,请重启本系统!\n"); exit(0); } fprintf(fp, "0"); printf("\t\t\t删除成功,若想恢复请恢复出厂设置。\n\t\t\t"); fclose(fp); system("PAUSE"); } void DeleteRecord()//删除一条信息 { int j,i,flag = 0; printf("\t\t\t 请输入书号\n\t\t\t "); scanf("%d",&j); if(j == num){ num--; save(); printf("\t\t\t 删除成功!\n\t\t\t "); system("PAUSE"); system("cls"); return ; } for(i = 0 ; i < num-1; i++){ if(stu[i].ID == j) flag = 1; if(flag){ strcpy(stu[i].name, stu[i+1].name); stu[i].price = stu[i+1].price; strcpy(stu[i].name, stu[i+1].name); stu[i].quan = stu[i+1].quan; strcpy(stu[i].itd, stu[i+1].itd); } } num--; save(); saveuu(); printf("\t\t\t删除成功!\n"); system("PAUSE"); system("cls"); } //修改 void edit() { system("cls"); load(); int i,sele; while(1){ PrinEdit(); scanf("%d",&sele); switch(sele){ case 1: add(); system("PAUSE"); system("cls"); break; case 2: DeleteRecord(); break; case 3: DeleteAll(); break; case 4: system("cls"); return ; default : system("cls"); hhk(); break; } } } //输出查找菜单 void FindEdit() { printf("\t ************************************************************\n"); printf("\t * *\n"); printf("\t * 您可以进行以下操作: *\n"); printf("\t * *\n"); printf("\t * 按书号查找 请按 1 *\n"); printf("\t * *\n"); printf("\t * 按书名查找 请按 2 *\n"); printf("\t * *\n"); printf("\t * 按作者查找 请按 3 *\n"); printf("\t * *\n"); printf("\t * 输出所有图书信息 请按 4 *\n"); printf("\t * *\n"); printf("\t * 返回上一级菜单 请按 5 *\n"); printf("\t * *\n"); printf("\t ************************************************************\n\n"); } //按书号查找 void FindByNum(void) { system("cls"); int i,sex; printf("\t\t\t 请输入要查找的书号:\n\n\t\t\t\t"); scanf("%d",&sex); if(sex > num){ printf("\t\t\t\t未找到该书!!\n\n\t\t\t "); system("PAUSE"); return ; } for(i = 0; i < num; i++){ if(stu[i].ID == sex){ PrintRecord(i); printf("\t\t\t "); system("PAUSE"); return; } } } //按书名查找 void FindByName() { system("cls"); int i; char s[30]; printf("\t\t\t 请输入要查找的书名:\n\n\t\t\t "); scanf("%s",s); for(i = 0; i < num; i++){ if(strcmp(stu[i].name, s) == 0){ if(F == 1) PrintRecord(i); else if(!F){ if(stu[i].quan == 0 && huan == 1) F = 99998; else if(stu[i].quan != 0 || huan == 0){ PrintRecord(i); F = i; } } printf("\t\t\t "); system("PAUSE"); return ; } } F = 99999; printf("\n\t\t\t 未找到该书!!\n"); printf("\n\t\t\t "); system("PAUSE"); } //按作者查找 void FindByAuthor() { system("cls"); int i; char s[30]; printf("\t\t\t 请输入要查找的作者\n\n\t\t\t "); scanf("%s",s); for(i = 0; i < num; i++){ if(strcmp(stu[i].author, s) == 0){ PrintRecord(i); printf("\t\t\t "); system("PAUSE"); return ; } } printf("\n\t\t\t\t未找到有关该作者的书!!\n\n\t\t\t "); system("PAUSE"); } //输出所有图书信息 void output() { int i; for(i = 0; i < num; i++){ PrintRecord(i); } printf("\t\t\t "); system("PAUSE"); } //查找 void Find() { system("cls"); int i,sclele; F = 1; while(1){ FindEdit(); scanf("%d",&sclele); switch(sclele){ case 1: FindByNum(); break; case 2: FindByName(); break; case 3: FindByAuthor(); break; case 4: output(); FindEdit(); break; case 5: system("cls"); return ; default : system("cls"); hhk(); break; } system("cls"); } } //排序 void Sort() { system("cls"); int sexh; while(1){ system("cls"); PrintSort(); scanf("%d",&sexh); switch(sexh){ case 1: SortByScore(); break; case 2: AscendVyPick(); break; case 3: DesendByPick(); break; case 4: system("cls"); return ; default : system("cls"); hhk(); break; } } } //输出排序菜单 void PrintSort() { printf("\t ************************************************************\n"); printf("\t * *\n"); printf("\t * 您可以进行以下操作: *\n"); printf("\t * *\n"); printf("\t * 按书名首字母排序 请按 1 *\n"); printf("\t * *\n"); printf("\t * 按单价升序排序 请按 2 *\n"); printf("\t * *\n"); printf("\t * 按单价降序排序 请按 3 *\n"); printf("\t * *\n"); printf("\t * 返回上一级菜单 请按 4 *\n"); printf("\t * *\n"); printf("\t ************************************************************\n\n"); } //按书名首字母排序判断 int cmp1(library a, library b) { if(strcmp(a.name, b.name) == -1) return 1; else return 0; } //按单价升序排序判断 int cmp2(library a, library b) { return a.price < b.price; } //按单价降序排序判断 int cmp3(library a, library b) { return a.price > b.price; } //重新整理书号 void IdArrange() { int i; for(i = 0; i < num; i++) stu[i].ID = i+1; } //按书名首字母排序 void SortByScore() { int i; sort(stu, stu+num, cmp1); IdArrange(); save(); printf("\n\t\t\t\t排序完成!!\n\n\t\t\t "); system("PAUSE"); } //按单价升序排序 void AscendVyPick() { int i; sort(stu, stu+num, cmp2); IdArrange(); save(); printf("\n\t\t\t\t排序完成!!\n\n\t\t\t "); system("PAUSE"); } //按单价降序排序 void DesendByPick() { int i; sort(stu, stu+num, cmp3); IdArrange(); save(); printf("\n\t\t\t\t排序完成!!\n\n\t\t\t "); system("PAUSE"); } //打印借书菜单 void PrintBorrow(void) { printf("\t ************************************************************\n"); printf("\t * *\n"); printf("\t * 您可以进行以下操作: *\n"); printf("\t * *\n"); printf("\t * 借书记录查询 请按 1 *\n"); printf("\t * *\n"); printf("\t * 图书借阅 请按 2 *\n"); printf("\t * *\n"); printf("\t * 图书归还 请按 3 *\n"); printf("\t * *\n"); printf("\t * 返回上一级菜单 请按 4 *\n"); printf("\t * *\n"); printf("\t ************************************************************\n\n"); } //将用户借书记录加载到磁盘 void saveBorrow(L head) { int i; L p = head->Next; FILE *fp; fp = fopen("借书记录.txt", "w"); while(p){ fprintf(fp, "%s\n", p->users); fprintf(fp, "%d\n", p->sexes); for(i = 0; i < p->sexes; i++){ fprintf(fp, "%s\n", p->book[i].Name); fprintf(fp, "%s\n", p->book[i].time); } fprintf(fp, "%d\n", p->r); p = p->Next; } fclose(fp); } //将借书记录加载到内存 void loadBorrow(L head) { int i,j; L p, rear = head; freopen("借书记录.txt", "r", stdin); for(i = 0; i < k; i++){ p = new node; scanf("%s",p->users); scanf("%d",&p->sexes); for(j = 0; j < p->sexes; j++){ scanf("%s",p->book[j].Name); scanf("%s",p->book[j].time); } scanf("%d\n",&p->r); rear->Next = p; rear = p; } rear->Next = NULL; freopen("CON", "r", stdin); if(hnj != NULL){ rear->Next = kl; rear = kl; } rear->Next = NULL; saveBorrow(head); } //用户搜索 L LookUser(L head) { L p = head; while(p){ p = p->Next; if(strcmp(p->users, strr) == 0) break; } return p; } //借书记录 void BorrowRecord(L q) { int i; system("cls"); printf("\t\t借书的数量:%d\n\n",q->sexes); for(i = 0; i < q->sexes; i++){ printf("\t\t%d.%s\n",i+1, q->book[i].Name); printf("\t\t 借书时间:%s\n\n",q->book[i].time); } printf("\t\t信誉值:%d\n\n",q->r); printf("\t\t\t "); system("PAUSE"); system("cls"); } //借书 void BorrowBook(L q, L y) { int o,i; char str[30]; huan = 1; system("cls"); if(q->r < 60){ printf("\n\n"); printf("\t\t\t信誉值低于60,不能进行借书操作!!\n\n\t\t\t "); system("PAUSE"); system("cls"); return ; } F = 0; FindByName(); if(F == 99998){ printf("\n"); printf("\t\t\tSORRY,该书已没有库存!!\n\n\t\t\t "); system("PAUSE"); system("cls"); F = 1; return ; } else if(F == 99999){ system("cls"); return ; } strcpy(q->book[q->sexes].Name, stu[F].name); stu[F].quan--; printf("\n\t\t请输入借书时间(格式为year/month/day):\n\n\t\t\t "); scanf("%s",str); strcpy(q->book[q->sexes].time, str); q->sexes++; F = 1; save(); saveBorrow(y); printf("\n\t\t\t\t借书成功!!\n\n\t\t\t "); system("PAUSE"); system("cls"); } //还书 void SendBook(L q, L y) { system("cls"); int i,kk=0,flag = 1; char st[30]; F = huan = 0; if(q->sexes == 0){ printf("\n\t\t\t 您还没有借书哦!!\n\n\t\t\t "); system("PAUSE"); system("cls"); return ; } FindByName(); for(i = 0; i < q->sexes; i++) if(strcmp(q->book[i].Name, stu[F].name) == 0) flag = 0; if(flag){ system("cls"); printf("\n\t\t\t 您还没有借该书哦!!\n\n\t\t\t "); system("PAUSE"); system("cls"); return ; } if(F == 99999){ system("cls"); return ; } for(i = 0; i < q->sexes; i++){ if(strcmp(q->book[i].Name, stu[F].name) == 0 && kk == 0){ strcpy(st, q->book[i].time); if(i == q->sexes-1) break; kk = 1; } if(kk){ strcpy(q->book[i].Name, q->book[i+1].Name); strcpy(q->book[i].time, q->book[i+1].time); } } q->sexes--; stu[F].quan++; save(); for(i = 1; i <= 16; i++) printf(" "); printf("\t\t\t借书时间:%s\n\n",st); printf("\t\t 请管理员判断是否逾期还书或图书有破损\n\n\t\t\t "); system("PAUSE"); printf("\n\t\t 按时还书 请按 1\n\n"); printf("\t\t 逾期还书但不超过一个工作日 请按 2\n\n"); printf("\t\t 还书时间超过一个工作日 请按 3\n\n"); printf("\t\t 图书有破损 请按 4\n\n\t\t "); scanf("%d",&kk); if(kk == 1) printf("\n\t\t\t\t感谢您的使用!!\n\n"); else if(kk == 2){ q->r -= 5; if(q->r < 60) printf("由于您的不良行为较多,信誉值已不足60,本年度将不能在本系统借书!!\n\n"); else printf("请保持良好的借书行为,信誉不足将无法在本系统借书!!\n\n"); } else if(kk == 3){ q->r = 0; printf("由于您的还书时间超过规定时间一个工作日,所以本年度将不能在本系统借书!!\n\n"); } else if(kk == 4){ q->r -= 10; printf("\t\t\t由于图书有破损,请原价赔偿!!\n\n"); for(i = 0; i < num; i++) if(strcmp(stu[i].name, stu[F].name) == 0){ printf("\t\t\t\t原价:%.2lf\n\n",stu[i].price); break; } if(q->r < 60) printf("由于您的不良行为较多,信誉值已不足60,本年度将不能在本系统借书!!\n\n"); else printf("请保持良好的借书行为,信誉不足将无法在本系统借书!!\n\n"); } saveBorrow(y); printf("\t\t\t "); system("PAUSE"); system("cls"); } //图书借还系统 void Borrow(void) { system("cls"); int shl,i; L head = new node; loadBorrow(head); pre = LookUser(head); while(1){ PrintBorrow(); scanf("%d", &shl); switch(shl){ case 1: BorrowRecord(pre); break; case 2: BorrowBook(pre, head); break; case 3: SendBook(pre, head); break; case 4: system("cls"); return ; default : system("cls"); hhk(); break; } } }
图书管理系统
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。