first program

图书馆借书代码

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int book_num = 0;

struct Book  //书籍数据库
{
	int id;
	char name[20];
	int state;
}book[50];

void book_panel(void)  //书籍显示
{
	printf("=======网上图书馆=======\n\n\n书籍编号    书籍名字    状态(1可借阅/2已借阅)\n\n");
	for (int i = 0; i < book_num; i++)
	{
		printf("%d\t\t%s\t\t%d\n", book[i].id, book[i].name, book[i].state);
	}
	printf("\n\n=====================\n\n");
}

int if_book_id(int id) //判断编号
{
	for (int i = 0; i < book_num; i++)
	{
		if (id == book[i].id)
		{
			return 1;
		}
	}
	return 0;
}

int if_book_name(char name[]) //判断书籍名称
{
	int ret = 0;
	for (int i = 0; i < book_num; i++)
	{
		ret = strcmp(name, book[i].name);
		if (ret == 0)
		{
			return 1;
		}
	}
	return 0;
}

void panel(void)  //开始界面
{
	printf("=======网上图书馆=======\n\n\n  请选择你的身份:\n\n(1)管理员(2)学生\n (3) 退出\n\n\n");
} 

void drop(void) //还书界面
{
	int num = 0;
	printf("\n\n=======还书界面=======\n\n请输入归还书籍编号:\n\n");
	scanf("%d", &num);
	for (int i = 0; i < book_num; i++)
	{
		if (num == book[i].id)
		{
			book[i].state = 1;
			break;
		}
	}
}

void lend(void) //借书界面
{
	int num = 0;
	printf("\n\n=======借书界面=======\n\n请输入借书籍编号:\n\n");
	scanf("%d", &num);
	for (int i = 0; i < book_num; i++)
	{
		if (num == book[i].id)
		{
			book[i].state = 2;
			break;
		}
	}
}

int add(void)  //添加书籍界面
{
	if (book_num == 50)
	{
		printf("添加失败\n已达最大图书储存数量\n\n");
		system("pause");
		return 0;
	}
	printf("==请输入书籍编号==\n");
	scanf("%d", &book[book_num].id);
	if (if_book_id(book[book_num].id) == 1)
	{
		printf("添加失败\n该编号已存在\n\n");
		system("pause");
		return 0;
	}
	printf("==请输入书籍名字==\n");
	scanf("%s", &book[book_num].name);
	getchar();
	if (if_book_name(book[book_num].name) == 1)
	{
		printf("该书已存在\n\n");
		system("pause");
		return 0;
	}
	printf("==请选择书籍状态==\n(1)未借阅 (2)已借阅\n");
	scanf("%d", &book[book_num].state);
	if (book[book_num].state != 1 && book[book_num].state != 2)
	{
		printf("错误操作\n");
		system("pause");
		return 0;
	}
	else
	{
    printf("===添加已完成===\n");
	book_num++;
	system("pause");
	return 0;
	}

}

int del2(int id) //删除操作
{
	int num = 0;
	if (if_book_id(id) != 1)
	{
		printf("\n\n编号不存在\n");
		system("pause");
		return 0;
	}
	for (int i = 0; i < book_num; i++)
	{
		if (id == book[i].id)
		{
			num = i;
			break;
		}
	}
	for (int i = num + 1; i < book_num; i++)
	{
		book[i - 1] = book[i];
	}
	book_num--;
	return 1;
}

int del(void)  //删除界面
{
	int num = 0;
	printf("==请选择你要删除编号(-1退出)==\n");
	scanf("%d", &num);
	if (num == -1)
	{
		printf("\n\n===退出成功===\n");
		system("pause");
		return 0;
	}
	else
	{
		if (del2(num) == 1) 
		{
		    printf("\n\n===删除成功===\n");
	        system("pause");
	    	return 0;
		}
		printf("\n\n===删除失败===\n");
		system("pause");
		return 0;
	}

}

int lookup(void) //查找界面
{
	int num = 0,num1=0;
	char num3[20];
	printf("请选择查找方式(-1 退出):\n\n(1) 编号 (2)书名 (3)状态 \n\n");
	scanf("%d", &num);
	if (num == -1)
	{
		printf("\n\n===退出成功===\n");
		system("pause");
		return 0;
	}
	if (num == 1)
	{

		printf("请输入书籍编号:");
		scanf("%d", &num1);
		for (int i = 0; i < book_num; i++)
		{
			if (num1 == book[i].id)
			{
				printf("%d \t\t%s \t\t%d\n", book[i].id, book[i].name, book[i].state);
				system("pause");
				return 0;
			}
			else
			{
				printf("此书暂时无法借阅\n");
				system("pause");
				return 0;
			}
		}
	}
	else if (num == 2)
	{

		printf("请输入书名:");
		scanf("%s", &num3);
		for (int i = 0; i < book_num; i++)
		{
			if (strcmp(num3, book[i].name)==0)
			{
				printf("%d \t\t%s \t\t%d\n", book[i].id, book[i].name, book[i].state);
				system("pause");
				return 0;
			}
			else
			{
				printf("此书暂时无法借阅\n");
				system("pause");
				return 0;
			}
		}
	}
	else if(num==3)
	{
		printf("请输入书籍状态(1未借阅/2已借阅):");
		scanf("%d", &num1);
		for (int i = 0; i < book_num; i++)
		{
			if (num1 == book[i].state)
			{
				printf("%d \t\t%s \t\t%d\n", book[i].id, book[i].name, book[i].state);
			}
		}
		system("pause");
		return 0;
	}
	else
	{
		printf("没有此操作\n");
		system("pause");
		return 0;
	}

}

int change(void) //修改界面
{
	int num1 = 0;
	printf("==请选择你要修改编号(-1退出)==\n");
	scanf("%d", &num1);
	if (num1 == -1)
	{
		printf("\n\n===退出成功===\n");
		system("pause");
		return 0;
	}
		if (del2(num1) == 1)
		{
			add();
			return 0;
		}
}

void sort(void) //排序操作
{
	int num = 0;
	for (int j = 1; j < book_num; j++) 
	{
	    for (int i = 1;i <book_num; i++)
	    {
			if (book[i - 1].id > book[i].id)
			{
				num = book[i - 1].id;
				book[i - 1].id = book[i].id;
				book[i].id = num;
		    }
	    }
	}
	printf("\n\n===完成排序===\n");
	system("pause");
}

void administrator2(void)
{
	printf("=========管理界面=========\n\n\n请选择你的操作\n\n(1)添加 (2)删除 (3)查找\n(4) 修改 (5)排序(6)退出\n ");
}

void administrator(void)  //管理界面
{
	book_panel();
	int num = 0;
	administrator2();
	while (num != 6)
	{
		scanf("%d", &num);
		switch (num)
		{
		case 1:add(); system("cls"); book_panel(); administrator2(); break;
		case 2:del();  system("cls"); book_panel(); administrator2(); break;
		case 3:lookup(); system("cls"); book_panel(); administrator2(); break;
		case 4:change(); system("cls"); book_panel(); administrator2(); break;
		case 5:sort(); system("cls"); book_panel(); administrator2(); break;
		case 6:printf("退出程序中\n"); system("pause"); break;
		default:
			printf("没有此操作\n"); system("pause"); system("cls"); book_panel(); administrator2(); break;
		}
	}

}

void student2(void)
{
	printf("========学生界面=======\n\n\n请选择你的操作\n\n(1) 还书 (2)借书 (3)退出\n");
}

void student(void) //学生界面
{
	book_panel();
	int num = 0;
	student2();
	while (num != 3)
	{
		scanf("%d", &num);
		switch (num)
		{
		case 1:drop(); system("pause"); system("cls"); book_panel(); student2(); break;
		case 2:lend(); system("pause"); system("cls"); book_panel(); student2(); break;
		case 3:printf("退出程序中\n"); system("pause"); break;
		default:
			printf("没有此操作\n"); system("pause"); system("cls"); book_panel(); student2(); break;
		}
	}
}

int main()
{
	int num = 0;
	panel();
	while (num != 3)
	{
		scanf("%d", &num);
	    switch (num)
	    {
		case 1:system("cls"); administrator(); system("cls"); panel(); break;
	     case 2:system("cls");student(); system("cls"); panel(); break;
		 case 3:printf("退出程序中\n"); system("pause"); break;
		 default:printf("没有此操作\n"); system("pause"); system("cls"); panel(); break;
	    }
	}

}


总结:

1.该代码的个个界面不是很好,可以再次优化;

2.在写代码时多次卡壳,思路不是很清晰;

3.做为所写的第一个程序,我对于他的表现不是很好,可能是写之前对于他的期待太高;

4.下次再写代码之前一定要想好主要的功能,在写的时候再去想每个功能要如何去写。我在写这个程序之前花了一天时间去想如何写,这是不好的,下次要改正。

posted @ 2020-12-16 17:10  懒癌·晚期患者  阅读(72)  评论(0编辑  收藏  举报