| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1303 人关注过本帖
标题:求大神帮忙把输入的数据改为以文本的输入方式,谢谢呀!!
只看楼主 加入收藏
a597505541
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-6-3
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
求大神帮忙把输入的数据改为以文本的输入方式,谢谢呀!!
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义结构体
typedef struct node 
{
int n;          //商品代号
char name[20];  //商品名称
int date;    //生产日期
int num;        //商品数量
struct node *next;
}LiStack,*sqstack;
//输出所有商品p的名字、生产日期、保质期。
void print(sqstack p)     
{
sqstack L=(LiStack *)malloc(sizeof(LiStack));
L=p->next;
if(L==NULL)
printf("货架为空。\n");
else
{
printf("代号\t商品名称\t\t生产日期\t\t数量(个)\n");
while(L!=NULL)
{
printf("%d",L->n);
printf("\t%s    \t\t",L->name);
printf("%d      \t\t",L->date);
printf("%d      \t\t\n",L->num);
p=L;
L=p->next;
}
printf("\t***************************************\n");
}
}
//增加商品
sqstack push(LiStack *top)
{
int validity,num,n;
int date;
char name[20];
LiStack *temp=(LiStack *)malloc(sizeof(LiStack));
printf("\t\t\t-----欢迎进入商品添加界面?-----\n");
temp=(LiStack *)malloc(sizeof(LiStack));
printf("\t增加商品的代号是:");
scanf("%d",&n);
printf("\t增加的商品名称是:");
scanf("%s",name);
printf("\t生产日期(年月日?如:20131215:)是:");
scanf("%d",&date);
printf("\t数量(个):");
scanf("%d",&num);
temp->date=date;strcpy(temp->name,name);
temp->num=num;
temp->n=n;
if(top->next==NULL) 
{
temp->next=NULL;
top->next=temp;
}
else
{
temp->next=top->next; 
top->next=temp;  
}
printf("\t商品添加成功?\n");
return (top);
}
//创建一个存放商品信息的栈
sqstack creat()
{  
int n,num;
char name[20];
int date;
LiStack *p;
LiStack  *top=(LiStack *)malloc(sizeof(LiStack));
    top->next=NULL;
while(1)
{
printf("\t请输入商品代号(int)?代号为'-1'表示输入结束:");
    scanf("%d",&n);
if(n<0) break;
else
{
printf("\t请输入%d号——商品名称:",n);
scanf("%s",name);
        printf("\t请输入%d号——生产日期(年月日,如20131215):",n);
        scanf("%d",&date);
printf("\t请输入%d号——数量(个):",n);
scanf("%d",&num);
    p=(LiStack *)malloc(sizeof(LiStack));
    p->date=date;
    strcpy(p->name,name);
p->num=num;p->n=n;
if(top->next==NULL)
{
p->next=NULL;
        top->next=p;
}
else
{
p->next=top->next;
top->next=p;
}
}
}
return(top);
}
//出售商品
sqstack pop(LiStack *top)
{
int n,num;
LiStack *p,*L;
p=(LiStack *)malloc(sizeof(LiStack));
L=(LiStack *)malloc(sizeof(LiStack));
printf("\t\t\t-----欢迎进入商品出售界面?-----\n");
printf("\t----目前商品有:\n");
print(top);
printf("出售的商品代号是:");
scanf("%d",&n);
printf("出售的商品数量(个):");
scanf("%d",&num);
p=top->next;
if(top->next==NULL)
{
printf("货架为空,请先添加货物! \n");
}
else
{
while(p->next!=NULL)
{
if(p->next->n==n)
{
if(p->next->num<num)
{printf("出售商品数量小于原有数量,出售商品失败。");}
else 
{
if(p->next->num==num)
{
if(p->next->next==NULL)
{
p->next=NULL;
    printf("商品出售成功!");
    free(L);break;}
else
{
L=p->next;
p->next=L->next;
free(L);
    printf("商品出售成功!");break;}            
}
    else
{
p->next->num-=num;
printf("商品出售成功!");break;
}
}
}
p=p->next;
}
if(p==NULL)
printf("输入的商品序号有误?请重新操作。\n");
}
return(top);
}
//按序号查找商品
void SequenceNumberF(LiStack *top)
{
int n,x=0;
LiStack *p;
p=(LiStack *)malloc(sizeof (LiStack));
printf("需要查询的商品代号是:");
scanf("%d",&n);
p=top;
while(p->next!=NULL)
{
if(p->next->n==n)
{
printf("代号\t商品名称\t\t生产日期\t\t数量(个)\n");
printf("%d",p->next->n);
printf("\t%s    \t\t",p->next->name);
printf("%d      \t\t",p->next->date);
printf("%d      \t\t\n",p->next->num);
x=1;break;
}
p=p->next;
}
    if(x==0&&p->next==NULL)
printf("\t没有您要查询的商品。\n");
printf("\t查询成功,欢迎再次使用查询系统.\n");
}
//按商品名字查询商品
void NameF(LiStack *top)
{
char name[20];
int x=0;
LiStack *p;
p=(LiStack *)malloc(sizeof (LiStack));
printf("需要查询的商品名称是:");
scanf("%s",name);
p=top;
while(p->next!=NULL)
{
if(strcmp(p->next->name,name)==0)
{
printf("代号\t商品名称\t\t生产日期\t\t数量(个)\n");
printf("%d",p->next->n);
printf("\t%s    \t\t",p->next->name);
printf("%d      \t\t",p->next->date);
printf("%d      \t\t\n",p->next->num);
x=1;break;
}
p=p->next;
}
    if(x==0&&p->next==NULL)
printf("\t没有您查询的商品。\n");
printf("\t查询成功,欢迎再次使用查询系统.\n");
}
//按商品生产日期查找商品
void ProductionDateF(LiStack *top)
{
int x=0;
int date;
LiStack *p;
p=(LiStack *)malloc(sizeof (LiStack));
printf("需要查询的生产日期是:");
scanf("%d",&date);
p=top;
printf("需要查询的生产日期%d的商品有:\n",date);
printf("代号\t商品名称\t\t生产日期\t\t数量(个)\n");
while(p->next!=NULL)
{
if(date==p->next->date)
{
printf("%d",p->next->n);
printf("\t%s    \t\t",p->next->name);
printf("%d      \t\t",p->next->date);
printf("%d      \t\t\n",p->next->num);
x=1;
}
        p=p->next;
}
    if(x==0&&p->next==NULL)
printf("\t没有商品的生产日期在%d之前商品。\n",date);
printf("\t查询成功,欢迎再次使用查询系统.\n");
}
//按商品数量查找商品?查找小于该数量的商品
void NumberF(LiStack *top)
{
int num,x=0;
LiStack *p;
p=(LiStack *)malloc(sizeof (LiStack));
printf("需要查询的商品数量是:");
scanf("%d",&num);
p=top;
printf("商品数量低于%d的商品有:\n",num);
printf("代号\t商品名称\t\t生产日期\t\t数量(个)\n");
while(p->next!=NULL)
{
if(p->next->num<=num)
{
printf("%d",p->next->n);
printf("\t%s    \t\t",p->next->name);
printf("%d      \t\t",p->next->date);
printf("%d      \t\t\n",p->next->num);
x=1;
}
        p=p->next; 
}
    if(x==0&&p->next==NULL)
printf("\t没有商品低于%d的商品。\n",num);
printf("\t查询成功,欢迎再次使用查询系统.\n");
}

//查询商品
void find(LiStack *top)
{
int i;
printf("\t\t\t-----欢迎进入商品查询界面?-----\n");
printf("tips:\t【按 商品代号 查询输入1】\t【按 名称 查询输入2】\n");
printf("\t【按 生产日期 查询输入3】\t【按 个数 查询输入4】\n");
printf("输入按什么方式查询(1-4):");
scanf("%d",&i);
switch(i)
{
case 1 :SequenceNumberF(top);break;
case 2 :NameF(top);break;
case 3 :ProductionDateF(top);break;
case 4 :NumberF(top);break;
default :printf("\t\t\t输入查询方式错误。\n");
}
}
//修改商品
sqstack update(LiStack *top)
{
    int n,num,i,x;
char name[20];
int date;
LiStack *p;
p=(LiStack *)malloc(sizeof (LiStack));
printf("\t\t\t-----欢迎进入商品修改界面?-----\n");
printf("需要查询的商品代号是:");
scanf("%d",&i);
p=top;
while(p->next!=NULL)
{
if(p->next->n==i)
{
printf("代号\t商品名称\t\t生产日期\t\t数量(个)\n");
printf("%d",p->next->n);
printf("\t%s    \t\t",p->next->name);
printf("%d      \t\t",p->next->date);
printf("%d      \t\t\n",p->next->num);
printf("\t修改为:");
n=p->next->n;
printf("\t请输入%d号——商品名称:",n);
        scanf("%s",name);
        printf("\t请输入%d号——生产日期(年月日,如20131215):",n);
        scanf("%d",&date);
printf("\t请输入%d号——数量(个):",n);
scanf("%d",&num);
    p->next->date=date;
    strcpy(p->next->name,name);
p->next->num=num;p->next->n=n;
x=1;
}
p=p->next; 
}
    if(x==0&&p->next==NULL)
printf("\t没有您要修改的商品。\n");
printf("\t修改成功,欢迎再次使用查询系统.\n");
return (top);
}
void main()
{
LiStack *top;
char i,j;
top=(LiStack *)malloc(sizeof(LiStack));
top->next=NULL;
printf("\n\n\t\t------------欢迎使用商品货架管理系统------------\n");
while(1){
printf("\t\t      ******************************************\n");
printf("\t\t      -----------  1.建立目前商品信息   --------\n");
printf("\t\t      -----------  2.添加商品           --------\n");
printf("\t\t      -----------  3.出售商品           --------\n");
printf("\t\t      -----------  4.查询商品           --------\n");
printf("\t\t      -----------  5.修改商品           --------\n");
printf("\t\t      -----------  6.显示所有商品信息   --------\n");
printf("\t\t      -----------  0.退出系统           --------\n");
printf("\t\t      ******************************************\n\n");
printf("\t\t\t请输入您的操作:");
scanf("%s",&i);
scanf("%c",&j);
printf("\n\n");
if(i == '0'){
printf("\t\t\t退出成功,欢迎下次使用!!\n");
break;
} else {
switch(i)
{
case '1':top=creat();break;
case '2':top=push(top);break;
case '3':top=pop(top);break;
case '4':find(top);break;
case '5':top=update(top);break;
case '6':print(top);break;
default:printf("\t\t\t输入错误,请选择正确的功能\n");
}
}
    }    
}

搜索更多相关主题的帖子: 商品 num next printf top 
2017-06-08 10:48
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
“文本的输入方式”是什么意思?
从文本文件中读取输入?
2017-06-08 11:50
a597505541
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-6-3
收藏
得分:0 
回复 2楼 吹水佬
对的,就是以文本文件的方式输入数据
2017-06-08 20:06
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用a597505541在2017-6-8 20:06:33的发言:

对的,就是以文本文件的方式输入数据

文本文件呢?
2017-06-08 21:55
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:10 
fscanf?
2017-06-08 22:40
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
要看文件中的数据结构才好确定读取数据的方法。
2017-06-09 07:19
a597505541
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-6-3
收藏
得分:0 
回复 4楼 吹水佬
就是不会写啊
2017-06-09 20:44
快速回复:求大神帮忙把输入的数据改为以文本的输入方式,谢谢呀!!
数据加载中...
 
   



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

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