| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:文件求解问题,高手来解答一下
只看楼主 加入收藏
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
文件求解问题,高手来解答一下
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 8
struct LIST//结构体
{
    char    SPM[20];
    char    FL[10];
    float    DJ;
    int    KC;
}list[N];
void tongji()//统计
{
    int i,j,k;
   
    float    all_sum=0,self_sum=0;
    printf("\n所有物品总价:\n");                                                               
    for(i=0;i<N;i++)
    {
        all_sum+=list[i].DJ*list[i].KC;
    }
        printf("all_sum=%0.2f\n",all_sum);
        printf("\n不同分类物品总价:\n");
        printf("\t生活用品    食品        学习用品    饮料\n");
    for(i=0;i<N-1;i++)
    {   
        
        for(j=i+1;j<N;j++)
        {
            k=i;
            if(strcmp(list[k].FL,list[j].FL)==0)
            {
               
                self_sum=list[k].DJ*list[k].KC+list[j].DJ*list[j].KC;
                printf("\t%-0.2f\t",self_sum);
            }
            
        }
   
    }   
}
void menu()//菜单
{
    printf("\n    ================>>>>仓库管理系统<<<<==================\n\n");
    printf("        1.实现查询和显示功能:\n");
    printf("        2.实现排序功能:\n");
    printf("        3.统计仓库所有物品的总价,每种不同分类的物品\n");
    printf("        4.实现物品出仓\n");
    printf("        5.实现物品库存信息和修改功能\n");
    printf("        6.退出\n\n");
    printf("    ======================================================\n\n");      
}
void main()//主函数
{
    int i;
    char    head[300];
    FILE    *fp;
    if((fp=fopen("jsj0202_store.txt","r"))==NULL)
    {
        printf("打开文件失败,请检查路径设置\n\n");
        exit(0);
    }
    printf("\n");
    fgets(head,200,fp);
    printf("\t%s\n",head);
    for(i=0;i<N;i++)
    {
        fscanf(fp,"%s%s%f%d",list[i].SPM,list[i].FL,&list[i].DJ,&list[i].KC);
        printf("\t%-10s\t%-10s\t%-10.2f\t%-10d\n ",list[i].SPM,list[i].FL,list[i].DJ,list[i].KC);
    }
    fclose(fp);
    printf("\n");
    while(i!=6)
    {
        menu();
        printf("    ************  请选择操作序号 :  **********************\n");
        scanf("%d",&i);
        switch(i)
        {
            case 1:
                printf("实现查询和显示功能:\n");
                                break;
            case 2:
                printf("实现排序功能:\n");
                                break;
            case 3:
                printf("统计仓库所有物品的总价,每种不同分类的物品\n");
                tongji();
                break;
            case 4:
                printf("实现物品出仓\n");
                //chuku();
                break;
            case 5:
                printf("实现物品库存信息和修改功能\n");
                break;
            case 6:
                printf("退出\n");
                break;
        }
    }

}商品名            分类                 单价               库存数量
雀巢咖啡          饮料                 10.00              100
康师傅方便面      食品                 3.50               100
统一矿泉水        饮料                 1.00               1000
红叶台灯          学习用品             15.00              20
江明饼干          食品                 2.30               20
作业本            学习用品             1.00               185
光明酸奶          饮料                 6.00               100
富光杯            生活用品             7.00               50
我想把不同分类的物品总价求出来,我的tongji()函数怎么修改?
搜索更多相关主题的帖子: 英语 
2011-07-03 12:37
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:10 
单价*个数不就行了。。

离恨恰如春草,更行更远还生。
2011-07-03 12:45
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 2楼 玩出来的代码
能说具体点吗
2011-07-03 13:19
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
LZ写的C程序发到了C++版,不知道你知不知道C++的容器。了解容器的话很简单。
程序代码:
map<string,int> smap;
        for(int i=0;i<N;i++)
        {
            smap[list[i].FL]+=list[i].DJ*list[i].KC;
        }


若不知道容器,那可以如下、
[/code]
char *goods[]={"生活用品","食品","学习用品","饮料"};
        float counts[4]={0};
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<N;j++)
            {
                if(strcmp(list[j].FL,goods[i])==0)
                    counts[i]+=list[j].DJ*list[j].KC;
            }
        }
[/code]

离恨恰如春草,更行更远还生。
2011-07-03 16:53
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 4楼 玩出来的代码
怎么创建一个文本文件来保存这些数据呢
2011-07-03 17:27
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 4楼 玩出来的代码
char *goods[]这是什么意思,数组不是这样吗:char goods[]为什么要加 *goods
2011-07-03 18:51
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
怎么创建文本同样是用fopen,自己查下资料。char *goods[];这个表示指针数组,。也就是goods数组中存放的是指针。

离恨恰如春草,更行更远还生。
2011-07-03 20:30
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 7楼 玩出来的代码
嗯,明白了!谢谢了!
你知道怎么修改文本文件的内容吗?
比如:
商品名            分类                 单价               库存数量
雀巢咖啡          饮料                 10.00              100
康师傅方便面      食品                 3.50               100
统一矿泉水        饮料                 1.00               1000
红叶台灯          学习用品             15.00              20
江明饼干          食品                 2.30               20
作业本            学习用品             1.00               185
光明酸奶          饮料                 6.00               100
富光杯            生活用品             7.00               50

我想把作业本改成练习本
输出:
商品名            分类                 单价               库存数量
雀巢咖啡          饮料                 10.00              100
康师傅方便面      食品                 3.50               100
统一矿泉水        饮料                 1.00               1000
红叶台灯          学习用品             15.00              20
江明饼干          食品                 2.30               20
练习本           学习用品             1.00               185
光明酸奶          饮料                 6.00               100
富光杯            生活用品             7.00               50


这样怎么修改啊!麻烦你了。

[ 本帖最后由 宇智波曌 于 2011-7-4 01:20 编辑 ]
2011-07-04 01:11
JackRap
Rank: 2
等 级:论坛游民
帖 子:14
专家分:58
注 册:2010-7-29
收藏
得分:10 
修改文件可以有两种方法:
1、把文件整个读出来,该改的改,不改的造写回去;
2、把文件当做二进制文件:
int fd;
fd=open("jsj0202_store.txt",O_BINARY|O_RDWR);
定位到你要改的地方,就你的例子,要改的在第7行,数过6个‘\r’。不过“练习本”和“作业本”都是6个字符,如果字数不同,就麻烦了,后面的还得全读全写。
2011-07-04 09:55
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 9楼 JackRap
能具体点吗?还是不明白
2011-07-04 12:54
快速回复:文件求解问题,高手来解答一下
数据加载中...
 
   



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

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