精华内容
下载资源
问答
  • 基于C语言超市商品管理系统 前言 在阅读本文之前,首先声明几点: 1、本人是一名大一小萌新,也是第一次再平台写文章,目的是想记录下自己当前的学习成果; 2、这个系统呢,是自己边看书、边百度进行编写的,并非纯...

    基于C语言超市商品管理系统

    前言

    在阅读本文之前,首先声明几点:
    1、本人是一名大一小萌新,也是第一次再平台写文章,目的是想记录下自己当前的学习成果;
    2、这个系统呢,是自己边看书、边百度进行编写的,并非纯原创,若有博主看到一些与自己内容相似或相同的还请不要见外哈 ^ _ ^;
    3、该系统的编译环境为Dev C++。

    一、系统需要实现怎样的功能?

    1、将录入的数据保存到文件、文件中的信息可以读取出来进行操作;
    2、对登陆的用户进行选择;
    3、对录入的数据进行相关的增、删、改、查操作;

    二、重头戏来啦

    1.需要的头文件

    #include <stdio.h>	//声明一些自带的输入输出函数(printf)、类型以及宏
    #include <stdlib.h>//系统中进行内存分配和一些数值的转换
    #include <string.h>//包含字符串的比较、复制(strcmp、strcpy)
    #include <windows.h>//获取Windows当前时间
    #include <conio.h>//登陆密码有关的函数
    

    用结构体定义该商品系统所需要的一些基本数据信息

    //商品信息
    typedef struct shop
    {
    	char type[20];		//种类 
    	char ID[30];		//名称 
    	char number[10]; 	//位置编号 	
    	char saltTime[20];	//销售时间 
    	char locality[20];	//产地 
    	char date[10];		//生产日期 
    	int salt;			//销量
    	char day[20];		//保质期 
    	float price;		//价格 
    	int amount;			// 库存数量 
    	struct shop *next; //指针域 	
    }SHOP;
    
    //声明的全局变量
    SHOP *head = NULL;  
    SHOP *p1 = NULL;	//全局变量 ,头指针head、p1 
    int count;			//全局计数点 
    
    
    
    

    本系统的登陆界面是根据这位大佬进行改良而来的

    2.函数代码实现

    //主函数
    int main()
    {
    	
    	int shopChoose;//选择登陆方式 
    	int flag = 1;//判断 
    	
    	while (flag == 1)
    	{
    		printf("\t\t\t\t\t   ╭  % ╮               ╭ ```╮  \n");
    	    printf("\t\t\t\t\t   (@^o^@) 超市管理系统 (⌒:⌒)\n");
    	    printf("\t\t\t\t\t   (~):(~)              (~)v(~) \n");
    		printf("%70s","\t\t┏┅┅┅┅┅┅┅┅┅┅┅┅┅☆\n");
    		printf("%66s","[ 1.管理员登陆  ]\n"); 
    		printf("%66s","[ 2.客户登陆    ]\n");
    		printf("%70s","\t\t┗┅┅┅┅┅┅┅┅┅┅┅┅┅┛\n");
    		printf("请选择:");
    		
    		scanf("%d",&shopChoose); 
    
    	  
    		switch(shopChoose)
    		{
    		case 1://管理员
    			system("pause"); 
    			system("cls");
    			set(); //选择管理员登陆后的下一级菜单目录
    			break; 
    		
    		case 2://客户
    			system("cls"); 
    			set1();//客户的下一级菜单目录
    			break;
    			
    		default:
    			printf("输入错误,请重新输入\n");
    			system("pause");//暂停,防止程序闪退
    			system("cls"); //清屏函数
    			break; 	
    		}	
    	}
    	printf("\n");
    	system("pause");
    	return 0;
    }
    
    //管理员登录的二级目录
    void set()
    {
    	int choose;			//用户输入的选择 
    	int ture = 1;		//循环判断真假 
    	
    	while(ture != 0)
    	{
    		
    		printf("\t\t\t\t\t   ╭  % ╮               ╭ ```╮  \n");
    	    printf("\t\t\t\t\t   (@^o^@) 超市管理系统 (⌒:⌒)\n");
    	    printf("\t\t\t\t\t   (~):(~)              (~)v(~) \n");
    		printf("%70s","\t\t┏┅┅┅┅┅┅┅┅┅┅┅┅┅☆\n");
    		printf("%66s","[ 1.注册账户    ]\n"); 
    		printf("%66s","[ 2.登陆账户    ]\n");
    		printf("%66s","[ 3.找回密码    ]\n");
    		printf("%70s","\t\t┗┅┅┅┅┅┅┅┅┅┅┅┅┅┛\n");
    		printf("请选择:");		
    
    		scanf("%d",&choose);
    		 
    		switch(choose)
    		{
    		case 1:	 
    			getchar();
    			system("cls");	
    			registers(); 	//注册账户
    			break; 
    			
    		case 2:		
    			progress();		//进度条 
    			system("cls");
    			Input_login();	//登录账户
    			getchar();
    			break;
    			
    		case 3:		
    			getchar();
    			reback();		//找回密码 
    			break;
    			
    		default:
    			getchar();
    			rewind(stdin);		//清除键盘缓存 
    			printf("输入错误,请重新输入!\n");
    			system("pause");
    			system("cls");
    			break;	 
    		} 
    	}
    }
    

    getchar();函数的相关作用

    这里所用到的登陆注册就是本人经修改之后的(增加了光标定位和睡眠函数(Sleep也就是进度条必须要用到的函数))

    再说一下关于密码隐藏的个人理解哈:
    在输入密码时,程序会将从键盘获取到的按键信息暂时存至数组中,不显示在电脑屏幕上,显示的就是"*"。

           
    		printf("\n\n");
    		printf("\t\t\t\t   │============================================│\n");
    		printf("\t\t\t\t   │ 请输入账号:             			│\n");
    		printf("\t\t\t\t   │============================================│\n");
    		
    		cursor(50,3);//光标定位函数(数学的二维坐标系理解)
    		scanf("%s",&a.id);
    
             while (1)
               {   
    	           if (strcmp(a.id, b.id)==0)         //如果有此用户名
    	           {
    	               break;       
    	           }
    	           
    	           else 
    	           {
    				if (fp == NULL)
    				{
    					printf("还未拥有注册信息,请注册\n");
    					system("pause");
    					system("cls");
    					set();
    				}
    					           	
    	           	
    	               if (!feof(fp))  //如果文件没有读完                            
    	            
    	               {
    	                   fread(&b, sizeof(struct The_users), 1, fp);
    	                   /*读出数据 b 存放的地址位置,内存大小,每次读取一个数据块 1 ,以读的方式打开文件*/ 
    	               }
    	               
    	               else 
    	               {
    	                   printf("此用户名不存在,请重新选择!\n");
    	                   
    					   Sleep(500); 
    	                   fclose(fp); 
    					   getchar(); 
    					   
    					   return;              
    	               }
    	               
    	           }
    	           
           }
           
        	printf("\n\n\n");
    		printf("\t\t\t\t   │============================================│\n");
    		printf("\t\t\t\t   │ 请输入密码:             			│\n");
    		printf("\t\t\t\t   │============================================│\n");
    	
    		cursor(50,8);
    
    	 	while( (a.pwd[i]=getch()) != 13 )//getch()返回值是一个键值,回车的键值是13
    		{									//将输入的密码存储在数组中在屏幕上输出‘* ’代替数字 
    			i++;
    			printf("*");//隐藏密码
    		}
    		a.pwd[i]='\0';//把最后的回车变成结束符(数组) 
    		printf("\n");
    		
        do{   
    	       
    		if (strcmp(a.pwd, b.pwd)==0)            /*如果密码匹配*/
    	           
    	       {  
    	          fclose(fp);         
    	          Sleep(500);
                  printf("\n\n\t\t\t\t\t\t登录进行中");            
                  Sleep(500);
                  printf(".");
                  printf(".");
    			  Sleep(500);
                  printf(".");
                  Sleep(500);
                  printf(".");
                  Sleep(500);
                  printf(".\n");
                  Sleep(1000);
                  fflush(stdin);
                  
    	          printf("\n\n\t\t\t\t\t\t登 录 成 功 !");
    	          Sleep(1000);
    	          system("cls"); 
    	          	          
    	          welcome(); //动画菜单   	          
    	          return;
    
    //这里应该可以用数据将代码的行数减少,but能力有限(555)
    void welcome()
    {
    	//Dev c++ 特有的变色服务
    	system("color F4");//变色、白底红字	
    	Windowstime();//显示当前Windows时间	 
    	printf("\n\n");
    	printf("\n\n\n\t\t\t\t");
    	printf("欢");
    	Sleep(120);
    	printf(" 迎");
    	Sleep(120);
    	printf(" 使");
    	Sleep(120);
    	printf(" 用");
    	Sleep(120);
    	printf(" X");
    	Sleep(120);
    	printf(" X");
    	Sleep(120);
    	printf(" X");
    	Sleep(120);
    	printf(" 超");
    	Sleep(120);
    	printf(" 市");
    	Sleep(120);
    	printf(" 商");
    	Sleep(120);
    	printf(" 品");
    	Sleep(120);
    	printf(" 管");
    	Sleep(120);
    	printf(" 理");
    	Sleep(120);
    	printf(" 系");
    	Sleep(120);
    	printf(" 统!");
    	Sleep(800);
    	printf("\n");
    	system("cls");
    	
    	menu();		//菜单 	
    }
    

    下面的几部分代码理解之后,直接就是高级程序员的操作(Ctrl +),嘿嘿嘿

    //进度条
    void progress()
    {
    	int i;
    	int j;
    	
    	system("cls");
    	
    	printf("\n\n\n\n\n\t\t\t\t    \033[0;33;40m     正 在 进 入 系 统,请 稍 后 . . .   \033[0m");
    	
    	const char* LastStr = "[--------------------------------------------------] 100%";
    	// 进度条标志,可以改用"*"或其它符号
    	const char ProgressIcon = '*';
    	// 进度每加5,进度条就会加一格,注意Step值要和LastStr中的"-"数量相匹配,两者相乘等于100
    	const int Step = 2;
    	// 总共需要多少进度标志,即LastStr中"-"的数量
    	const int IconMaxNum = 50;
     
    	printf("\n\n    \t\t\t\t");
    	for ( i = 0; i <= 100; ++i)
    	{
    		// -------------- 打印进度条 --------------
    		printf("<");
    		int currentIndex = i / Step;
    		for ( j = 0; j < IconMaxNum; ++j)
    		{
    			if (j < currentIndex)
    			{
    				printf("\033[0;33;1m%c", ProgressIcon); // 打印进度条标志
    			}
    			else
    			{
    				printf(" "); // 未达进度则打印空格
    			}
    		}
    		printf("> ");
    		// -------- 打印数字进度 ----------
    		printf("\033[0;35;0m%3d%%", i);
    		fflush(stdout);
    		                                // 每隔100ms打印一次,这里同时每隔100ms会让进度加1
    	 Sleep(3 * 10);
    		for ( j = 0; j < strlen(LastStr); ++j)  //strlen 字符串处理函数
    		{
    			printf("\b");               // 回删字符,让数字和进度条原地变化
    		}
    		fflush(stdout); //清空输出缓存区
    	}
    	
    	printf("\n\n");
    	return;
    	
    }
    
    /*------------------
     显示当前Windows时间
    -------------------*/
    
    void Windowstime()
    {
    	SYSTEMTIME sys; //所需头文件windows.h,获取windows的时间函数 
    	
    		printf("\t\t\t\t\t  当前时间为:");
    		GetLocalTime( &sys ); //获取系统时间到程序的函数 
    		printf( "%4d-%02d-%02d %02d:%02d \n",
    		
    		sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, 
    		sys.wSecond,sys.wDayOfWeek); //按照年/月/日 时/分/秒 星期几格式打印 
    		
    		printf("\n");
    		
    	return;
    }
    
    /*--------
     光标定位
    --------*/
    
    void cursor(int x, int y)
    {
    	COORD pos;			//COORD是Windows API中定义的一种结构 
    	HANDLE h;           //HANDLE:句柄
    	pos.X = x;
    	pos.Y = y;
    	h = GetStdHandle(STD_OUTPUT_HANDLE); //获得当前输出窗口的句柄
    	SetConsoleCursorPosition(h, pos);
    
    }
    
    
    

    光标定位
    有关光标定位的个人理解(数学的二维直角坐标系):
    以电脑屏幕左上角为坐标原点,竖向为X轴,横向为Y轴点位显示(X列,Y行)。

    
    /*--------- 
     管理员菜单
    ----------*/ 
    
    void menu()
    {
    	int select=1;
    	
    	while(select!=0)
    	{
    		
    	printf("\n\n\n");
    	printf("\t\t\t\t\t   ╭  ╮		    ╭ ```╮ \n");
    	printf("\t\t\t\t\t   (@^o^@) 超市商品管理系统 (⌒:⌒)\n");
    	printf("\t\t\t\t\t   (~):(~)                  (~)v(~) \n");
    	printf("\n\n");
    	printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    	printf("\t\t\t\t   │              超市商品管理系统              │\n");
    	printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    	printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    	printf("\t\t\t\t   │                                            │\n");
    	printf("\t\t\t\t   │ 1. 录入商品信息         2. 显示商品信息    │\n");
    	printf("\t\t\t\t   │                                            │\n");
    	printf("\t\t\t\t   │ 3.*保存商品信息         4. 读取商品信息    │\n");
    	printf("\t\t\t\t   │                                            │\n");
    	printf("\t\t\t\t   │ 5. 统计商品信息         6. 查询商品信息    │\n");
    	printf("\t\t\t\t   │                                            │\n");
    	printf("\t\t\t\t   │ 7. 修改商品信息         8. 删除商品信息    │\n");
    	printf("\t\t\t\t   │                                            │\n");
    	printf("\t\t\t\t   │ 9. 商品信息排序         0. 退出管理系统    │\n");
    	printf("\t\t\t\t   │                                            │\n");
    	printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    
    	Windowstime();		//windows当前时间 
    
    	printf("\t\t\t\t  请您选择(0-9):");
    	scanf("%d",&select);
    	
    		switch(select)
    		{
    		case 1://录入信息 
    			inputInformation();
    			break;
    			
    		case 2://打印信息 
    			showShop();
    			break;
    		
    		case 3://保存信息到文件
    			//saveInformation();
    			break; 
    		
    		case 4://读取文件信息 
    			readInformation();
    			break;
    		
    		case 5://统计信息 
    			infoShop();
    			break;
    		
    		case 6://查询信息
    			findInformation();
    			break;
    		
    		case 7://修改信息 
    			amendInformation();
    			break;
    		
    		case 8://删除 
    			delInformation();
    			break;
    			
    		case 9://排序
    		 	sortInformation();
    			break;		 
    								
    		case 0://退出程序 
    			getchar();
    			reout();	
    			return;
    			
    		default:
    			getchar();
    			rewind(stdin);//清除键盘缓存 
    			printf("输入错误,请重新输入!\n");
    			system("pause");
    			break; 
    		}
    	
    	}
    }
    
    

    C语言的运算符优先级

    /*-----------
     录入商品信息
    -----------*/
    
    void  inputInformation()
    {
    	
    	SHOP *p2 = NULL;//结构体指针 
    	int choose = 1;	
    	int chooses = 1;//循环判断真假 
    	
    	while (choose == 1)
    	{
    		system("cls");
    		
    		p2 = (SHOP *)malloc(sizeof(SHOP)); //为p2申请内存单元 
    		
    		inputDate(p2);//录入信息界面 
    		
            if (head == NULL) //判断是否为头结点 
    		{
                head = p1 = p2;
                p2->next = NULL;
            } 
    			else
    			{
    	            p1->next = p2;//p1指向p2
    	            p2->next = NULL;//p2指向空
    	            p1 = p2;//p2的值赋给p1
    		    }
    	        system("cls");
    	        
    	        printf("是否要继续录入商品信息  1.继续  2.退出\n");
    	        scanf("%d", &choose);
            
            
    			if(choose != 1 && choose != 2)
    			{
    			 	printf("选项有误,请重新输入!\n");
    			 	
    			 	printf("是否继续录入:1.继续     2.退出\n");
    			 	
    			 	scanf("%d",&choose);
    			 	
    		 		if(choose == 1)
    		 		{
    		 			continue;
    				 }
    					else
    					{
    					 	printf("输入有误,退出录入\n");
    					 	system("pause"); 
    					 	break;
    					}		
    			}	      		
        }  
          
    	system("cls"); //清屏	
    }
    
    

    传递参数(实参和形参)
    C语言参数传递的三种方式

    /*--------
     商品信息
     参数(p) 
    ---------*/
    
    void inputDate(SHOP *p)
    {
    	
    	printf("\n\n");
    	printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    	printf("\t\t\t\t   │                 超市商品信息               │\n");
    	printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    	printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 种类:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 名称:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 编号:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 价格:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 库存:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 销量:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 销售时间:		    			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 产地:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 生产日期:		      			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   │ 保质期:             			│\n");
    	printf("\t\t\t\t   │==========================================	│\n");
    	printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    
    	cursor(44,7);
    	scanf("%s",p->type);//种类 
    	
    	cursor(44,9);
    	scanf("%s",p->ID);//名称 
    
    	cursor(44,11);
    	scanf("%s",p->number);//编号 
    	
    	cursor(44,13);
    	fflush(stdin);
    	scanf("%f",&p->price);//价格 
    	getchar();
    
    	cursor(44,15);
    	fflush(stdin);
    	scanf("%d",&p->amount);//库存 
    
    	cursor(44,17);
    	scanf("%d",&p->salt);//销量 
    
    	cursor(47,19);
    	scanf("%s",p->saltTime);//销售时间 
    
    	cursor(44,21);
    	scanf("%s",p->locality);//产地 
    
    	cursor(47,23);
    	scanf("%s",p->date);//生产日期 
    
    	cursor(45,25);
    	scanf("%s",p->day);//保质期 
    
    	count++;//节点个数 +1 
    	
     } 
    
    	
    /*----------
     显示商品信息
     (管理员)
     传递参数 (p)  商品的相关信息
      
    -----------*/	
    
    void showShop(SHOP *p)
    {
    
    	if(head==NULL)
    	{
    		printf("目前尚未录入商品信息! 按任意键返回.\n");
            getch(); 
    		          
            system("pause");
    		system("cls"); 
    		                                                        //作用:按任意键程序继续向下执行
            return ;
            
    	}
    	
    	printf("商品信息如下:\n");
    	p = head;
    	 
    	printf("\t编号\t\t名称\t\t种类\t\t 价格\t\t库存\t\t销售日期\t销量\t产地\t生产日期\t保质期\n");
    
    	
    	while (p != NULL) 
    	{
    
    		printf("	%s		%5s	%12s		%.2f		%3d		%8s	%5d	%5s	%5s	%5s\n",p->number,p->ID,p->type,p->price,p->amount,p->saltTime,p->salt,p->locality,p->date,p->day); 
    		//getchar();
    		//getch();//按任意键继续打印 
    				
    		p=p->next;  
    		
    	}
    	
    	printf("\n");
    	printf("商品信息已全部打印完毕!");
    	printf("\n");
    	
    	system("pause");
    	system("cls");
    	
    	
    }	
    

    格式化输入输出(顾名思义对格式要求是很严格的,一个不好就直接GG)
    这里说一下文件操作可能出现的bug:
    1、代码的编写(空格);
    2、记事本的编码格式是否与系统默认的编码格式相等(Windows系统默认为GBK(ANSI))
    记事本编码格式的更改

    /*------------
     保存信息到文件
     (管理员)
     	{w} 
    -------------*/
    
    void saveInformation() 
    {
    	/*读取文件信息之后进行操作,将文件数据覆盖保存*/ 
    	
    	FILE *fp;//文件指针 
    	SHOP *p;//相关信息指针 
    	
    	p = head;
    	
        fp=fopen("e:\\shopping.txt","w");//写入文件信息(覆盖原数据) 
        
        if(fp==NULL)//判断文件是否正常打开 
        {
        	printf("不能打开文件!");
        	exit(1);
    	}
    	
    	while(p != NULL)//p2不为空时进行数据的录入
    	{
    		
    		fprintf(fp,"%10s	%10s	%10s		%lf	%d	%10s	%d	%10s	%10s	%10s\n",p->number,p->ID,p->type,p->price,p->amount,p->saltTime,p->salt,p->locality,p->date,p->day); 
    		p=p->next;
    		
    	}
    	
    	printf("文件保存成功!\n");
    	
    	Sleep(800);
    		system("pause");
    	system("cls");	
    	exit(1);
    		
    	if(fclose(fp))
    	{
    		printf("不能关闭文件!");
    		exit(1);
    	}		
    }
    

    C语言文件读写操作

    void saveInformation2() 
    {
    	
    	/*未进行读取文件的操作,进行其他的操作时为防止文件数据丢失在用户退出时进行数据的追加保存*/ 
    	
    	FILE *fp;//文件指针 
    	SHOP *p;//相关信息指针 
    	
    	p = head;
    	
        fp=fopen("e:\\shopping.txt","a+");//程序结束追加信息 
        
        if(fp==NULL)//判断文件是否正常打开 
        {
        	printf("不能打开文件!");
        	exit(1);
    	}
    	
    	while(p != NULL)//p2不为空时进行数据的录入
    	{
    		
    		fprintf(fp,"%10s	%10s	%10s		%lf	%d	%10s	%d	%10s	%10s	%10s\n",
    										p->number,p->ID,p->type,p->price,p->amount,p->saltTime,p->salt,p->locality,p->date,p->day); 
    		
    		p=p->next;
    		
    	}
    	printf("文件数据追加成功!\n");
    	
    	Sleep(800);
    
    	system("pause");
    	system("cls");	
    	exit(1);
    		
    	if(fclose(fp))
    	{
    		printf("不能关闭文件!");
    		exit(1);
    	}	
    }
    
    
    /*----------
     读取文件信息 
    -----------*/
    
    void readInformation()
    {
    /*	
    	这里注释掉的代码可以不用理他
    	//读取(非链表) 
    	FILE * fp;
    	char ch;
    	
    	if((fp=fopen("e:\\shopping.txt","r+"))==NULL)
    	{
    		printf("Cannot open the file!\n");
    		return ;
    	}
    	
    	ch=fgetc(fp);
    	
    	while(ch!=EOF)
    	{
    		printf("%c",ch);
    		ch=fgetc(fp);
    	}
    	
    	fclose(fp);
    	printf("\n读取成功...\n");
    	system("pause");
    	return ;
    
    }
    */
    
    
    	FILE *fp;	/*文件指针*/ 
    	SHOP *p;	/*结构体指针*/ 
    	
    	int i=0;	//节点个数 
    	
    	head=(SHOP *)malloc(sizeof(SHOP));	//申请内存单元 
    	head->next=NULL; 
    	
    	fp=fopen("e:\\shopping.txt","r");
    	
    	if(fp == NULL)
    	{
    		printf("打开文件失败!");
    		exit(1); 
    	}
    	
    	if(fp!=NULL)
    	{
    		p1 = head;
    		while(!feof(fp))//feof(始终在某个文件末尾)系统看光标位置后边是否有数据来选择是否继续读取 
    		{
    			p = (SHOP *)malloc(sizeof(SHOP));
    			p->next = NULL;
    			
    			fscanf(fp,"%10s	%10s	%10s	%f	%d	%10s	%d	%10s	%10s	%10s\n",p->number,p->ID,p->type,&p->price,&p->amount,p->saltTime,&p->salt,p->locality,p->date,p->day); 
    			printf("%10s	%10s	%10s	%f	%d	%10s	%d	%10s	%10s	%10s\n",p->number,p->ID,p->type,p->price,p->amount,p->saltTime,p->salt,p->locality,p->date,p->day); 
    
    			p1->next = p;	
    			p1 = p;
    			i++;	//赋值循环给节点 (自增) 
    			
    			if(i==1)
    			{
    				head=p1;
    			}
    		}
    	}
    	
    	if(fclose(fp))
    	{
    		printf("关闭文件失败");
    		exit(1); 
    	}
    	
    	//return head;	
    	printf("文件读取成功. . .");
    	printf("\n\n\n");
    	
    	system("pause");
    	system("cls");
    	
    	return;
     } 
     
    /*----------
     统计商品信息
    ----------*/
    
    void infoShop()
    {
    		SHOP *p;	//结构体指针
    		 
    		int temp = 0;//做判断
    		
    		p = head;/*头结点赋值给 p */ 
    	
    		printf("\t统计进行中,请稍后");
    	    Sleep(500);
    	    printf(".");
    	    Sleep(500);
    	    printf(".");
    		Sleep(500);
    	    printf(".");
    	    Sleep(500);
    	    printf(".");
    	    Sleep(500);
    	    printf(".");
    	    Sleep(500);
    	    printf(".\n");
    	    Sleep(1000);
    	    fflush(stdin);
    		printf("\t结果如下:\n");
    
    
    		while (p != NULL)
    		{
    		/*库存小于10的商品信息*/
    
    			if(p->amount < 50)
    				{
    					
    				printf("\n"); 
    				printf("销量:%d		编号:%s	名称:%7s	种类:%7s	 价格:%.2f	 库存:%d	销售日期:%7s	 产地:%7s	生产日期:%7s	保质期:%s \n", 
    							p->salt,p->number,p->ID,p->type,p->price,p->amount,p->saltTime,p->locality,p->date,p->day);					
    				printf("\n\t该进货了,亲^_^\n");
    				
    				temp = 1;
    			
    				}
    			p = p->next;
    				
    	 	} 
    		if (temp == 0)	
    			{
    				
    			printf("没有库存小于50的商品. . .\n");	
    			
    			}
    
    		printf("\n"); 
    		system("pause");
    		system("cls");
    		 
    	
    	
     } 
    
    /*-------
     查询信息
    (管理) 
    -------*/
    
    void findInformation()
    {
    	
    	SHOP *p2; //结构体
    	
    	
    	int opt_c;			//用户输入选项 
    	int ture = 1;
    	int flag = 0; 		//判断真假 
    	char s_ID[10];		//用户输入要查询的商品名称
    	char s_number[10];	//用户输入要查询的商品编号 
    	
    	p2=head;//p2赋值为头结点 
    	
    
    	while(ture == 1)
    	{		
    	
    		printf("\n");
    		printf("\t┌-^-^-^-^-^-^-^-^-┐\n");;
    		printf("\t |1、按照编号查询 |\n");
    		printf("\t |2、按照名称查询 |\n");
    		printf("\t |3、退出查询	|\n");
    		printf("\t└ V-V-V-V-V-V-V-V-┘\n");
    		
    		
    		printf("请选择:\n");
    		fflush(stdin);//清空键盘缓存 
    		scanf("%s",&opt_c);
    	
    		switch (opt_c)
    		{
    			case '1'://编号查询 
    				
    			system("pause");
    			system("cls");		//暂停和清屏 
    			
    			p2=head;
    			
    			printf("\n\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			printf("\t\t\t\t   │ 请输入编号:             			│\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			
    			cursor(50,3);
    			scanf("%s",&s_number); 
    			flag = 0;
    		
    			while(p2 != NULL)
    			{
    				//flag = 1;
    				if(strcmp(s_number,p2->number) == 0)
    				{
    					
    						flag = 1; 
    						printf("\n\n");
    						printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    						printf("\t\t\t\t   │                 查询商品信息               │\n");
    						printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    						printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 种类:%s             			│\n",p2->type);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 名称:%s            			│\n",p2->ID);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 价格:%.2f            		\t│\n",p2->price);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 库存:%d            			│\n",p2->amount);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 销量:%d             			│\n",p2->salt);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 销售时间:%s            		│\n",p2->saltTime);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 产地:%s            			│\n",p2->locality);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 生产日期:	%s            		│\n",p2->date);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 保质期:%s             		\t│\n",p2->day);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    						
    					}
    
    			
    			p2=p2->next;
    				
    			}
    			if(flag == 0)
    			{
    				printf("查无此商品. . .");
    				printf("\n");
    				
    				break;
    			}
    			
    			system("pause"); 
    			system("cls");
    	
    			break;
    
    		
    		case '2'://名称查询 
    			
    			system("pause");
    			system("cls");
    			
    			p2=head;
    			
    			printf("\n\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			printf("\t\t\t\t   │ 请输入名称:             			│\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    		
    			cursor(50,3);
    			scanf("%s",&s_ID); 
    			flag = 0;
    		
    			while(p2 != NULL)
    			{
    				//flag = 1;
    				if(strcmp(s_ID,p2->ID) == 0 )
    				{			
    				
    				
    						flag = 1;
    						printf("\n\n");
    						printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    						printf("\t\t\t\t   │                 查询商品信息               │\n");
    						printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    						printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 编号:%s             			│\n",p2->number);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 种类:%s            			│\n",p2->type);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 价格:%.2f            		\t│\n",p2->price);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 库存:%d            			│\n",p2->amount);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 销量:%d             			│\n",p2->salt);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 销售时间:%s            		│\n",p2->saltTime);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 产地:%s            			│\n",p2->locality);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 生产日期:	%s            		│\n",p2->date);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 保质期:%s             			│\n",p2->day);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    						
    						
    					}
    			
    			p2=p2->next;
    				
    			}
    			
    			if(flag == 0)
    			{
    				printf("查无此商品. . .");
    				printf("\n");
    				system("pause");
    				system("cls");
    				break;
    			}
    			
    			system("pause"); 
    			system("cls");
    
    			
    			break;
    		
    		case '3'://退出
    			printf("感谢使用!\n");
    			return; 
    		
    			 
    		default:
    			getchar();
    			printf("输入错误,请重新输入:\n");
    			system("pause"); 
    			break;
    			
    		}
    		
    	}
    	 
    }
    
    
     
    /*-------
     修改信息
    -------*/
    
    void amendInformation()
    {
    	
    	SHOP *p2; //初始化结构体指针p2 
    	
    	int opt_c;	//用户输入选项 
    	//int choose; 
    	int flag;	//判断真假 
    		
    	char s_ID[10];	//按照名称
    	char s_number[10];	//按照编号 
    	
    	int content; 	//用户输入选项 
    	int content1; 	//用户输入选项 
    	 
    	p2=head;
    	
    	
    	printf("\n");
    	printf("\t┌-^-^-^-^-^-^-^-^-┐\n");;
    	printf("\t |1、编号查询修改 |\n");
    	printf("\t |2、名称查询修改 |\n");
    	printf("\t |3、退出修改		|\n");
    	printf("\t└ V-V-V-V-V-V-V-V-┘\n");
    	
    	
    	//rewind(stdin);
    	printf("请选择:\n");
    	scanf("%d",&opt_c);
    	
    		
    	while(opt_c != 3)
    	{
    		
    		if(opt_c == 1)//编号查询 
    		{		
    		
    			system("pause");
    			system("cls");
    			
    			p2=head;
    			printf("\n\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			printf("\t\t\t\t   │ 请输入商品编号:             		│\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			cursor(54,3);
    			scanf("%s",&s_number); 
    			flag = 0;
    			
    			while(p2 != NULL)
    			{
    				if(strcmp(s_number,p2->number) == 0)
    				{			
    					flag = 1;
    					printf("\n\n");
    					//p2 = head;
    					printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    					printf("\t\t\t\t   │                 修改商品信息               │\n");
    					printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    					printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 1.种类:%s             			│\n",p2->type);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 2.名称:%s            			│\n",p2->ID);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 3.价格:%.2f            			│\n",p2->price);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 4.库存:%d            			│\n",p2->amount);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 5.销量:%d             			│\n",p2->salt);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 6.销售日期:%s            		│\n",p2->saltTime);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 7.产地:%s            			│\n",p2->locality);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 8.生产日期:%s            		│\n",p2->date);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 9.保质期:%s             		│\n",p2->day);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    					fflush(stdin);
    					
    					printf("请输入要修改的内容选项:\n");
    					scanf("%d",&content);
    				
    					switch (content)
    					{
    						case 1:
    							printf("请输入商品种类:\n");
    							scanf("%s",p2->type); 
    							break;
    							
    						case 2:
    							printf("请输入商品名称:\n");
    							scanf("%s",p2->ID); 
    							break;
    							
    							
    						case 3:
    							printf("请输入商品价格:\n");
    							scanf("%f",&p2->price); 
    							break;
    							
    							
    						case 4:
    							printf("请输入商品库存:\n");
    							scanf("%d",&p2->amount); 
    							break;
    							
    							
    						case 5:
    							printf("请输入商品销量:\n");
    							scanf("%d",&p2->salt); 
    							break;
    							
    						case 6:
    							printf("请输入商品销售日期:\n");
    							scanf("%s",p2->saltTime); 
    							break;
    							
    						case 7:
    							printf("请输入商品产地:\n");
    							scanf("%s",p2->locality); 
    							break;
    							
    						case 8:
    							printf("请输入商品生产日期:\n");
    							scanf("%s",p2->date); 
    							break;
    							
    						case 9:
    							printf("请输入商品保质期:\n");
    							scanf("%s",p2->day); 
    							break;
    							
    						default:
    							printf("输入错误,请重新输入\n");
    							break;
    								
    					}
    				
    				}
    			 
    				p2 = p2->next;
    			}
    			
    			if(flag == 0)
    			{
    				printf("无该商品相关信息. . .");
    				printf("\n");
    				break;
    			}
    			
    			printf("修改进行中");
    			
                Sleep(500);
                printf(".");
                Sleep(500);
                printf(".");
    			Sleep(500);
                printf(".");
                Sleep(500);
                printf(".");
                Sleep(500);
                printf(".");
                Sleep(500);
                printf(".\n");
                Sleep(1000);
                fflush(stdin);
                
    			printf("修改成功!\n");
    			
    			Sleep(500);
    			printf("请返回打印查看. . . \n"); 
    			return menu();
    			
    		}	
    		
    		else if(opt_c == 2 )//名称查询修改 
    		{
    			
    			system("pause");
    			system("cls");
    			
    			p2=head;
    			
    			printf("\n\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			printf("\t\t\t\t   │ 请输入名称:             			│\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    		
    			cursor(50,3);
    			scanf("%s",&s_ID); 
    			flag = 0;
    			
    			
    			while(p2 != NULL)
    			{
    				if(strcmp(s_ID,p2->ID) == 0)
    					{ 
    						flag = 1;
    						printf("\n\n");
    						
    						p2 = head;
    						 
    						printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    						printf("\t\t\t\t   │                 修改商品信息               │\n");
    						printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    						printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 1.编号:%s             			│\n",p2->number);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 2.种类:%s            			│\n",p2->type);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 3.价格:%.2f            	  	\t│\n",p2->price);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 4.库存:%d            			│\n",p2->amount);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 5.销量:%d             			│\n",p2->salt);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 6.销售时间:%s            		│\n",p2->saltTime);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 7.产地:%s            			│\n",p2->locality);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 8.生产日期:%s            		│\n",p2->date);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 9.保质期:%s             		│\n",p2->day);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    					
    						fflush(stdin);
    				
    						printf("请输入要修改的内容选项:\n");
    						scanf("%d",&content1);
    						
    						switch (content1)
    						{
    							case 1:
    								printf("请输入商品编号:\n");
    								scanf("%s",p1->number); 
    								break;
    								
    							case 2:
    								printf("请输入商品种类:\n");
    								scanf("%s",p1->type); 
    								break;
    								
    								
    							case 3:
    								printf("请输入商品价格:\n");
    								scanf("%f",&p2->price); 
    								break;
    								
    								
    							case 4:
    								printf("请输入商品库存:\n");
    								scanf("%d",&p1->amount); 
    								break;
    								
    								
    							case 5:
    								printf("请输入商品销量:\n");
    								scanf("%d",&p1->salt); 
    								break;
    								
    							case 6:
    								printf("请输入商品销售日期:\n");
    								scanf("%s",p1->saltTime); 
    								break;
    								
    							case 7:
    								printf("请输入商品产地:\n");
    								scanf("%s",p1->locality); 
    								break;
    								
    							case 8:
    								printf("请输入商品生产日期:\n");
    								scanf("%s",p1->date); 
    								break;
    								
    							case 9:
    								printf("请输入商品保质期:\n");
    								scanf("%s",p1->day); 
    								break;
    								
    							default:
    								printf("输入错误,请重新输入:\n");
    								system("pause");
    								break;
    									
    							}
    												
    					}
    	
    				p2 = p2->next;
    				
    				}
    				
    				if(flag == 0)
    				{
    					printf("无该商品相关信息. . .");
    					printf("\n");
    					break; 
    				}
    								
    				printf("修改进行中");
    				
    	            Sleep(500);
    	            printf(".");
    	            Sleep(500);
    	            printf(".");
    				Sleep(500);
    	            printf(".");
    	            Sleep(500);
    	            printf(".");
    	            Sleep(500);
    	            printf(".");
    	            Sleep(500);
    	            printf(".\n");
    	            Sleep(1000);
    	            fflush(stdin);
    	            
    				printf("修改成功!\n");
    				printf("请返回打印查看. . . \n");
    				return menu();
    				
    			}
    		
    				
    		else if(opt_c == 3 )
    		{
    			printf("退出修改!\n");
    			return; 
    		}
    		else
    		{
    			printf("输入错误、已退出!\n");
    			system("pause");
    			return;
    		}
    		
    	}	
     } 
    
    
    /*--------
     删除信息
    --------*/
    
    void delInformation()
    {
    		
    		SHOP *p2;//判断的当前节点 
    		SHOP *pb;//要删除的节点数据 
    		SHOP *pf;//要删除的节点的前趋节点 
    		
    		p2 = head;
    		pf = head;
    		pb = head;
    				
    		int ture;
    		int flag;//判断真假 
    		
    		int option;//用户输入的选项
    		int s_option;//判断选项 
    		
    		char S_id[20];//临时存放名称 
    		char s_num[10];//临时存放编号 
    	
    	
    		printf("\n");
    		printf("\t┌-^-^-^-^-^-^-^-^-┐\n");;
    		printf("\t |1、查询编号删除 |\n");
    		printf("\t |2、查询名称删除 |\n");
    		printf("\t |3、退出删除		|\n");
    		printf("\t└ V-V-V-V-V-V-V-V-┘\n");
    		
    		rewind(stdin);
    		printf("请选择:");
    		scanf("%s",&option); 
    	
    
    		switch(option)
    		{
    		
    			case '1'://编号删除 
    		
    			system("pause");
    			system("cls");
    			
    			p2=head;
    			
    			printf("\n\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			printf("\t\t\t\t   │ 请输入商品编号:             		│\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    		
    			cursor(54,3);
    			scanf("%s",&s_num); 
    			
    			while(pb != NULL )
    			{
    
    				if(strcmp(s_num,pb->number) == 0)
    				{
    					flag = 1;
    					printf("\n\n");
    					printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    					printf("\t\t\t\t   │                   	商品信息               │\n");
    					printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    					printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 1.种类:%s             			│\n",pb->type);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 2.名称:%s            			│\n",pb->ID);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 3.价格:%.2f            			│\n",pb->price);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 4.库存:%d            			│\n",pb->amount);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 5.销量:%d             			│\n",pb->salt);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 6.销售日期:%s            		│\n",pb->saltTime);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 7.产地:%s            			│\n",pb->locality);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 8.生产日期:%s	            	│\n",pb->date);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   │ 9.保质期:%s             		│\n",pb->day);
    					printf("\t\t\t\t   │==========================================	│\n");
    					printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    				
    				
    					printf("是否选择删除?\n");
    					printf("1--yse	0--no\n");
    				
    				
    					printf("请选择:");
    					scanf("%d",&s_option);
    					
    					
    					if(s_option == 1)
    					{
    						
    						if(pb == head)//判断pb是否指向头结点 
    						{
    							head=head->next;
    						}
    						else
    						{
    							pf->next=pb->next;//让pf的下一个节点等于pb的下一个节点 
    						} 
    						
    						
    						printf("删除进行中");
    			           
    					    Sleep(500);
    			            printf(".");
    			            Sleep(500);
    			            printf(".");
    						Sleep(500);
    			            printf(".");
    			            Sleep(500);
    			            printf(".");
    			            Sleep(500);
    			            printf(".");
    			            Sleep(500);
    			            printf(".\n");
    			            Sleep(1000);
    			            fflush(stdin);
    						
    						printf("数据删除成功!");
    						saveInformation1();//更新文件信息 
    						
    					}
    					else if(s_option == 0)
    					{
    						printf("取消删除!");
    					}
    				}
    				
    				pf=pb;
    				pb=pb->next;
    				
    			}
    			if(flag == 0)
    			{
    				printf("无该商品相关信息. . .");
    				printf("\n");
    			}
    			
    			break;
    			
    		case '2':
    		
    			system("pause");
    			system("cls");
    			
    			p2=head;
    			
    			printf("\n\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    			printf("\t\t\t\t   │ 请输入商品名称:             		│\n");
    			printf("\t\t\t\t   │==========================================	│\n");
    		
    			cursor(54,3);
    			scanf("%s",&S_id); 
    		
    			while(pb != NULL )
    				{
    	
    					if(strcmp(S_id,pb->ID) == 0)
    					{
    		
    						flag = 1;
    						printf("\n\n");
    						//p2 = head;
    						printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
    						printf("\t\t\t\t   │                   	商品信息               │\n");
    						printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
    						printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 1.编号:%s             			│\n",pb->number);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 2.种类:%s            			│\n",pb->type);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 3.价格:%.2f            			│\n",pb->price);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 4.库存:%d            			│\n",pb->amount);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 5.销量:%d             			│\n",pb->salt);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 6.销售日期:%s            		│\n",pb->saltTime);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 7.产地:%s            			│\n",pb->locality);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 8.生产日期:%s	            	│\n",pb->date);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   │ 9.保质期:%s             		│\n",pb->day);
    						printf("\t\t\t\t   │==========================================	│\n");
    						printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
    					
    						printf("是否选择删除?\n");
    						printf("1--yse	0--no\n");
    					
    						printf("请选择:");
    						scanf("%d",&s_option);
    					
    						if(s_option == 1)
    						{
    							
    							if(pb == head)//判断pb是否指向头结点 
    							{
    								head=head->next;
    							}
    							else
    							{
    								pf->next=pb->next;//让pf的下一个节点等于pb的下一个节点 
    							} 
    							
    							printf("删除进行中");
    				            
    							Sleep(500);
    				            printf(".");
    				            Sleep(500);
    				            printf(".");
    							Sleep(500);
    				            printf(".");
    				            Sleep(500);
    				            printf(".");
    				            Sleep(500);
    				            printf(".");
    				            Sleep(500);
    				            printf(".\n");
    				            Sleep(1000);
    				            fflush(stdin);
    						
    							printf("数据删除成功!");
    							saveInformation1();//更新文件信息 
    							
    						}
    						else if(s_option == 0)
    						{
    							printf("取消删除!");
    						}
    						else
    						{
    						printf("输入错误,请重新输入\n");
    						continue;
    						} 
    					}
    					
    					pf=pb;
    					pb=pb->next;
    					
    				}
    				if(flag == 0)
    				{
    				printf("无该商品相关信息. . .");
    				printf("\n");
    				}
    				
    				break;	
    				
    			case '3':	//退出删除 
    				printf("感谢使用!\n");
    				break;
    				
    			default:
    				printf("输入错误,已退出!\n");
    				system("pause");
    				break; 
    						
    		} 
    	
    }
    

    单向链表的排序

    /*-------
     排序
    -------*/
    
    void sortInformation()
    {
    	
    	char choise;		//用户选项
    	
    	SHOP *pb;
    	SHOP *pf; 
    	SHOP temp;	//临时存放数据地址	
    	SHOP *p2;	//定义临时节点指针变量 
    	 
    	p2 = head;	
    	
    	while (choise != '3')
    	{ 
    	
    	printf("\n");
    	printf("\t┌-^-^-^-^-^-^-^-^-┐\n");;
    	printf("\t |1、依据库存排序 |\n");
    	printf("\t |2、依据价格排序 |\n");
    	printf("\t |3、退出	 |\n");  
    	printf("\t└ V-V-V-V-V-V-V-V-┘\n");
    	
    	printf("请选择:");
    	scanf("%s",&choise);
    	
    	//库存数量进行排序 
    	if (choise == '1')
    	{
    		p2=head;
    	    	if(p2 == NULL)
    			{	
    				//链表为空
    		        printf("无相关数据. . .\n");
    		        return ;
    		        
    	    	}
    	    	
    		    	if(p2->next == NULL) 
    				{	
    					//链表有1个节点
    			        printf("数据仅存在一条\n");
    			        return ;
    		   		}
    	    	
    				while(p2->next != NULL)	//p2的下一个节点不为空 
    				{	
    			        pb = p2->next;	//将该节点数据赋值给pb 
    			        
    			        while(pb != NULL) //pb不为空 
    					{
    						//从小到大排序 
    						//冒泡排序
    						 
    		            	if(p2->amount > pb->amount)//pb与p2进行比较 
    					 	{
    					 		
    						 	//交换数据 
    			                temp = *p2;	//取amount的值进行交换 放在临时空间 
    			                *p2 = *pb;	//pb的数据给p2 
    			                *pb = temp;	//临时存放的数据给pb 
    			                
    			                //将临时申请的节点与原有的链表节点进行连接
    			                temp.next = p2->next;
    			                p2->next = pb->next;
    			                pb->next = temp.next;
    			                
    		            	}
    		            	pb = pb->next;//pb指向尾
    		        	}
    		        	p2 = p2->next;//p2指向尾
    		    	} 
    		    printf("排序成功!请返回打印查看. . .\n");		
    			
    			}	
    		
    	
    		//价格进行排序 
    	  	else if(choise == '2')
    		{
    			
    			p2=head;
    		
    	    	if(p2 == NULL)
    			{	
    			//链表为空
    		        printf("无相关数据\n");
    		        return ;
    		        
    	    	}
    	    	
    		    	if(p2->next == NULL) 
    				{	
    					//链表有1个节点
    			        printf("数据仅存在一条\n");
    			        return ;
    		   		}
    		   		
    		    	while(p2->next != NULL)//以p2指向的节点为基准节点
    				{	
    			        pb = p2->next;//pb从基准点的下一个节点开始
    			        while(pb != NULL) 
    					{
    						//从小到大排序
    						//冒泡排序 
    		            	if(p2->price > pb->price)
    					 	{
    			                temp = *p2;
    			                *p2 = *pb;
    			                *pb = temp;
    			                temp.next = p2->next;
    			                p2->next = pb->next;
    			                pb->next = temp.next;
    			                
    		            	}
    		            	pb = pb->next;
    		        	}
    		        	p2 = p2->next;
    		    	} 
    	    	
    	    printf("排序成功!请返回打印查看. . .\n");
    	
    		}
    		
    		//退出 
    		else if(choise == '3')
    		{
    			break;
    			//return 1;
    		}
    			else
    			{
    				printf("输入错误请重新输入!\n");
    				system("pause");
    			}
    			
    	}
    	
    	
    }
    
    
    /*-------
     退出系统
    -------*/ 
    
    void reout()
    {
    	
    	char reoutback;		//定义选项选择变量
    	int flag = 1;		//判断 
    	
    	
    	while(flag)
    	{		
    		
    		printf("\n\n\n");
    		printf("\t\t\t 退出时系统会在保存的文件末尾进行文件数据的追加,如若读取了文件数据,请选择覆盖原数据退出");				
    		printf("\n\n\n\n");
    		printf("确定要退出?(1.追加数据文件并退出(未读取数据)     2.覆盖原数据并退出(已读取数据))\n");
    	
    		scanf("%d",&reoutback);
    		
    		if(reoutback == 1)
    		{
    			printf("感谢使用!\n");	//退出系统 
    			Sleep(1000);
    			saveInformation2();		//追加信息到文件 
    			exit(0);
    		}
    		
    		else if(reoutback == 2)
    		{
    			saveInformation();//覆盖原有数据进行保存
    		}
    		
    		else if(reoutback != 2)
    		{
    			printf("\n菜单选项有误,请重新输入\n");												
    		}
    		
       }
    
    }
    
    
    

    这个系统呢,是我一学期下来的成果,不是很完善,但我自己认为还是可以的,如果各位认为不是很好的话,还请手下留情(孩子最害怕暴力了,孩子需要鼓励,555)

    3.个人的一些感悟

    1、作为一个程序猿,最重要的就是代码结构要清晰!要清晰!清晰!(重要的事情说三遍!)这样以便于以后的修改和维护,强迫症看起来也会很舒服滴。
    2、函数名要见名知意,不能是那种ABC拼音啥的,那种的可读性不是很强,椰蓉哟引起烦躁的情绪,试想一下,你去一家公司接上一个辞职的员工未做完的项目,看到函数名是ABC,会怎样?(反正我是当场去世。 。 。 )
    3、最后要注意的就是代码内容的注释,就拿当前这个来举例,鄙人上边的那个代码注释还是对萌新比较友好的哈,我当时搜到的内容看的是一脸懵逼,如果你的那个代码写的是非专业人士都能看懂的那种的话,那就是很牛逼惹,至少我是这么认为的(普通人都能懂,更别说那些个专业人士了)。

    总结

    软件这一行发展是飞速的,你永远不知道你现在所使用的语言工具是否会在明天就被淘汰,所以,你只能不停地去奔跑,不停地去学习新东西,but学习也是要劳逸结合滴。
    最后的最后,送给萌新学生但又不局限于学生一句话:
    学如逆水行舟,不进则退;心似平原走马,易放难收;贵有恒,何必三更起五更眠;最无益,只怕是一日曝十日寒。
    ^ _ ^
    可以的话我们一起进步学习嘛. . . ^ _ ^(嘿嘿嘿)

    展开全文
  • 超市商品信息管理系统(C语言

    热门讨论 2013-03-19 11:09:03
    超市商品信息管理系统(C语言),供大家一起共同分享学习。
  • C语言超市管理系统(c语言)

    万次阅读 多人点赞 2020-07-01 12:29:10
    超市管理系统 1.包括管理员和顾客 2.管理员有登入,录入商品信息,显示所有商品信息功能 3.顾客有购物车和结算功能 4.购物车具有显示商品列表,显示购物车商品,往购物车添加商品的功能 全部代码下载链接:点击前往...

    超市管理系统
    1.包括管理员和顾客
    2.管理员有登入,录入商品信息,显示所有商品信息功能
    3.顾客有购物车和结算功能
    4.购物车具有显示商品列表,显示购物车商品,往购物车添加商品的功能

    全部代码下载链接:点击前往下载链接

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    函数

    int menu1();//打印主菜单函数 
    int menu2();//打印管理员菜单函数 
    int menu3();//打印顾客函数 
    void CreateGoods();//录入商品信息函数 
    void ShowGoods();//显示库存信息函数
    void ShopCart();//对购物车进行操作
    int ShopCartMenu();//打印购物车菜单
    void ShowCart();//显示购物列表
    void add();//在购物车里添加商品 
    void UpdateKu();//更新购物车信息函数 
    void  calculate();//计算所购商品价格并修改保存 
    

    建立库存函数

    void CreateGoods()
    {//手动建立库存信息
    	FILE *fp;//定义文件指针 
    	int i;
    	printf("请输入需要录入的商品个数:\n");
    	scanf("%d",&n);//输入数量 
    	printf("请依次输入货物信息:\n");
        printf("--------------------------------------------\n");
    	for(i=0;i<n;i++) 
    	{//向文件中写入信息
    		printf("第%d个商品:\n",i+1);
    		printf("货号:"); 
    		fflush(stdin);//清空输入流
    		gets(goods[i].ID);//输入货号
    		
    		printf("品名:");
    		fflush(stdin);//清空输入流
    		gets(goods[i].brand);//输入品名 
    		
    		printf("进价: ");
    		fflush(stdin);//清空输入流
    		scanf("%lf",&goods[i].inprice);//输入进价 
    		
    		printf("售价:");
    		fflush(stdin);//清空输入流
    		scanf("%lf",&goods[i].outprice);//输入售价 
    		
    		printf("数量:");
    		fflush(stdin);//清空输入流
    		scanf("%d",&goods[i].storage);//输入数量 
    
    		
    		printf("保质期:"); 
    		fflush(stdin);//清空输入流
    		gets(goods[i].date);//输入货号
    		printf("\n");
    	}
    	if((fp=fopen("kucun.txt","w"))==NULL) 
    	{//判断文件是否创建失败
    		printf("创建文件失败。\n");
    		return ;
    	}
    	//fprintf(fp,"货号       品名      单价    库存量   保质期\n");
    	for(i=0;i<n;i++)
    	{//把货物信息写进文件
    		fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-11d%-11s\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage,goods[i].date);
    	}
    	//fwrite(goods,sizeof(struct mar),N,cun);二进制文件输出 
    	fclose(fp);//关闭文件 
    	printf("信息导入成功\n");
    	return ;
    }
    

    在购物车里添加商品

    void add()
    {//在购物车里添加商品 
    	FILE *fp,*fp1;//fp表示kucun文件,fp1表示cart文件 
    	struct node *p1,*p,*p2;//定义节点指针 
    	int i,n;//n表示商品数量 
    	char s[20];//表示货号或者品名 
    	char choice1[20],choice2[20];//选择项(y继续,n继续) 
    	
    	
    	do{
    		printf("输入所需物品的名称或货号:\n");
    		fflush(stdin);//清空输入流 
    		gets(s);//输入货号或者品名 	
    		if((fp=fopen("kucun.txt","r"))==NULL)
    		{//打开文件 
    			printf("打开文件失败\n");
    			continue;
    		}
    		for(i=0;i<N;i++)
    		{//循环N次 
    			fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);//从文件中读取货物信息 
    			
    			if((strcmp(goods[i].ID,s)==0||strcmp(goods[i].brand,s)==0)&&goods[i].storage>0)//找输入对应的商品 
    			{
    				printf("已找到所需商品:\n");
    				printf("--------------------------------------------\n");
    				printf("货号       品名           单价    数量\n");
    				printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage,goods[i].date);//输出所需物品信息 
    				
    				printf("请输入所需商品数量: ");
    				scanf("%d",&n);//商品数量 
    				if(n>goods[i].storage)
    				{//判断是否还可以购买不 
    					printf("该商品库存不足\n");
    					break;
    				}
    				printf("\n是否购买此商品?(Y/N)\n");
    				fflush(stdin);//清空输入流 
    				scanf("%s",choice1);//输入一个选项 
    				if(strcmp(choice1,"Y")==0||strcmp(choice1,"y")==0)
    				{//输入y/Y表示购买此商品 
    					p=new node;//生成新节点 
    					if(p==NULL)
    					{//分配内存失败 
    						printf("内存申请失败!\n");
    						exit(1);//退出 
    					}	
    					p->number=n;//商品数量 
    					p->buy=goods[i];//货物信息 
    					p->next=NULL;
    					p1=cart;//把头结点赋给p1 	
    					if(cart==NULL)//头结点为空 
    					cart=p;//把节点赋值给头结点 
    					else
    					{
    						while(p1->next!=NULL)
    						p1=p1->next;//把链表循环到尾部 
    						p->next=p1->next; 
    						p1->next=p;//把新节点p挂在链表尾部 
    					}
    				}
    				else
    				printf("输入错误\n");
    				break;//找到商品结束循环 
    			}
    		}	
    		if(i==N)//循环完毕还没找到对应商品 
    		printf("未找到所需物品\n");
    		fclose(fp);//关闭文件 
    	
    		UpdateKu();//更新库存信息函数 
    		printf("是否继续购物?(Y/N)\n");
    		fflush(stdin);//清空输入流 
    		scanf("%s",choice2);//输入选项
    		if(strcmp(choice2,"y")!=0&&strcmp(choice2,"Y")!=0)
    		printf("放弃购买,返回菜单!\n");
    		
    	}while(strcmp(choice2,"y")==0||strcmp(choice2,"Y")==0);//y/Y继续循环 
    	return ;
    } 
    

    计算所购商品价格并修改保存

    void calculate()
    {//计算所购商品价格并修改保存
    	struct node *p;
    	p=cart;//把购物车(cart)链表赋给p 
    	double sum=0;//购买商品应付钱数 
    	double pay;//购买商品实付钱数 
    	FILE *fp;//定义文件指针 
    	int i;
    	printf("以下是购物清单:\n");
    	ShowCart();//调用函数显示购物列表信息 
    	
    	
    	if((fp=fopen("kucun.txt","r"))==NULL)
    	{//打开文件  
    		printf("打开文件失败\n");
    		return ;
    	}
    	
    	for(i=0;i<N;i++)
    	{//从文件中读取信息 
    		fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);
    	}
    	fclose(fp);//关闭文件 
    	
    	while(p!=NULL)
    	{//当链表不为空时 
    		sum=sum+p->buy.outprice*p->number;//计算应付钱数 
    		for(i=0;i<N;i++)
    		{//找出对应商品库存量 
    			if(strcmp(goods[i].ID,p->buy.ID)==0)
    			{//找到对应商品 
    				goods[i].storage=goods[i].storage-p->number;//库存量变化 
    				break;
    			}
    		} 
    		p=p->next;//指向下一个节点 
    	}
    	
    	printf("总计:%-8.3f\n",sum);//输出购买物品共需多少钱 
    	printf("输入实付金额:");
    	scanf("%lf",&pay);
    	printf("实付:  %-8.3f    找零:    %8.3f\n",pay,pay-sum);
    	
    	if((fp=fopen("kucun.txt","w"))==NULL)
    	{//打开文件 
    		printf("写入文件失败\n");
    		return ;
    	}
    	for(i=0;i<N;i++)
    	{//向文件中写入信息 
    		fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
    	}
    	fclose(fp);//关闭文件 
    	
    	return ;
    }
    
    

    全部代码下载链接:点击前往下载链接
    无积分下载的可私信我有偿给源码

    展开全文
  • c语言简易超市管理系统,控制台输出,可用编译器直接运行 超市管理系统 1.包括管理员和顾客 2.管理员有登入,录入商品信息,显示所有商品信息功能 3.顾客有购物车和结算功能 4.购物车具有显示商品列表,显示购物车...
  • C语言实现超市信息管理系统(简单版)

    万次阅读 多人点赞 2019-01-04 09:54:01
    设计要求:设计一个超市信息管理系统,利用结构体存储货物信息和所购买商品的信息,并使用链表保存购物车信息, 能够完成建立库存信息以及文件自动建立库存信息,对购物车添加商品、结算并修改库存等操作,可以将...

    设计要求:设计一个超市信息管理系统,利用结构体存储货物信息和所购买商品的信息,并使用链表保存购物车信息,
    能够完成建立库存信息以及文件自动建立库存信息,对购物车添加商品、结算并修改库存等操作,可以将库存信息保存在文件中,并且可以对文件中的库存信息进行读取与显示。

    程序代码如下:

    /*ifndef/define/endif”主要目的是防止头文件的重复包含和编译*/
    #ifndef MARKET_H
    #define MARKET_H
    
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<time.h>
    #include<conio.h>
    #include<windows.h>
    #define N 5
    
    struct mar//该结构体为存储货物信息 
    { 
    	char ID[10];//货号 
    	char brand[20];//品名
    	double inprice;//进价
    	double outprice;//售价
    	int storage;//存储量 
    };
    
    struct node//该结构体为存储购物车中的信息 
    {
    	struct mar buy;//货物信息 
    	int number;//购物的数量 
    	struct node *next; //指向下一个购物节点 
    };
    
    struct mar goods[N];//结构体数组 
    struct node *cart;//购物车头结点 
    
    int menu();//打印主菜单函数 
    void WenJianKucun();//文件建立库存信息 
    void ShouJianKucun();//手动建立库存信息
    void DisKucun();//显示库存信息函数
    void ShopCart();//对购物车进行操作
    int ShopCartMenu();//打印购物车菜单
    void XianShi();//显示购物列表
    void add();//在购物车里添加商品 
    void UpdateKu();//更新购物车信息函数 
    void  calculate();//计算所购商品价格并修改保存 
    
    #endif
    
    /
    int main()
    {//主函数 
    	printf("*********************************************************\n");
    	printf("                欢迎进入超市信息管理系统\n");
    	printf("*********************************************************\n");
    	int find=0;
    	
    	while(1)
    	{
    		switch(menu()) 
    		{//menu()函数为输入选项
    			case 1: WenJianKucun();
    					find=1;		 
    					break;//选项1 文件建立库存信息
    					 
    			case 2:	if(find==0)
    					ShouJianKucun();
    					else
    					printf("库存信息已存在\n");
    					break;//选项2 手动建立库存信息
    					
    			case 3: DisKucun(); 
    					break;//选项3 显示库存信息函数
    					
    			case 4: ShopCart(); 
    					break;//选项4 对购物车进行操作
    					
    			case 5: calculate(); 
    					break;//选项5 计算所购商品价格并修改保存 
    					
    			case 6: system("cls");
    					printf("感谢您的使用,再见!\n");
    					Sleep(2000);
    					exit(0);
    		}
    	}
    	return 0;
    }
    
    /
    int menu()
    {//打印主菜单函数
    	char s[5];//输入的选项 
    	int n;//选项为整数 
    	printf("\n\n请选择下面的数字进行操作:\n");
    	printf("--------------------------------------------\n"); 
    	printf("1. 文件建立库存信息\n");
    	printf("2. 手动建立库存信息\n");
    	printf("3. 显示所有商品信息\n");
    	printf("4. 购物车\n");
    	printf("5. 结算\n");
    	printf("6. 退出程序\n"); 
    	printf("--------------------------------------------\n");
    	printf("请选择对应数字1~6(1,2选其一)\n");
    	printf("本程序制作人: 2017物联网工程 胡斌、刘萌欣、陈俊飞\n");
    	
    	
    	while(1)
    	{
    		fflush(stdin);//清空输入流
    		gets(s);//输入一串字符串 
    		n=atoi(s);//字符串转化为整数 
    		
    		
    		if(n<1||n>6)//判断输入的选项是否正确
    		printf("输入错误,请重新输入:\n");
    		else//输入正确,结束循环 
    		break; 
    	}
    	return n;//返回输入选项 
    } 
    
    /
    void WenJianKucun()
    {//文件建立库存信息
    	FILE *fp;//定义文件指针 
    	if((fp=fopen("kucun.txt","w"))==NULL) 
    	{//创建文件
    		printf("创建文件失败\n");
    		return ;
    	}
    	//向文件中写入信息 
    	fprintf(fp,"69011111 飘柔日常护理 12.00 15.00 30\n");
    	fprintf(fp,"69021111 优酸乳 1.50 2.00 200\n");
    	fprintf(fp,"69031111 红富士苹果 2.50 3.50 300\n");
    	fprintf(fp,"69041111 晨光笔芯 0.70 1.00 150\n");
    	fprintf(fp,"69051111 胡医生面膜 12.00 16.50 100\n");
    	fclose(fp);//关闭文件 
    	printf("成功导入信息\n"); 
    	return ;
    }
    
    /
    void ShouJianKucun()
    {//手动建立库存信息
    	FILE *fp;//定义文件指针 
    	int i;
    	printf("请依次输入货物信息:\n");
        printf("--------------------------------------------\n");
    	for(i=0;i<N;i++) 
    	{//向文件中写入信息
    		printf("第%d个商品:\n",i+1);
    		printf("货号:"); 
    		fflush(stdin);//清空输入流
    		gets(goods[i].ID);//输入货号
    		
    		printf("品名:");
    		fflush(stdin);//清空输入流
    		gets(goods[i].brand);//输入品名 
    		
    		printf("进价: ");
    		fflush(stdin);//清空输入流
    		scanf("%lf",&goods[i].inprice);//输入进价 
    		
    		printf("售价:");
    		fflush(stdin);//清空输入流
    		scanf("%lf",&goods[i].outprice);//输入售价 
    		
    		printf("数量:");
    		fflush(stdin);//清空输入流
    		scanf("%d",&goods[i].storage);//输入数量 
    		printf("\n");
    	}
    	if((fp=fopen("kucun.txt","w"))==NULL) 
    	{//判断文件是否创建失败
    		printf("创建文件失败。\n");
    		return ;
    	}
    	//fprintf(fp,"货号       品名      单价    库存量\n");
    	for(i=0;i<N;i++)
    	{//把货物信息写进文件
    		fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
    	}
    	//fwrite(goods,sizeof(struct mar),N,cun);二进制文件输出 
    	fclose(fp);//关闭文件 
    	printf("信息导入成功\n");
    	return ;
    }
    
    /
    void DisKucun()
    {//显示库存信息函数
    	FILE *fp;//定义文件指针 
    	int i;
    	if((fp=fopen("kucun.txt","r"))==NULL) 
    	{//判断是否打开了文件
    		printf("打开文件失败\n");
    		return ;
    	}
    		
    	for(i=0;i<N;i++) 
    	{//输出物品信息
    		//读取文件信息 
    		fscanf(fp,"%s%s%lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].inprice,&goods[i].outprice,&goods[i].storage);
    		printf("--------------------------------------------\n");
    		//输出文件信息 
    		printf("货号       品名           单价    库存量\n");
    		printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage);
    	}
    	fclose(fp);//关闭文件 
    }
    
    /
    void  ShopCart()
    {//对购物车进行操作
    	while(1)
    	{
    		switch(ShopCartMenu()) 
    		{//ShopCartMenu()为输入选项
    			case 1: XianShi();
    					break;//选项1 显示购物车物品信息
    			case 2: add();
    					break;//选项2 添加购物车物品
    			//case 3: deleteitem();//删除购物车中的某项商品
    			//		break;
    			case 3: return ;//选项3 退出 
    		}
    	}
    }
    
    /
    int ShopCartMenu()
    {//打印购物车菜单
    	int n;//为整数 
    	char s[5];//输入一串字符串 
    	printf("\n\n请选择操作:\n");
    	printf("--------------------------------------------\n");
    	printf("1. 显示当前可以购物列表\n");
    	printf("2. 在购物车里添加商品\n");
    	//printf("3. 删除购物车商品\n"); 
    	printf("3. 退出\n");
    	printf("--------------------------------------------\n");
    	printf("请选择对应数字1~3\n");
    	
    	
    	while(1)
    	{
    		fflush(stdin);//清空输入流
    		gets(s);//输入一串字符串 
    		n=atoi(s);//字符串转化为整数 
    		if(n<1||n>3)//判断输入的选项是否正确 
    		printf("输入错误,请重新输入: \n");
    		else//输入正确,结束循环 
    		break;
    	}
    	return n;//返回输入选项 
    }
    
    /
    void XianShi()
    {//显示购物列表
    	struct node *p; //定义节点指针 
    	p=cart;//把购物车链表赋给p 
    	FILE *fp1;//定义文件指针 
    	if((fp1=fopen("cart.txt","r"))==NULL)
    	{//判断是否打开了文件 
    		printf("打开文件失败\n");
    		//return ;
    	}
    	
    	if(p==NULL)
    	{//购物车为空 
    		printf("目前购物车为空:");
    		return ;
    	}
    	else
    	{//购物车不为空 
    		while(p!=NULL) 
    		{//把购物车物品不断减一,直到为空
    			printf("--------------------------------------------\n");
    			printf("货号       品名           单价    数量\n");
    			printf("%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number);	//输出物品信息 
    			p=p->next; 
    		}
    	}
    	fclose(fp1);//关闭文件 
    	return ;
    }
    
    /
    void add()
    {//在购物车里添加商品 
    	FILE *fp,*fp1;//fp表示kucun文件,fp1表示cart文件 
    	struct node *p1,*p,*p2;//定义节点指针 
    	int i,n;//n表示商品数量 
    	char s[20];//表示货号或者品名 
    	char choice1[20],choice2[20];//选择项(y继续,n继续) 
    	
    	
    	do{
    		printf("输入所需物品的名称或货号:\n");
    		fflush(stdin);//清空输入流 
    		gets(s);//输入货号或者品名 	
    		if((fp=fopen("kucun.txt","r"))==NULL)
    		{//打开文件 
    			printf("打开文件失败\n");
    			continue;
    		}
    		for(i=0;i<N;i++)
    		{//循环N次 
    			fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);//从文件中读取货物信息 
    			
    			if((strcmp(goods[i].ID,s)==0||strcmp(goods[i].brand,s)==0)&&goods[i].storage>0)//找输入对应的商品 
    			{
    				printf("已找到所需商品:\n");
    				printf("--------------------------------------------\n");
    				printf("货号       品名           单价    数量\n");
    				printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage);//输出所需物品信息 
    				
    				printf("请输入所需商品数量: ");
    				scanf("%d",&n);//商品数量 
    				if(n>goods[i].storage)
    				{//判断是否还可以购买不 
    					printf("该商品库存不足\n");
    					break;
    				}
    				printf("\n是否购买此商品?(Y/N)\n");
    				fflush(stdin);//清空输入流 
    				scanf("%s",choice1);//输入一个选项 
    				if(strcmp(choice1,"Y")==0||strcmp(choice1,"y")==0)
    				{//输入y/Y表示购买此商品 
    					p=new node;//生成新节点 
    					if(p==NULL)
    					{//分配内存失败 
    						printf("内存申请失败!\n");
    						exit(1);//退出 
    					}	
    					p->number=n;//商品数量 
    					p->buy=goods[i];//货物信息 
    					p->next=NULL;
    					p1=cart;//把头结点赋给p1 	
    					if(cart==NULL)//头结点为空 
    					cart=p;//把节点赋值给头结点 
    					else
    					{
    						while(p1->next!=NULL)
    						p1=p1->next;//把链表循环到尾部 
    						p->next=p1->next; 
    						p1->next=p;//把新节点p挂在链表尾部 
    					}
    				}
    				else
    				printf("输入错误\n");
    				break;//找到商品结束循环 
    			}
    		}	
    		if(i==N)//循环完毕还没找到对应商品 
    		printf("未找到所需物品\n");
    		fclose(fp);//关闭文件 
    	
    		UpdateKu();//更新库存信息函数 
    		printf("是否继续购物?(Y/N)\n");
    		fflush(stdin);//清空输入流 
    		scanf("%s",choice2);//输入选项
    		if(strcmp(choice2,"y")!=0&&strcmp(choice2,"Y")!=0)
    		printf("放弃购买,返回菜单!\n");
    		
    	}while(strcmp(choice2,"y")==0||strcmp(choice2,"Y")==0);//y/Y继续循环 
    	return ;
    } 
    
    /
    //更新购物车信息函数 
    void UpdateKu()
    {
    	FILE *fp;
    	struct node *p;
    	if((fp=fopen("cart.txt","w"))==NULL) 
    	{//判断文件是否创建失败
    		printf("创建文件失败。\n");
    		return ;
    	}
    	
    	p=cart;//把购物车链表赋给p2 
    	while(p!=NULL)
    	{	
    	//	fprintf(fp1,"货号       品名      单价    库存量\n");
    		//把货物信息写进文件
    		fprintf(fp,"%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number);
    		p=p->next;//指向下一个节点 
    	}	
    	fclose(fp);//关闭文件 
    	
    	return ; 
    }
    
    /
    void calculate()
    {//计算所购商品价格并修改保存
    	struct node *p;
    	p=cart;//把购物车(cart)链表赋给p 
    	double sum=0;//购买商品应付钱数 
    	double pay;//购买商品实付钱数 
    	FILE *fp;//定义文件指针 
    	int i;
    	printf("以下是购物清单:\n");
    	XianShi();//调用函数显示购物列表信息 
    	
    	
    	if((fp=fopen("kucun.txt","r"))==NULL)
    	{//打开文件  
    		printf("打开文件失败\n");
    		return ;
    	}
    	
    	for(i=0;i<N;i++)
    	{//从文件中读取信息 
    		fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);
    	}
    	fclose(fp);//关闭文件 
    	
    	while(p!=NULL)
    	{//当链表不为空时 
    		sum=sum+p->buy.outprice*p->number;//计算应付钱数 
    		for(i=0;i<N;i++)
    		{//找出对应商品库存量 
    			if(strcmp(goods[i].ID,p->buy.ID)==0)
    			{//找到对应商品 
    				goods[i].storage=goods[i].storage-p->number;//库存量变化 
    				break;
    			}
    		} 
    		p=p->next;//指向下一个节点 
    	}
    	
    	printf("总计:%-8.3f\n",sum);//输出购买物品共需多少钱 
    	printf("输入实付金额:");
    	scanf("%lf",&pay);
    	printf("实付:  %-8.3f    找零:    %8.3f\n",pay,pay-sum);
    	
    	if((fp=fopen("kucun.txt","w"))==NULL)
    	{//打开文件 
    		printf("写入文件失败\n");
    		return ;
    	}
    	for(i=0;i<N;i++)
    	{//向文件中写入信息 
    		fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
    	}
    	fclose(fp);//关闭文件 
    	
    	return ;
    }

     

    展开全文
  • c语言简易超市管理系统,控制台输出,可用编译器直接运行 超市管理系统 1.包括 2.录入商品信息,显示所有商品信息功能 3.有购物车和结算功能 4.购物车具有显示商品列表,显示购物车商品,往购物车添加商品的功能
  • C语言编写的超市商品信息管理系统

    万次阅读 多人点赞 2015-04-19 21:35:41
    printf("\n\t\t\t\t超市商品信息管理系统\n"); printf("\t\t\t****************************\n");  printf("\t\t\t1.商品的录入\n"); printf("\t\t\t2.修改某个商品的信息\n"); printf("\t\t\t3.删除...
    /* 
     * File:   main.c
     * Author: jia
     *
     * Created on 2015年3月24日, 下午12:18
     */


    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAX 10
    void start();
    void output();
    void input();
    void change();
    void dele();
    void search();
    void insert();
    struct  GOODS{
    char goods_id[30];
        char goods_name[30];
    char goods_price[20];
    char goods_discount[20];
    int goods_amount;
    int goods_remain;
    };
    struct  GOODS goods[MAX],goodsinsert[MAX],G[MAX];
    int count=0;
    void main()
    {
        while(1)
    start();
     }
    void start()
    {
    int ch;
    printf("\n\t\t\t\t超市商品信息管理系统\n");
    printf("\t\t\t****************************\n");
            printf("\t\t\t1.商品的录入\n");
    printf("\t\t\t2.修改某个商品的信息\n");
    printf("\t\t\t3.删除某个商品的信息\n");
    printf("\t\t\t4.查找某个商品的信息\n");
    printf("\t\t\t5.插入某个商品的信息\n");
          printf("\t\t\t6.退出系统\n");
    printf("\t\t\t****************************\n");
       printf("\n\n输入你的选择(1-6):");
            scanf("%d",&ch);
            switch(ch)
            {
            case 1:{input();
    break;}
    case 2:{change();
    break;}
    case 3:{dele();
    break;}
    case 4:{search();
    break; }
    case 5:{insert();
      break;}
    default :{printf("\n退出系统并按任意键退出系统");
    exit(EXIT_SUCCESS);}
            }


    }


    void input()
    {


       char flag[20];
       do{
       printf("请输入你的商品信息:\n");
       printf("商品编号:");
       scanf("%s",goods[count].goods_id);
       printf("商品名字:");
       scanf("%s",goods[count].goods_name);
       printf("商品价格:");
       scanf("%s",goods[count].goods_price);
       printf("商品折扣:");
       scanf("%s",goods[count].goods_discount);
       printf("商品总数目:");
       scanf("%d",&goods[count].goods_amount);
       printf("商品剩余数目:");
       scanf("%d",&goods[count].goods_remain);
       count++;
       printf("是否继续输入数据 y是  n否 : ");
       scanf("%s",flag);
       }while(strcmp(flag,"y")==0||strcmp(flag,"Y")==0);
        output();
    }
    void change()
    {
         char ch[20],a[20];
    int i,t,m=0;
          printf("\n是否根据商品的编号进行修改 (y/n): ");
           scanf("%s",ch);
           if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
        { printf("\n输入商品的编号:");
         scanf("%s",a);
        for(i=0;i<count;i++)
       {if(strcmp(goods[i].goods_id,a)==0)
    { m++;t=i;}
    }
    if(m==0)printf("\n对不起,你输入的商品不存在。请检查!!!\n");
    else if(m==1){
    printf("\n\n是否改变商品的名字(y/n):");
    scanf("%s",ch);
        if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)   { printf("\n商品的名字:"); scanf("%s",goods[t].goods_name);}
        printf("\n是否改变商品的价格(y/n): ");
    scanf("%s",ch);
        if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)   { printf("\n商品的价格:"); scanf("%s",goods[t].goods_price);}
        printf("\n是否改变商品的折扣(y/n): ");
        scanf("%s",ch);
        if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)   { printf("\n商品的折扣:"); scanf("%s",goods[t].goods_discount);}
        printf("\n是否改变商品的数量(y/n): ");
        scanf("%s",ch);
        if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)   { printf("\n商品的数量:"); scanf("%d",&goods[t].goods_amount);}
    printf("\n是否改变商品的剩余数目(y/n): ");
        scanf("%s",ch);
    if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)   { printf("\n商品的剩余数目"); scanf("%d",&goods[t].goods_remain);}
    output();}
    else printf("\n商品的编号错误,不能重复编号。请选择删除商品!!!\n");
     }
    else printf("\n*********请继续选择**********\n");
    }
    void output()
    {
       int i;
    for(i=0;i<count;i++)
    {
    printf("\n商品编号:%s商品名字:%s商品价格:%s商品折扣:%s商品数目:%d商品剩余数目:%d",
    goods[i].goods_id,goods[i].goods_name,goods[i].goods_price,goods[i].goods_discount,
    goods[i].goods_amount,goods[i].goods_remain);
    }
    }
    void dele()
    {
    int i,j,t,m=0;
    char c[20];
      printf("\n输入商品的编号来删除商品:");
       scanf("%s",c);
       for(i=0;i<count;i++){
       if(strcmp(c,goods[i].goods_id)==0)
       {m++;t=i;}
       }
       if(m==0)printf("对不起,你输入的商品没找到。请检查!!!\n");
       else
       {printf("********删除的商品是*********\n:");
    printf("商品编号:%s商品名字:%s商品价格:%s商品折扣:%s商品数目:%d商品剩余数目:%d",
    goods[t].goods_id,goods[t].goods_name,goods[t].goods_price,goods[t].goods_discount,
    goods[t].goods_amount,goods[t].goods_remain);
      for(j=t;j<count-1;j++)
        goods[j]=goods[j+1];
    count--;
       printf("\n\t\t\t*********请检查是否删除正确********\n");
        output();}
          }


    void search()
    {
    int i,t=0,b,j,number,m=0;
    char a[20],num[20];
              printf("\n1.按商品的名字来查找选1:");
              printf("\n2.按商品的折扣来查找选2:");
              printf("\n3.按商品的价格来查找选3:\n");
       scanf("%d",&b);
       switch(b)
       { case 1:{ printf("\n请输入商品的名字:");
       scanf("%s",a);
       for(i=0;i<count;i++)
       {if(strcmp(goods[i].goods_name,a)==0)
     {m++;num[t++]=i;}
       }
       if(m==0)printf("对不起,你输入的商品不在其范围里。请检查!!!\n");
       else  for(j=0;j<t;j++)
    {  number=num[j];
       printf("************已查到商品信息****************\n");
    printf("商品编号:%s商品名字:%s商品价格:%s商品折扣:%s商品数目:%d商品剩余数目:%d\n\n",
    goods[number].goods_id,goods[number].goods_name,goods[number].goods_price,
    goods[number].goods_discount,goods[number].goods_amount,goods[number].goods_remain);}break;}
       case 2:{printf("\n请输入商品的折扣:");
       scanf("%s",a);
       for(i=0;i<count;i++)
       {if(strcmp(goods[i].goods_discount,a)==0)
     {m++;num[t++]=i;}
       }
       if(m==0)printf("对不起,你输入的商品不在其范围里。请检查!!!\n");
       else  for(j=0;j<t;j++)
    {  number=num[j];
       printf("************已查到商品信息****************\n");
    printf("商品编号:%s商品名字:%s商品价格:%s商品折扣:%s商品数目:%d商品剩余数目:%d\n\n",
    goods[number].goods_id,goods[number].goods_name,goods[number].goods_price,
    goods[number].goods_discount,goods[number].goods_amount,goods[number].goods_remain);}break;}
       case 3:{printf("\n请输入商品的价格:");
       scanf("%s",a);
       for(i=0;i<count;i++)
       {if(strcmp(goods[i].goods_price,a)==0)
     {m++;num[t++]=i;}
       }
       if(m==0)printf("对不起,你输入的商品不在其范围里。请检查!!!\n");
       else  for(j=0;j<t;j++)
    {  number=num[j];
       printf("************已查到商品信息****************\n");
    printf("商品编号:%s商品名字:%s商品价格:%s商品折扣:%s商品数目:%d商品剩余数目:%d\n\n",
    goods[number].goods_id,goods[number].goods_name,goods[number].goods_price,
    goods[number].goods_discount,goods[number].goods_amount,goods[number].goods_remain);}break;}
       }


    }
    void  insert()
    {int i,j,m,n;
    printf("\n你想要插入的位置:");
    scanf("%d",&i);count++;
    printf("\n输入要插入的商品编号:");scanf("%s",goodsinsert[i-1].goods_id);
    printf("\n输入要插入的商品名字:");scanf("%s",goodsinsert[i-1].goods_name);
    printf("\n输入要插入的商品价格:");scanf("%s",goodsinsert[i-1].goods_price);
    printf("\n输入要插入的商品折扣:");scanf("%s",goodsinsert[i-1].goods_discount);
    printf("\n输入要插入的商品数目:");scanf("%d",&goodsinsert[i-1].goods_amount);
    printf("\n输入要插入的商品剩余数目:");scanf("%d",&goodsinsert[i-1].goods_remain);
    for(j=0;j<i-1;j++)
    G[j]=goods[j];
    G[j]=goodsinsert[i-1];
    for(m=j+1;m<count;m++)
    G[m]=goods[m-1];
    for(n=0;n<count;n++)
    goods[n]=G[n];
    printf("\n\t\t\t*********请检查是否插入正确********\n");
      output();
    }
    展开全文
  • C语言超市管理系统源程序 超市管理系统源程序代码要能够实施最好是文件链表中一个好了一定重金酬谢~ 最好答案 有一个小型超市出售NN>10种商品设计并实现一个系统完成下列功效 1 保留及输出超市中多种商品信息保留在...
  • C语言超市管理系统

    2015-05-16 10:24:57
    (1)录入商品信息; (2)给定商品编号,修改该商品信息; (3)给定商品编号,删除该商品信息; (4)录入商品的进货与销售信息; (5)给定商品编号或商品名,查看该商品及库存信息; (6)统计功能:提供...
  • 基于c语言编写的超市管理系统,内含增删改查四项基本功能,系统可以储存商品商品名称,商品价格,商品条码,生产日记以及数量等信息,大学生课程设计优秀案例
  • 超市商品管理系统C语言课程设计

    千次阅读 多人点赞 2020-11-15 22:04:35
    超市商品管理系统C语言课程设计 超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。 1、主要完成对商品的销售、统计和简单管理。 2、功能要求 ...
  • 超市管理系统 读文件版 答辩满分作品 共六张表 商品表 顾客表 售货员表 管理员表 售货记录表 意外亏损表 两千多行代码 权限分为管理员和售货员 管理员: 密码登录验证 商品的增删改查 商品的增加可以增加新...
  • 基本功能包括: 商品建库(建立商品总文件), 厂家建库(建立厂家总文件), 商品查询功能(商品查询。提供至少两种查询方式。如: 按商品名查询,按厂商...(提示:为避免信息大量重复,商品和厂家为两个实体,分别设计)
  • C语言-超市仓库管理系统的设计与实现 第一个博客~ 超市仓库管理系统的设计与实现 问题描述:实现一个小型仓库管理系统,完成商品的入库,出库,查询等功能。 物品信息说明:物品代码,物品名称,物品总量,商品价格...
  • 程序设计超市管理系统 学院 专业 班级 姓名 学号 指导老师 超市管理系统课程设计 需求分析 设计题目超市管理系统 设计要求有一个小型超市出售 N (N> = 10)种商品设计并实现一个系统 欢迎下载 欢迎下载 PAGE # 系统...
  • 学院 专业 班级 姓名 学号 指导老师 超市管理系统课程设计 1 需求分析 设计题目超市管理系统 设计要求 有一个小型超市出售 N N> 10种商品设计并实现一个系统 系统功能需求分析 1 保存及输出超市中的各种商品信息保存...
  • printf("---欢迎进入超市商品信息管理系统---/n"); printf("----------------------------------/n"); switch (menu()) { case 1: Show_Goods_of_Reserve(G_head); //查看所有商品 break; ...
  • 超市管理系统源程序代码要可以执行的最好是文件链表中的一种好了一定重金酬 谢~ 最佳答案 有一个小型超市出售N N> 10种商品设计并实现一个系统完 成下列功能 1 保存及输出超市中的各种商品信息保存在指定文件中可以...
  • C语言程序设计——超市信息管理系统

    千次阅读 多人点赞 2020-06-15 10:03:45
    因此,我们小组设计的“超市信息管理程序”旨在解决货物的信息和购买商品信息的储存问题以及实现建立库存信息,对购物车添加商品、结算并修改库存等操作,同时也能实现对库存信息的读取和显示。 我们设计的程序要...
  • 超市管理系统C语言

    2020-08-25 08:08:40
    登录系统 # include <stdio.h> //头文件 # include <string.h> //字符串头文件 # include <stdlib.h> typedef struct in { ...struct im//商品信息 以下是私有成员 { int id;/
  • 超市管理系统源程序C语言超市管理系统源程序超市管理系统源程序代码,要可以执行的。最好是文件,链表中的一种。好了一定重金酬谢~最佳答案 有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完成下列...
  • C 语 言 程 序 设 计 作者XXXXXXXX * 所 选 题 目 小型商品信息管理...统 计 库存信息提醒库存不足 模拟超市商品和销售管理 * 小型商品信息管理系统 用户登录 添加商品 退 出 保 存 统 计 信 息 商品销售 * 单项选择
  • 超市收银管理程序的设计与实现1摘要和关键字1.1摘要该系统主要用于超市商品管理人员对于商品的信息(包括商品号、商品名、单价)进行输入、删除、修改和查询。除此之外,当销售人员输入商品号及销售数量时,系统应计算...
  • C语言超市管理系统、C语言成绩管理系统、C语言火车票订票管理源码、C语言教工工资管理系统、C语言商品销售系统、C语言通讯录管理系统、C语言图书借阅系统源码、C语言学生成绩管理系统(链表)、C语言学生信息系统。
  • C语言超市管理系统源程序超市管理系统源程序代码,要可以执行的。最好是文件,链表中的一种。好了一定重金酬谢~最佳答案 有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完成下列功能:1. 保存及...
  • 系统管理员模块和普通用户模块。 其中管理员模块功能如下: 1.修改自身密码 2.显示所有商品信息 3.增加商品 4.删除商品 5.修改商品信息 6.删除普通用户信息 7.增加普通用户 8.修改用户密码 9.清空所有商品 ...
  • ; margin-right:0">总体需求 ; margin-right:0">货品信息的组成部分为:货品编号(不能重复)、名称、库存数量、单价、是否下架,...可以根据货品编号等统计商品信息等。</p>
  • C语言开发一个小型超市库存与销售管理系统。 【数据结构】 1、库存数据文件。每个商品信息包含:商品编号,商品名称,进价,建议售价,生产厂商,库存数量; 2、销售数据文件。每个商品信息包含:商品编号,...
  • 1 需求分析 ... 管理员和售货员可通过各自的账号、密码分别进入管理员和售货员的子系统。...管理员可手动添加商品,也可从文件中批量导入商品,可查看库存内的全部商品信息,对于库存内商品数为0的商...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

c语言超市商品信息管理系统

c语言 订阅