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

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

问题描述:

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

#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;
    }
}

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