#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);
}
}
}
课外实验
最新推荐文章于 2022-04-02 15:31:27 发布