麻烦大家帮我看一下,谢谢
一共出现了下面这几个问题:C:\Users\白落虚\Desktop\c.cpp(197) : error C2601: 'ChangeRecord' : local function definitions are illegal
C:\Users\白落虚\Desktop\c.cpp(240) : error C2601: 'menu' : local function definitions are illegal
C:\Users\白落虚\Desktop\c.cpp(250) : error C2601: 'main' : local function definitions are illegal
C:\Users\白落虚\Desktop\c.cpp(273) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct renshi{
int num;//编号
char name[20];//名称
int jinjia;//进价
int shoujia;//售价
int jinhuoliang;//进货量
int xiaoshouliang;//销售量
};
struct node{
struct renshi data;
struct node *next;
};
struct renshi s[50];
struct node *head,*tail;
void initial()
{
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
tail=head;
}
void ReadFromFile()//从特定文件中读入信息
{
FILE *fp;
printf("即将覆盖文件!\n");
head->next=NULL;
tail=head;
if((fp=fopen("商品信息.txt","r"))==NULL)
{
printf("打开文件失败!\n按Enter键返回主菜单...");
getchar();
getchar();
return;
}
while(!feof(fp))
{
tail->next=(struct node*)malloc(sizeof(struct node));
tail=tail->next;
fscanf(fp,"%d%s%d%d%d%d",&(tail->data.num),&(tail->data.name),&(tail->data.jinjia),&(tail->data.shoujia),&(tail->data.jinhuoliang)),&(tail->data.xiaoshouliang);
}
tail->next=NULL;
fclose(fp);
printf("载入成功!\n按Enter键返回主菜单...");
getchar();
getchar();
}
void WriteTofile()//将信息写入特定文件
{
FILE *fp;
struct node *p;
char ch;
printf("是否覆盖原文件?[Y/N]:");
scanf("%s",&ch);
switch(ch)
{
case 'Y':case 'y':break;
default :return;
}
if((fp=fopen("商品信息(新).txt","w+"))==NULL)
{
printf("打开文件失败!\n按Enter键返回...");
getchar();
getchar();
}
p=head->next;
while(p)
{
fprintf(fp,"编号:%d\t名称:%s\t进价:%d\t售价:%d\t进货量:%d\t销售量:%d\n",p->data.num,p->data.name,p->data.jinjia,p->data.shoujia,p->data.jinhuoliang,p->data.xiaoshouliang);
p=p->next;
}
fclose(fp);
printf("保存成功!\n按Enter键返回...");
getchar();
getchar();
}
void Display()//显示链表所有信息
{
struct node *p;
p=head->next;
while(p)
{
printf("编号:%d\t名称:%s\t进价:%d\t售价:%d\n进货量:%d\t销售量:%d\n",p->data.num,p->data.name,p->data.jinjia,p->data.shoujia,p->data.jinhuoliang,p->data.xiaoshouliang);
p=p->next;
}
printf("按Enter键返回主菜单...");
getchar();
getchar();
}
void InputRecord()//添加录入信息
{
struct node *p;
int sno;
printf("请输入想添加商品编号:");
scanf("%d",&sno);
p=head->next;
while(p)
{
if(p->data.num==sno)
{
printf("此商品已存在!\n请重新输入:");
scanf("%s",&sno);
p=head->next;
}
else
p=p->next;
}
tail->next=(struct node*)malloc(sizeof(struct node));
tail=tail->next;
tail->data.num=sno;
printf("名称:");
scanf("%s",&tail->data.name);
printf("进价:");
scanf("%d",&tail->data.jinjia);
printf("售价:");
scanf("%d",&tail->data.shoujia);
printf("进货量:");
scanf("%d",&tail->data.jinhuoliang);
printf("销售量:");
scanf("%d",&tail->data.xiaoshouliang);
tail->next=NULL;
printf("添加成功!\n按Enter返回主菜单...");
getchar();
getchar();
}
void DeleteRecord()//删除特定信息
{
int sno;
struct node *p,*s;
char ch;
p=head->next;
s=p->next;
printf("请输入删除商品编号:");
scanf("%d",&sno);
while(s)
{
if(s->data.num==sno)
{
printf("此商品存在!\n此商品信息\n");
printf("编号:%d\t名称:%s\t进价:%d\t售价:%d\t进货量:%d\t销售量:%d\n",p->data.num,p->data.name,p->data.jinjia,p->data.shoujia,p->data.jinhuoliang,p->data.xiaoshouliang);
break;
}
p=p->next;
s=p->next;
}
printf("是否删除此商品信息?[Y/N]:");
scanf("%s",&ch);
switch(ch)
{
case 'Y':case 'y':break;
default :return;
}
if(s!=NULL)
{
if(tail==s)
tail=p;
p->next=s->next;
free(s);
printf("删除成功!");
}
else
printf("此商品不存在!");
printf("按Enter键返回主菜单...");
getchar();
getchar();
}
void Query()//查询指定记录
{
int sno;
struct node *p;
printf("请输入查询的商品编号:");
scanf("%d",&sno);
p=head->next;
while(p)
{
if(p->data.num==sno)
{
printf("此商品存在!\n");
break;
}
else
p=p->next;
}
if(p==NULL)
printf("此商品不存在!");
else
{
printf("此商品信息\n");
printf("编号:%d\t名称:%s\t进价:%d\t售价:%d\t进货量:%d\t销售量:%d\n",p->data.num,p->data.name,p->data.jinjia,p->data.shoujia,p->data.jinhuoliang,p->data.xiaoshouliang);
printf("按Enter键返回主菜单...");
getchar();
getchar();
}
void ChangeRecord()//修改特定编号
{
int sno;
int n;
struct node *p;
printf("请输入查询的商品编号:");
scanf("%d",&sno);
p=head->next;
while(p)
{
if(p->data.num==sno)
{
printf("此商品存在!\n");
printf("此商品信息\n");
printf("编号:%d\t名称:%s\t进价:%d\t售价:%d\t进货量:%d\t销售量:%d\n",p->data.num,p->data.name,p->data.jinjia,p->data.shoujia,p->data.jinhuoliang,p->data.xiaoshouliang);
break;
}
else
p=p->next;
}
while(1)
{
printf("=======修改信息========\n");
printf("1 修改编号 2 修改名称\n");
printf("3 修改进价 4 修改售价\n");
printf("5 修改进货量 6 修改销售量\n");
printf("0 退出\n");
printf("=======修改信息========\n");
printf("请选择: ");
scanf("%d",&n);
switch(n)
{
case 1:printf("请输入新编号:");scanf("%d",p->data.num);break;
case 2:printf("请输入新名称:");scanf("%s",p->data.name);break;
case 3:printf("请输入新进价:");scanf("%d",p->data.jinjia);break;
case 4:printf("请输入新售价:");scanf("%d",p->data.shoujia);break;
case 5:printf("请输入新进货量:");scanf("%d",p->data.jinhuoliang);break;
case 6:printf("请输入新销售量:");scanf("%d",p->data.xiaoshouliang);break;
case 0:
default:printf("键入选项不正确!");
}
}
}
void menu()//菜单
{
printf("\n=======商品管理系统=======\n");
printf("1、载入商品信息 2、保存商品信息\n");
printf("3、显示全部信息 4、增加商品信息\n");
printf("5、删除商品信息 6、查询商品信息\n");
printf("7、修改商品信息 0、退出\n");
printf("=======商品管理系统=======\n");
printf("请选择:");
}
int main(void)
{
int choice;
initial();
while(1)
{
menu();
scanf("%d",&choice);
switch(choice)
{
case 0:exit(0);
case 1:ReadFromFile();break;
case 2:WriteTofile();break;
case 3:Display();break;
case 4:InputRecord();break;
case 5:DeleteRecord();break;
case 6:Query();break;
case 7:ChangeRecord();break;
default:printf("键入选项不正确!");
}
system("cls");
}
return 0;
}