程序设计-在校整理-01 车友俱乐部管理系统

一、课题内容和要求

1、问题描述

随着现代化生活水平的提高,家用汽车越来越成为生活中的必需品。了解车友信息便于车友之间的交流和组织活动。该系统要求开发一款车友俱乐部软件,通过该软件可以方便地查询车友信息,了解车友的动态信息,发起车友的活动等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。

2、基本要求

(1)车友信息应包括:车主信息(会员名,昵称,性别,职业,驾龄,年龄等),驾车信息(车辆品牌,车款,颜色等)等;(用结构体struct来储存车友的信息)
(2)要求进入系统需要输入口令验证;
(3)建立车友信息库,输入信息符合逻辑如驾龄为正值,相关信息符合实际标准等;
(4)实现车友会新加入会员信息和退会会员信息的动态更新,并对各个时间阶段的会员年龄组成变化进行统计和展示;
(5)有条件查询。可方便地根据姓名、性别、年龄、车款、入会时间等条件,查询车友信息,并用不同的排序算法进行排序。
(6)将该车友会的信息内容、查询信息等均以文件的形式存储。

二、需求分析

1、提供可操作的主菜单:输出菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。根据客户输入的选项来运行不同的功能,运行不同的函数。程序中存在多个菜单显示函数,需要进行循环调用显示。
2、一定的输入检测:本程序中需要用户进行选择的地方很多,菜单上之间也会相互调用,包括循环运行。用户在选择相应菜单选项时,会进行输入,这要求对用户输入进行一定的检测。
3、明晰的存储格式:再利用结构体数组进行用户信息存储时。以及对用户满意度调查信息存储时,要对文件格式进行一定的优化,使其清晰明了。并且在读取和保存的文件信息时能够灵活方便易于相应的操作。

三、概要设计

1、主要存储结构

// 代码很烂,轻喷。注:仅供参考学习使用。
//车友信息结构体
struct Club {
    char id[20];//会员卡号
    char name[20];//姓名
    char sex[10];//性别
    char age[10];//年龄
    char job[20];//工作
    char drive_age[20];//驾龄
    char brand[20];//车的品牌
    char style[20];//车的款式
    char color[20];//车的颜色
    char time_user[BUFLEN];//入会时间
};
typedef struct Club club;

存储图示如下:
图1.1 结构体信息文件存储格式实例

2、主要函数流程

(1) 系统运行:在进入系统后会调用最外层的菜单函数进行口令和外层菜单显示。流程如图所示:
2

(2)菜单函数运行流程如图所示,本程序中有大量与此类似的菜单调用函数,此处只列出最主要的一个菜单函数进行实例。
3
4

(3)系统总框架
5

四、源程序代码

// 代码很烂,轻喷。注:仅供参考学习使用。
// 头文件
#include <stdio.h>  
#include <string.h>  
#include <stdlib.h>  
#include <math.h> 
#include <time.h> 
// #include<bits/stdc++.h>
// using namespace std;

//全局变量定义   
#define USER_FILE "user.txt"  //存放车友用户的信息文件
#define RESULT_FILE "result.txt" //满意度调查文件
#define CONSOLE "CON"//重定向使用,输出定向在控制台
#define BUFLEN 255//获取时间戳长度
#define NUM 50  //车友数量,按实际需要可以改变大小
#define PASSWORD 123//进入系统用的密码

//================结构体内容==================
//车友信息结构体
struct Club {
    char id[20];//会员卡号
    char name[20];//姓名
    char sex[10];//性别
    char age[10];//年龄
    char job[20];//工作
    char drive_age[20];//驾龄
    char brand[20];//车的品牌
    char style[20];//车的款式
    char color[20];//车的颜色
    char time_user[BUFLEN];//入会时间
};
typedef struct Club club;

//================函数声明相关内容==================
//函数声明;方便函数之间调用
void init(club* user);//初始化结构体
void readuser(club* user);//从文件读取车友用户信息到结构体中
void saveuser(club* user);//保存车友用户信息到文件里
int topmenu();//最外层主菜单
void user_result(club* user);//满意度调查函数
void menu(club* user);//主要程序功能的菜单
void showid(club* user);//根据id显示车友信息
void managemenu(club* user);//车友信息管理菜单
void add_user();//增加车友信息
void del_user(club* user);//删除车友
void modify_user(club* user);//修改信息
void sum_menu(club* user);//车友人数统计主菜单
void total_user(club* user);//统计车友总人数
void total_age(club* user);//各年龄段车友人数
void factor_menu(club* user);//条件查询主菜单
void find_sex(club* user);//根据性别查询信息
void find_style(club* user);//根据款式查询信息
void find_name(club* user);//根据姓名查询信息
void find_age(club* user);//根据年龄查询信息
void find_time(club* user);//根据入会时间查询信息

//================程序辅助相关内容==================
//初始化信息函数
void init(club* user) {
    for (int i = 0; i < NUM;i++) {
        strcpy(user[i].id, "");
        strcpy(user[i].name, "");
        strcpy(user[i].sex, "");
        strcpy(user[i].age, "");
        strcpy(user[i].job, "");
        strcpy(user[i].drive_age, "");
        strcpy(user[i].brand, "");
        strcpy(user[i].style, "");
        strcpy(user[i].color, "");
        strcpy(user[i].time_user, "");
    }
}
//从文件读取车友用户信息到结构体中
void readuser(club* user) {
    //输入重定向,从文件输入
    freopen(USER_FILE, "r", stdin);
    for (int i = 0;i < NUM;i++) {
        scanf("%s%s%s%s%s%s%s%s%s%s", user[i].id, user[i].name, user[i].sex, user[i].age, user[i].job, user[i].drive_age, user[i].brand, user[i].style, user[i].color, user[i].time_user);
    }
    //重定向返回控制台
    //printf("%s,%s,%s,%s,%s,%s,%s,%s,%s",user[0].id, user[0].name, user[0].sex, user[0].age, user[0].job, user[0].drive_age, user[0].brand, user[0].style, user[0].color);
    freopen("CON", "r", stdin);
}
//保存车友用户信息到文件里
void saveuser(club* user) {
    freopen(USER_FILE, "w", stdout);
    for (int i = 0;i < NUM;i++) {
        if (strlen(user[i].id) != 0) {
            printf("%s %s %s %s %s %s %s %s %s %s\n", user[i].id, user[i].name, user[i].sex, user[i].age, user[i].job, user[i].drive_age, user[i].brand, user[i].style, user[i].color, user[i].time_user);
        }
    }
    freopen(CONSOLE, "w", stdout);

}

//================车友信息管理相关==================
//按照车友会员卡号id显示车友信息
void showid(club* user) {
    readuser(user);
    int flag = -1;
    char num_id[20];
    printf(" 请输入要显示的会员ID:");

    scanf("%s", num_id);
    for (int i = 0;i < NUM - 1;i++) {
        if (strcmp(user[i].id, num_id) == 0) {
            flag = i;
            printf(" 会员卡号:%s", user[i].id);
            printf(" 姓名:%s", user[i].name);
            printf(" 性别:%s", user[i].sex);
            printf(" 年龄:%s", user[i].age);
            printf(" 职业:%s", user[i].job);
            printf(" 驾龄:%s\n", user[i].drive_age);
            printf(" 车辆品牌:%s", user[i].brand);
            printf(" 车款:%s", user[i].style);
            printf(" 颜色:%s", user[i].color);
            printf(" 入会时间:%s\n", user[i].time_user);

        }
    }
    if (flag == -1) printf(" 没有该卡!");
}
//添加车友信息函数
void add_user() {
    char id[20];//会员卡号
    char name[20];//姓名
    char sex[5];//性别
    char age[5];//年龄
    char job[20];//工作
    char drive_age[20];//驾龄
    char brand[20];//车的品牌
    char style[20];//车的款式
    char color[20];//车的颜色
    char time_user[BUFLEN];//入会时间

    //获取时间 
    time_t t = time(0);
    char tmpBuf[BUFLEN];
    //这样时间是2020-11-27-23:01:23
    //strftime(tmpBuf, BUFLEN, "%Y-%m-%d-%H:%M:%S", localtime(&t)); //格式化时间

    //这样时间是2020-11-27
    strftime(tmpBuf, BUFLEN, "%Y-%m-%d", localtime(&t)); //格式化时间

    printf(" 输入会员卡号:"); scanf("%s", id);
    printf(" 输入姓名:"); scanf("%s", name);
    printf(" 输入性别:"); scanf("%s", sex);
    printf(" 输入年龄:"); scanf("%s", age);
    printf(" 输入职业:"); scanf("%s", job);
    printf(" 输入驾龄:"); scanf("%s", drive_age);
    printf(" 输入车辆品牌:"); scanf("%s", brand);
    printf(" 输入车款:"); scanf("%s", style);
    printf(" 输入颜色:"); scanf("%s", color);
    // 文件指针  
    FILE* fp = fopen(USER_FILE, "a+");

    // 输出到文件  
    fputs(id, fp);  fputs(" ", fp);
    fputs(name, fp);  fputs(" ", fp);
    fputs(sex, fp);  fputs(" ", fp);
    fputs(age, fp);  fputs(" ", fp);
    fputs(job, fp);  fputs(" ", fp);
    fputs(drive_age, fp);  fputs(" ", fp);
    fputs(brand, fp);  fputs(" ", fp);
    fputs(style, fp);  fputs(" ", fp);
    fputs(color, fp);  fputs(" ", fp);
    fputs(tmpBuf, fp);  fputs("\n", fp);
    fclose(fp);
    printf("添加成功!");
}
//删除车友信息函数
void del_user(club* user) {
    readuser(user);
    int flag = -1;
    char num[20];
    printf(" 请输入要删除的卡号:"); scanf("%s", num);
    for (int i = 0;i < NUM - 1;i++) {
        //找到卡后置空 
        if (strcmp(user[i].id, num) == 0) {
            flag = i;
            strcpy(user[i].id, "");
            strcpy(user[i].name, "");
            strcpy(user[i].sex, "");
            strcpy(user[i].age, "");
            strcpy(user[i].job, "");
            strcpy(user[i].drive_age, "");
            strcpy(user[i].brand, "");
            strcpy(user[i].style, "");
            strcpy(user[i].color, "");
            strcpy(user[i].time_user, "");
            printf(" 删除成功!");
        }
    }
    if (flag == -1) printf(" 查无此卡,请先注册!");
    saveuser(user);
}
//修改车友信息函数
void modify_user(club* user) {
    readuser(user);
    int flag = -1, mod_ch = 0;
    char num[20], change[20];
    printf(" 请输入要修改信息的卡号:");scanf("%s", num);
    for (int i = 0;i < NUM - 1;i++) {
        //找到卡后置空 
        if (strcmp(user[i].id, num) == 0) {
            flag = i;
            printf("==请选择要修改的类型==\n");
            printf(" Press 1 :修改姓名\n");
            printf(" Press 2 :修改性别\n");
            printf(" Press 3 :修改年龄\n");
            printf(" Press 4 :修改职业\n");
            printf(" Press 5 :修改驾龄\n");
            printf(" Press 6 :修改车辆品牌\n");
            printf(" Press 7 :修改车款\n");
            printf(" Press 8 :修改颜色\n\n");
            printf(" 请输入您的选择");
            scanf("%d", &mod_ch);
            printf(" 请输入修改后的信息:");scanf("%s", change);
            switch (mod_ch)
            {
            case 1:strcpy(user[i].name, "");strcpy(user[i].name, change);break;
            case 2:strcpy(user[i].sex, "");strcpy(user[i].sex, change);break;
            case 3:strcpy(user[i].age, "");strcpy(user[i].age, change);break;
            case 4:strcpy(user[i].job, "");strcpy(user[i].job, change);break;
            case 5:strcpy(user[i].drive_age, "");strcpy(user[i].drive_age, change);break;
            case 6:strcpy(user[i].brand, "");strcpy(user[i].brand, change);break;
            case 7:strcpy(user[i].style, "");strcpy(user[i].style, change);break;
            case 8:strcpy(user[i].color, "");strcpy(user[i].color, change);break;
            }
            printf(" 修改成功!");
        }
    }
    if (flag == -1) printf(" 查无此卡,请先注册!");
    saveuser(user);
}
//车友信息管理菜单
void managemenu(club* user) {
    int re = 0;

    printf("\n======== 车友信息管理 ========\n");
    printf(" [---- Press 1 :增加车友信息----]\n");
    printf(" [---- Press 2 :删除车友信息----]\n");
    printf(" [---- Press 3 :修改车友信息----]\n");
    printf(" [---- Press 0 :返回上级菜单----]\n");

    printf(" 请输入您的选择:");scanf("%d", &re);
    if (re >= 0 && re < 5) {
        switch (re) {
        case 1:fflush(stdin);add_user();break;//增加车友信息
        case 2:fflush(stdin);del_user(user);break;//删除车友信息
        case 3:fflush(stdin);modify_user(user);break;//修改信息
        case 0:fflush(stdin);menu(user);break;//返回上级
        }
    }
    else { printf(" 输入错误!\n");managemenu(user); }
}

//================车友人数统计相关==================
//统计车友总人数
void total_user(club* user) {
    readuser(user);
    int total = 0;
    for (int i = 0;i < NUM;i++) {
        if (strlen(user[i].id) != 0) {
            total++;
        }
    }
    printf(" 车友总人数为:%d", total);

}
//各年龄段车友人数;
void total_age(club* user) {
    readuser(user);
    int total[11];
    memset(total, 0, 11 * sizeof(int));//初始化置零

    for (int i = 0;i < NUM;i++) {
        if (strlen(user[i].age) != 0) {
            total[atoi(user[i].age) / 10]++;
        }
    }
    for (int i = 0; i < 11; i++) {
        printf(" %2d0 — %2d0年龄段的人数为:%d\n", i, i + 1, total[i]);
    }
}
//车友统计人数菜单
void sum_menu(club* user) {
    int re = 0;

    printf("\n======== 车友人数统计菜单 ========\n");
    printf(" [---- Press 1 :车友总人数------]\n");
    printf(" [---- Press 2 :各年龄段人数----]\n");
    printf(" [---- Press 0 :返回上级菜单----]\n");

    printf(" 请输入您的选择:");scanf("%d", &re);
    if (re >= 0 && re < 5) {
        switch (re) {
        case 1:fflush(stdin);total_user(user);break;//
        case 2:fflush(stdin);total_age(user);break;//
        case 0:fflush(stdin);menu(user);break;//返回上级
        }
    }
    else { printf(" 输入错误!\n");sum_menu(user); }

}

//================根据条件查询相关==================
//条件查询主菜单
void factor_menu(club* user) {

    int re = 0;

    printf("\n======== 车友信息查询菜单 ========\n");
    printf(" [---- Press 1 :根据性别查询----]\n");
    printf(" [---- Press 2 :根据车款查询----]\n");
    printf(" [---- Press 3 :根据姓名查询----]\n");
    printf(" [---- Press 4 :根据年龄查询----]\n");
    printf(" [---- Press 5 :根据入会时间查询]\n");
    printf(" [---- Press 0 :返回上级菜单----]\n");

    printf(" 请输入您的选择:");scanf("%d", &re);
    if (re >= 0 && re < 6) {
        switch (re) {
        case 1:fflush(stdin);find_sex(user);break;//根据性别查询信息
        case 2:fflush(stdin);find_style(user);break;//根据款式查询信息
        case 3:fflush(stdin);find_name(user);break;//根据姓名查询信息
        case 4:fflush(stdin);find_age(user);break;//根据年龄查询信息
        case 5:fflush(stdin);find_time(user);break;//根据入会时间查询信息
        case 0:fflush(stdin);menu(user);break;//返回上级菜单
        }
    }
    else { printf(" 输入错误!\n");factor_menu(user); }
}
//根据性别查询信息 
void find_sex(club* user) {
    readuser(user);
    int flag = -1;
    char cx[20];
    printf(" 请输入对应要查询的信息:");

    scanf("%s", cx);
    for (int i = 0;i < NUM - 1;i++) {
        if (strcmp(user[i].sex, cx) == 0) {
            flag = i;
            printf(" 会员卡号:%s", user[i].id);
            printf(" 姓名:%s", user[i].name);
            printf(" 性别:%s", user[i].sex);
            printf(" 年龄:%s", user[i].age);
            printf(" 职业:%s", user[i].job);
            printf(" 驾龄:%s\n", user[i].drive_age);
            printf(" 车辆品牌:%s", user[i].brand);
            printf(" 车款:%s", user[i].style);
            printf(" 颜色:%s", user[i].color);
            printf(" 入会时间:%s\n", user[i].time_user);
        }
    }
    if (flag == -1) printf(" 很抱歉没有查询到您所需的信息!");

}
//根据款式查信息
void find_style(club* user) {
    readuser(user);
    int flag = -1;
    char cx[20];
    printf(" 请输入对应要查询的信息:");

    scanf("%s", cx);
    for (int i = 0;i < NUM - 1;i++) {
        if (strcmp(user[i].style, cx) == 0) {
            flag = i;
            printf(" 会员卡号:%s", user[i].id);
            printf(" 姓名:%s", user[i].name);
            printf(" 性别:%s", user[i].sex);
            printf(" 年龄:%s", user[i].age);
            printf(" 职业:%s", user[i].job);
            printf(" 驾龄:%s\n", user[i].drive_age);
            printf(" 车辆品牌:%s", user[i].brand);
            printf(" 车款:%s", user[i].style);
            printf(" 颜色:%s", user[i].color);
            printf(" 入会时间:%s\n", user[i].time_user);

        }
    }
    if (flag == -1) printf(" 很抱歉没有查询到您所需的信息!");
}
//根据姓名查信息
void find_name(club* user) {
    readuser(user);
    int flag = -1;
    char cx[20];
    printf(" 请输入对应要查询的信息:");

    scanf("%s", cx);
    for (int i = 0;i < NUM - 1;i++) {
        if (strcmp(user[i].name, cx) == 0) {
            flag = i;
            printf(" 会员卡号:%s", user[i].id);
            printf(" 姓名:%s", user[i].name);
            printf(" 性别:%s", user[i].sex);
            printf(" 年龄:%s", user[i].age);
            printf(" 职业:%s", user[i].job);
            printf(" 驾龄:%s\n", user[i].drive_age);
            printf(" 车辆品牌:%s", user[i].brand);
            printf(" 车款:%s", user[i].style);
            printf(" 颜色:%s", user[i].color);
            printf(" 入会时间:%s\n", user[i].time_user);

        }
    }
    if (flag == -1) printf(" 很抱歉没有查询到您所需的信息!");
}
//根据年龄查信息
void find_age(club* user) {
    readuser(user);
    int flag = -1;
    char cx[20];
    printf(" 请输入对应要查询的信息:");

    scanf("%s", cx);
    for (int i = 0;i < NUM - 1;i++) {
        if (strcmp(user[i].age, cx) == 0) {
            flag = i;
            printf(" 会员卡号:%s", user[i].id);
            printf(" 姓名:%s", user[i].name);
            printf(" 性别:%s", user[i].sex);
            printf(" 年龄:%s", user[i].age);
            printf(" 职业:%s", user[i].job);
            printf(" 驾龄:%s\n", user[i].drive_age);
            printf(" 车辆品牌:%s", user[i].brand);
            printf(" 车款:%s", user[i].style);
            printf(" 颜色:%s", user[i].color);
            printf(" 入会时间:%s\n", user[i].time_user);

        }
    }
    if (flag == -1) printf(" 很抱歉没有查询到您所需的信息!");
}
//根据入会时间查信息
void find_time(club* user) {
    readuser(user);
    int flag = -1;
    char cx[BUFLEN];
    printf(" 请输入对应要查询的信息:");

    scanf("%s", cx);
    for (int i = 0;i < NUM - 1;i++) {
        if (strcmp(user[i].time_user, cx) == 0) {
            flag = i;
            printf(" 会员卡号:%s", user[i].id);
            printf(" 姓名:%s", user[i].name);
            printf(" 性别:%s", user[i].sex);
            printf(" 年龄:%s", user[i].age);
            printf(" 职业:%s", user[i].job);
            printf(" 驾龄:%s\n", user[i].drive_age);
            printf(" 车辆品牌:%s", user[i].brand);
            printf(" 车款:%s", user[i].style);
            printf(" 颜色:%s", user[i].color);
            printf(" 入会时间:%s\n", user[i].time_user);

        }
    }
    if (flag == -1) printf(" 很抱歉没有查询到您所需的信息!");
}

//================顶层菜单里的内容==================
//车友信息的主菜单
void menu(club* user) {
    int re = 0;

    printf("\n======== 欢迎进入车友菜单 ========\n");
    printf(" [---- Press 1 :显示车友信息----]\n");
    printf(" [---- Press 2 :车友信息管理----]\n");
    printf(" [---- Press 3 :车友人数统计----]\n");
    printf(" [---- Press 4 :根据条件查询----]\n");

    printf(" 请输入您的选择:");scanf("%d", &re);
    if (re > 0 && re < 5) {
        switch (re) {
        case 1:fflush(stdin);showid(user);break;//按车友卡号id显示车友信息
        case 2:fflush(stdin);managemenu(user);break;//车友信息管理
        case 3:fflush(stdin);sum_menu(user);break;//车友人数统计
        case 4:fflush(stdin);factor_menu(user);break;//根据条件查询
        }
    }
    else { printf(" 输入错误!\n");menu(user); }
}
//满意度调查函数
void user_result(club* user) {
    readuser(user);
    int flag = -1;
    char id[20], satis[20],feel[401];

    printf(" 请输入您的id:"); scanf("%s", id);
    for (int i = 0;i < NUM - 1;i++) {
        if (strcmp(user[i].id, id) == 0) {
            flag = i;
            printf(" 请您为俱乐部打分(1-10):"); scanf("%s", satis);
            printf(" 请输入您的个人感想:"); scanf("%s", feel);
            printf(" 感谢您的填写,再见!");

            FILE* fp = fopen(RESULT_FILE, "a+");
            fputs(id, fp);  fputs(" ", fp);
            fputs(satis, fp);  fputs(" ", fp);
            fputs(feel, fp);  fputs("\n", fp);
            fclose(fp);
        }
    }
    if (flag == -1) printf(" 查无此卡,请加入会员!");

}

//================顶层菜单和主函数==================
//进入程序的最外层菜单
int topmenu() {
    int re = -1, password;
    printf(" 请输入系统口令:");scanf("%d", &password);
    if (password == PASSWORD) {
        printf("\n======== 欢迎进入车友系统 ========\n");
        printf(" [---- Press 1 :进入菜单----]\n");
        printf(" [---- Press 2 :填写问卷----]\n");
        printf(" [---- Press 0 :退出系统----]\n");
        printf(" 请输入您的选择:");
        scanf("%d", &re);
        while (!(re >= 0 && re < 3)) {
            printf(" 输入有误!请重新输入!");
            printf("\n======== 欢迎进入车友系统 ========\n");
            printf(" [---- Press 1 :进入菜单----]\n");
            printf(" [---- Press 2 :填写问卷----]\n");
            printf(" [---- Press 0 :退出系统----]\n");
            printf(" 请输入您的选择:");
            scanf("%d", &re);
        }
        return re;
    }
    else printf(" 您的口令有误,请确认后再试!");
    return -1;
}

int main(void) {

    club user[NUM];//初始化车友实体
    init(user);//调用初始化函数进行初始化
    //printf("Go:\n");

    int re_menu = 0;//接收menu()的返回值
    re_menu = topmenu();//menu()进入系统并返回要进行的操作

    if (re_menu == 1) {
        printf("\n 您将进入车友菜单!\n");
        menu(user);//调用车友菜单
    }
    else if (re_menu == 2) {
        printf("\n 您将进行问卷调查的填写!\n\n");
        user_result(user);//调用问卷填写函数
    }
    else if (re_menu == 0) {
        exit(0);
    }

    printf("\n");
    system("pause");
    return 0;
}

五、测试总结

001 qwe male 28 coder 2 maserati ghibli black 218-11-27
002 qqq female 33 lsp 5 maserati ghibli black 2019-11-27
003 www male 35 qwe 6 maserati ghibli yellow 2019-11-27
004 eee female 43 lkj 5 maserati ghibli red 2019-11-27
005 eee female 23 lkj 3 mahh ghi blue 2020-11-27
006 hhs male 56 haha 6 car 20 white 2020-11-27
010 nju male 35 tec 5 www 19 green 2020-11-27
以上是测试的所有初始数据(没有依据,自己瞎写的),数据会随测试发生变化,必要时,会截图对比,但在两次不同的测试之间不会进行用户数据的初始化。
注:上述数据分别代表:会员id、姓名、性别、年龄、职业、驾龄、车辆品牌、车款、颜色、入会时间。

程序运行的部分就不贴图啦。有兴趣的话,大家自己运行一下吧~

六、其他

以上以及博客中含有在校整理字样的博客内容,均是本人本科在校学习期间所写的代码,源文件以及数据文件等在个人主页资源区可以获取。本人水平很低,大佬轻喷。整理出来是为了帮助初学者学习的过程中,在有需要的情况下能够有所参考。再次声明:仅供学习交流使用。大家有什么问题,欢迎留言~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值