C-商品管理系统

C-商品管理系统

VS2017

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#pragma warning(disable:4996)

#define PRT printf("编号      名称      数量      价格\n");
#define PRT1 printf("%d%14s%8d%11.2lf\n", pp->id, pp->S_name, pp->S_num, pp->S_price);

typedef struct Commodity
{
    int id; //编号
    char S_name[10]; //商品名称
    int S_num; //商品数量
    double S_price; //商品价格
    struct Commodity *next;
}comm;

comm *S_mphead = NULL; //头节点
int S_num = 0; //记录数量
void S_list(comm **p); //创建链表
void S_destroy(comm **p); //销毁链表
void S_main(void); //入口
void S_creat(comm *p); //录入记录
void S_search(comm *p); //查找记录
void S_delete(comm *p); //删除记录
void S_mod(comm *p); //修改记录
void S_insert(comm *p); //插入记录
void S_sort(comm *p); //排序记录
void S_stat(comm *p); //统计记录


int main(void)
{
    S_list(&S_mphead);
    S_main();
    system("pause");
    return 0;
}

//入口
void S_main(void)
{
    int i;
    char S_key1;
    int S_key;
    for (i = 0; i < 20; i++)
    {
        printf("-");
    }
    printf("商品管理系统");
    for (i = 0; i < 20; i++)
    {
        printf("-");
    }
    printf("\n");
    printf("|                                                  |\n");
    printf("|                                                  |\n");
    printf("|                    1> 录入记录                   |\n\n");
    printf("|                    2> 查找记录                   |\n\n");
    printf("|                    3> 删除记录                   |\n\n");
    printf("|                    4> 修改记录                   |\n\n");
    printf("|                    5> 插入记录                   |\n\n");
    printf("|                    6> 排序记录                   |\n\n");
    printf("|                    7> 统计记录                   |\n\n");
    printf("|                    0> 退出                       |\n");
    printf("|                                                  |\n");
    printf("|                                                  |\n");
    for (i = 0; i < 52; i++)
    {
        printf("-");
    }
    printf("\n");
    printf("选择0-7:");
    scanf("%d", &S_key);
    getchar();
    switch (S_key)
    {
    case 1:
        S_creat(S_mphead);
        break;
    case 2:
        S_search(S_mphead);
        break;
    case 3:
        S_delete(S_mphead);
        break;
    case 4:
        S_mod(S_mphead);
        break;
    case 5:
        S_insert(S_mphead);
        break;
    case 6:
        S_sort(S_mphead);
        break;
    case 7:
        S_stat(S_mphead);
        break;
    case 0:
        printf("是否退出(Y/N):");
        S_key1 = getch();
        if (S_key1 == 'y' || S_key1 == 'Y')
        {
            S_destroy(&S_mphead);
            exit(1);
        }
        else if (S_key1 == 'n' || S_key1 == 'N')
        {
            system("cls");
            S_main();
        }
        else
        {
            printf("输入有误!按任意键重新输入!");
            getch();
            system("cls");
            S_main();
        }
        break;
    default:
        printf("输入有误,按任意键重新输入!");
        getch();
        system("cls");
        S_main();
    }
}

//创建链表
void S_list(comm **p)
{
    *p = (comm *)malloc(sizeof(comm));
    if ((*p) == NULL)
    {
        printf("链表创建失败!\n");
        getchar();
        exit(1);
    }
    (*p)->next = NULL;
}

//销毁链表
void S_destroy(comm **p)
{
    comm *S_ptemp = NULL;
    while ((*p)->next != NULL)
    {
        S_ptemp = (*p)->next;
        (*p)->next = S_ptemp->next;
        free(S_ptemp);
        S_ptemp = NULL;
    }
    (*p) = NULL;
}
//录入记录
void S_creat(comm *p)
{
    comm *phead = p;
    comm *pp = NULL;
    char S_key;
    while (phead->next != NULL)
    {
        phead = phead->next;
    }
    pp = (comm *)malloc(sizeof(comm));
    printf("请输入编号:\n");
    scanf("%d", &pp->id);
    getchar();
    printf("请输入名称:\n");
    scanf("%s", pp->S_name);
    getchar();
    printf("请输入数量:\n");
    scanf("%d", &pp->S_num);
    getchar();
    printf("请输入单价:\n");
    scanf("%lf", &pp->S_price);
    getchar();
    pp->next = NULL;
    phead->next = pp;
    phead = pp;
    S_num++;
    printf("录入成功!继续录入(Y/N):");
rst:
    S_key = getch();
    printf("\n");
    if (S_key == 'y' || S_key == 'Y')
    {
        S_creat(S_mphead);
    }
    else if (S_key == 'n' || S_key == 'N')
    {
        system("cls");
        S_main();
    }
    else
    {
        printf("输入有误!按任意键重新输入!");
        getch();
        goto rst;
    }
}

//查找记录
void S_search(comm *p)
{
    comm *pp = p->next;
    int S_id;
    printf("请输入编号:");
    scanf("%d", &S_id);
    getchar();
    while (pp != NULL)
    {
        if (pp->id == S_id)
        {
            PRT;
            PRT1;
            printf("\n请按任意键返回主菜单!");
            getch();
            system("cls");
            S_main();
        }
        pp = pp->next;
    }
    printf("没有找到记录!按任意键返回主菜单!");
    getch();
    system("cls");
    S_main();
}

//删除记录
void S_delete(comm *p)
{
    comm *pp = p;
    comm *ptemp = NULL;
    char S_key;
    int S_id;
    printf("请输入编号:");
    scanf("%d", &S_id);
    getchar();
    while (pp->next != NULL)
    {
        if (pp->next->id == S_id)
        {
            PRT;
            printf("%d%14s%8d%11.2lf\n", pp->next->id, pp->next->S_name, pp->next->S_num, pp->next->S_price);
            printf("是否删除(Y/N):");
            rst:
            S_key = getch();
            if (S_key == 'y' || S_key == 'Y')
            {
                ptemp = pp->next;
                pp->next = ptemp->next;
                free(ptemp);
                ptemp = NULL;
                printf("删除成功!请按任意键返回主菜单!");
                getch();
                system("cls");
                S_main();
            }
            else if (S_key == 'n' || S_key == 'N')
            {
                printf("请按任意键返回主菜单!");
                getch();
                system("cls");
                S_main();
            }
            else
            {
                printf("输入有误!按任意键重新输入!");
                getch();
                goto rst;
            }
        }
        else
        {
            pp = pp->next;
        }
    }
    printf("没有要删除的记录!请按任意键返回主菜单!");
    getch();
    system("cls");
    S_main();
}

//修改记录
void S_mod(comm *p)
{
    comm *pp = p->next;
    int S_id;
    printf("请输入编号:");
    scanf("%d", &S_id);
    getchar();
    while (NULL != pp)
    {
        if (pp->id == S_id)
        {
            printf("请输入名称:\n");
            scanf("%s", pp->S_name);
            getchar();
            printf("请输入数量:\n");
            scanf("%d", &pp->S_num);
            getchar();
            printf("请输入单价:\n");
            scanf("%lf", &pp->S_price);
            getchar();
            printf("修改成功!按任意键返回主菜单!");
            getch();
            system("cls");
            S_main();
        }
        pp = pp->next;
    }
    printf("没有可修改的信息!按任意键返回主菜单!");
    getch();
    system("cls");
    S_main();
}

//插入记录
void S_insert(comm *p)
{
    comm *p1 = p->next;
    comm *pp = NULL;
    int S_id;
    printf("请输入插入位置编号:");
    scanf("%d", &S_id);
    getchar();
    while (NULL != p1)
    {
        if (p1->id == S_id)
        {
            pp = (comm *)malloc(sizeof(comm));
            printf("请输入编号:\n");
            scanf("%d", &pp->id);
            getchar();
            printf("请输入名称:\n");
            scanf("%s", pp->S_name);
            getchar();
            printf("请输入数量:\n");
            scanf("%d", &pp->S_num);
            getchar();
            printf("请输入单价:\n");
            scanf("%lf", &pp->S_price);
            getchar();
            pp->next = p1->next;
            p1->next = pp;
            printf("插入成功!按任意键返回主菜单!");
            getch();
            system("cls");
            S_main();
        }
        p1 = p1->next;
    }
    printf("没有此位置编号!按任意键返回主菜单!");
    getch();
    system("cls");
    S_main();
}

//排序记录
void S_sort(comm *p)
{
    comm *pp = p->next;
    comm *p1 = NULL;
    comm *ptemp = NULL;
    ptemp = (comm *)malloc(sizeof(comm));
    while (NULL != pp)
    {
        p1 = pp->next;
        while (NULL != p1)
        {
            if (pp->S_price < p1->S_price)
            {
                ptemp->id = p1->id;
                strcmp(ptemp->S_name, p1->S_name);
                ptemp->S_num = p1->S_num;
                ptemp->S_price = p1->S_price;
                p1->id = pp->id;
                strcmp(p1->S_name, pp->S_name);
                p1->S_num = pp->S_num;
                p1->S_price = pp->S_price;
                pp->id = ptemp->id;
                strcmp(pp->S_name, ptemp->S_name);
                pp->S_num = ptemp->S_num;
                pp->S_price = ptemp->S_price;
            }
            p1 = p1->next;
        }
        pp = pp->next;
    }
    free(ptemp);
    ptemp = NULL;
    printf("排序完毕!按任意键返回主菜单!");
    getch();
    system("cls");
    S_main();
}

//统计记录
void S_stat(comm *p)
{
    comm *pp = p->next;
    PRT;
    while (pp != NULL)
    {
        PRT1;
        pp = pp->next;
    }
    printf("总共%d条记录!\n", S_num);
    printf("按任意键返回主菜单!");
    getch();
    system("cls");
    S_main();
}

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
有源码,有文档,开发环境是在Visual Studio .NET 2005的平台上C#.Net的应用程序(winform),采用SQL Server 2000数据库系为基本应用软件开发系统程序。 第一章 前言 1 1.1 项目依据及意义 1 1.2 国内外研究现状及发展趋势 1 1.3 项目内容及技术分析 2 1.4 本课题研究方案 2 1.5 研究目标、主要特色 3 第二章 可行性研究 4 2.1 经济可行性 4 2.2 社会可行性 4 2.3 技术可行性 4 第三章 需求分析 6 3.1 系统功能需求 6 3.2. 系统非功能性需求 7 3.2.1性能需求 7 3.2.2 安全性需求 7 3.3 应用与开发环境 8 3.3.1 系统定义 8 3.3.2 运行环境 8 3.3.3 硬件环境 8 3.3.4 其他要求 9 第四章 总体设计 10 4.1 总体设计概述 10 4.2 系统功能结构设计 10 4.3 系统各子系统的分析与设计 11 4.3.1 用户登录子系统 11 4.3.2商品管理系统基本概念模型 11 4.4数据库中主要表的结构设计 13 4.4.1 进货计划表的结构设计 13 4.4.2 商品库存表 14 4.4.3 用户表 15 4.4.4 人员管理表 15 4.4.5 三个自由表情况 16 第五章 详细设计与规划 17 5.1系统登录 17 5.2系统管理 19 5.2.1 用户管理 19 5.2.2 密码管理 21 5.3 商品管理 23 5.3.1 进货管理 23 5.3.2 库存管理 25 5.3.3 商品管理 26 5.4 供货商管理 27 5.4.1 供货商管理 27 5.4.2 供货商查询和统计 29 5.5销售管理 30 第六章 系统测试与调试 33 6.1 单元测试 33 6.2 综合测试 34 6.3 验收测试 34 第七章 系统的维护 35 第八章 总结 36 致 谢 37
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

完美教父

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值