精华内容
下载资源
问答
  • 良心出品!!!大学数据结构课程设计。...超市商品管理系统,飞机订票系统,链表实现通讯录,图书管理系统,校运会成绩管理系统,学生成绩管理系统,学生信息管理系统等等超多系统!如有问题请联系QQ:838529344
  • 数据结构课程设计 - 超市商品管理系统

    千次阅读 多人点赞 2017-12-21 09:05:23
    一.源程序代码  1. 头文件 goods.h #ifndef GOODS_H_INCLUDED #define GOODS_H_INCLUDED #include #include #include #include #include #define MAXSIZE 100 ...typedef struct //数据域定义为一个

    一.源程序代码

       1. 头文件 goods.h

    #ifndef GOODS_H_INCLUDED
    #define GOODS_H_INCLUDED
    
    #include<stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <malloc.h>
    
    
    #define MAXSIZE 100
    
    typedef struct                         //数据域定义为一个结构体
    {
        char name[30];                     //商品名称
        char no[30];                       //商品编号
        int  num;                          //商品数量
    }goods;                                //商品结构体
    
    typedef struct node                    //定义单链表节点类型
    {
        goods data;                        //数据域
        struct node *next;                 //指针域,指向后继结点
    }LNode;
    
    LNode *Init_G();                       //初始化链表
    void input(LNode *L);                  //创建链表(尾插法)
    void run_over(LNode *L);               //浏览商品信息
    LNode* search(LNode *L,goods x);       //查找商品
    void goodspai(LNode *L);               //商品信息排序
    void insert(LNode *L,goods x);         //插入商品
    void storage(LNode *L,goods x);        //商品入库
    void goodsChange(LNode *L,goods x);    //以商品编号进行修改
    int del(LNode *L,goods x);             //删除
    void out(LNode *L,goods x);            //商品出库
    void save(LNode *L);                   //保存操作
    void menu();                           //功能选择窗口  //
    
    
    
    #endif // GOODS_H_INCLUDED
    


       2.实现函数功能的cpp文件 goods.cpp

    #include "goods.h"
    #include <windows.h>
    #include <time.h>
    
    
    /************************************
    * 功能描述:录入商品信息
    * 输入参数:输入录入个数及需要录入的信息
    * 输出参数:无
    * 备注信息:尾插法创建链表
    *************************************/
    
    void input(LNode *L)                                //尾插法创建链表
    {
        int i,n;
        LNode *r=L,*s;
        goods x;
        printf("\n请输入商品的种数:");
        scanf("%d",&n);
        printf("\n ****   请输入商品的名称、编号、数量   ****\n");
        printf("\n");
        for(i=1;i<=n;i++)
        {
            printf("              o商品名称: ");
            scanf("%s",x.name);
            printf("              o商品编号: ");
            scanf("%s",x.no);
            printf("              o商品数量: ");
            scanf("%d",&x.num);
            s=(LNode*)malloc(sizeof(LNode));
            s->data=x;
            s->next=NULL;
            r->next=s;
            r=s;
            printf("\n");
        }
    
        printf("\n ****       录入结束,返回上一级      ****\n");
    
    }
    
    
    /************************************
    * 功能描述:浏览商品信息清单
    * 输入参数:无
    * 输出参数:所有商品信息
    * 备注信息:链表的遍历及输出
    *************************************/
    
    void run_over(LNode *L)
    {
        LNode *p=L->next;
    
        if(p==NULL)
        {
            printf("--------------该系统还未录入商品信息,请录入后在进行操作--------------\n");
            menu();
        }
        printf("\n-----------下面是商品信息一览表-----------\n");
        printf("\n");
        printf("商品名称   商品编号    商品数量\n");
        printf("\n");
    
        while(p!=NULL)
        {
            printf("%5s%10s%12d\n",p->data.name,p->data.no,p->data.num);
            p=p->next;
        }
    
        printf("\n");
        printf("\n");
    
    
    }
    
    
    /************************************
    * 功能描述:查找商品信息
    * 输入参数:要查找的商品编号
    * 输出参数:商品信息
    * 备注信息:按元素值在链表中查询
    *************************************/
    
    LNode* search(LNode *L,goods x)
    {
        LNode *p=L->next;
        while(p!=NULL&&(strcmp(p->data.no,x.no)!=0))
        {
            p=p->next;
        }
        if(p!=NULL&&(strcmp(p->data.no,x.no)==0))            //查找到相应商品,返回指针
        {
            return p;
        }
        else
        {
            return NULL;
        }
    }
    
    
    /************************************
    * 功能描述:插入新增商品
    * 输入参数:新增商品的编号,名称及数量
    * 输出参数:无
    * 备注信息:链表的插入
    *************************************/
    
    void insert(LNode *L,goods x)
    {
        LNode *p=L,*s;
        while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)!=0))               //商品不存在时可插入到已有链表上
        {
            p=p->next;
        }
        s=(LNode*)malloc(sizeof(LNode));
        s->data=x;
        s->next=p->next;
        p->next=s;
    }
    
    
    /************************************
    * 功能描述:排序商品信息
    * 输入参数:无
    * 输出参数:无
    * 备注信息:直接插入排序和冒泡排序
    *************************************/
    
    void goodspai(LNode *L)
    {
        LNode *p,*q,*r;
        int choose;
        goods x;
        printf("请选择排序方式:");
        printf("1.按商品编号排序   2.按库存数量排序 \n");
        scanf("%d",&choose);
        switch(choose)
        {
            case 1:                            //按商品编号排序为直接插入排序
                p=L->next->next;                                                     //p指向第一个节点的后继
                L->next->next=NULL;                                                  //直接插入排序,第一个元素在有序区,从第二元素起依次插入
                while(p!=NULL)
                {
                    r=p->next;                                                       //r指针暂存p的后继
                    q=L;
                    while(q->next!=NULL&&(strcmp(q->next->data.no,p->data.no)>0))    //查找插入位置
                        q=q->next;                                                   //将p节点链入链表
                    p->next=q->next;
                    q->next=p;
                    p=r;
                }
                break;
    
            case 2:                          //按商品数量排序为冒泡排序
                 p=L->next;
                 while(p)
                 {
                    q=p->next;
                    while(q)
                    {
                        if(p->data.num<=q->data.num)
                        {
                            x=p->data;
                            p->data=q->data;
                            q->data=x;
                        }
                        q=q->next;
                    }
                    p=p->next;
                }
                break;
        }
    
    }
    
    /************************************
    * 功能描述:商品入库
    * 输入参数:入库商品信息
    * 输出参数:无
    * 备注信息:无
    *************************************/
    
    void storage(LNode *L,goods x)
    {
        LNode *p;
        p=search(L,x);
        if(p==NULL)                                            //链表中没有这个商品时可直接插入
        {
            insert(L,x);
        }
        else
        {
            p->data.num=p->data.num+x.num;                     //链表中中有这个商品时只增加商品的数量
        }
    }
    
    
    /************************************
    * 功能描述:商品信息修改
    * 输入参数:商品编号
    * 输出参数:无
    * 备注信息:无
    *************************************/
    
    void goodsChange(LNode *L,goods x)                           //以商品编号进行修改
    {
    
        LNode *p;
        char chname[30];
        char chno[30];
        int chnum;
        p=search(L,x);
        if(p==NULL)
        {
            printf("\n仓库中无此商品!\n");
        }
        else
        {
            printf("\n             o 修改商品编号:         ");
            scanf("%s",chno);
            strcpy(p->data.no,chno);
            printf("\n             o 修改商品名称:         ");
            scanf("%s",chname);
            strcpy(p->data.name,chname);
            printf("\n             o 修改商品数量:         ");
            scanf("%d",&chnum);
            p->data.num=chnum;
            printf("\n                               √成功修改!\n");
            printf("\n");
    
        }
    
    }
    
    
    /************************************
    * 功能描述:删除商品
    * 输入参数:要删除的商品编号
    * 输出参数:无
    * 备注信息:删除链表元素
    *************************************/
    
    
    int del(LNode *L,goods x)                           //删除商品信息
    {
        LNode *p;
        long n;
        int flag=0;                                      //flag为判断商品是否删除的标志
        p=L;
        for(; p!=NULL; p=p->next)
        {
            if(p->next!=NULL&&(strcmp(p->next->data.no,x.no)==0))
            {
                p->next=p->next->next;               //删除语句
    
                flag=1;
                break;
            }
        }
        if(p==NULL&&flag==0)
        {
            printf("\n                             不存在此商品!");
           printf("\n--------------------------------------------------");
           menu();
        }
        return 1;
    }
    
    /************************************
    * 功能描述:商品出库
    * 输入参数:出库商品及出库数量
    * 输出参数:是否购买成功
    * 备注信息:模拟超市实际购买操作,增加系统可用性
    *************************************/
    
    void out(LNode *L,goods x)
    {
        int j;
        LNode *p;
        p=search(L,x);
        if(p==NULL)
        {
            printf("\n仓库中无此商品!\n");
        }
        else
        {
            printf("\n   您要购买的商品为:%s。\n",p->data.name);
            if(p->data.num>x.num)                                     //购买的商品数量少于库存量时
            {
                printf("\n购买成功!欢迎下次光临!\n");
                p->data.num=p->data.num-x.num;                        //库存数=原库存数-购买数
                printf("\n");
                printf("\n该商品还有%d件。\n",p->data.num);           //显示现在的库存
            }
            else if(p->data.num==x.num)                               //购买的商品数量等于库存量时
            {
                printf("\n购买成功!欢迎下次光临!\n");                
                del(L,x);                                             //调用删除函数,系统显示已售空
                printf("\n");
                printf("\n该商品已售空,请及时补充库存。\n");          
            }
            else if(p->data.num<x.num)                                //购买的商品数量多于库存量时
            {
                printf("\n该商品数量不足,仅剩%d。是否购买\n",p->data.num);
                printf("(购买请按1,不购买请按0。)\n");
                printf("请输入您的的选择:");
                scanf("%d",&j);
                if(j==1)
                {
                    del(L,x);                                         //若选择购买,则把剩余的该商品全部买走
                    printf("\n购买成功!欢迎下次光临!\n");
                    printf("\n");
                    printf("\n该商品已售空,请及时补充库存。\n");
                }
                else
                {
                    printf("\n欢迎下次光临!\n");
                }
            }
        }
    }
    
    
    /************************************
    * 功能描述:保存操作数据
    * 输入参数:无
    * 输出参数:所有信息
    * 备注信息:把数据写入文件
    *************************************/
    
    void save(LNode *L)                           //保存操作结果
    {
        int i;
        LNode *p=L->next, *q=L->next;
        FILE *fp;                                 //文件指针
        if(p==NULL)
        {
            printf("现在没有商品信息,请先输入信息再进行操作\n");
            return;
        }
        fp=fopen("goods.txt","w");                 //在当前目录下打开goods.txt文件并设置只允许“写”操作
        if(!fp)
        {
            printf("文件不存在\n");
            return;
        }
        //将商品信息写入文件
        fprintf(fp,"===========================商品信息一览表===========================\n");
        fprintf(fp,"\n");
        fprintf(fp,"商品名称\t商品编号\t商品数量\n");
        while(p!=NULL)
        {
            fprintf(fp,"%s\t\t%s\t\t%d\t\t",p->data.name,p->data.no,p->data.num);
            fprintf(fp,"\n");
            p=p->next;
        }
    
        fclose(fp);                                //把缓冲区内最后剩余的数据输出到内核缓冲区,并释放文件指针
        printf("数据已成功导入文件goods.txt!\n");
    }
    
    
    /************************************
    * 功能描述:显示系统功能界面
    * 输入参数:无
    * 输出参数:无
    * 备注信息:无
    *************************************/
    
    void menu()
    {
        printf("\n\n\n\n\n\n");
        printf("************************欢迎进入超市商品管理系统************************\n");
        printf("\n\n");
        system("color 74");
        printf("请稍后...\n");
        for(int k=0;k<75;k++)
        {
            Sleep(30);
            printf(">");
        }
        system("cls");
        printf("\n\n\n\n\n\n");
    
        printf("                       ┏━━━━━━━━━━━━━━━━━━┓\n");
        printf("                       ┃                                    ┃\n");
        printf("                       ┃       请选择您要操作的项目         ┃\n");
        printf("  ◥◤~~~~◥◤       ┃                                    ┃\n");
        printf("                       ┃          1 录入商品信息            ┃\n");
        printf("┃           ┃    ┃                                    ┃\n");
        printf("                       ┃          2 浏览商品清单            ┃\n");
        printf("   ≡━ ﹏ ━≡        ┃                                    ┃\n");
        printf("                       ┃          3 查找商品信息            ┃\n");
        printf("┗━━┳∞┳━━┛     ┃                                    ┃\n");
        printf("                       ┃          4 修改商品信息            ┃\n");
        printf("    ┏┫  ┣┓         ┃                                    ┃\n");
        printf("                       ┃          5 商品信息排序            ┃\n");
        printf("                       ┃                                    ┃\n");
        printf("                       ┃          6 商品入库                ┃\n");
        printf("                       ┃                                    ┃\n");
        printf("                       ┃          7 商品出库                ┃\n");
        printf("                       ┃                                    ┃\n");
        printf("                       ┃          8 删除商品                ┃\n");
        printf("                       ┃                                    ┃\n");
        printf("                       ┃          9 保存操作                ┃\n");
        printf("                       ┃                                    ┃\n");
        printf("                       ┃          0 退出系统                ┃\n");
        printf("                       ┗━━━━━━━━━━━━━━━━━━┛\n");
    
    
    }
    
       3.main函数
    #include "goods.h"
    #include <windows.h>
    #include <time.h>
    
    int main()
    {
        goods x;
        int sel;
        LNode *L,*p;
        L=(LNode *)malloc(sizeof(LNode));
        do
        {
            menu();
            printf("\n");
            printf("\n");
            printf("  o 请输入您的选择:\n");
            scanf("%d",&sel);
            switch(sel)
            {
                case 1:
                       printf("\n您选择了录入商品信息功能!\n\n");
                       input(L);
                       Sleep(2000);
                       system("cls");
                       break;
                case 2:
                       printf("\n您选择了浏览商品清单功能!\n\n");
                       printf("\n");
                       run_over(L);
                       Sleep(2000);
                       system("cls");
                       break;
                case 3:
                       printf("\n您选择了查找商品信息功能!\n\n");
                       printf("\n");
                       printf("\n请输入要查找的商品的编号:\n");
                       printf("\n");
                       printf("您输入的编号为:");
                       printf("\n");
                       scanf("%s",x.no);
                       p=search(L,x);
                       if(p==NULL)
                       {
                           printf("\n该商品不存在。\n");
                       }
                       else
                       {
                           printf("\n商品名称    商品编号    商品数量\n");
                           printf("%5s%10s%12d\n",p->data.name,p->data.no,p->data.num);
                       }
                       Sleep(2000);
                       system("cls");
                       break;
                case 4:
                       printf("\n您选择了修改商品信息功能!\n\n");
                       printf("\n");
                       printf("\n请输入要修改的商品的编号:\n");
                       printf("\n");
                       printf("              o商品编号: ");
                       scanf("%s",x.no);
                       goodsChange(L,x);
                       Sleep(2000);
                       system("cls");
                       break;
                case 5:
                       goodspai(L);
                       printf("\n已完成排序,若要查看排序后的结果,请回到初始界面。 \n");
                       Sleep(2000);
                       system("cls");
                       break;
                case 6:
                       printf("\n您选择了商品入库功能!\n\n");
                       printf("\n");
                       printf("\n请输入要入库的商品的名称、编号及数量:\n");
                       printf("\n");
                       printf("              o商品名称: ");
                       scanf("%s",x.name);
                       printf("              o商品编号: ");
                       scanf("%s",x.no);
                       printf("              o商品数量: ");
                       scanf("%d",&x.num);
                       storage(L,x);
                       printf("\n                              √入库成功! \n");
                       Sleep(2000);
                       system("cls");
                       break;
                case 7:
                      printf("\n您选择了商品出库功能!\n\n");
                      printf("\n");
                      printf("\n请输入要出库的商品的编号、数量:\n");
                      printf("\n");
                      printf("              o商品编号: ");
                      scanf("%s",x.no);
                      printf("              o商品数量: ");
                      scanf("%d",&x.num);
                      out(L,x);
                      Sleep(2000);
                      system("cls");
                      break;
    
                case 8:
                      printf("\n您选择了商品删除功能!\n\n");
                      printf("\n");
                      printf("\n请输入要出库的商品的编号:\n");
                      printf("\n");
                      printf("              o商品编号: ");
                      scanf("%s",x.no);
                      del(L,x);
                      printf("\n                              √成功删除!");
                      printf("\n");
                      printf("\n---------------------------------------------");
                      Sleep(2000);
                      system("cls");
                      break;
                case 9:
                      printf("\n您选择了保存操作功能!\n\n");
                      printf("\n");
                      save(L);
                      printf("\n                              √保存成功!");
                      break;
            }
        }
        while(sel!=0);
        printf("感谢您的使用,再见!\n");
        return 0;
    }
    
    二、程序运行截图

           1.初始界面




           2.录入商品信息


               浏览当前商品清单


           4.修改商品信息

               输入有误时


               输入无误时


              浏览修改后的商品信息


           5.商品信息排序

              按编号排序


              浏览排序后的信息


              按库存量排序


              浏览排序后的信息


           6.查找商品信息

              商品不存在时


              商品存在时


           7.商品入库


              浏览商品入库后的信息


           8.商品出库   

              购买数量小于库存数时


              购买数量等于库存数时


              购买数量大于库存数时


              浏览出库后的商品信息


           9.删除商品信息


                浏览删除后的信息


           11.把商品信息写入文件



           12.退出系统


           

    展开全文
  • 我们设计的是超市信息管理系统,主要采用C语言进行编程,定义了存储货物信息的结构体,并定义int型和void型函数,以实现多种功能:1.用结构体存储货物信息和所购买商品的信息,并用链表保存购物车信息;2.能够完成...
  • 小型超市数据结构课程设计包括商品录入,收银业务,库存管理,销售管理,盘点等。。。
  • 本项目包含基本功能和扩展功能 一、 基本功能: 1. 定义商品名称、编号、品牌、单价、数量、入库时间...6. 实现将商品的所有数据保存到文件的功能 内含超级详细的课程设计报告,欢迎大家的下载使用,感谢大家的支持。
  • C++超市商品管理系统设计最新版

    千次阅读 2020-06-26 11:10:11
    超市商品管理系统 一、关于原创描述 首先明确,下面即将呈现的代码并非完全原创,仅仅是整合资源,仅仅是整合资源,仅仅是整合资源。主要的事说三遍,若有侵权请联系删除。 代码仅仅在原框架的基础上添加处理并作出...

    超市商品管理系统

    一、问题描述及功能要求
    1.提供商品系统的添加、删除、编辑、显示等功能。
    2.同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。

    二、代码实现 带有注释
    废话不说,直接代码,欢迎指正。
    大家CV可能有不兼容的情况,可以滴滴,尽可能解决问题地回复。

    #include <iostream>
    #include <string.h>
    #include <fstream>
    #include <conio.h>//用getch();
    using namespace std;
    
    //以下是类的设计
    
    class commodity
    {
    public:
    char name[20];
    char Id[20];
    int buy;//进货价;
    int sale;//卖出价;
    int amount;//数量;
    int sum;//利润;
    commodity * Next;
    void Input()
    {
    cout<<"\t\t请输入商品的名称:"; cin>>name;
    cout<<"\t\t请输入商品的编号:"; cin>>Id;
    cout<<"\t\t请输入进货价:"; cin>>buy;
    cout<<"\t\t请输入售出价:"; cin>>sale;
    cout<<"\t\t请输入商品数量:"; cin>>amount;
    sum=(sale-buy)*amount;
    }
    void ReadFile(istream & in)
    {
    in>>name>>Id>>sale>>buy>>sum;
    }
    void Show()
    {
    cout<<"商品名"<<name<<endl<<"编号:"<<Id<<endl<<"进货价"<<buy<<"售出价"<<sale<<"商品数量:"<<
    amount<<"预计总利润:"<<sum<<endl<<endl<<endl;
    }
    };
    //以下是对象或对象数组的定义
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌Commoditymassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    class Commoditymassage
    {
    public:
    Commoditymassage();
    ~Commoditymassage();
    void ShowMenu();
    void Find();
    void Save();
    void ModifyItem();
    void RemoveItem();
    void Swap(commodity *,commodity *);
    void Sort();
    int ListCount();
    void Display()
    {
    for(commodity * p=Head->Next;p!=End;p=p->Next)
    p->Show();
    cout<<"输入任意字符!继续……";
    getch();
    }
    void AddItem()
    {
    End->Input();
    End->Next=new commodity;
    End=End->Next;
    cout<<"添加成功!"<<endl;
    cout<<"输入任意字符!继续……";
    getch();
    }
    private:
    commodity * Head,* End;
    ifstream in;
    ofstream out;
    commodity *FindItem(char * name)
    {
    for(commodity * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
    if(!strcmp(p->Next->name,name))return p;
    return NULL;
    }
    commodity *FindID(char * Id)
    {
    for(commodity * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
    if(!strcmp(p->Next->Id,Id))return p;
    return NULL;
    }
    };
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    Commoditymassage::Commoditymassage()
    {
    Head=new commodity;
    Head->Next=new commodity;
    End=Head->Next;
    in.open("sort.txt");
    if(!in)
    cout<<"无商品信息。请先输入。"<<endl;
    else
    {
    while(!in.eof())
    {
    End->ReadFile(in);
    if(End->name[0]=='\0')break;
    End->Next=new commodity;
    End=End->Next;
    }
    in.close();
    cout<<"\t\t读取商品信息成功!"<<endl;
    }
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    Commoditymassage::~Commoditymassage()
    {
    Save();
    for(commodity * temp;Head->Next!=End;)
    {
    temp=Head->Next;
    Head->Next=Head->Next->Next;
    delete temp;
    }
    delete Head,End;
    }
    
    //以下是主函数
    int main()
    {
    int x,i=0;
    bool quit=false;
    cout<<"\t\t**************************"<<endl;
    for(i=0;i<3;i++)
    cout<<"\t\t*\t\t\t\t\t\t *"<<endl;
    cout<<"\t\t*****【 欢迎进入超市商品管理系统 】*****"<<endl;
    for(i=0;i<3;i++)
    cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
    cout<<"\t\t**************************\n"<<endl;;
    Commoditymassage Grade;
    cout<<"按任意键开始……";
    getch();
    while(!quit)
    {
    
    Grade.ShowMenu();
    cin>>x;
    switch(x)
    {
    case 0:quit=true;break;
    case 1:Grade.AddItem();break;
    case 2:Grade.Display();break;
    case 3:Grade.Sort();break;
    case 4:Grade.Find();break;
    case 5:Grade.RemoveItem();break;
    case 6:Grade.ModifyItem();break;
    }
    }
    return 0;
    }
    void Commoditymassage::ShowMenu()
    {
    cout<<"           超 市 商 品 管 理 系 统 "<<endl;
    cout<<"          ┌────-────┐"<<endl;
    cout<<"          │  1.增加超市商品 │"<<endl;
    cout<<"          │  2.显示超市商品 │"<<endl;
    cout<<"          │  3.排序统计商品 │"<<endl;
    cout<<"          │  4.查找超市商品 │"<<endl;
    cout<<"          │  5.删除超市商品 │"<<endl;
    cout<<"          │  6.修改超市商品 │"<<endl;
    cout<<"          │  0.安全退出系统 │"<<endl;
    cout<<"          └────────-┘"<<endl;
    cout<<"\n\t\t\n\t\t请选择:";
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    void Commoditymassage::Find()
    {
    char name[20] ,Id[10];
    int x;
    commodity * p=NULL;
    cout<<"\n\t\t*********************************\n";
    cout<<"\t\t※ 1.按商品的名称查找\n\t\t※ 2.按商品编号查找";
    cout<<"\n\t\t*********************************\n请选择:";
    cin>>x;
    switch(x)
    {
    case 1:{cout<<"\t\t请输入要查找的商品的名称:";cin>>name;
    if(p=FindItem(name))
    {
    p->Next->Show();
    cout<<"输入任意字符!继续……";
    getch();
    }
    else
    {
    cout<<"\t\t没有找到该名称的商品!"<<'\n'<<endl;
    cout<<"输入任意字符!继续……";
    getch();
    }
    }break;
    case 2:
    {
    cout<<"\t\t请输入要查找的商品的编号:";cin>>Id;
    if(p=FindID(Id))
    {
    p->Next->Show();
    cout<<"输入任意字符!继续……";
    getch();
    }
    else
    {
    cout<<"\t\t没有找到该编号的商品!"<<'\n'<<endl;
    cout<<"输入任意字符!继续……";
    getch();
    }
    }break;
    }
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改商品信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    void Commoditymassage::ModifyItem() //修改商品信息
    {
    char name[20];
    commodity * p=NULL;
    cout<<"\t\t请输入要修改的商品的名称:";cin>>name;
    if(p=FindItem(name))
    {
    cout<<"\t\t已找到商品的信息,请输入新的信息!"<<endl;
    p->Next->Input();
    cout<<"修改成功!"<<endl;
    cout<<"输入任意字符!继续……";
    getch();
    }
    else
    {
    cout<<"\t\t没有找到!"<<endl;
    cout<<"输入任意字符!继续……";
    getch();
    }
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    void Commoditymassage::RemoveItem() // 删除信息
    {
    char name[20];
    commodity * p=NULL,*temp=NULL;
    cout<<"\t\t请输入要删除的商品的名称:"<<endl;cin>>name;
    if(p=FindItem(name))
    {
    temp=p->Next;
    p->Next=p->Next->Next;
    delete temp;
    cout<<"\t\t删除成功!"<<endl;
    cout<<"输入任意字符!继续……";
    getch();
    }
    else
    {
    cout<<"\t\t没有找到!"<<endl;
    cout<<"输入任意字符!继续……";
    getch();
    }
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    void Commoditymassage::Swap(commodity *p1, commodity *p2)//交换两个combox变量的数据域
    {
    commodity *temp=new commodity;
    strcpy(temp->name,p1->name);
    strcpy(temp->Id,p1->Id);
    temp->sale=p1->sale;
    temp->buy=p1->buy;
    temp->sum=p1->sum;
    strcpy(p1->name,p2->name);
    strcpy(p1->Id,p2->Id);
    p1->sale=p2->sale;
    p1->buy=p2->buy;
    p1->sum=p2->sum;
    strcpy(p2->name,temp->name);
    strcpy(p2->Id,temp->Id);
    p2->sale=temp->sale;
    p2->buy=temp->buy;
    p2->sum=temp->sum;
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    int Commoditymassage::ListCount()//统计当前链表的记录总数,返回一个整数
    {
    if(! Head)
    return 0;
    int n=0;
    for(commodity * p=Head->Next;p!=End;p=p->Next)
    {
    n++;
    }
    return n;
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    void Commoditymassage::Sort()//对当前链表进行排序
    {
    cout <<"Sorting..."<<endl;
    commodity *p=NULL,*p1=NULL,*k=NULL;
    int n=Commoditymassage::ListCount();
    if(n<2)
    return;
    for(p=Head->Next;p!=End;p=p->Next)
    for(k=p->Next;k!=End;k=k->Next)
    {
    if(p->sum>k->sum)
    {
    Commoditymassage::Swap(p,k);
    }
    }
    cout <<"排序完成!"<<endl;
    getch();
    return;
    }
    //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
    void Commoditymassage::Save()
    {
    out.open("sort.txt");
    for(commodity *p=Head->Next;p!=End;p=p->Next)
    out<<p->name<<"\t"<<p->Id<<"\t"<<p->sum<<'\n';
    out.close();
    }
    
    
    展开全文
  • 采用JSP技术构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全...
  • 采用JSP技术构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全...
  • Python基础项目:超市商品销售管理系统

    万次阅读 多人点赞 2019-04-18 12:01:54
    在前几章的案例中,主要以项目为中心介绍了相关知识点,通过手机通讯录管理系统和学生信息管理系统案例的学习,应该掌握了Python当中的基础语法,变量语句函数以及常见数据结构列表与字典的基本操作,通过世界杯查询...

    在前几章的案例中,主要以项目为中心介绍了相关知识点,通过手机通讯录管理系统和学生信息管理系统案例的学习,应该掌握了Python当中的基础语法,变量语句函数以及常见数据结构列表与字典的基本操作,通过世界杯查询系统与模拟群聊实战介绍了Python对于文件读写的基本操作,同时也用到了Python模块time等内容。在本章中,我们会将之前的内容进行统一综合,完成超市商品销售管理系统。

    需求分析:

    超市销售管理系统功能
    1.欢迎用户使用超市销售管理系统,提示用户登录,如果是用户名为admin,密码为123456,则管理员身份。
    如果是其他用户(可以自己设置也可随意接收),则是顾客身份。
    2.如果用户是管理员身份,提示用户输入编号,选择对应功能
        输入编号"1":显示商品的信息  (编号  商品名称 价格)
        输入编号"2":添加商品信息  (输入编号,商品名称,价格)
        输入编号"3":删除商品信息    (输入编号,删除对应的名称和价格)
        输入编号"4":退出系统功能
    3.如果用户是顾客身份,只有一个功能:购买商品,
        展示所有商品信息,用户循环输入商品编号和购买数量,输入n时,退出系统,并提示用户总价格。

     涉及到的知识点(目前已学全部内容):

    • 编程语言变量,语句,函数
    • 面向对象思想结合编程语言进行类的封装与方法的调用
    • 常见数据容器列表与字典的使用
    • 程序中对于文件的操作

    因为涉及对于文件的读取和写入,建议大家在程序开始前,先确定文件内容的格式,有效合理的表达商品内容,我采取以下格式,在项目工程目录下创建shop.txt文件夹

    逻辑分析:

    增删查买都是对于商品的操作,商品信息包括编号名称和价格,可以将信息封装到对象当中,可创建对象所属的类Goods。然后对于增删等操作应该属于管理系统的功能,所以将相关功能封装到ShopManager类当中。在进入系统时,应该首先查看之前是否有存储信息,所以要读取文件写入到内存中,增删操作都是通过编号作为索引,所以可以选择字典dict数据结构作为内存存储容器,然后增删都是对于字典的操作,当系统退出时,在将数据更新写入到文件中,避免恶意修改文件,恶意提交。

    功能实现代码:

    首先创建表达商品对象的Goods类

    class Goods(object):
        def __init__(self,id,name,price):
            self.id = id
            self.name = name
            self.price = price
    
        def __str__(self):
            info = "编号:%s\t商品名称:%s\t\t价格:%d"%(self.id,self.name,self.price)
            return info

    将对于商品操作的函数放到ShopManager类当中,功能包括管理员以及普通用户的,在登录后进行分流选择。

    class ShopManager(object):
    
        def __init__(self,path):
            # path:表示读取文件的路径    shopdic:表示存放内存的容器
            self.path = path
            self.shopdic = self.readFileToDic()
    
        def readFileToDic(self):
            # 读取文件,写入到字典中
            f = open(self.path, 'r', encoding='utf-8')
            clist = f.readlines()
            f.close()
            index = 0
            shopdic = {}
            while index < len(clist):
                # 将每一行的字符串进行分割,存放到新的列表中
                ctlist = clist[index].replace('\n', "").split("|")
                # 将每行的内容存放到一个对象中
                good = Goods(ctlist[0],ctlist[1],int(ctlist[2]))
                # 将对向存放到集合中
                shopdic[good.id] = good
                index = index + 1
            return shopdic
    
        def writeContentFile(self):
            # 将内存当中的信息写入到文件当中
            str1 = ''
            for key in self.shopdic.keys():
                good = self.shopdic[key]
                ele = good.id+"|"+good.name+"|"+str(good.price)+"\n"
                str1 = str1 + ele
            f = open(self.path, 'w', encoding='utf-8')
            f.write(str1)
            f.close()
    
        def addGoods(self):
            # 添加商品的方法
            id = input("请输入添加商品编号:>")
            if self.shopdic.get(id):
                print("商品编号已存在,请重新选择!")
                return
            name = input("请输入添加商品名称:>")
            price = int(input("请输入添加商品价格:>"))
            good = Goods(id,name,price)
            self.shopdic[id] = good
            print("添加成功!")
    
        def deleteGoods(self):
            # 删除商品的方法
            id = input("请输入删除商品编号:>")
            if self.shopdic.get(id):
                del self.shopdic[id]
                print("删除成功!")
            else:
                print("商品编号不存在!")
    
        def showGoods(self):
            # 展示所有商品信息
            print("="*40)
            for key in self.shopdic.keys():
                good = self.shopdic[key]
                print(good)
            print("="*40)
    
        def adminWork(self):
            info = """
            ==========欢迎进入好海哦购物商场==========
                输入功能编号,您可以选择以下功能:
                输入“1”:显示商品的信息
                输入“2”:添加商品的信息
                输入“3”:删除商品的信息
                输入“4”:退出系统功能
            ==========================================
            """
            print(info)
            while True:
                code = input("请输入功能编号:>")
                if code == "1":
                    self.showGoods()
                elif code == "2":
                    self.addGoods()
                elif code == "3":
                    self.deleteGoods()
                elif code == "4":
                    print("感谢您的使用,正在退出系统!!")
                    self.writeContentFile()
                    break
                else:
                    print("输入编号有误,请重新输入!!")
    
        def userWork(self):
            print(" ==============欢迎进入好海哦购物商场==============")
            print("您可输入编号和购买数量选购商品,输入编号为n则结账")
            self.showGoods()
            total = 0
            while True:
                id = input("请输入购买商品编号:>")
                if id == "n":
                    print("本次购买商品共消费%d元,感谢您的光临!"%(total))
                    break
                if self.shopdic.get(id):
                   good = self.shopdic[id]
                   num = int(input("请输入购买数量:>"))
                   total = total+good.price*num
                else:
                    print("输入商品编号有误,请核对后重新输入!")
    
    
    
        def login(self):
            # 登录功能
            print("==========欢迎登录好海哦购物商场==========")
            uname = input("请输入用户名:>")
            password = input("请输入密码:>")
            if uname == "admin":
                if password == "123456":
                    print("欢迎您,admin管理员")
                    self.adminWork()
                else:
                    print("管理员密码错误,登录失败!")
            else:
                print("欢迎你,%s用户"%(uname))
                #执行用户的购买功能
                self.userWork()

    最后我们可在main语句中,调用登录方法,会自动选择相关功能。

    if __name__ == '__main__':
        shopManage = ShopManager("shop.txt")
        shopManage.login()

    上述代码运行后,会实现的效果为:

    管理员运行效果    普通用户效果

     

    以上项目案例将之前学习的内容进行了统一整理和综合,相信同学们顺利理解和敲出这部分代码,前面提到的知识点部分就没有问题了~       感谢您的阅读!

    代码下载路径:https://download.csdn.net/download/u012156341/11125722

    相关代码下载地址:https://pan.baidu.com/s/15x7hoB4ZkZ7BHSMYTXmzhQ

    展开全文
  • 采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...
  • 采用java技术构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全...
  • 超市仓库管理系统

    2013-06-12 09:20:21
    (一)为了满足广大消费者的消费愿望(不在劳神费力),特有软件开发团队,结合用户的需求为超市开发仓库管理系统,来来解决后顾之忧,众所周知:大的超市商品的存储和调配是不可忽视的大问题,和好的后备调配为...
  • 超市积分管理系统.rar

    2020-02-23 09:53:20
    超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下: (1)网络会员管理中心界面: 会员修改密码信息模块:实现会员密码功能; 会员登陆模块:实现会员登陆功能; 会员注册模块:实现...
  • 超市管理系统文档

    2012-02-14 21:59:50
    在功能上还可进一步实现安全防范、关于数据结构方面可能单一不能满足超市的一些数据提取分析的功能。 功能划分 本系统有以下功能模块: 1)、系统设置。 2)、商品供应商信息管理。 3)、员工档案管理。 4)、商品信息...
  • 超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下: (1)网络会员管理中心界面: 会员修改密码信息模块:实现会员密码功能; 会员登陆模块:实现会员登陆功能; 会员注册模块:实现会员...
  • 超市管理系统.zip

    2019-05-08 22:24:40
    本资源中包含超市管理系统的实验报告,可以直接上交版。以及myeclipse下的项目文件。可以直接添加进行运行验证。 超市管理系统有一下模块:一.基本档案管理设计与开发;二,采购订货设计与开发;三,出入库设计与...
  • 3.1.2 数据项和数据结构的设计 8 3.2 数据库概念结构设计 9 3.3 数据库逻辑结构设计 12 3.4 数据库的生成与配置 15 3.5 创建应用程序结构 15 3.5.1 创建用户界面端程序 15 3.5.2 创建业务逻辑处理组件 15 3.5.3 创建...
  • 超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下: (1)网络会员管理中心界面: 会员修改密码信息模块:实现会员密码功能; 会员登陆模块:实现会员登陆功能; 会员注册模块:实现会员注册...
  • 41.5.1 系统开发的方法 41.5.2 超市管理系统采用的模式 41.5.3 编程环境 41.5.4 开发过程 4 2 系统规划 6 3 系统分析 63.1 需求分析 63.2 可行性分析 73.2.1 市场可行性 73.2.2 技术可行性 73.2.3 经济上可行性 83.2...
  • 超市管理系统商品管理(增删改查)增相当于进货 vip客户管理(增删改查)显示超市vip用户的个人基本信息以及在剩余积分信息 超市管理员(登录,增删改查)不能注册只能初始管理员进行添加 超市活动管理(增删改查) ...

    项目简介:

    超市管理系统 商品管理(增删改查)增相当于进货
    vip客户管理(增删改查)显示超市vip用户的个人基本信息 以及在剩余积分信息
    超市管理员(登录,增删改查)不能注册 只能初始管理员进行添加
    超市活动管理(增删改查)

    项目技术:

    jsp,servlet,js

    运行环境:

    jdk,tomcat,mysql

    功能演示:

    sql及数据结构:

    SET SESSION FOREIGN_KEY_CHECKS=0;
    
    /* Drop Tables */
    
    DROP TABLE IF EXISTS sup_active_pro;
    DROP TABLE IF EXISTS sup_goods;
    DROP TABLE IF EXISTS sup_vip_info;
    
    
    
    
    /* Create Tables */
    
    CREATE TABLE sup_active_pro
    (
    	-- 编号
    	id varchar(64) NOT NULL COMMENT '编号',
    	-- 标题
    	title varchar(100) COMMENT '标题',
    	-- 活动内容
    	content text COMMENT '活动内容',
    	-- 起始时间
    	start_time varchar(40) COMMENT '起始时间',
    	-- 终止时间
    	end_time varchar(40) COMMENT '终止时间',
    	-- 活动状态
    	active_type varchar(10) COMMENT '活动状态',
    	PRIMARY KEY (id)
    );
    
    
    CREATE TABLE sup_goods
    (
    	-- 编号
    	id varchar(40) NOT NULL COMMENT '编号',
    	-- 商品主图
    	pic varchar(100) COMMENT '商品主图',
    	-- 商品名称
    	goods_name varchar(200) COMMENT '商品名称',
    	-- 商品价格
    	goods_price double COMMENT '商品价格',
    	-- 商品内容
    	goods_content text COMMENT '商品内容',
    	-- 商品类型
    	goods_type varchar(50) COMMENT '商品类型',
    	-- 商品重量
    	weight float COMMENT '商品重量',
    	-- 库存
    	stock int COMMENT '库存',
    	-- 生产日期
    	build_time timestamp COMMENT '生产日期',
    	-- 保质期
    	expiration_date int COMMENT '保质期',
    	PRIMARY KEY (id)
    );
    
    
    CREATE TABLE sup_vip_info
    (
    	-- 编号
    	id varchar(40) NOT NULL COMMENT '编号',
    	-- 会员卡号
    	vip_no varchar(100) COMMENT '会员卡号',
    	-- 会员姓名
    	vip_name varchar(100) COMMENT '会员姓名',
    	-- 会员电话
    	vip_phone varchar(40) COMMENT '会员电话',
    	-- 办卡时间
    	vip_time varchar(40) COMMENT '办卡时间',
    	-- 会员级别
    	vip_type varchar(40) COMMENT '会员级别',
    	-- 会员积分
    	vip_score int COMMENT '会员积分',
    	PRIMARY KEY (id)
    );
    
    
    
    

     

    展开全文
  • 选用B/S结构实现管理系统的有点: 经济性 、安全性 、灵活性、可扩展性 超市管理信息系统概念模型;E-R图;数据流图、系统总体框架图;商品采购信息管理......个人信息管理
  • 超市 管理信息系统 超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。商店自动化...
  • 目 录 1. 引言 3 1.1 项目背景 3 1.2 项目目标 4 2. 系统需求说明 4 2.1系统模块结构图 4 2.2员工信息管理 6 2.3供应商信息管理 7 2.4商品信息管理 8 2.5商品销售管理 9 2.6商品库存管理 9 ...4.系统数据结构 11
  • 超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下: (1)网络会员管理中心界面: 会员修改密码信息模块:实现会员密码功能; 会员登陆模块:实现会员登陆功能; 会员注册模块:实现会员注册...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

数据结构超市商品管理系统

数据结构 订阅