LM337768 2021-07-02 22:51 采纳率: 100%
浏览 81
已采纳

综合课设,数据结构和C语言综合运用

、客户消费积分管理系统
客户消费积分管理系统——顺序存储
顺序存储
基本要求
基本要求:客户基本信息主要包括:会员编号、手机号码、姓名、总积分、当前积余额。针对客户的消
费情况,进行积分管理,对客户消费实行不同程度的打折优惠或折现服务。
(1)对客户的增加、删除、修改、查询;
(2)根据消费积分设置优惠活动;
(3)设计实现菜单方式的交互界面,界面友好,可反复操作。

  • 写回答

1条回答 默认 最新

  • CSDN专家-黄老师 2021-07-02 23:22
    关注
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct Data {
        //卡号、姓名、时间、消费额、消费地点、消费类型
        //增、删、改、浏览、查询、搜索
        char id[50];
        char name[50];
        char date[50];
        char consumption[50];
        char where[50];
        char category[50];
    };
    void view();
    void del(int n);
    void change(int n);
    void add();
    void find();
    int login();
    int main() {
        int y;
        for (y = 0; y < 99999; y++) {
            if (login() == 1) {
                system("cls");
                break;
            }
            system("cls");
            printf("\033[41;37m***************登录错误:账号或者密码错误,请重试************************\n\n\n\033[0m");
        }
        for (y = 0; y < 9999; y++) {
            //开始界面
            printf("        ┌------连锁超市会员消费记录管理系统-----┐\n");
            printf("         |                                    |\n");
            printf("         |             ①浏览                 |\n");
            printf("         |             ②添加                 |\n");
            printf("         |             ③更改                 |\n");
            printf("         |             ④删除                 |\n");
            printf("         |             ⑤搜索                 |\n");
            printf("         |             ⑥退出                 |\n");
            printf("         |                                    |\n");
            printf("        └-------------------------------------┘\n");
            printf("*********************************************************\n");
            printf("         ######请输入数字进行相应的操作#######\n");
     
            //接受输入数字进行处理
            int number;
            printf("         请输入:");
            scanf("%d", &number);
            system("cls");
            if (number == 6) {
                break;
            }
            //预处理信息
            //
            int hao;
            switch (number)
            {
            case 1://浏览
                view();
                break;
     
            case 2://添加
                add();
                break;
     
            case 3://更改
                view();
                printf("\n请选择你要更改数据的序号:");
                scanf("%d", &hao);
                change(hao);
                break;
     
            case 4://删除
                view();
                printf("\n请选择你要删除数据的序号:");
                scanf("%d", &hao);
                del(hao);
                break;
     
            case 5://搜索
                find();
     
                break;
            case 6:
                break;
            }
            system("pause");
            system("cls");
        }
        return 0;
    }
     
    void view() {
        char a[1000];
        FILE* file = fopen("infor.txt", "a+");
        printf("\n序号 卡号  姓名 时间 消费额 消费地点 消费类型\n");
        printf("---------------------------------------------\n");
        /*while ((ch = getc(file)) != EOF) {
        putchar(ch);
        }*/
        int i;
        for (i = 1; i < 666; i++) {
            if (fgets(a, 100, file) != NULL) {
                printf(" %d    %s", i, a);
            }
            else {
                break;
            }
        }
        fclose(file);
    }
    void add() {
        struct Data temp;
        FILE* file = fopen("infor.txt", "a+");
        printf("请依次输入:\n卡号 姓名 时间 消费额 消费地点 消费类型\n");
        printf("---------------------------------------------\n");
        scanf("%s %s %s %s %s %s", &temp.id, &temp.name, &temp.date, &temp.consumption, &temp.where, &temp.category);
        fprintf(file, "%s %s %s %s %s %s\n", temp.id, temp.name, temp.date, temp.consumption, temp.where, temp.category);
        printf("\033[41;37m添加成功\n\033[0m");
     
        fclose(file);
    }
     
    void change(int n) {
        char a[50];
        int i;
        FILE* file = fopen("infor.txt", "a+");
        for (i = 1; i < 666; i++) {
            if (fgets(a, 100, file) != NULL) {
                if (i == n) {
                    break;
                }
            }
        }
        fclose(file);
        //对字符串进行处理,切割字符串
        char str[99][99];
        char* temp = strtok(a, " ");
        while (temp) {
            //printf("%s\n", temp);
            strcpy(str[i], temp);//后面的是要拷贝的内容
            i++;
            temp = strtok(NULL, " ");
        }
        system("cls");
        printf("您选择的项是:\n");
        printf("序号 卡号 姓名 时间 消费额 消费地点 消费类型\n");
        printf("--------------------------------------------\n");
        for (i = 0; i < 6; i++) {
            printf("%s ", str[i]);
        }
        printf("\n请问您要更改什么值?\n");
        printf("--------------------------------------------------------\n");
        printf("1.卡号  2.姓名  3.时间  4.消费额  5.消费地点  6.消费类型\n--------------------------------------------------------\n请选择序号:");
     
        int num;
        char new_str[100];
        scanf("%d", &num);
        printf("请输入新的值:");
        scanf("%s", &new_str);
        switch (num)
        {
        case 1:
            strcpy(str[0], new_str);
            break;
        case 2:
            strcpy(str[1], new_str);
            break;
        case 3:
            strcpy(str[2], new_str);
            break;
        case 4:
            strcpy(str[3], new_str);
            break;
        case 5:
            strcpy(str[4], new_str);
            break;
        case 6:
            strcpy(str[5], new_str);
            break;
        }
        del(n);
        FILE* new_file = fopen("infor.txt", "a+");
        for (i = 0; i < 6; i++) {
            fprintf(new_file, "%s", str[i]);
            if (i != 6) {
                fprintf(new_file, " ");
            }
        }
        fclose(new_file);
     
    }
     
    void del(int n) {
        char a[50][50];
        int x = 0, i;
        FILE* file = fopen("infor.txt", "r+");
        for (i = 1; i < 666; i++) {
            if (fgets(a[x], 100, file) != NULL) {
                if (i != n) {
                    x++;
                }
            }
            else {
                break;
            }
        }
        fclose(file);
        FILE* file_temp = fopen("infor.txt", "w");
        fprintf(file_temp, "");
        fclose(file_temp);
        FILE* temp = fopen("infor.txt", "a+");
        for (i = 0; i < x; i++) {
            fprintf(temp, "%s", a[i]);
        }
        printf("\033[41;37m************操作成功************\n\n\033[0m");
        fclose(temp);
    }
     
    void find() {
        printf("请输入关键词:");
        char ss[100];
        char ch;
        int i = 0;
        char* ret;
        scanf("%s", &ss);
        char a[50];
        int s = 0;
        FILE* file = fopen("infor.txt", "r+");
        printf("\n搜索结果: \n");
        printf("\n卡号 姓名 时间 消费额 消费地点 消费类型\n");
        printf("--------------------------------------------\n");
        for (i = 1; i < 666; i++) {
            if (fgets(a, 100, file) != NULL) {
                ret = strstr(a, ss);
                if (ret != NULL) {
                    printf("%s", a);
                    printf("--------------------------------------------\n");
                    s = 1;
                }
                else {
                    continue;
                }
            }
            else {
                break;
            }
        }
        if (s == 0) {
            printf("\033[41;37m没有找到相关信息\n\033[0m");
        }
        fclose(file);
    }
    int login() {
        printf("        ┌------连锁超市会员消费记录管理系统---┐\n");
        printf("         |                                    |\n");
        printf("         |             请先登录               |\n");
        printf("         |                                    |\n");
        printf("         |                                    |\n");
        printf("         |        请输入您的账号和密码        |\n");
        printf("         |                                    |\n");
        printf("         |                                    |\n");
        printf("         |                                    |\n");
        printf("        └-------------------------------------┘\n");
        printf("*********************************************************\n");
     
     
        char sys_name[20] = { "admin" };
        char sys_password[20] = { "123456" };
        char name[20];
        char password[20];
        printf("\n         \n");
        printf("                   账号:");
        scanf("%s", name);
        printf("                   密码:");
        scanf("%s", password);
        if (strcmp(sys_name, name) == 0 && strcmp(sys_password, password) == 0) {
            return 1;
        }
        else {
            return 0;
        }
    }
    

    参考一下,如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于vmprotect3.8.4虚拟文件一项
  • ¥20 C#调用虚拟键盘TabTip.exe
  • ¥15 Qt4代码实现下面的界面
  • ¥15 CCS离散化传递函数与仿真不一致
  • ¥15 prism提示我reinstall prism 如何解决
  • ¥15 asp.core 权限控制怎么做,需要控制到每个方法
  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用