From 60f3692af4621d5490e363b4d1db7c21a75466d9 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Jan 2019 20:53:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=AD=E6=96=87=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tw.cpp | 1022 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1022 insertions(+) create mode 100644 tw.cpp diff --git a/tw.cpp b/tw.cpp new file mode 100644 index 0000000..9db1e61 --- /dev/null +++ b/tw.cpp @@ -0,0 +1,1022 @@ +#include +#include +#include +#include +#include +#include +#include +#define BACKSPACE 8 +#define PASS_MAXLEN 128 +#define LEN sizeof(struct Book) +#define LEN1 sizeof(struct reader) +#include"zzh.h" + +void home();//注册总页面 +void Reg();//注册 +void Log();//登录 +void Adm();//管理员 +int UserMenu();//用户主页 +int AdminMenu();//管理员主页 +void BroBook();//借书 +void BacBook();//还书 +void LooBook(int n);//查询书籍 +void AddBook();//添加书籍 +void DelBook();//删除书籍 +void FixBook();//修改书籍 +int Total();//统计书的总数 +int Total1();//统计账户总数->用于修改用户名重复的问题 +int Total2();//统计读者总数 +void SBAll(int q);//查询所有书籍 +void SBAut(int q);//图书作者查询 +void SBNam(int q);//图书名字查询 +void SBCat(int q);//图书分类查询 +void ed();//结束 +void Reader();//读者借阅信息 +void Readername();//按名字查找借阅 +void Allreader();//所有查看 + + +int main(){ + home(); +} + +//主页面 +void home(){ + system("cls"); +while(1){ + char c; + printf("******************************************************************************************\n"); + printf("* 图书管理系统(Version 2.0) *\n"); + printf("******************************************************************************************\n"); + printf("* *\n"); + printf("* 你好呀,欢迎使用图书管理系统! *\n"); + printf("* *\n"); + printf("* 请问你想干什么呢? *\n"); + printf("* *\n"); + printf("* 麻烦按下数字表示您要执行的操作 *\n"); + printf("* *\n"); + printf("* *\n"); + printf("******************************************************************************************\n"); + printf("*您是普通用户吗?? * 你是我的Master吗?? *\n"); + printf("* * *\n"); + printf("* 1.注册用户,和我签订契约吧o(* ̄▽ ̄*)ブ * 3.Master登陆 (*/▽\*) *\n"); + printf("* 2.契约签订好了?直接登陆吧 * *\n"); + printf("* * *\n"); + printf("******************************************************************************************\n\n\n"); + printf("\t\t\t\t\t\t\t\t\t您想执行的操作:"); + c=getch(); + if(c=='1'){ + Reg(); + break; + }else if(c=='2'){ + Log(); + break; + }else if (c=='3'){ + Adm(); + } + system("cls"); +} + +} +//注册 +void Reg(){ + FILE *fp=fopen("账号管理.txt","r"); + fp=fopen("账号管理.txt","r"); + system("cls"); + int k=0; + char t; + int i=0,l1=0,l2=0; + char c; + char UserName[50],PassWord[10],RePassWord[10]; + char name[100],password[100]; + toxy(40,2); + printf("签订契约(按ESC回到登陆界面)\n\n\n");/*x=40,y=2*/ + printf(" 取个好听的名字吧φ(゜▽゜*)/,只能是英文,数字哦:\n\n "); + printf("\n\n 请输入您的密码,不要随便泄露密码给别人鸭(小声BB)╯ 3╰ :\n\n "); + printf("\n\n 确认一下密码QAQ:\n\n "); + toxy(27,7); + while(1){ + c=getch(); + if(c==27) home(); + if(c=='\r'||c=='\n'){ + UserName[i]=0; + break; + } + else if(c==8) + { + if(i==0) i=0; + else + { + printf("\b \b"); + i=i-1; + } + }else if((c<='Z'&&c>='A')||(c<='z'&&c>='a')||(c<='9'&&c>='0')){ + UserName[i++]=c; + putchar(c); + } + } + l1=strlen(UserName); + toxy(27,11); + while(1){ + int i=0; + char c; + while(1){ + c=getch(); + if(c==27) home(); + if(c=='\n'||c=='\r'){ + PassWord[i]=0; + break; + } + else if(c==BACKSPACE){ + PassWord[--i]='\0'; + putchar(BACKSPACE); + putchar(' '); + putchar(BACKSPACE); + }//可以用DELETE键 + else{ + PassWord[i++]=c; + putchar('*'); + } + } + l2=strlen(PassWord); + i=0; + toxy(27,15); + while(1){ + c=getch(); + if(c==27) home(); + if(c=='\n'||c=='\r'){ + RePassWord[i]=0; + break; + } + else if(c==8) + { + if(i==0) i=0; + else + { + printf("\b \b"); + i=i-1; + } + } + else{ + RePassWord[i++]=c; + putchar('*'); + } + } + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 注册中. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 注册中.. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 注册中... │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 注册中. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 注册中.. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + if(!l1||!l2){ + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ 抱歉(。﹏。*) │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 用户名和密码均不能为空 │\n"); + printf("\t\t\t│ 按Esc退出,按回车重新注册 │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + t=getch(); + while(t!=27&&t!=13){ + t=getch(); + continue; + } + if(t==27){ + system("cls"); + printf("正在跳转..."); + home(); + }else if(t==13){ + system("cls"); + printf("正在跳转..."); + Reg(); + } + }else { + + int j=Total1();//一共有j个用户,Total是用来统计文本里面有多少个用户的 + for(int i=0;i='A')||(c<='z'&&c>='a')||(c<='9'&&c>='0')){ + UserName[i++]=c; + putchar(c); + } + } + i=0; + toxy(27,11); + while(1){ + c=getch(); + if(c==27) home(); + if(c=='\r'||c=='\n'){ + PassWord[i]=0; + break; + } + else if(c==8) + { + if(i==0) i=0; + else + { + printf("\b \b"); + i=i-1; + } + } + else if((c<='Z'&&c>='A')||(c<='z'&&c>='a')||(c<='9'&&c>='0')){ + PassWord[i++]=c; + putchar('*'); + } + } + int j=Total1(); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中.. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中... │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中.. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + for(int f=0;f='A')||(c<='z'&&c>='a')||(c<='9'&&c>='0')){ + AdminName[i++]=c; + putchar(c); + } + } + toxy(27,11); + i=0; + while(1){ + c=getch(); + if(c==27) home(); + if(c=='\r'||c=='\n'){ + PassWord[i]=0; + break; + } + else if(c==8) + { + if(i==0) i=0; + else + { + printf("\b \b"); + i=i-1; + } + } + else if((c<='Z'&&c>='A')||(c<='z'&&c>='a')||(c<='9'&&c>='0')){ + PassWord[i++]=c; + putchar('*'); + } + } + int j=1; + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中.. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中... │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + printf("\n\n\n"); + printf("\t\t\t┌──────────────────────────────────────────────┐\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ 登陆中.. │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t│ │\n"); + printf("\t\t\t└──────────────────────────────────────────────┘\n"); + Sleep(500); + system("cls"); + for(int f=0;fnext=p1; + p2=p1; + p1=(struct Book*)malloc(LEN); + } + strcpy(p1->num,Num);//复制书号 + strcpy(p1->nam,Nam);//复制书名 + strcpy(p1->aut,Aut);//复制作者名字 + strcpy(p1->pub,Pub);//复制出版社 + strcpy(p1->cat,Cat);//复制类别 + p1->many=Many;//复制个数 + p1->price=Price;//复制单价 + } + if(n==0){ + head=NULL; + } + else{ + p2->next=p1; + p1->next=NULL; + fclose(fp); + } + } + p=head; + for(;p!=NULL;){ + if(!strcmp(p->num,Re)){ + flag=1; + k=p->many; + (p->many)--; + } + p=p->next; + } + if((k>0)&&flag){ + + fp=fopen("图书.txt","w"); + fclose(fp); + fp=fopen("图书.txt","a"); + p=head; + for(;p!=NULL;){ + fprintf(fp,"%-8s%-8s%-16s%-16s%-16s%-10d%10.2f\n",p->num,p->nam,p->aut,p->pub,p->cat,p->many,p->price); + p=p->next; + } + free(p); + fclose(fp); + if((fp1=fopen("读者.txt","r"))==NULL){ + fp1=fopen("读者.txt","w"); + fclose(fp1); + } + fp1=fopen("读者.txt","a"); + printf("请输入学号:"); + scanf("%d",&Xuehao); + printf("请输入名字:"); + scanf("%s",Mingzi); + printf("请输入借书日期(年份/月份/日):"); + scanf("%s",Riqi); + fprintf(fp1,"%-8d%-23s%-18s%-10s\n",Xuehao,Mingzi,Riqi,Re); + fclose(fp1); + printf("借书成功,请按时归还,按Esc键退出\n"); + t=getch(); + while(t!=27){ + t=getch(); + continue; + } + if(t==27){ + UserMenu(); + } + } + else{ + if(flag!=0){ + printf("没有你要的书籍,按Esc键返回\n"); + while(t!=27){ + t=getch(); + continue; + } + UserMenu(); + }else{ + printf("库存不足,按Esc键返回\n"); + } + } + while(t!=27){ + t=getch(); + continue; + } + UserMenu(); +} + + +//还书 +void BacBook(){ + system("cls"); + struct reader *head=NULL; + struct Book *zhead=NULL; + struct Book *zp,*zp1,*zp2; + struct reader *p,*p1,*p2; + FILE *fp,*fp1; + float Price=0; + char t,ReName[100]; + int Many; + int n=0,j=0,k=0,flag=0,l=0;//k是库存的数量; + char Num[20]={'\0'},Aut[20]={'\0'},Pub[20]={'\0'},Nam[20]={'\0'},Cat[20]={'\0'}; + int Xuehao,ReXuehao; + char Mingzi[20]={'\0'},Riqi[20]={'\0'},Shuming[20]={'\0'}; + fp=fopen("读者.txt","r"); + if(fp==NULL){ + system("cls"); + printf("未存在读者文件,请联系管理员\n"); + printf("按Esc返回\n"); + t=getch(); + while(t!=27){ + t=getch(); + continue; + } + UserMenu(); + }else{ + printf("请输入学号:");// + scanf("%d",&ReXuehao); + printf("请输入书号:"); + scanf("%s",ReName); + j=Total2(); + for(int i=0;inext=p1; + p2=p1; + p1=(struct reader*)malloc(LEN1); + } + p1->xuehao=Xuehao; + strcpy(p1->username,Mingzi); + strcpy(p1->time,Riqi); + strcpy(p1->name,Shuming); + } + } + if(n==0){ + head=NULL; + }else{ + p2->next=p1; + p1->next=NULL; + fclose(fp); + } + fp=fopen("读者.txt","w"); + fclose(fp); + fp=fopen("读者.txt","a"); + p=head; + for(;p!=NULL;){ + fprintf(fp,"%-8d%-23s%-18s%-10s\n",p->xuehao,p->username,p->time,p->name); + p=p->next; + } + free(p); + fclose(fp); + if(flag){ + printf("是否确认还书,还书请按回车,退出请按Esc\n"); + t=getch(); + while(t!=13&&t!=27){ + t=getch(); + continue; + } + if(t==27){ + printf("正在跳转..."); + Sleep(1000); + UserMenu(); + } + printf("还书成功,按Esc键返回"); + n=0,flag=0; + l=Total(); + fp1=fopen("图书.txt","r"); + for(int i=0;inext=zp1; + zp2=zp1; + zp1=(struct Book*)malloc(LEN); + } + strcpy(zp1->num,Num);//复制书号 + strcpy(zp1->nam,Nam);//复制书名 + strcpy(zp1->aut,Aut);//复制作者名字 + strcpy(zp1->pub,Pub);//复制出版社 + strcpy(zp1->cat,Cat);//复制类别 + zp1->many=Many;//复制个数 + zp1->price=Price;//复制单价 + } + if(n==0){ + zhead=NULL; + } + else{ + zp2->next=zp1; + zp1->next=NULL; + fclose(fp1); + } + + zp=zhead; + for(;zp!=NULL;){ + if(!strcmp(zp->num,ReName)){ + ++(zp->many); + } + zp=zp->next; + } + fp1=fopen("图书.txt","w"); + fclose(fp1); + fp1=fopen("图书.txt","a"); + zp=zhead; + for(;zp!=NULL;){ + fprintf(fp1,"%-8s%-8s%-16s%-16s%-16s%-10d%10.2f\n",zp->num,zp->nam,zp->aut,zp->pub,zp->cat,zp->many,zp->price); + zp=zp->next; + } + fclose(fp1); + t=getch(); + while(t!=27){ + t=getch(); + continue; + } + if(t==27){ + UserMenu(); + } + } + else{ + system("cls"); + printf("不存在借书的用户,按Esc键返回\n"); + while(t!=27){ + t=getch(); + continue; + } + if(t==27){ + UserMenu(); + } + } + } + } + + +