| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:这是一份商品管理系统,希望达人们可以帮我这个初学者注解一下
只看楼主 加入收藏
dukeliuc
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-1-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
这是一份商品管理系统,希望达人们可以帮我这个初学者注解一下
#include "stdio.h"
#include "string.h"
#define NAME_MAX_LEN 20
#define Prod_MAX_NUM   50
typedef struct
{
    int num;
    char name[NAME_MAX_LEN];
    double unitprice;
    int  amount;
    double totalprice;
}prodNode;
typedef struct sequence
{
    prodNode data[Prod_MAX_NUM];
    int len;
}seq;
seq product;
void inputGoods()
{   
    int i,n;
    printf("请输入商品个数:\n");
    scanf("%d",&n);
    if (n<0)
        return;
    for (i=0;i<n;i++)
    {
        printf("请输入第%d个商品记录。\n",i+1);
        printf("输入商品的编号:\n");
        scanf("%d",&product.data[i].num);
        printf("输入商品的名字:\n");
        scanf("%s",product.data[i].name);
        printf("输入商品的单价:\n");
        scanf("%lf",&product.data[i].unitprice);
        printf("输入商品的数量:\n");
        scanf("%d",&product.data[i].amount);
        product.data[i].totalprice=product.data[i].unitprice*product.data[i].amount;
        
    }
    product.len=n;
}
void outputGoods()
{
    int i;
    if (product.len==0)
    {
        printf("\n无数据!\n");
        return;
    }
    printf("\n商品的记录为:\n");
    printf("编号\t名字\t单价\t数量\t总价\n");
    for (i=0;i<product.len;i++)
    {
        printf("%d\t%s\t%lf\t%d\t%.2lf",product.data[i].num,product.data[i].name,product.data[i].unitprice,product.data[i].amount,product.data[i].totalprice);
        
        printf("\n");
        
    }
}
void saveGoods()
{
    int i;
    FILE *fp;
    if (product.len==0)
    {
          printf("\n无数据!\n");
          return;
    }
    fp=fopen("d:\\cwz\\goods.txt","a");
    if (fp==NULL)
    {
        printf("文件打开失败!\n");
        return;
    }
    for (i=0;i<product.len;i++)
    {   fprintf(fp,"\n");
        fprintf(fp,"%d\t",product.data[i].num);
        fprintf(fp,"%s\t",product.data[i].name);
        fprintf(fp,"%lf\t",product.data[i].unitprice);
        fprintf(fp,"%d\t",product.data[i].amount);
        fprintf(fp,"%.2lf",product.data[i].totalprice);
    }
    fclose(fp);
    printf("已成功存盘!\n");
}
void readGoods()
{
    int i;
    FILE *fp;
    fp=fopen("d:\\cwz\\goods.txt","r");
    if (fp==NULL)
    {
        printf("文件打开失败!\n");
        return;
    }
    i=0;
    while (!feof(fp))
    {
        fscanf(fp,"%d",&product.data[i].num);
        fscanf(fp,"%s",product.data[i].name);
        fscanf(fp,"%lf",&product.data[i].unitprice);
        fscanf(fp,"%d",&product.data[i].amount);
        fscanf(fp,"%lf",&product.data[i].totalprice);
        i++;
    }
    product.len=i;
    fclose(fp);
    printf("已从文件成功读取%d条成绩记录!\n",product.len);
}
void insertOneGoods()
{
    prodNode G;
    int i,pos;
    if (product.len==Prod_MAX_NUM)
    {
        printf("表已满!\n");
        return;
    }
    printf("请输入插入位置:");
    scanf("%d",&pos);
    if (pos<0||pos>product.len)
    {    printf("插入位置出错!\n");
        return;
    }
    printf("请输入要插入的商品记录:\n");
    printf("请输入编号:");
    do {
        scanf("%d",&G.num);
        if (G.num<=0)
            printf("输入的编号不合理,请重新输入。\n");
    }while (G.num<=0);
    printf("输入商品的名字:\n");
    scanf("%s",G.name);
    printf("输入商品的单价:\n");
    scanf("%lf",&G.unitprice);
    printf("输入商品的数量:\n");
    scanf("%d",&G.amount);
    G.totalprice=G.unitprice*G.amount;
    for (i=product.len-1;i>=pos;i--)
        product.data[i+1]=product.data[i];
    product.data[pos]=G;
    product.len=product.len+1;
    printf("插入成功!");
}
void deleteOneGoods()
{
    int i,pos;
    if (product.len==0)
    {
        printf("表空!\n");
        return;
    }
    printf("请输入要删除的商品记录的位置:");
    scanf("%d",&pos);
    if (pos<0||pos>product.len-1)
    {
        printf("删除的位置出错!\n");
        return;
    }
    for (i=pos+1;i<=product.len-1;i++)
        product.data[i-1]=product.data[i];
    product.len=product.len-1;
    printf("删除成功!\n");
}
void bubbleSortByNum()
{
    int i,j,n;
    prodNode temp;
    int tag;
    n=product.len;
    for (tag=1,i=0;i<n-1 && tag==1;i++)
    {
        tag=0;
        for (j=n-1;j>i;j--)
            if (product.data[j].num<product.data[j-1].num)
            {
                temp=product.data[j];
                product.data[j]=product.data[j-1];
                product.data[j-1]=temp;
                tag=1;
            }
    }
}
void bubbleSortByTotal()
{
    int i,j,n;
    prodNode temp;
    int tag;
    n=product.len;
    for (tag=1,i=0;i<n-1 && tag==1;i++)
    {
        tag=0;
        for (j=n-1;j>i;j--)
            if (product.data[j].totalprice<product.data[j-1].totalprice)
            {
                temp=product.data[j];
                product.data[j]=product.data[j-1];
                product.data[j-1]=temp;
                tag=1;
            }
    }
}
void sortGoods()
{
    int subMenuItem=1;
    while (subMenuItem!=0)
    {
        printf("\n\n");
        printf("******************排序子菜单***********************\n");
        printf("*                 1.按照商品编号进行递增排序      *\n");
        printf("*                 2.按照商品总价进行递增排序      *\n");
        printf("*                 0.退出子菜单                    *\n");
        printf("***************************************************\n");
        printf("请输入所选子菜单项序号:");
        scanf("%d",&subMenuItem);
        switch (subMenuItem)
        {
        case 1:
            bubbleSortByNum();
            printf("已按照商品的编号进行递增排序。排序后的结果为:\n");
            outputGoods();
            break;
        case 2:
            bubbleSortByTotal();
            printf("已按照商品的总价进行递增排序。排序后的结果为:\n");
            outputGoods();
            break;
        case 0:break;
        default:printf("输入超出范围!\n");  break;
        }
    }
}
void outputHead()
{
    printf("编号\t名字\t单价     \t数量\t总价\n");
}
void outputOneGoods(prodNode s)
{

    printf("%d\t%s\t%lf    \t%d\t%.2lf",s.num,s.name,s.unitprice,s.amount,s.totalprice);
    printf("\n");
}
int isNumberExist (int number)
{
    int n,i=0;
    n=product.len;
    while (i<n &&product.data[i].num!=number)
        i++;
    if (i<n)
        return i;
    else
        return -1;
}
void seqSearchByNumber (int number)
{
    int pos;
    pos=isNumberExist(number);
    if (pos !=-1)
    {
        printf("查找成功!查找结果如下:\n");
        outputHead();
        outputOneGoods(product.data[pos]);
    }
    else
        printf("查找失败!编号为%d的商品不存在。\n",number);
}
void seqSearchByName(char name[])
{
    int flag=0;
    int n,i;
    n=product.len;
    i=0;
    while (i<n)
    {
        if (strcmp(product.data[i].name,name)==0)
        {
            if (flag==0)
            {
                flag=1;
                printf("查找成功!查找结果如下:\n");
                outputHead();
            }
            outputOneGoods(product.data[i]);
        }
        i++;
    }
    if (flag==0)
        printf("查找失败!名字为%s的商品不存在。\n",name);
}
void searchGoods()
{
    int number;
    char name[NAME_MAX_LEN];
    int subMenuItem=1;
    while (subMenuItem!=0)
    {
        printf("\n\n");
        printf("*********************查找子菜单********************\n");
        printf("*                    1.根据商品编号进行查找       *\n");
        printf("*                    2.根据商品名字进行查找       *\n");
        printf("*                    0.退出系统                   *\n");
        printf("***************************************************\n");
        printf("请输入所选子菜单项序号:");
        scanf("%d",&subMenuItem);
        switch (subMenuItem)
        {
        case 1:
            printf("请输入要查找的商品编号:");
            scanf("%d",&number);
            seqSearchByNumber(number);
            break;
        case 2:
            printf("请输入要查找的商品名字:");
            scanf("%s",name);
            seqSearchByName(name);
            break;
        case 0:break;
        default:printf("输入超出范围!\n");  break;
        }
    }
}
void main()
{
    int menuItemCode=1;
    product.len=0;
    while (menuItemCode!=0)
    {
        printf("\n\n");
        printf("*********商品管理信息系统*******\n");
        printf("*        1.输入商品记录        *\n");
        printf("*        2.输出商品记录        *\n");
        printf("*        3.将商品记录写入文件  *\n");
        printf("*        4.从文件读取商品记录  *\n");
        printf("*        5.插入一个商品记录    *\n");
        printf("*        6.删除一个商品记录    *\n");
        printf("*        7.对商品记录进行排序  *\n");
        printf("*        8.对商品记录进行查找  *\n");
        printf("*        0.退出系统            *\n");
        printf("********************************\n");
        printf("请输入所选项菜单项序号:");
        scanf("%d",&menuItemCode);
        switch (menuItemCode)
        {
        case 1:inputGoods();     break;
        case 2:outputGoods();     break;
        case 3:saveGoods();     break;
          case 4:readGoods();     break;
        case 5:insertOneGoods();  break;
        case 6:deleteOneGoods();  break;
        case 7:sortGoods();       break;
        case 8:searchGoods();     break;
        case 0:break;
        default:printf("输入超出范围!\n");  break;
        }
    }
}
搜索更多相关主题的帖子: 记录 sequence 管理系统 include product 
2012-01-04 18:04
dukeliuc
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-1-4
收藏
得分:0 
拜托各位大神,小弟初学,实在有些看不懂~!例如product.len=n;是说产品号的长度还是数量等?
2012-01-04 18:06
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:20 
先自己写看看吧,直接看代码初学的是很难一下子看懂的。建议你先学好结构体和指针,自己写写 就能懂了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-01-04 18:20
dukeliuc
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-1-4
收藏
得分:0 
回复 3楼 cqm9266
时间有限啊,周五就要提问了,均可不可以帮我解一下关键点的地方啊~!非常感谢!
2012-01-04 18:30
快速回复:这是一份商品管理系统,希望达人们可以帮我这个初学者注解一下
数据加载中...
 
   



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

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