C语言实训--非链表商店管理系统

C语言实训–非链表商店管理系统

新手作者的话

其实,我也是刚学习C语言的新手,原本是想用链表来完成我的管理系统,但是对链表的语法等的操作也不是很熟练,所以就用数组的方式完成,之所以不做学生管理系统,是因为我懒…,其实相对学生管理系统而言,商店 管理系统没有了学生排序和总分以及平均分的部分而已,更适合新手学习

##内容部分

首先是宏定义和头文件部分

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define DATA huo[i].num,huo[i].name,huo[i].price,huo[i].kucun //定义类型
#define LEN sizeof(struct huowu)//数据长度
#define FORMAT " %d %10s %.1lf %d\n"//输出格式

代码部分

结构体部分

struct huowu/*定义名为huowu的结构体*/
{
	int num;/*定义商品编号*/
	char name[15];/*商品的名字*/
	float price;/*商品的价格*/
	int kucun;/*商品的库存量*/		
};

调用函数类型
主要是为了方便记得自己定义了哪些函数内容
同时为了方便,我也把函数名用拼音的方式记住(就是懒得写英语)

struct huowu huo[50];/*定义结构体数组*/
void caidan();/*菜单函数*/
void main();/*主函数*/
void luru();/*录入商品信息*/
void show();/*显示商品信息*/ 
void shanchu();/*删除商品信息*/
void xiugai();/*修改商品信息*/
void chazhao();/*查找信息*/
void charu();/*插入信息*/

这是我自己建立的菜单

void caidan()/*主菜单*/
{   
    system("color f");/*把菜单换成我想要的颜色(颜色代码为f)*/
	printf("\t\t\t\v-----------欢迎━(*`?′*)ノ亻!使用商店管理系统-------\n");
	printf("\t\t\t\v******************************************************\n");
	printf("\t\t\t\v*       1.写入商品信息          2.删除商品信息       *\n");
	printf("\t\t\t\v*       3.修改商品信息          4.显示当前所有货物   *\n");
	printf("\t\t\t\v*       5.查找功能              6.插入商品信息       *\n");
	printf("\t\t\t\v*                   0.退出                           *\n");
	printf("\t\t\t\v******************************************************\n");
	printf("请输入你要选择的功能(0-6):");
}

颜色代码在文章下方

接下来是主函数部分

void main()/*主函数*/
{
	int x;
	caidan();
	scanf("%d",&x);
	while(x)
	{
		switch(x)
		{case 1:luru()/*对应上面定义的函数*/;break;
		 case 2:shanchu();break;
		 case 3:xiugai();break; 
		 case 4:show();break;
		 case 5:chazhao();break;
		 case 6:charu();break;
		 case 0:return ;break;
	 	 default:break;	
		}
     getch();
	 caidan();/*再次返回菜单*/
     scanf("%d",&x);
     
	}

录入函数部分

void luru()/*录入商品信息*/
{ int i,m=0;/*m是记录的条数*/
  char ch[2];
  FILE *fp;/*定义文件指针*/
  if((fp=fopen("商品信息.txt","a+"))==NULL)/*打开指定文件*/
  { 
	  printf("打不开呢n\n");
	  return;
  }
  while(!feof(fp))
  {
	  if(fread(&huo[m] ,LEN,1,fp)==1)
		  m++;/*统计当前记录条数*/
  }
  fclose(fp);
  if(m==0)
	  printf("没有任何记录呢!\n");
  else
  {
	  system("cls");/*清屏*/
          show();/*调用show函数,显示原有信息*/
  }
  if((fp=fopen("商品信息.txt","wb"))==NULL)
  {
	  printf("打不开呢\n");
	  return;
  }
  for(i=0;i<m;i++)
   fwrite(&huo[i] ,LEN,1,fp);/*向指定磁盘文件录入信息*/

  printf("要录入信息吗(y/n):");
  scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/**/
	{
    printf("商品编号:");
	scanf("%d",&huo[m].num);/*输入商品编号*/
    for(i=0;i<m;i++)
	    if(huo[i].num==huo[m].num)
	    {
	    printf("这个编号已经有了,输入任意键继续!");
	    getch();
	    fclose(fp);
	    return;
	    }
     printf("商品名:");
	 scanf("%s",huo[m].name);/*输入商品名*/
     printf("商品价格:");
     scanf("%f",&huo[m].price);/*输入商品价格*/
     printf("商品库存:");
	 scanf("%d",&huo[m].kucun);/*输入商品库存*/
     if(fwrite(&huo[m],LEN,1,fp)!=1)/**/
     {
		 printf("保存不了啊!");
		 getch();
	 }
     else
	 {
		 printf("%s 保存好了\n",huo[m].name);
		 m++;
	 }
     printf("继续吗?(y/n):");/*询问是否继续*/
     scanf("%s",ch);
  }
  fclose(fp);
  printf("OK!\n");
}

显示函数部分

void show()
 { FILE *fp;
   int i,m=0;
   fp=fopen("商品信息.txt","rb");
   while(!feof(fp))
   {
   if(fread(&huo[m] ,LEN,1,fp)==1) 
   m++;
   }  
   fclose(fp);
   printf("|商品编号|商品名  |商品价格(元/斤)|库存(个)\t\n");
   for(i=0;i<m;i++)
       { 
	   printf(FORMAT,DATA);/*按照宏定义的顺序和类型依次进行输出*/
       }
     }

删除部分

void shanchu()/*删除函数*/
{FILE *fp;
  int snum,i,j,m=0;
  char ch[2];
  if((fp=fopen("商品信息.txt","r+"))==NULL)
     { printf("打不开呢\n");return;}
  while(!feof(fp))  
  if(fread(&huo[m],LEN,1,fp)==1) m++;
  fclose(fp);
  if(m==0) 
  {
	  printf("没有记录呢!\n");
	  return;
  }
  printf("请输入商品编号:");
  scanf("%d",&snum);
    for(i=0;i<m;i++)
     if(snum==huo[i].num)
	     break;
     printf("找到了,是不是要删呀(y/n)");
     scanf("%s",ch);
      if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要*/
      for(j=i;j<m;j++)
	      huo[j]=huo[j+1];/*将后一个记录移到前一个*/
      m--;/*总数减1*/
      if((fp=fopen("商品信息.txt","wb"))==NULL)
     { printf("打不开呢\n");
	 return;
	 }
  for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
      if(fwrite(&huo[j] ,LEN,1,fp)!=1)
       { printf("不能保存啊!\n");
      getch();
	  }
  fclose(fp);
  printf("删掉啦!\n");
}

修改部分

void xiugai()/*修改*/
{ FILE *fp;
  int i,j,m=0,snum;
  if((fp=fopen("商品信息.txt","r+"))==NULL)
     { printf("打不开文件嗯\n");return;}
  while(!feof(fp))  
 if(fread(&huo[m],LEN,1,fp)==1) m++;
  if(m==0) {printf("没有任何记录\n");
  fclose(fp);
  return;
  }
  show();
  printf("请输入你要修改的商品编号!\n");
  printf("商品编号:");
  scanf("%d",&snum);
  for(i=0;i<m;i++)
	  if(snum==huo[i].num)/*检索记录中是否有要修改的信息*/
		  break;
	  printf("找到了,你可以修改了!\n");
	 
	  printf("商品名:");
	  scanf("%s",huo[i].name);/*输入商品名*/
          printf("商品价格:");
	  scanf("%f",&huo[i].price);/*输入商品价格*/
          printf("商品库存:");
	  scanf("%d",&huo[i].kucun);/*输入该商品的库存量*/
	  printf("修改成功啦");
	  if((fp=fopen("商品信息.txt","wb"))==NULL)
     { printf("打不开文件啊\n");return;}
	  for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
	  if(fwrite(&huo[j] ,LEN,1,fp)!=1)
       { printf("保存不了啊!"); getch(); }
  fclose(fp);
 }

接下来是查找部分

void chazhao()/*查找*/
{ FILE *fp;
  int snum,i,m=0;
  char ch[2];
  if((fp=fopen("商品信息.txt","rb"))==NULL)
     { printf("文件打不开啊\n");return;}
  while(!feof(fp))  
  if(fread(&huo[m],LEN,1,fp)==1) m++;
  fclose(fp);
  if(m==0) {printf("没有记录啊!\n");return;}
  printf("请输入你要插入的编号:");
  scanf("%d",&snum);
  for(i=0;i<m;i++)
     if(snum==huo[i].num)/*查找输入的商品编号是否在记录中*/
     { printf("找到你要的商品了,要显示它的具体信息吗?(y/n)");
     scanf("%s",ch);
      if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) 
        {
          printf("|商品编号   |    商品名   |   商品价格  |  库存\t\n");
          printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
	  break;
     }
     }   
  if(i==m) printf("找不到这个商品啊!\n");/*未找到要查找的信息*/
}

最后是插入部分

void charu()/*插入*/
{ FILE *fp;
  int i,j,k,m=0,snum;
  if((fp=fopen("商品信息.txt","r+"))==NULL)
     { printf("打不开文件啊\n");return;}
  while(!feof(fp))  
 if(fread(&huo[m],LEN,1,fp)==1) m++;
  if(m==0) {printf("没有记录呢!\n");
  fclose(fp);
  return;
  }
  printf("请输入你要把新的商品号插入在哪?\n");
  scanf("%d",&snum);/*输入要插入的位置*/
  for(i=0;i<m;i++)
	  if(snum==huo[i].num)
		  break;
	  for(j=m-1;j>i;j--)
           huo[j+1]=huo[j];/*从最后一条记录开始均向后移一位*/
	  printf("现在请输入新的商品信息\n");
          printf("商品编号:");
	  scanf("%d",&huo[i+1].num);
	  for(k=0;k<m;k++)
	    if(huo[k].num==huo[i+1].num)
	    {
	    printf("这个编号已经存在了,请继续!");
	    getch();
	    fclose(fp);
	    return;
	    }
	      printf("商品名:");
	  scanf("%s",huo[i+1].name);
          printf("商品价格:");
	  scanf("%f",&huo[i+1].price);
          printf("该商品的库存:");
	  scanf("%d",&huo[i+1].kucun);
	  if((fp=fopen("商品信息.txt","wb"))==NULL)
     { printf("打不开文件啊\n");return;}
	  for(k=0;k<=m;k++)
	  if(fwrite(&huo[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
       { printf("保存不了呢!"); getch(); }
  fclose(fp);
 }

代码部分就到此结束了

运行结果

还有颜色代码分享给大家

颜色代码相应颜色
0黑色
1蓝色
2绿色
3浅绿色
4红色
5紫色
6黄色
7白色
8灰色
9淡蓝色
A淡绿色
B淡浅绿色
C淡红色
D淡紫色
E淡黄色
F亮白色

最后

如果喜欢或者觉得还可以的话就“一键三连”吧

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值