寒假要求让写图书馆。。。但是吧。。。假期里在家学习。。。你懂的。。。
开了学,这不又重写一遍,一遍和两边的感觉确实挺不一样的,包括在整体的设计,思路,各个方面的函数的构造应用等各方面都有新的感悟和体会,果然还是应了那句老话,一遍生二遍熟。
以后再遇到这样的大型的程序,也有了自己的一份思考和看法。
不过写这玩意。。。自己写确实很费力。。。不过写完了。。就来装一波。。。
总体上感觉还是挺平易近人的。。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
int flag,A;//设置管理员和用户标志;
void hide();//隐藏光标;
void toxy();//移动光标;
void mainmenu();//主界面;
void Register();//注册函数;
void Login();//登陆函数;
void over();//结束函数;
void lookpre(); //管理员总览用户信息;
void lookself(); // 用户查看自己信息 ;
void lookbooks();//总览图书信息;
void modifypre();//修改个人信息: 用户名及密码;
int cont();//计数用户数量;
int cbook();//计数图书数量;
void addbook();//添加图书;
void findbook();//查找图书:按名称、编号、作者、可借阅查询;
void recommend();//用户图书推荐;
void borrow();//借书函数;
void sendback();//归还函数;
void improvebooks();//修改图书信息:修改各项信息及删除图书;
void exchange();//退出当前账号;
void explain();
struct user{
char name[21];
char pass[21];
struct user *next;
int num;
};
struct Book{
char name[21];
double price;
int sum;
char num[21];
char writer[21];
struct Book *next;
};
struct user mid;//用户中间变量;
struct Book mids;//书籍中间变量;
void hide()//隐藏光标;
{
CONSOLE_CURSOR_INFO cursor_info={
1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);//固定用法;
}
//-------------------------------------------------------------------------------------------
void toxy(int x, int y)//将光标移动到X,Y坐标处;
{
COORD pos={
x,y};
HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos);
}
int cont()
{
FILE *fp=fopen("user.txt","r");
char name[21],pass[21];
int n;
int sum=0;
while(!feof(fp))
{
sum++;
fscanf(fp,"%s%s%d",name,pass,&n);
}
fclose(fp);
return sum-1;//woc 得把回车的减了。。。woc。。woc。。。
}
void explain()
{
system("cls");
FILE *fp=fopen("explain.txt","r");
char c;
while((c=getc(fp))!=EOF)
printf("%c",c);
printf("\n\n按任意键返回......");
getch(); mainmenu();
return ;
}
int cbook()
{
FILE *fp=fopen("book.txt","r");
char bname[41],writer[41],num[41];
int x;
double price;
int sum=0;
while(!feof(fp))
{
fscanf(fp,"%s%s%s%lf%d",num,bname,writer,&price,&x);
sum++;
}
fclose(fp);
return sum-1;
}
void addbook()
{
system("cls");
FILE *fp=fopen("book.txt","a");
char bname[41],writer[41],num[41];
int sum;
double price;
toxy(44,4); printf("输入编号:"); toxy(44,5); scanf("%s",num);
toxy(44,6); printf("输入书名:"); toxy(44,7); scanf("%s",bname);
toxy(44,8); printf("输入作者:"); toxy(44,9); scanf("%s",writer);
toxy(44,10); printf("输入价格:"); toxy(44,11); scanf("%lf",&price);
toxy(44,12); printf("输入图书数量:"); toxy(44,13); scanf("%d",&sum);
fprintf(fp,"%s %s %s %.2f %d\n",num,bname,writer,price,sum);
system("cls");
toxy(48,10);
printf("添加成功!");
fclose(fp);
toxy(48,11); cbook();
printf("按任意键返回......");
getch(); mainmenu();
return ;
}
void lookbooks()
{
system("cls");
FILE *fp=fopen("book.txt","r");
char bname[41],writer[41],num[41];
int sum,Sum=0;
double price;
printf("编号 书名 作者 价格 剩余数量\n");
for(int i=1;i<=cbook()&&!feof(fp);i++)
{
if(Sum==5)
{
Sum=0;
toxy(48,16);
printf("\n按任意键翻页......");
getch();
system("cls");
printf("编号 书名 作者 价格 剩余数量\n");
}
fscanf(fp,"%s%s%s%lf%d",num,bname,writer,&price,&sum);
printf("%s %8s %8s %.2f %d\n\n",num,bname,writer,price,sum);
Sum++;
}
printf("\n\n天啦噜!。。。到底了");
printf("\n按任意键继续,返回主菜单.....");
getch();
fclose(fp);
system("cls");
toxy(48,10);
printf("正在返回...."); Sleep(1000);
mainmenu();
return ;
}
void findbook()
{
system("cls");
FILE *fp=fopen("book.txt","r");
char find[51];
struct Book *head=NULL,*p,*q;
for(int i=1;i<=cbook()&&!feof(fp);i++)
{
p=(struct Book*)malloc(sizeof(struct Book));
fscanf(fp,"%s%s%s%lf%d",p->num,p->name,p->writer,&p->price,&p->sum);
p->next=NULL;
if(head==NULL) head=p;
else q->next=p;
q=p;
}
toxy(48,6);
printf("1.图书编号查询");
toxy(48,8);
printf("2.书名查询");
toxy(48,10);
printf("3.作者查询");
toxy(48,12);
printf("4.可借查询");
char t=getch();
if(t=='1')
{
system("cls");
toxy(44,10);
printf("输入图书编号:");
toxy(44,12);
printf("注意图书编号是唯一的呀...");
toxy(44,13);
scanf("%s",find);
system("cls");
printf("编号 书名 作者 价格 剩余数量\n");
p=head;
while(p!=NULL)
{
if(strcmp(p->num,find)==0)
{
printf("%s %8s %8s %.2f %d\n\n",p->num,p->name,p->writer,p->price,p->sum);
printf("按任意键返回..."); getch();
mainmenu();
return ;
}
p=p->next;
}
system("cls");
toxy(48,10);
printf("您老人家找的宝贝没有哦......快去联系管理员大大添加吧!");
toxy(48,12);
printf("按任意键返回...");
getch();
mainmenu();
}
if(t=='2')
{
system("cls");
toxy(44,10);
printf("输入书名:");
toxy(44,11);
scanf("%s",find);
int xy=0;
system("cls");
printf("编号 书名 作者 价格 剩余数量\n");
p=head;
while(p!=NULL)
{
if(strcmp(p->n