课外实验

#include<stdio.h>
#include<stdlib.h>
#include <malloc.h>
#include<string.h>
struct Equipment 
{
	long Equ_num;//设备编号
	char Equ_name[20];//设备名称
	char Name[20];//领用人姓名
	char Department[20];//所属部门
	int Num;//数量
	char Time[20];//购买时间
	float Price;//购入价格
}EQU;
struct Data_num
{
	int num;
}data;
void main()
{
	void Menu();
	void Input(struct Equipment EQU[]);
	//void Add(struct Equipment EQU[]);
	void Read_file(struct Equipment EQU[],int n);
	void Display(struct Equipment EQU[],int n);
	void Seek(struct Equipment EQU[],int n);
	void Save(struct Equipment EQU[],int n);
	void Modify(struct Equipment EQU[],int n);
	void Delete(struct Equipment EQU[],int n);
	void Statistic(struct Equipment EQU[],int n);
	void Read_data_num();
	void Save_data_num();
	void Add_data_num(int n);
	void Sub_data_num(int n);
	struct Equipment EQU[100];
	int n;
	int choice;
	char choice1;
	Read_data_num();
	n=data.num;
	while(1)
	{
		Menu();
		printf("请输入一个选项:");
		scanf("%d",&choice);
		switch(choice) 
		{
		case 1:Input(EQU);break;
		//case 2:Add(EQU);break;
		case 3:Display(EQU,n);break;
		case 4:Seek(EQU,n);break;
		case 5:Delete(EQU,n);n=n-1;break;
		case 6:Modify(EQU,n);break;
		case 7:Statistic(EQU,4);break;
		case 8:exit(0);
		}
	}
}
void Menu()
{
	printf("\t        -----------------菜单-----------------\n");
	printf("\t\t\t1.录入设备信息\n");
	printf("\t\t\t2.添加设备信息\n");
	printf("\t\t\t3.输出设备信息\n");
	printf("\t\t\t4.查询设备信息\n");
	printf("\t\t\t5.删除设备信息\n");
	printf("\t\t\t6.修订设备信息\n");
	printf("\t\t\t7.统计设备信息\n");
	printf("\t\t\t8.退出\n");
}
void Read_data_num()//读取数据个数
{
	FILE *fp_num;
	if((fp_num=fopen("num.txt","r+"))==NULL) 
	{
		printf("cannot open this file!\n"); 
		exit(0);
	} 
	fscanf(fp_num,"%d",data.num);
}
void Save_data_num()//保存数据个数
{
	FILE *fp_num;
	if((fp_num=fopen("num.txt","r+"))==NULL) 
	{
		printf("cannot open this file!\n"); 
		exit(0);
	} 
	fprintf(fp_num,"%d",data.num);
}
void Add_data_num(int n)//添加数据个数
{
	Read_data_num();
	data.num=data.num+n;
	Save_data_num();
}
void Sub_data_num(int n)//减少数据个数
{
	Read_data_num();
	data.num=data.num-n;
	Save_data_num();
}
void Input(struct Equipment EQU[],int n)//录入设备信息
{
	int i;
	system("cls");
	Read_file(EQU,n);
	for(i=0;i<n;i++)
	{
		printf("输入设备编号:");
		scanf("%ld",&EQU[i].Equ_num);
		printf("输入设备名称:");
		scanf("%s",&EQU[i].Equ_name);
		printf("输入领用人姓名:");
		scanf("%s",&EQU[i].Name);
		printf("输入所属部门:");
		scanf("%s",&EQU[i].Department);
		printf("输入数量:");
		scanf("%d",&EQU[i].Num);
		printf("输入购入日期:");
		scanf("%s",&EQU[i].Time);
		printf("输入购入价格:");
		scanf("%f",&EQU[i].Price);
	}
	Save(EQU,n);
	printf("录入成功!\n");
}
void Read_file(struct Equipment EQU[],int n)
{
	int i;FILE *fp;
	system("cls");
	if((fp=fopen("equipment.txt","r+"))==NULL) 
	{
		printf("cannot open this file!\n"); 
		exit(0);
	} 
	for(i=0;i<n;i++) 
	{  
		fscanf(fp,"%d%s%s%s%d%s%f",&EQU[i].Equ_num,EQU[i].Equ_name,EQU[i].Name,EQU[i].Department,&EQU[i].Num,EQU[i].Time,&EQU[i].Price);
	}
	fclose(fp); 
}
void Display(struct Equipment EQU[],int n)
{
	int i;FILE *fp;
	system("cls");
	Read_file(EQU,n);
	for(i=0;i<n;i++)
	{
		printf("%10d",EQU[i].Equ_num);
		printf("%10s",EQU[i].Equ_name);
		printf("%10s",EQU[i].Name);
		printf("%10s",EQU[i].Department);
		printf("%10d",EQU[i].Num);
		printf("%10s",EQU[i].Time);
		printf("%10.2f\n",EQU[i].Price);
	}
}
void Seek(struct Equipment EQU[],int n)
{
	int i,seek;
	system("cls");
	Read_file(EQU,n);
	printf("请输入所需查询的设备编号:");
	scanf("%d",&seek);
	for(i=0;i<n;i++) 
	{  
		if(seek==EQU[i].Equ_num)
		{
			break;
		}
	}
	if(i==n)
	{
		printf("无该设备\n");
		system("pause");
	}
	else
	{
		printf("%10d",EQU[i].Equ_num);
		printf("%10s",EQU[i].Equ_name);
		printf("%10s",EQU[i].Name);
		printf("%10s",EQU[i].Department);
		printf("%10d",EQU[i].Num);
		printf("%10s",EQU[i].Time);
		printf("%10.2f\n",EQU[i].Price);
	}
}
void Save(struct Equipment EQU[],int n)
{ 
 int i;
 FILE* fp;
 if((fp=fopen("equipment.txt","w+"))==NULL) 
 {  
  printf("cannot open this file!\n"); 
 } 
 for(i=0;i<n;i++) 
 {  
  fprintf(fp,"%ld\t%s\t%s\t%s\t%d\t%s\t%f\n",EQU[i].Equ_num,EQU[i].Equ_name,EQU[i].Name,EQU[i].Department,EQU[i].Num,EQU[i].Time,EQU[i].Price);
 } 
 fclose(fp);
}
void Modify(struct Equipment EQU[],int n)
{
	int i,mod;
	char choice;
	struct Equipment swap;
	Read_file(EQU,n);
	system("cls");
	printf("请输入需要修改的设备编号");
	scanf("%d",&mod);
	for(i=0;i<n;i++) 
	{  
		if(mod==EQU[i].Equ_num)
		{
			break;
		}
	}
	if(i==n)
	{
		printf("无该设备\n");
		system("pause");
	}
	printf("输入新的设备编号:");
	scanf("%ld",&swap.Equ_num);
	printf("输入新的设备名称:");
	scanf("%s",&swap.Equ_name);
	printf("输入新的领用人姓名:");
	scanf("%s",&swap.Name);
	printf("输入新的所属部门:");
	scanf("%s",&swap.Department);
	printf("输入新的数量:");
	scanf("%d",&swap.Num);
	printf("输入新的购入日期:");
	scanf("%s",&swap.Time);
	printf("输入新的购入价格:");
	scanf("%f",&swap.Price);
	//printf("是否确认修改?(Y/N)\n");
	//scanf("%c",&choice);
	//if(!strcmp(choice,"Y"));//确定
	//{
		EQU[i]=swap;
		printf("修改成功");
	//}
	system("pause");
	Save(EQU,n);
}
void Delete(struct Equipment EQU[],int n)
{
	int i,j,del;
	char choice;
	struct Equipment swap;
	Read_file(EQU,n);
	system("cls");
	printf("请输入需要删除的设备编号");
	scanf("%d",&del);
	for(i=0;i<n;i++) 
	{  
		if(del==EQU[i].Equ_num)
		{
			break;
		}
	}
	for(j=i;j<n;j++)
	{
		EQU[j]=EQU[j+1];
	}
	Save(EQU,n);
	printf("删除成功");
}
void Statistic(struct Equipment EQU[],int n)
{
	
	int choice,i,sum1=0,sum2=0,sum3=0;
	char equ_name[10];//字符数组表示输入的设备名称
	char dep[10];//字符数组表示输入的部门名称
	char name[10];//字符数组表示输入的人名
	Read_file(EQU,n);
	printf("\t\t\t1.统计设备信息\n");
	printf("\t\t\t2.统计个人信息\n");
	printf("\t\t\t3.统计部门信息\n");
	scanf("%d",&choice);
	switch(choice) 
		{
		case 1:
			{
				printf("请输入需要统计的设备名称(可输入\"all\"以查询所有设备情况):\n");
				scanf("%s",equ_name);
				if(strcmp(equ_name,"all")==0)
				{
					for(i=0;i<n;i++) 
					{  
						sum1=sum1+EQU[i].Price*EQU[i].Num;
					}
					printf("设备总价值为%d\n\n",sum1);
				}
				else
				{
					printf("领用%s的人有",equ_name);
					for(i=0;i<n;i++) 
					{  
						if(strcmp(equ_name,EQU[i].Equ_name)==0)
						{
							printf("%s  ",EQU[i].Name);
							sum1=sum1+EQU[i].Price*EQU[i].Num;
							sum2=sum2+EQU[i].Num;
						}
					}
					printf("。\t该设备共有%d台,总价值为:%d\n\n元",sum2,sum1);
				}
			}
		case 2:
			{
				printf("请输入需要统计的人名:\n");
				scanf("%s",name);
				printf("%s领用\n",name);
				for(i=0;i<n;i++)
				{
					if(strcmp(name,EQU[i].Name)==0)
					{
						printf("%s设备%d台共计%f元\n",EQU[i].Equ_name,EQU[i].Num,EQU[i].Price*EQU[i].Num);
						sum3=sum3+EQU[i].Price*EQU[i].Num;
					}
				}
				printf("共计金额为%d元\n",sum3);
			}
		case 3:
			{
				printf("请输入需要统计的部门名称:\n");
				scanf("%s",dep);
				printf("%s中有\n",dep);
				for(i=0;i<n;i++)
				{
					if(strcmp(dep,EQU[i].Department)==0)
					{
						printf("%s领用%s设备%d台共计%f元\n",EQU[i].Name,EQU[i].Equ_name,EQU[i].Num,EQU[i].Price*EQU[i].Num);
						sum3=sum3+EQU[i].Price*EQU[i].Num;
					}
				}
				printf("共计金额为%d元\n",sum3);
			}
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值