c 已经编好了 看不太懂 解释下部分功能 谢谢~
下面两个功能看不懂
程序代码:有的还没学到,能解释下吗?// 查询(编号) void query_data_no() { int i,k; char no[5]; printf("\n请输入要查询设备的编号:"); scanf("%s",no); k=-1; for(i=0;i<dd.count;i++) { if(strcmp(dd.she[i].no,no)==0) { k=i; printf("编号\t种类\t名称\t价格\t购入日期\t报废状态(0-报废,1-未报废)\t破损状态(0-破损,1-未破损)"); printf("\n-------------------------------------------------------------------\n"); printf("%s\t%s\t%s\t%.2f\t%s\t%d\t%d\n",dd.she[i].no,dd.she[i].kind,dd.she[i].name,dd.she[i].price,dd.she[i].time,dd.she[i].bao,dd.she[i].po); if(dd.she[i].bao==0)printf("该设备报废日期:%s\t",dd.she[i].time1); if(dd.she[i].po==0)printf("该设备破损花费:%.2f\t",dd.she[i].price1); if(dd.she[i].bao==0||dd.she[i].po==0)printf("该设备处理方式为:%s\n",dd.she[i].way); } } if(k==-1) { printf("\n\n没有找到该设备(编号-%s)!",no); } } //设备分类统计 void count_data() { char kind[10]; int i,s=0; printf("请输入要查询的设备种类: "); scanf("%s",kind); for(i=0;i<dd.count;i++) if(strcmp(dd.she[i].kind,kind)==0) s++; printf("统计结果:%s种类的设备有%d件。",kind,s); }
下面是整个程序= 实验设备管理系统
程序代码:#include <stdio.h>
#include <io.h>
#include <stdlib.h>
#include <string.h>
#define MAX 300
struct shebei
{
char no[10]; //编号
char kind[10]; //设备种类
char name[10]; // 设备名称
float price; //价格
char time[10]; // 日期
int bao; //是否报废
char time1[10]; //报废日期
int po;//是否破损
float price1;//破损花费
char way[10]; //处理方式
};
struct data
{
int count; // 当前设备数组中设备的个数
struct shebei she[MAX]; // 设备数组
} dd;
// 显示主菜单
void menu()
{
system("cls");
printf("\n");
printf("\t\t\t********************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 实验设备管理系统 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t* [0] 退出 *\n");
printf("\t\t\t* [1] 查看所有设备信息 *\n");
printf("\t\t\t* [2] 输入设备记录 *\n");
printf("\t\t\t* [3] 编辑设备报废破损记录 *\n");
printf("\t\t\t* [4] 查询(编号) *\n");
printf("\t\t\t* [5] 设备统计 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t********************************\n");
}
// 等待用户按回车后回到主菜单
void to_menu()
{
char c1,c2;
printf("\n\n\n按回车键返回主菜单...");
scanf("%c%c",&c1,&c2);
menu();
}
// 查看所有设备信息
void view_data()
{
int i;
printf("编号\t种类\t名称\t价格\t购入日期\t报废状态(0-报废,1-未报废)\t破损状态(0-破损,1-未破损)");
printf("\n-------------------------------------------------------------------\n");
for(i=0;i<dd.count;i++)
{
printf("%s\t%s\t%s\t%.2f\t%s\t%d\t%d\n",dd.she[i].no,dd.she[i].kind,dd.she[i].name,dd.she[i].price,dd.she[i].time,dd.she[i].bao,dd.she[i].po);
if(dd.she[i].bao==0)printf("该设备报废日期:%s\t",dd.she[i].time1);
if(dd.she[i].po==0)printf("该设备破损花费:%.2f\t",dd.she[i].price1);
if(dd.she[i].bao==0||dd.she[i].po==0)printf("该设备处理方式为:%s\n",dd.she[i].way);
}
}
// 将数据从结构体数组保存到文件中
void save_data()
{
FILE *fp;
int i,k;
k=dd.count;
fp=fopen("c:/dada.dat","wb");
fwrite(&k,sizeof(int),1,fp);
for(i=0;i<k;i++)
fwrite(&dd.she[i],sizeof(struct shebei),1,fp);
fclose(fp);
}
// 输入设备记录
void add_data()
{
struct shebei st;
int b;
int i,j,k;
while(1)
{
j=0;
printf("\n请输入设备信息:\n");
printf("编号\t种类\t名称\t价格\t购入日期\t");
printf("\n---------------------------------------------------------------\n");
scanf("%s%s%s%f%s",st.no,st.kind,st.name,&st.price,st.time);
for(i=0;i<dd.count;i++)
if(strcmp(dd.she[i].no,st.no)==0)
{
j=1;
printf("输入的设备编号有重复,请重新输入!");
break;
}
if(j==1)continue;
if(j==0)
{
k = dd.count;
strcpy(dd.she[k].name,st.name);
strcpy(dd.she[k].no,st.no);
strcpy(dd.she[k].kind,st.kind);
dd.she[k].price=st.price;
strcpy(dd.she[k].time,st.time);
dd.she[k].bao=1;
dd.she[k].po=1;
dd.count++;
}
printf("\n\n继续添加设备信息[1-yes 0-no]:");
scanf("%d",&b);
if(b==0) break;
}
save_data();
}
// 将数据从文件读到结构体数组中
void read_data()
{
FILE *fp;
int i,k;
struct shebei st;
k=0;
if(access("c:/dada.dat",0)==-1) // 如果文件不存在
{
fp=fopen("c:/dada.dat","wb");
fwrite(&k,sizeof(int),1,fp);
fclose(fp);
}
fp=fopen("c:/dada.dat","rb");
fread(&k,sizeof(int),1,fp);
dd.count=k;
for(i=0;i<k;i++)
{
fread(&st,sizeof(struct shebei),1,fp);
strcpy(dd.she[i].name,st.name);
strcpy(dd.she[i].no,st.no);
strcpy(dd.she[i].kind,st.kind);
dd.she[i].price=st.price;
strcpy(dd.she[i].time,st.time);
dd.she[i].bao=st.bao;
dd.she[i].po=st.po;
strcpy(dd.she[i].time1,st.time1);
strcpy(dd.she[i].way,st.way);
dd.she[i].price1=st.price1;
}
fclose(fp);
}
// 编辑设备报废与破损记录
void edit_data()
{
int i,k;
char no[10],time1[10],way[10];int bao,po;float price1;
printf("\n请输入要编辑设备的编号:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.she[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该设备(编号-%s)!",no);
}
else
{
printf("\n名称:%s,编号:%s,种类:%s,价格:%.2f,购入日期:%s",dd.she[k].name,dd.she[k].no,dd.she[k].kind,dd.she[k].price,dd.she[k].time);
printf("\n请修改设备报废与否记录:");
printf("\n设备状态(0-报废,1-未报废):");
scanf("%d",&bao);
dd.she[k].bao=bao;
if(bao==0)
{
printf("\n报废日期:");
scanf("%s",time1);
strcpy(dd.she[k].time1,time1);
}
if(bao==1)
{
printf("\n设备破损状态:(0-破损,1-未破损) ");
scanf("%d",&po);
dd.she[k].po=po;
if(po==0)
{
printf("\n破损耗费:");
scanf("%f",&price1);
dd.she[k].price1=price1;
}
}
if(bao==0||po==0)
{
printf("\n处理方式:");
scanf("%s",way);
strcpy(dd.she[k].way,way);
}
save_data();
printf("\n\n编辑设备记录(编号-%s)成功!",no);
}
}
// 查询(编号)
void query_data_no()
{
int i,k;
char no[5];
printf("\n请输入要查询设备的编号:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.she[i].no,no)==0)
{
k=i;
printf("编号\t种类\t名称\t价格\t购入日期\t报废状态(0-报废,1-未报废)\t破损状态(0-破损,1-未破损)");
printf("\n-------------------------------------------------------------------\n");
printf("%s\t%s\t%s\t%.2f\t%s\t%d\t%d\n",dd.she[i].no,dd.she[i].kind,dd.she[i].name,dd.she[i].price,dd.she[i].time,dd.she[i].bao,dd.she[i].po);
if(dd.she[i].bao==0)printf("该设备报废日期:%s\t",dd.she[i].time1);
if(dd.she[i].po==0)printf("该设备破损花费:%.2f\t",dd.she[i].price1);
if(dd.she[i].bao==0||dd.she[i].po==0)printf("该设备处理方式为:%s\n",dd.she[i].way);
}
}
if(k==-1)
{
printf("\n\n没有找到该设备(编号-%s)!",no);
}
}
//设备分类统计
void count_data()
{
char kind[10];
int i,s=0;
printf("请输入要查询的设备种类: ");
scanf("%s",kind);
for(i=0;i<dd.count;i++)
if(strcmp(dd.she[i].kind,kind)==0)
s++;
printf("统计结果:%s种类的设备有%d件。",kind,s);
}
// 主函数
void main()
{
int fun;
read_data();
menu();
while(1)
{
printf("请输入功能号[0-8]:",&fun);
scanf("%d",&fun);
switch(fun)
{
case 0: // 退出
break;
case 1: // 查看所有设备信息
view_data();
break;
case 2: // 输入设备记录
add_data();
break;
case 3: // 编辑设备破损报废记录
edit_data();
break;
case 4: // 查询(编号)
query_data_no();
break;
case 5: // 设备分类统计
count_data();
break;
}
if(fun==0) break;
to_menu();
}
}











