| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 740 人关注过本帖
标题:c 已经编好了 看不太懂 解释下部分功能 谢谢~
只看楼主 加入收藏
leodon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
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();
    }
}




2015-07-02 11:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
自己都看不懂的,也叫“编出来”?这等于说一句话,自己也不知道说什么,反问别人是什么意思。

授人以渔,不授人以鱼。
2015-07-02 12:09
leodon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
收藏
得分:0 
回复 2楼 TonyDeng
我加主语了?
我说我编好了?
2015-07-02 12:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
以下是引用leodon在2015-7-2 12:56:00的发言:

我加主语了?
我说我编好了?
什么人都有,
既然不是你编写的,你故意含混地说出来干吗? 正常人会问:下面一段别人写的C代码,我看不懂,请大家解释下;
在论坛上一问一答,皆无利益相关,谁也不欠谁的,提问者不需要自卑,答题者不应当自傲。但……,但提问者也别反过来咄咄逼人呀。

夹私货了,我觉得现在学生词不达意缺礼仪的原因是:课本中文言文内容减少了
古文不好,那么白话文也够呛,说出的话就会颠三倒四,云里雾里,不知所云;
古礼仪不了解,今世又处在道德沦丧期,就会导致小孩子自以为是,不懂礼貌。

2015-07-02 13:37
leodon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
收藏
得分:0 
回复 4楼 rjsp
中肯
有这些时间你们也可以帮我看一看了
既然不愿意帮我 又何必多嘴 说那些话呢?
2015-07-02 14:51
leodon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-2
收藏
得分:0 
已经编好了   这句 只是告诉大家 有现成的程序  不需要大家帮我编写 只是分析一下 有的人就那么多想法?
2015-07-02 14:55
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:4 

楼主大人可能是暂时性失忆,过几天自己写的代码就能看懂了,
楼主大人快点把失去的记忆找回来
2015-07-03 10:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
以下是引用rjsp在2015-7-2 13:37:41的发言:
说出的话就会颠三倒四,云里雾里,不知所云;




DO IT YOURSELF !
2015-07-03 14:26
keyiz
Rank: 2
等 级:论坛游民
帖 子:13
专家分:13
注 册:2015-6-24
收藏
得分:4 
请教人问题还这么屌 不鄙视下 都不行了。  小白菜都看不过去了。
2015-07-04 03:25
T_MACC
Rank: 4
等 级:业余侠客
威 望:8
帖 子:99
专家分:211
注 册:2015-4-14
收藏
得分:4 
(=@__@=)哪里?看不懂
2015-07-04 16:40
快速回复:c 已经编好了 看不太懂 解释下部分功能 谢谢~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038913 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved