图书管理系统(C)

功能:
①新建账号密码,然后通过二者的匹配登录系统,这样可以保证是本校同学才能使用,另外还可以修改密码。
②添加图书的基本信息,如 书号,书名,作者,出版社,类别,进库量;
③删除图书,通过图书的书名进行删除;
④图书查询,通过图书的书号,书名,作者或者类别进行检索;
⑤浏览图书的库存,将所有数目展示出来;
⑥借书登记,先判断是否有这本数,然后进行借书人学号,姓名,归还截止期限,借书书名进行登记
⑦还书情况查看。
⑧借阅情况查看。
⑨会员登录,通过数据文件中的已注册的账号密码来登录到图书管理系统。
⑩修改密码

#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");
}
	




1.强化和巩固理论基础,掌握数据库编程的基本技巧; 2.要求用C/C++语言或其它语言及相应开发环境,实现一个小型完整程序的设计与开发; 3.巩固深化所学课程的知识,培养学生运用知识,分析和解决实际问题的能力。 系统概述: 1.图书管理: 每种图书都有书名书号(ISBN)、一名或多名作者(译者)、出版社、定价和内容简介。图书信息登入、查询和维护。 2.借书证管理,包括申请、注销借书证,查询借书证持有人等。借书证记录有借阅者的姓名、所在单位、职业等。 3.凭借书证借书,每次最多能借8本书。借书期限最长为30天。 4.借还图书、资料的登记、超期处理,超期拒借等。 5.图书、资料查询,借、还图书和资料情况查询。 6.图书、资料借阅情况的统计分析,拒此作为图书图书、资料订够的依据之一。 设计要求: 1.进行需求分析,编写数据字典。 2.设计E-R图。 3.实现新进图书的数据录入。 4.实现对所有购进图书的分类查询和分类统计。 5.能够按书名作者等分类查询现有图书的数量。 6.记录借阅者的个人资料和所借图书书名书号数据等。 2程序的主要功能 2.1添加功能 添加一本图书基本信息,包括书名书号(ISBN)、一名或多名作者(译者)、出版社、定价和内容简介。 添加图书证的基本信息,包括姓名、所在单位、职业。 添加图书借阅的基本信息,包括书号,借书证号,借书日期,应还书日期。 2.2删除功能 删除一本图书基本信息删除借书证的基本信息删除图书借阅基本信息2.3显示功能 显示所有图书信息,包括图书代码,图书名称,作者出版社和简介。 显示所有借阅信息,包括读者号,图书号,借书日期,应还书日期。 2.4查找功能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时越zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值