图书管理系统 —— I-Library

作者分享了在假期重新编写图书管理系统的过程,从初次尝试到再次重构,体验到设计、思路及函数构造的不同,对大型程序的理解更加深入。完成后的系统感觉平易近人,并附有效果图。
摘要由CSDN通过智能技术生成

寒假要求让写图书馆。。。但是吧。。。假期里在家学习。。。你懂的。。。

开了学,这不又重写一遍,一遍和两边的感觉确实挺不一样的,包括在整体的设计,思路,各个方面的函数的构造应用等各方面都有新的感悟和体会,果然还是应了那句老话,一遍生二遍熟。

以后再遇到这样的大型的程序,也有了自己的一份思考和看法。

不过写这玩意。。。自己写确实很费力。。。不过写完了。。就来装一波。。。

总体上感觉还是挺平易近人的。。。

#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
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值