栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言课程设计------食品仓库管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言课程设计------食品仓库管理系统

篇幅较长,有些代码可能存在冗余,仅供参考。发现有问题欢迎提出。

目录

1.题目描述:

2.代码解析

(1)结构体

(2)主要设置函数

(3)主函数:

(4)编写菜单:

(5)添加食品信息:

(6)Count

(7)添加食品库存

(8)修改食品信息:

 (9)查找信息

(10)统计

(11)食品信息排序

 (12)月报表

(13) 显示食品信息

(14)删除食品信息

(15)退出系统菜单


1.题目描述:

编写一个程序来管理食品仓库的货物,系统能实现以下功能:

食品信息输入 添加新食品信息 食品出库 修改食品信息 查询食品信息 食品排序 统计 月报表 导出食品信息

2.代码解析

首先定义我们需要的头文件:

#include
#include
# include 
# include
#include
#include

 以及方便我们后续操作的宏定义:

#define format1 "%d %s %s %d %lf %d %d %dn"
#define format2 "%d%s%s%d%lf%d%d%dn"
#define format3 "%-6dt%-6st%-6st%-6dt%-6.2lft%-6d%-2d %-2dn"
#define data1 stock[i].number,stock[i].name,stock[i].cate,stock[i].amount,stock[i].price,
stock[i].year,stock[i].month,stock[i].day
#define data2 &stock[i].number,&stock[i].name,&stock[i].cate,&stock[i].amount,&stock[i].price,
&stock[i].year,&stock[i].month,&stock[i].day

(1)结构体

我们的食品信息包含:食品号、名字、种类、库存、单价、入库时间以及入库量、出库量。所以我们可以构建结构体来完成:

struct sku
{
    int number;         //商品号
    char name[20];      //名称
    char cate[20];      //食品类别
    int amount;         //库存
    int iput;           //入库量
    int iout ;          //出库量
    double price;       //单价
    int year;           //年
    int month;          //月
    int day;            //日
}stock[100],           //储存食品信息(量)
istock[1000],          //储存入库信息(量)
ostock[1000],          //储存出库信息(量)
swap;                  //用于排序和统计模块的交换信息

struct TJ					//用于月报表 
{
	int SPHao[100];  		//储存出入库信息的食品号
	int SPShu[100];		//储存出入库信息的食品数		 
};

struct TJ rukuTJ[12], 		//储存1—12月的入库信息
chukuTJ[12];			//储存1—12月的出库信息

(2)主要设置函数

(我在这里先建立了我们后面需要用到的主要函数,来分别实现不同的功能)

void tianjia(int n);//添加食品信息
void rk();//添加食品库存
void qc();//减少食品库存 
void xg();//修改
void findmenu();//查找信息
void tj();//统计
void sortmenu();//信息排序
void ybb();//月报表
int dc();//显示食品信息 
void sc();//删除信息
void endmenu();//退出界面

(3)主函数:
int main()
{
	FILE* fp;
	fp = fopen("ship1.txt", "a+");//先创建一个文件 
	if (fp == NULL)
	{
		printf("无法打开文件n");
		return -1;
	}
	fclose(fp);
	menu();//菜单
	return 0;
}

(4)编写菜单:
void menu()
{
	printf("======================================n");
	printf("*       欢迎使用食品仓库管理系统     *n");
	printf("*====================================*n");
	printf("*          1.添加食品信息            *n");
	printf("*====================================*n");
	printf("*          2.添加食品库存            *n");
	printf("*====================================*n");
	printf("*          3.食品出库                *n");
	printf("*====================================*n");
	printf("*          4.修改食品信息            *n");
	printf("*====================================*n");
	printf("*          5.查询食品信息            *n");
	printf("*====================================*n");
	printf("*          6.统计食品物资            *n");
	printf("*====================================*n");
	printf("*          7.排序食品信息            *n");
	printf("*====================================*n");
	printf("*          8.月报表                  *n");
	printf("*====================================*n");
	printf("*          9.显示食品信息            *n");
	printf("*====================================*n");
	printf("*          10.删除食品信息           *n");
	printf("*====================================*n");
	printf("*          0.退出系统                *n");
	printf("======================================n");
	printf("请选择你要进行的操作:n");
	int x;
	while (scanf("%d", &x) != EOF)
	{
		switch (x)
		{
		case 1:printf("请输入添加数量:n");
			int n;
			scanf("%d", &n); 
			tianjia(n);//添加食品信息
			break;
		case 2:rk();//食品入库
			break;
		case 3:qc(); //食品出库
			break;
		case 4:xg();//修改食品信息
			break;
		case 5:findmenu();//查找
			break;
		case 6:tj(); //统计食品信息
			break;
		case 7:sortmenu(); //食品排序
			break;
		case 8:ybb(); /月报表
			break;
		case 9:dc(); //导出食品信息
			break;
		case 10:
			sc();//删除食品信息
			break;
		case 0:
		endmenu(); //退出系统界面
		exit(0);
		default:printf("没有此选项,请重新输入n");
		}
	}
}

(5)添加食品信息:
void tianjia(int n)//添加食品信息
{
	system("cls");
	printf("=================================n");
	printf("*********添加食品信息************n");
	printf("请写入信息n");
	FILE* fp;
	fp = fopen("ship1.txt", "a+");
	int i;
	for (i = 0; i < n; i++)
	{
		printf("请输入食品号:n");
		scanf("%d", &stock[i].number);
		printf("请输入名称:n");
		scanf("%s", &stock[i].name);
		printf("请输入食品类别:n");
		scanf("%s", &stock[i].cate);
		printf("请输入库存:n");
		scanf("%d", &stock[i].amount);
		printf("请输入食品单价:n");
		scanf("%lf", &stock[i].price);
		printf("请输入日期 年/月/日:n");
		daTe:
		scanf("%d %d %d", &stock[i].year, &stock[i].month, &stock[i].day);
		if((stock[i].month==1||stock[i].month==3||stock[i].month==5||stock[i].month==7||stock[i].month==8||stock[i].month==10||stock[i].month==12)&&(stock[i].day>=31||stock[i].day<0))
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; //输入的日期如果是错误的,如13月32日,就会返回到输入日期这步,重新输入
				}
			if((stock[i].month==4||stock[i].month==6||stock[i].month==9||stock[i].month==11)&&stock[i].day>=30||stock[i].day<0)
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; //同上
				}
			if((stock[i].month==2)&&stock[i].day>=29||stock[i].day<0)
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; //同上
				}
		fprintf(fp,format1,data1);//将输入的食品信息写入到文件
	}
	fclose(fp);
	printf("添加成功n按任意键继续n");
	_getch();
	system("cls");//清屏
	menu();//返回到菜单
}

(6)Count

我们可以先写一个Count()函数用来统计我们写入到文件中的食品信息量的多少以及读取文件的信息

int COUNT()//用于统计文件中食品的数量 ,读取文件信息 
{
	int i = 0;
	FILE* fp;
	fp = fopen("ship1.txt", "r");
	if (fp == NULL)
	{
		printf("无法打开文件n");
		return -1;
	}
	while (!feof(fp))
	{
		fscanf(fp, format2, data2); //读取文件信息 
		i++;
	}
	fclose(fp);
	return i;//返回文件中食品信息数量 
}

(7)添加食品库存

(只用于添加库存的数量)

void rk()//添加食品库存 
{
	system("cls");
	printf("===============================n");
	printf("*********入库食品信息**********n");
	printf("===============================n");
	FILE* fp,*fp1;
	int imax = COUNT();//先读取文件中原有的食品信息
	int i,number,iput;
	char ch;
	again://与下面goto again对应
	printf("请输入要入库的食品号:n");
	scanf("%d", &number);
	for (i = 0; i < imax; i++)
	{
		if (number == stock[i].number)
		{
			printf("---已找到该食品:n");
			printf("食品号t名字t类别t库存t价格t入库时间n");
			printf(format3, data1);
			printf("请输入要入库的食品量:n");
			scanf("%d", &iput);
			stock[i].amount = stock[i].amount + iput;//原来的食品库存加上现在新加的库存量
			istock[i].iput+=iput;//统计入库的食品数量(用于月报表)
			printf("请输入入库时间:n");
			daTe:
		scanf("%d %d %d", &stock[i].year, &stock[i].month, &stock[i].day);
		if((stock[i].month==1||stock[i].month==3||stock[i].month==5||stock[i].month==7||stock[i].month==8||stock[i].month==10||stock[i].month==12)&&(stock[i].day>31||stock[i].day<0))
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; 
				}
			if((stock[i].month==4||stock[i].month==6||stock[i].month==9||stock[i].month==11)&&stock[i].day>30||stock[i].day<0)
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; 
				}
			if((stock[i].month==2)&&stock[i].day>29||stock[i].day<0)
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; 
				}
			
			
			//将食品号、入库量、时间写入入库量的文本文件中
			 fp1=fopen("rukudan.txt","a+");//用于统计入库数量的文本文件
			 fprintf(fp1,"%d %d %d %d %dn",stock[i].number,istock[i].iput,stock[i].year,stock[i].month,stock[i].day);
			fclose(fp1);
			//将入库后的总信息写入文件中 
			if ((fp = fopen("ship1.txt", "w")) == NULL)//这里以“w”的方式打开是为了清除之前的食品信息,将现在的新食品信息写入
			{
				printf("无法打开文件n");
				return;
			}
			for (i = 0; i < imax; i++)
			{
				fprintf(fp, format1, data1);
			}
			fclose(fp);	
			printf("入库成功,是否(y/Y N/n)继续入库:n");
			getchar();
			ch = getchar();
			if (ch == 'y' || ch == 'Y')
				goto again;
			else
			{
				printf("按任意键返回n");
				_getch();
				system("cls");
				menu();
			}
			return;
		}
	}
	printf("找不到该信息,按任意键返回n");
	_getch();
	system("cls");
	menu();
}

(8)修改食品信息:
void xg()//修改
{
	system("cls");
	printf("================================n");
	printf("********食品信息修改************n");
	FILE* fp= fopen("ship1.txt", "r");
	if (!fp)
	{
		printf("打开失败!n");
		return -1;
	}
	int i = 0, number,imax = 0,p=0;
	imax = COUNT();  //读取食品信息的文件
	printf("请输入你要修改食品的食品号:n");
	scanf("%d", &number);
	for (i = 0; i < imax; i++)
	{
		if (number == stock[i].number)
		{
			printf("已找到该信息n");
			printf("食品号t名字t类别t库存t价格t入库时间n");
			printf(format3, data1);
			printf("请选择要修改的信息:n");
			printf("********      1.库存            *******n");
			printf("********      2.单价            *******n");
			printf("*******       3.入库时间        *******n");
			printf("*******       4.确认修改        *******n");
			printf("**************0.返回菜单***************n");
			while (scanf("%d", &p) != EOF)
			{
				switch (p)
				{
				case 1:printf("请输入新的库存量:n");
					scanf("%d", &stock[i].amount);					
					break;
				case 2:
					printf("请输入新的单价:n");
					scanf("%lf", &stock[i].price);
					break;
				case 3:
					printf("请输入新的入库时间:n");
					daTe:
		scanf("%d %d %d", &stock[i].year, &stock[i].month, &stock[i].day);
		if((stock[i].month==1||stock[i].month==3||stock[i].month==5||stock[i].month==7||stock[i].month==8||stock[i].month==10||stock[i].month==12)&&(stock[i].day>31||stock[i].day<0))
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; 
				}
			if((stock[i].month==4||stock[i].month==6||stock[i].month==9||stock[i].month==11)&&stock[i].day>30||stock[i].day<0)
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; 
				}
			if((stock[i].month==2)&&stock[i].day>29||stock[i].day<0)
				{
					printf("入库日期有误,重新输入日期:n");
					goto daTe; 
				}
					break;
				case 4:
					if ((fp = fopen("ship1.txt", "w")) == NULL)
					{
						printf("无法打开文件n");
						return;
					}
					for (i = 0; i < imax; i++)
					{
						fprintf(fp, format1, data1);//打印在文件里面 
					}
					fclose(fp);
					printf("修改成功n");
					break;
				case 0:system("cls");
					menu();
					break;
				default:printf("输入格式错误,请重新选择n");
				}
				printf("请选择修改项目:n");
			}
			return;
		}
	}
	printf("找不到该信息---按任意键继续n");
	_getch();
	system("cls");
	menu();
}

 (9)查找信息
void findmenu()//查找信息
{
	system("cls");//清屏
	printf("================================n");
	printf("*      1.食品号查询       *n");
	printf("*      2.果仁类           *n");
	printf("*      3.饼干类           *n");
	printf("*      4.肉脯类           *n");
	printf("*      5.糖果类           *n");
	printf("*      6.果脯类           *n");
	printf("*      0.返回主菜单       *n");
	printf("*=========================*n");
	printf("请选择:n");
	int i = 0,n,imax=0,number,flag=0;
	char guoren[10] = "果仁类",bingan[10]="饼干类",roufu[10]="肉脯类",tangguo[10]="糖果类",guofu[10]="果脯类";
	imax =COUNT();
	if (imax <= 0)
	{
		printf("请先添加信息n");
		return;
	}
	while (scanf("%d", &n) != EOF) 
	{
		switch (n)
			{
		case 1:			
			printf("-------请输入食品号:n");
			scanf("%d", &number);
			for (i = 0; i < imax; i++)
				if (number == stock[i].number)
				{
					flag = 1;
					printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
					printf(format3, data1);
				}	
			if (flag == 0)
				printf("*   没有该食品,重新选择查询方式   *n");
			break;
		case 2:
			flag = 0;
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for (i = 0; i < imax; i++)
			{
				if (strcmp(guoren,stock[i].cate)==0)
				{	
					flag = 1;
					printf(format3, data1);
				}
			}	
			if (flag == 0)
				printf("*   没有该食品,重新选择查询方式   *n");
			break;
		case 3:
			flag = 0;
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for (i = 0; i < imax; i++)			
				if (strcmp(bingan, stock[i].cate) == 0)
				{
					flag = 1;
					printf(format3, data1);
				}			
			if (flag == 0)
				printf("*   没有该食品,重新选择查询方式   *n");
			break;
		case 4:
			flag = 0;
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for (i = 0; i < imax; i++)
			{
				if (strcmp(roufu, stock[i].cate) == 0)
				{
					flag = 1;
					printf(format3, data1);
				}
			}
			if (flag == 0)
				printf("*   没有该食品,重新选择查询方式   *n");
			break;
		case 5:
			flag = 0;
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for (i = 0; i < imax; i++)
			{
				if (strcmp(tangguo, stock[i].cate) == 0)
				{
					flag = 1;
					printf(format3, data1);
				}
			}
			if (flag == 0)
				printf("*   没有该食品,重新选择查询方式   *n");
			break;
		case 6:
			flag = 0;
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for (i = 0; i < imax; i++)
			{
				if (strcmp(guofu, stock[i].cate) == 0)
				{
					flag = 1;
					printf(format3, data1);
				}
			}		
			if (flag == 0)
				printf("*   没有该食品,重新选择查询方式   *n");
			break;
		case 0:system("cls"); menu(); break;
		default:printf("-----请重新选择:n");
			}
		printf("======请选择:====n");
	}	
}

(10)统计
void tj()//统计
{
	system("cls");
	printf("================================n");
	printf("*********食品信息统计***********n");
	printf("================================n");
	printf("n");
	int imax = 0, i = 0, count = 0;
	imax = COUNT();
	for (i = 0; i < imax; i++)
	{
		count += stock[i].amount;
	}
	int average_count = count / imax;
	printf("*   总食品平均库存量:%dn",average_count);
	printf("**********************n"); 
	int j = 0,x;
	printf("*    大于平均库存的食品降序排序:   *n");
	printf("=====================================n");
	for (i = 0; i < imax; i++)
	{
		if (stock[i].amount > average_count)
		{//把大于平均库存的食品排于前面 
			swap = stock[j];
			stock[j] = stock[i];
			stock[i] = swap;
			j++;
		}
	}
	for (i = 0; i < j - 1; i++)
		for (x = i + 1; x< j; x++)
		{
			if (stock[i].amount < stock[x].amount)
			{//把大于平均库存的食品按升序排序 
				swap = stock[i];
				stock[i] = stock[j];
				stock[j] = swap;
			}
		}
	printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
	for (i = 0; i < j; i++)
		printf(format3, data1);
	printf("n*    库存量最少的食品(最多10件):   *n");
	printf("=======================================n");
	for (i = 0; i < imax - 1; i++)
		for (j = i + 1; j < imax; j++)
		{
			if (stock[i].amount > stock[j].amount)
			{//罗列出库存量最少的10种商品,且按升序排序 
				swap = stock[i];
				stock[i] = stock[j];
				stock[j] = swap;
			}
		}
	printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
	if (imax > 10)//食品量大于10,就只打印10个信息 
	{		
		for (i = 0; i < 10; i++)
			printf(format3, data1);
	}
	else//不大于10就全部打印 
	{
		for (i = 0; i < imax; i++)
			printf(format3, data1);
	}
	//统计果仁、饼干、柔肤、糖果、果脯各类的数量 
	int guor = 0, bing = 0, rouf = 0, tangg = 0, guof = 0;
	for (i = 0; i < imax; i++)
	{
		if (strcmp(stock[i].cate, "果仁类") == 0)
			guor += stock[i].amount;
		if (strcmp(stock[i].cate, "饼干类") == 0)
			bing += stock[i].amount;
		if (strcmp(stock[i].cate, "肉脯类") == 0)
			rouf+= stock[i].amount;
		if (strcmp(stock[i].cate, "糖果类") == 0)
			tangg+= stock[i].amount;
		if (strcmp(stock[i].cate, "果脯类") == 0)
			guof += stock[i].amount;
	}
	printf("n---------------");
	printf("果仁类库存:%dn",guor);
	printf("---------------");
	printf("饼干类库存:%dn",bing);
	printf("---------------");
	printf("肉脯类库存:%dn",rouf);
	printf("---------------");
	printf("糖果类库存:%dn",tangg);
	printf("---------------");
	printf("果脯类库存:%dn",guof);
	printf("---------------");
	printf("其他类别  :%dn",count-guor-bing-rouf-tangg-guof);
	printf("****按任意键返回****n");
	_getch();
	system("cls");
	menu();
}

(11)食品信息排序
void sortmenu()//信息排序
{
	system("cls");
	printf("=============================n");
	printf("*      1.食品号排序       *n");
	printf("*      2.库存量排序       *n");
	printf("*      3.单价排序         *n");
	printf("*      0.返回主菜单       *n");
	printf("请选择:n");
	int i = 0,n, imax = 0, j = 0;
	imax = COUNT();
	if (imax <= 0)
	{
		printf("请先添加信息n");
		return;
	}
	while (scanf("%d", &n) != EOF)
	{
		switch (n)
		{
		case 1:printf("**********食品号排序**********n");
			for (i = 0; i < imax-1; i++)			
				for (j = i+1; j < imax; j++)				
					if (stock[i].number > stock[j].number)
					{//食品按升序排序,冒泡排序。满足条件就将食品信息整体进行交换,下同。 
						swap = stock[i];
						stock[i] = stock[j];
						stock[j] = swap;
					}							
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for(i=0;i stock[j].amount)
					{//库存量按升序排序 
						swap = stock[i];
						stock[i] = stock[j];
						stock[j] = swap;
					}			
				}
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for (i = 0; i < imax; i++)
				printf(format3,data1);
			break;
		case 3:printf("**********单价排序**********n");
			for (i = 0; i < imax - 1; i++)
				for (j = i + 1; j < imax; j++)
				{
					if (stock[i].price > stock[j].price)
					{//单价按升序排序 
						swap = stock[i];
						stock[i] = stock[j];
						stock[j] = swap;
					}
				}
			printf("食品号t名称t食品类别  库存量  单价t入库时间 n");
			for (i = 0; i < imax; i++)
				printf(format3, data1);
			break;
		case 0:system("cls"); menu(); break;
		default:printf("请重新选择:n");
		}
		printf("请选择:n");
	}
}

 (12)月报表
void ybb()//月报表
{
	system("cls");
	printf("================================n");
	printf("*********月报表******************n");
	FILE *fp3,*fp4;	
	int imax = COUNT();
	//读取出库信息量
	int k=0,outcount=0;
	int i=0 , j=0,flag ;
	fp4=fopen("chukudan.txt","r");//读取出库单文件信息 
	while(fscanf(fp4,"%d %d %d %d %d",&ostock[i].number,&ostock[i].iout,&ostock[i].year,&ostock[i].month,&ostock[i].day)!=EOF)
	{
		i++;
		outcount++;//统计出库的信息量 
	}	
	//将出库月、量读入到chukuTJ结构体中 
	for(i=0;i<12;i++)
	{
		k=0;
		for(j=0;j 

(13) 显示食品信息
int dc()//信息显示 
{
	system("cls");
	time_t timetemp;//定义时间结构体变量 
	struct tm* p;//定义时一个结构体指针 
	time(&timetemp);
	p=localtime(&timetemp);//获取当前时间 
//这里来获取当前时间,判断库存中的食品距离当前时间是否过期

	int nowmonth=1+p->tm_mon,nowyear=1900+p->tm_year;//nowmonth、nowyear为当前月、年 
	printf("================================n");
	printf("********显示食品信息************n");
	printf("****红色表示该食品库存少于10****n");
	printf("****蓝色表示该库存入库时间大于六个月****n");
	printf("****黄色表示该食品库存少于10且入库时间大于六月*****n"); 
	printf("===================================================n");
	int i = 0,imax=0,j,summonth=0;
	int warn=10;//库存警告值 
	FILE* fp;
	imax=COUNT();	
		printf("食品号t名称t食品类别  库存量  单价t入库时间 n");	
		for(i=0;i6)//如果库存少且入库时间大于6个月 
			{
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);//显示黄色 
				printf(format3, data1);
			}
			else if(stock[i].amount<=warn)
			{
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);//显示红色 
				printf(format3, data1);
			} 
			else if(summonth>6)//如果入库月距离本月大于6个月 
			{
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);//显示蓝色 
				printf(format3, data1);
			}			
			else
			{
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);//显示白色  
				printf(format3,data1);				
			}
		}
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);//显示白色			
		printf("按任意键继续n");
		_getch();
		system("cls");
		menu();
}

(14)删除食品信息
void sc()
{
	system("cls");
	printf("*******************************n");
	printf("**********删除食品信息*********n");
	printf("*******************************n");
	FILE* fp;
	int i = 0,number,index = 0;
	int imax = COUNT();
	char ch;
	again:
	printf("*   请输入要删除食品的食品号   *n");
	scanf("%d", &number);
	for (i = 0; i < imax; i++)
	{
		if (number == stock[i].number)
		{
			index = i;
			printf("食品号t名字t类别t库存t价格t入库时间n");
			printf(format3,data1);
			printf("找到了所要删除的信息n你是否(y/Y N/n)要删除,输入0返回主菜单n");
			getchar();
			ch = getchar();
			if (ch == 'Y' || ch == 'y')
			{
				for (i = 0; i < imax; i++)
				{
					if (i < index)
						stock[i].number = stock[i].number;
					else
						stock[i] = stock[i + 1];
				}
				fp = fopen("ship1.txt", "w");
				for (i = 0; i < imax - 1; i++)
				{
					fprintf(fp, format1, data1);
				}
				fclose(fp);
				printf("删除成功- - -按任意键返回n");
				_getch();
				system("cls"); 
				menu();
			}
			else if (ch == '0')
			{
				printf("按任意键返回_ _ _n");
				_getch();
				system("cls");
				menu();
			}
			
			else
			{
				printf("*   请重新输入删除的信息   *n");
				goto again;
			}
			return;
			break;
		}
	}
	printf("没有此信息- - -按任意键返回上一级n");
	_getch();
	system("cls");
	menu();
}

(15)退出系统菜单
void endmenu()
{
	system("cls");
	printf("================================n");
	printf("*********感  谢  使  用*********n");
	printf("================================n");
}

该系统整体代码如上,如果大佬发现有什么问题,欢迎提出,或有不清楚的地方欢迎提问,感谢支持!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号