求助大佬,C语言程序中实现文件的增删改查

weixin_45816281 2019-10-30 04:45:35
#include<stdio.h>                //头文件 #include<stdlib.h>               //头文件 #include<string.h>               //头文件 typedef struct  {  int  score;               /*定义编号*/ char name[10];            /*定义商品名称*/ char num[15];             /*定义数量*/ char email[20]; /*定义邮箱*/ char age[8]; /*定义保质期*/ char adds[20]; /*定义所在位置*/ }Person;  Person pe[80];                         int menu_select()  {  char c;  do{  system("cls"); printf("\t\t欢迎进入超市内部信息网\n");        //进入时显示的标题 printf("\t\t你可以选择以下内容\n");                           //进入时显示的标题 printf("\t\t *****嘉苑超市系统***** \n");                                              printf("\t\t 1. 添加超市记录  \n");                               //添加超市记录 printf("\t\t2. 显示超市记录  \n");                               //显示超市记录 printf("\t\t3. 删除超市记录  \n");                               //删除超市记录 printf("\t\t 4. 查询超市记录  \n");                               //查询超市记录 printf("\t\t 5. 修改超市记录  \n");                               //修改超市记录 printf("\t\t0. 退出运行程序  \n");                               //退出运行程序 printf("\t\\n");  printf("\t\t请您选择(0-5):");           //进行选择 c=getchar();   }while(c<'0'||c>'5');  return(c-'0');  }  int Input(Person per[],int n)                             //开始增加记录 { int a=0;  char xh='a',x[10];                       while(xh!='n'&&xh!='N')  {  printf("\t编号:");                              //增加编号记录 scanf("\t%d",&per[n+a].score);  printf("\t商品名称:");                          //增加商品名称记录 scanf("\t%s",per[n+a].name);  printf("\t保质期:");                            //增加保质期记录 scanf("\t%s",per[n+a].age); printf("\t数量:");                              //增加数量记录 scanf("\t%s",per[n+a].num);  printf("\t所在位置:");                          //增加所在位置记录 scanf("\t%s",per[n+a].adds); printf("\t电子邮箱:");                          ////增加电子邮箱记录 scanf("\t%s",per[n+a].email); gets(x);  printf("\n\t是否继续添加?(Y/N)");  scanf("\t%c",&xh);                                  //提示您是否继续添加 a++;  }  return(n+a);  }  void Display(Person per[],int n)         //进行显示所添加的记录,其编号 名称 数量 保质期 所在位置 电子邮箱                                   {  int i;  printf("----------------------------------------------------------------------\n");                          /*格式*/  printf("编号    名称     数量      保质期     所在位置        电子邮箱\n");  printf("----------------------------------------------------------------------\n");  for(i=1;i<n+1;i++)                                                             {  printf("%-7d%-10s%-9s%-13s%-15s%-14s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); //设置每个的长度 if(i>1&&i%10==0)                                                           { printf("\t-----------------------------------\n");  printf("\t");  system("pause");  printf("\t-----------------------------------\n");  }  }  printf("----------------------------------------------------------------------\n"); system("pause");  }  int Delete_a_record(Person per[],int n)         //删除记录的程序 {  char s[20];                                               int i=0,j;                                              //进行定义 printf("\t请输入想删除记录中的商品名称:");              //请输入想删除记录中的商品名称  scanf("%s",s);                                 while(strcmp(per[i].name,s)!=0&&i<n) i++;               //首先输入商品名称进行查询 if(i==n)  { printf("\t超市系统暂无!\n");  return(n);  }  for(j=i;j<n-1;j++)                                      //使用循环进行查询,找到相应的记录 {  strcpy(per[j].num,per[j+1].num);                    //查询数量 strcpy(per[j].name,per[j+1].name);                  //查询商品名称 strcpy(per[j].age,per[j+1].age);                    //查询保质期 strcpy(per[j].adds,per[j+1].adds);                  //查询所在地址 strcpy(per[j].email,per[j+1].email);                //查询电子邮件 per[j].score=per[j+1].score;  }  printf("\t\t\t已经成功删除!\n");                        //提示删除成功 return(n-1);  }  void Query_a_record(Person per[],int n)                         {                                         int m; printf("\t\n请选择查询方式:\n");                           //请选择查询方式     printf("\t1------商品名称 \n");                              // 商品名称              printf("\t2------联系电话 \n");                              // 联系电话     printf("\t3------所在地址 \n");                              // 所在地址     printf("\t4------确认返回 \n");                              // 确认返回     printf("请选择:");                                          //输入选择值     scanf("%d",&m);     while(m!=1&&m!=2&&m!=3&&m!=4)                                //判断输入的是否正确,如果不正确则进行提示     {  printf("输入错误,请重新选择:"); scanf("%d",&m); }   if(m==1)                                                     //当用用户输入指令1时 { char s[20];  int i=0;  printf("\t请输入想查询的商品名称:");    //输入先要查询的名称,如果名称不对的话是查不到的 scanf("\t%s",s);  while(strcmp(per[i].name,s)!=0&&i<n) i++;              //当查询不到的时候,系统会提示你超市系统里面没有 if(i==n)  { printf("\t超市系统暂无!\n");  return;  }                                                     //如果输入正确的时候 ,会显示出你所要查询的内容 printf("\t编号: %d\n",per[i].score);                     //显示编号 printf("\t保质期s\n",per[i].age);                        //显示保质期 printf("\t电话号码: %s\n",per[i].num);                   //显示电话号码 printf("\t通讯地址: %s\n",per[i].adds);                  //显示通讯地址 printf("\t电子邮箱: %s\n",per[i].email);                 //显示电子邮箱 } ; if(m==2)                                           //当用用户输入指令2时 { char s[20];                            //输入先要查询的数量,如果名称不对的话是查不到的 int i=0;  printf("\t请输入想查询的数量:");  scanf("\t%s",s);  while(strcmp(per[i].num,s)!=0&&i<n) i++;               //当查询不到的时候,系统会提示你超市系统里面没有 if(i==n)  { printf("\t超市系统暂无\n");  return;  }  printf("\t商品编号: %d\n",per[i].score);                       //显示商品编号 printf("\t商品名称: %s\n",per[i].name);                        //显示商品名称 printf("\t商品保质期: %s\n",per[i].age);                       //显示商品保质期 printf("\t所在位置: %s\n",per[i].adds);                        //显示所在位置 printf("\t电子邮箱: %s\n",per[i].email);                       //显示电子邮箱 } ; if(m==3)                             //当用用户输入指令3时 { char s[20];                                    ////输入先要查询的名称,如果名称不对的话是查不到的 int i=0;  printf("\t请输入想查询的地址:");  scanf("\t%s",s);  while(strcmp(per[i].adds,s)!=0&&i<n) i++;                  //当查询不到的时候,系统会提示你超市系统里面没有 if(i==n)  {  printf("\t超市系统暂无!\n");  return;  }  printf("\t商品编号: %d\n",per[i].score);                         //显示商品编号 printf("\t商品名称: %s\n",per[i].name);                          //显示商品名称 printf("\t商品保质期: %s\n",per[i].age);                         //显示商品保质期 printf("\t电话号码: %s\n",per[i].num);                           //显示电话号码 printf("\t电子邮箱: %s\n",per[i].email);                         //显示电子邮箱 } ; } void Change(Person per[],int n)                     //修改的程序 { char s[20];  int i=0;  printf("\t请输入想修改的记录中的商品名称:");      //首先输入修改的记录中的商品名称 scanf("%s",s);  while(strcmp(per[i].name,s)!=0&&i<n) i++;               //会在系统里面查找是否有这个记录,如果没有则提示超市系统暂无此记录 if(i==n)  {  printf("\t超市系统暂无!\n");  return;  }  printf("\t编号:");                  //修改的编号,把之前的改成现在的 scanf("\t%d",&per[i].score);  printf("\t名称:");                  //修改的名称,把之前的改成现在的  scanf("\t%s",per[i].name);  printf("\t保质期:");                //修改的保质期,把之前的改成现在的  scanf("\t%s",per[i].age); printf("\t数量:");                  //修改的数量,把之前的改成现在的  scanf("\t%s",per[i].num);  printf("\t所在位置:");              //修改的所在位置,把之前的改成现在的  scanf("\t%s",per[i].adds); printf("\t电子邮箱:");              //修改的电子邮箱,把之前的改成现在的  scanf("\t%s",per[i].email); printf("\t修改成功!"); } void main()                 //主函数                           {  int x=0;  for(;;)  {  switch(menu_select())                       //根据用户在主界面上输入的指令在进行操作,当输入1时则添加记录到超市系统               {  case 1:  printf("\n\t添加记录到超市系统\n");                         x=Input(pe,x);  break;  case 2:  printf("\n\t\t\t    超市系统记录表\n");     //根据用户在主界面上输入的指令在进行操作,当输入2时则显示到超市系统的记录                 Display(pe,x);  break; case 3:   printf("\n\t从超市系统中删除记录\n");      //根据用户在主界面上输入的指令在进行操作,当输入3时则删除记录到超市系统 x=Delete_a_record(pe,x); printf("\t");  system("pause");  break;  case 4:  printf("\n\t在超市系统中查找记录\n");       //根据用户在主界面上输入的指令在进行操作,当输入4时则查找记录在到超市系统 Query_a_record(pe,x);   printf("\t");  system("pause");  break; case 5:  printf("\n\t修改超市系统中的记录\n");      //根据用户在主界面上输入的指令在进行操作,当输入5时则修改记录到超市系统 Change(pe,x);   printf("\t");  system("pause");  break;  case 0:  printf("\n\t\t谢谢使用,再见!\n");         //根据用户在主界面上输入的指令在进行操作,当输入0时,结束程序                 printf("\n\t\t");  exit(0);  }  }  }
...全文
548 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复 1
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
自信男孩 2019-10-30
  • 打赏
  • 举报
回复
#include<stdio.h>                //头文件
#include<stdlib.h> //头文件
#include<string.h> //头文件

typedef struct
{
int score; /*定义编号*/
char name[10]; /*定义商品名称*/
char num[15]; /*定义数量*/
char email[20]; /*定义邮箱*/
char age[8]; /*定义保质期*/
char adds[20]; /*定义所在位置*/

}Person;

Person pe[80];

int menu_select()
{
char c;
do{
system("cls");
printf("\t\t欢迎进入超市内部信息网\n"); //进入时显示的标题
printf("\t\t你可以选择以下内容\n"); //进入时显示的标题
printf("\t\t *****嘉苑超市系统***** \n");

printf("\t\t 1. 添加超市记录 \n"); //添加超市记录
printf("\t\t2. 显示超市记录 \n"); //显示超市记录
printf("\t\t3. 删除超市记录 \n"); //删除超市记录
printf("\t\t 4. 查询超市记录 \n"); //查询超市记录
printf("\t\t 5. 修改超市记录 \n"); //修改超市记录
printf("\t\t0. 退出运行程序 \n"); //退出运行程序
printf("\t\\n");
printf("\t\t请您选择(0-5):"); //进行选择
c=getchar();
if (c == '\n')
continue;
}while(c<'0'||c>'5');

return(c-'0');
}

int Input(Person per[],int n) //开始增加记录
{
int a=0;
char xh='a',x[10];
while(xh!='n'&&xh!='N')
{
printf("\t编号:"); //增加编号记录
//scanf("\t%d",&per[n+a].score);
scanf("%d",&per[n+a].score);
printf("\t商品名称:"); //增加商品名称记录
//scanf("\t%s",per[n+a].name);
scanf("%s",per[n+a].name);
printf("\t保质期:"); //增加保质期记录
//scanf("\t%s",per[n+a].age);
scanf("%s",per[n+a].age);
printf("\t数量:"); //增加数量记录
//scanf("\t%s",per[n+a].num);
scanf("%s",per[n+a].num);
printf("\t所在位置:"); //增加所在位置记录
//scanf("\t%s",per[n+a].adds);
scanf("%s",per[n+a].adds);
printf("\t电子邮箱:"); ////增加电子邮箱记录
//scanf("\t%s",per[n+a].email);
scanf("%s",per[n+a].email);
getchar(); //for '\n'
gets(x);
printf("\n\t是否继续添加?(Y/N)");
//scanf("\t%c",&xh); //提示您是否继续添加
scanf("%c",&xh); //提示您是否继续添加
a++;
}
return(n+a);
}

void Display(Person per[],int n) //进行显示所添加的记录,其编号 名称 数量 保质期 所在位置 电子邮箱
{
int i;
printf("----------------------------------------------------------------------\n"); /*格式*/
printf("编号 名称 数量 保质期 所在位置 电子邮箱\n");
printf("----------------------------------------------------------------------\n");
for(i=1;i<n+1;i++)
{
printf("%-7d%-10s%-9s%-13s%-15s%-14s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); //设置每个的长度
if(i>1&&i%10==0)
{
printf("\t-----------------------------------\n");
printf("\t");
system("pause");
printf("\t-----------------------------------\n");
}
}
printf("----------------------------------------------------------------------\n");
system("pause");
}



int Delete_a_record(Person per[],int n) //删除记录的程序
{
char s[20];
int i=0,j; //进行定义
printf("\t请输入想删除记录中的商品名称:"); //请输入想删除记录中的商品名称
scanf("%s",s);
while(strcmp(per[i].name,s)!=0&&i<n)
i++; //首先输入商品名称进行查询
if(i==n)
{
printf("\t超市系统暂无!\n");
return(n);
}
for(j=i;j<n-1;j++) //使用循环进行查询,找到相应的记录
{
strcpy(per[j].num,per[j+1].num); //查询数量
strcpy(per[j].name,per[j+1].name); //查询商品名称
strcpy(per[j].age,per[j+1].age); //查询保质期
strcpy(per[j].adds,per[j+1].adds); //查询所在地址
strcpy(per[j].email,per[j+1].email); //查询电子邮件
per[j].score=per[j+1].score;
}
printf("\t\t\t已经成功删除!\n"); //提示删除成功
return(n-1);
}

void Query_a_record(Person per[],int n)
{

int m;
printf("\t\n请选择查询方式:\n"); //请选择查询方式

printf("\t1------商品名称 \n"); // 商品名称
printf("\t2------联系电话 \n"); // 联系电话
printf("\t3------所在地址 \n"); // 所在地址
printf("\t4------确认返回 \n"); // 确认返回
printf("请选择:"); //输入选择值
scanf("%d",&m);
while(m!=1&&m!=2&&m!=3&&m!=4) //判断输入的是否正确,如果不正确则进行提示
{
printf("输入错误,请重新选择:");
scanf("%d",&m);
}

if(m==1) //当用用户输入指令1时
{
char s[20];
int i=0;
printf("\t请输入想查询的商品名称:"); //输入先要查询的名称,如果名称不对的话是查不到的
//scanf("\t%s",s);
scanf("%s",s);
while(strcmp(per[i].name,s)!=0&&i<n)
i++; //当查询不到的时候,系统会提示你超市系统里面没有
if(i==n)
{
printf("\t超市系统暂无!\n");
return;
} //如果输入正确的时候 ,会显示出你所要查询的内容
printf("\t编号: %d\n",per[i].score); //显示编号
//printf("\t保质期s\n",per[i].age); //显示保质期
printf("\t保质期%s\n",per[i].age); //显示保质期
printf("\t电话号码: %s\n",per[i].num); //显示电话号码
printf("\t通讯地址: %s\n",per[i].adds); //显示通讯地址
printf("\t电子邮箱: %s\n",per[i].email); //显示电子邮箱
} ;

if(m==2) //当用用户输入指令2时
{
char s[20]; //输入先要查询的数量,如果名称不对的话是查不到的
int i=0;
printf("\t请输入想查询的数量:");
//scanf("\t%s",s);
scanf("%s",s);
while(strcmp(per[i].num,s)!=0&&i<n) i++; //当查询不到的时候,系统会提示你超市系统里面没有
if(i==n)
{
printf("\t超市系统暂无\n");
return;

}
printf("\t商品编号: %d\n",per[i].score); //显示商品编号
printf("\t商品名称: %s\n",per[i].name); //显示商品名称
printf("\t商品保质期: %s\n",per[i].age); //显示商品保质期
printf("\t所在位置: %s\n",per[i].adds); //显示所在位置
printf("\t电子邮箱: %s\n",per[i].email); //显示电子邮箱
} ;

if(m==3) //当用用户输入指令3时
{
char s[20]; ////输入先要查询的名称,如果名称不对的话是查不到的
int i=0;
printf("\t请输入想查询的地址:");
//scanf("\t%s",s);
scanf("%s",s);
while(strcmp(per[i].adds,s)!=0&&i<n) i++; //当查询不到的时候,系统会提示你超市系统里面没有
if(i==n)
{
printf("\t超市系统暂无!\n");
return;
}
printf("\t商品编号: %d\n",per[i].score); //显示商品编号
printf("\t商品名称: %s\n",per[i].name); //显示商品名称
printf("\t商品保质期: %s\n",per[i].age); //显示商品保质期
printf("\t电话号码: %s\n",per[i].num); //显示电话号码
printf("\t电子邮箱: %s\n",per[i].email); //显示电子邮箱
} ;
}


void Change(Person per[],int n) //修改的程序
{
char s[20];
int i=0;
printf("\t请输入想修改的记录中的商品名称:"); //首先输入修改的记录中的商品名称
scanf("%s",s);
while(strcmp(per[i].name,s)!=0&&i<n) i++; //会在系统里面查找是否有这个记录,如果没有则提示超市系统暂无此记录
if(i==n)
{
printf("\t超市系统暂无!\n");
return;
}
printf("\t编号:"); //修改的编号,把之前的改成现在的
scanf("\t%d",&per[i].score);
printf("\t名称:"); //修改的名称,把之前的改成现在的
scanf("\t%s",per[i].name);
printf("\t保质期:"); //修改的保质期,把之前的改成现在的
scanf("\t%s",per[i].age);
printf("\t数量:"); //修改的数量,把之前的改成现在的
scanf("\t%s",per[i].num);
printf("\t所在位置:"); //修改的所在位置,把之前的改成现在的
scanf("\t%s",per[i].adds);
printf("\t电子邮箱:"); //修改的电子邮箱,把之前的改成现在的
scanf("\t%s",per[i].email);
printf("\t修改成功!");
}


//void main() //主函数
int main() //主函数
{
int x=0;
for(;;)
{
switch(menu_select()) //根据用户在主界面上输入的指令在进行操作,当输入1时则添加记录到超市系统
{
case 1:
printf("\n\t添加记录到超市系统\n");
x=Input(pe,x);
break;

case 2:
printf("\n\t\t\t 超市系统记录表\n"); //根据用户在主界面上输入的指令在进行操作,当输入2时则显示到超市系统的记录
Display(pe,x);
break;

case 3:
printf("\n\t从超市系统中删除记录\n"); //根据用户在主界面上输入的指令在进行操作,当输入3时则删除记录到超市系统
x=Delete_a_record(pe,x);
printf("\t");
system("pause");
break;

case 4:
printf("\n\t在超市系统中查找记录\n"); //根据用户在主界面上输入的指令在进行操作,当输入4时则查找记录在到超市系统
Query_a_record(pe,x);
printf("\t");
system("pause");
break;

case 5:
printf("\n\t修改超市系统中的记录\n"); //根据用户在主界面上输入的指令在进行操作,当输入5时则修改记录到超市系统
Change(pe,x);
printf("\t");
system("pause");
break;

case 0:
printf("\n\t\t谢谢使用,再见!\n"); //根据用户在主界面上输入的指令在进行操作,当输入0时,结束程序
printf("\n\t\t");
exit(0);
}
}
}


供参考~
fireyou 2019-10-30
  • 打赏
  • 举报
回复
CSDN论坛新手指南[/quote][/quote] 代码整理一下,看的累

70,012

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧