用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

实现一个简单的学生信息管理系统(具有”增删改查“的功能)

2023-11-30 作者: FN举报

[c]代码库

#include <stdio.h>
#include <windows.h>
 
#define SYSTEM_English_TITLE "student_manage_system"
#define SYSTEM_Chinese_TITLE "SMS管理系统"
#define SYSTEM_VERSION "1.0.1"
#define students_data_capacity 150 //存储学生信息的数组容量
 
// 函数申明
void Input_Student_Data(); // 实现添加学生信息
void Print_Student_Data(int *students_code); // 实现显示学生信息
void Modify_Student_Data(int *students_code);  //修改学生信息
void Delete_Student_Data(int *students_code, int *students_capacity); //删除学生信息
 
// 学生信息结构体
typedef struct{
    char student_ID[128]; // 学生学号
    char student_name[64]; // 学生姓名
    char student_gender[30]; // 学生性别
    int student_age[10]; // 学生年龄
    char student_addr[128]; // 学生地址
    char student_phone_number[128]; // 学生电话号码
    char student_E_maill[128]; // 学生电子邮箱
} Student_Data;
 
// 采用结构体数组的形式存储学生的信息
Student_Data students_data[students_data_capacity];
int Student_Data_Number = 1; // 添加的学生个数存储号码
 
//添加学生信息函数
void Input_Student_Data(){
    int return_scanf_new_insert_student_data_student_age;
    Student_Data new_insert_student_data;
    printf("请输入学生的学号:"); scanf("%s",new_insert_student_data.student_ID);
    printf("请输入学生的姓名:"); scanf("%s",new_insert_student_data.student_name);
    printf("请输入学生的性别:"); scanf("%s",new_insert_student_data.student_gender);
    while(1){
        printf("请输入学生的年龄:");
        return_scanf_new_insert_student_data_student_age = scanf("%d",&(new_insert_student_data.student_age));
        if (return_scanf_new_insert_student_data_student_age == 0){
            printf("[-]年龄必需为数字!\n");
            while(getchar() != '\n'); //清空上一个缓冲区
        }else{
            break;
        }
    }
    printf("请输入学生的地址:"); scanf("%s",new_insert_student_data.student_addr);
    printf("请输入学生的电话:"); scanf("%s",new_insert_student_data.student_phone_number);
    printf("请输入学生的邮箱:"); scanf("%s",new_insert_student_data.student_E_maill);
    students_data[Student_Data_Number] = new_insert_student_data;
    printf("[*]数据录入成功!\n\n");
    Student_Data_Number++; // 将数组指向下一个空间存储下一个学生的信息
     
}
 
//显示学生信息函数
void Print_Student_Data(int *students_code){
    printf("*********************\n");
    printf("当前代码:%d\n",*students_code);
    printf("[+]学号:%s\n",students_data[*students_code].student_ID);
    printf("[+]姓名:%s\n",students_data[*students_code].student_name);
    printf("[+]性别:%s\n",students_data[*students_code].student_gender);
    printf("[+]年龄:%d\n",*(students_data[*students_code].student_age));
    printf("[+]地址:%s\n",students_data[*students_code].student_addr);
    printf("[+]电话:%s\n",students_data[*students_code].student_phone_number);
    printf("[+]邮箱:%s\n",students_data[*students_code].student_E_maill);
    printf("*********************\n");
}
 
//修改学生信息函数
void  Modify_Student_Data(int *students_code){
    printf("请修改学生的学号:"); scanf("%s",students_data[*students_code].student_ID);
    printf("请修改学生的姓名:"); scanf("%s",students_data[*students_code].student_name);
    printf("请修改学生的性别:"); scanf("%s",students_data[*students_code].student_gender);
    while (1){
        printf("请修改学生的年龄:"); int return_scanf_students_data_students_code_students_age = scanf("%d",students_data[*students_code].student_age);
        if (return_scanf_students_data_students_code_students_age == 0){
            printf("[-]修改的年龄必须要为整数!\n");
            while(getchar() != '\n');
        }
        else{
            break;
        }
    }
    printf("请修改学生的地址:"); scanf("%s",students_data[*students_code].student_addr);
    printf("请修改学生的电话:"); scanf("%s",students_data[*students_code].student_phone_number);
    printf("请修改学生的邮箱:"); scanf("%s",students_data[*students_code].student_E_maill);
    printf("[*]学生数据已修改成功\n!");
}
 
//删除学生信息函数 【采用独家删除指定元素数组算法】
void Delete_Student_Data(int *students_code, int *students_capacity){
    printf("删除第%d号学生信息...\n",*students_code);    
    int find_code = 0; // 是否找到该学生的的判断代码
    // 定义搜寻该学生
    for (int i = 0; i <= *(students_code) ; i++){
        if (i == *(students_code) && i <= *(students_capacity)){
            printf("成功找到数组!删除数据如下:\n");
            printf("学号:%s\n",students_data[i].student_ID);
            printf("姓名:%s\n",students_data[i].student_name);
            printf("性别:%s\n",students_data[i].student_gender);
            printf("年龄:%d\n",*(students_data[i].student_age));
            printf("地址:%s\n",students_data[i].student_addr);
            printf("电话:%s\n",students_data[i].student_phone_number);
            printf("邮箱:%s\n",students_data[i].student_E_maill);
            find_code = 1; // 标记已经找到该学生
            //修改操作
            for (int j = i; j <= *(students_capacity)-1; j++){
                students_data[j] = students_data[j+1];
            }
            break;
        }
        else{
            printf("[+]搜索中:%d...\n",i);
            Sleep(50);
        }
    }
    if (find_code){ 
        Student_Data_Number--;
        printf("[+]删除成功!已将所有的学生班级代号向前移动一个位置\n");
    }
    else {
        printf("号码越界,未找到该学生!【注意:该系统容量为:%d】\n",students_data_capacity);
    }
     
}
 
int main(){
    printf("系统名称:%s\t%s\n",SYSTEM_Chinese_TITLE,SYSTEM_English_TITLE);
    printf("=====================================================\n");
    printf("当前管理系统版本:v%s\n",SYSTEM_VERSION);
    printf("-------------------------------\n");
    printf("系统功能序列:\n");
    printf("1.录入数据\n");
    printf("2.显示数据\n");
    printf("3.修改数据\n");
    printf("4.删除数据\n");
    printf("5.退出系统\n");
    printf("=====================================================\n");
     
    while (1)
    
        int select_code; // 功能选择代码
        int student_code_1; // 学生查找代码
        int student_code_2; // 学生修改代码
        int student_code_3; // 学生删除代码
        int return_scanf_select_code; // 判断用户选择的功能是否为数字所返回的值,只要返回了0则代表用户输入的功能数据类型不正确
        while(1){
            printf("请输入功能序列号:");
            return_scanf_select_code = scanf("%d",&select_code); //scanf 函数的读取输入后,输入缓冲区可能残留字符 
            if (return_scanf_select_code == 0){
                printf("[-]请输入整数的功能序列号!\n");
                while(getchar() != '\n'); //使用getchar()来读取上一个缓冲区的字符直到读取到'\n'为止,目的就是清空缓冲区 
            }
            else{
                break;
            }
        }
        switch (select_code){
            case 1:
                printf("\n当前选择:【录入数据】\n");
                int capacity_students_data = sizeof(students_data) / sizeof(students_data[0]); 
                printf("------当前系统存储的学生容量:%d个【第0号位置已占用一个空间】实际系统容量:%d个------\n",capacity_students_data+1,capacity_students_data);
                Input_Student_Data();
                break;
            case 2:
                printf("\n当前选择:【显示数据】\n");
                printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
                while (1){
                    printf("请输入你要查看的学生班级代号:"); scanf("%d",&student_code_1);
                    if  (student_code_1 > students_data_capacity+1){
                        printf("[-]系统检测到该数据存储中暂未有该序号的学生信息,请输入%d以内的学生代码,请重新查询!\n",(students_data_capacity+1));
                        while(getchar() != '\n');
                    }
                    else{
                        break;
                    }
                }
                Print_Student_Data(&student_code_1);
                break;
            case 3:
                printf("\n当前选择:【修改数据】\n");
                printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
                while (1){
                    printf("请输入你要修改的学生班级代号:"); int return_scanf_student_code_2 = scanf("%d",&student_code_2);
                    if (student_code_2 > students_data_capacity+1 || return_scanf_student_code_2 == 0){
                        printf("[-]系统检测到该数据存储中暂未有该序号的学生信息,请输入%d以内的学生代码,请重新选择!\n",(students_data_capacity+1));
                        while(getchar() != '\n');
                    }
                    else{
                        break;
                    }
                }
                Modify_Student_Data(&student_code_2);
                break;
            case 4: // bug修改:对scanf进行检查
                printf("\n当前选择:【删除数据】\n");
                int student_capacity = sizeof(students_data) / sizeof(students_data[0]);
                printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
                 
                /*存在bug*/
                while (1){
                    printf("请输入你要删除的学生班级代号:"); int return_scanf_student_code_3 = scanf("%d",&student_code_3);
                    if(return_scanf_student_code_3 == 0){
                        printf("[-]请输入有效的数字代号!\n");
                        while(getchar() != '\n');
                    }
                    else{
                        break;
                    }
                }
                Delete_Student_Data(&student_code_3,&student_capacity);        
                break;
            case 5:
                printf("\n\n------系统正在退出,欢迎下次访问SMS管理系统!------\n");
                Sleep(3000);
                exit(0);
            default:
                printf("[-]输入错误!请重新输入!\n");
                break;
        }
    }
    return 0;
}

[代码运行效果截图]


实现一个简单的学生信息管理系统(具有”增删改查“的功能)

[源代码打包下载]




网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...