项目练习:学生管理系统

        这是一个简单的小项目练习,编写一个学生管理系统,里面有学生的学号、姓名、性别、考试成绩,以及用C语言实现这些数据的增删改查。

1.设计思路

        首先创建三个文件,一个是我们的主函数main.c,然后实现功能的函数student.c,以及包含这些函数的头文件student.h。

        在主函数中我们需要表明实现增加、查找、修改、删除、排序等功能,通过switch选择语句实现。这些函数在student.c中进行编写。在student.h函数中定义结构体变量,以及对所有函数进行声明。student.h文件如下。

#ifndef __STUDENT_H__
#define __STUDENT_H__

#define N 40

#include <stdio.h>
#include <string.h>

//学生信息的结构体
typedef struct __STUDENT{
    int id;
    char sex[16];
    char name[32];
    int score;
}stu_t;

//班级信息的结构体
typedef struct __CLASS{
    stu_t person[N];//每个学生的信息
    int count;//记录已有的人数
}class_t;

//函数的声明
void print_menu();
void insert_student(class_t *my_class);
void search_student(class_t *my_class);
void modify_student(class_t *my_class);
void delete_student(class_t *my_class);
void sort_student(class_t *my_class);
void print_student(class_t *my_class);

#endif

student.c的代码如下

#include "student.h"
//打印菜单的函数
void print_menu(){
    printf("-------------------------------------------\n");
    printf("| 1.添加 2.查找 3.修改 4.删除 5.排序 6.退出 |\n");
    printf("-------------------------------------------\n");
    printf("请输入你的选择:");
}

//添加学员信息的函数
void insert_student(class_t *my_class){
    //判断人数是否已满
    if(N==my_class->count){
        printf("班级人数已经满了,添加失败!\n");
        return;
    }
    printf("请输入新的学员的信息(学号 姓名 性别 成绩):\n");
    scanf("%d%s%s%d",&my_class->person[my_class->count].id,
                     my_class->person[my_class->count].name,
                     my_class->person[my_class->count].sex,
                     &my_class->person[my_class->count].score);
    my_class->count++;
    printf("学员信息插入成功\n");
}
    
    
    
//查找学员信息的函数--根据id查找
void search_student(class_t *my_class){
    int id =0;
    int i=0;
    printf("请输入你想查找的学号:");
    scanf("%d",&id);
    //遍历数组判断是否有这个人
    for(i=0;i<my_class->count;i++){
        if (id=my_class->person[i].id) break;
    }
    if (i<my_class->count)
    {
        printf("%-8d %-10s %-10s %-3d\n",my_class->person[i].id,
                                       my_class->person[i].name,
                                       my_class->person[i].sex,
                                       my_class->person[i].score);
    }
    else if(i==my_class->count){
        printf("查无此人!\n");
    }
    
    return;
}

//修改学员信息的函数--根据id修改name和score
void modify_student(class_t *my_class){
    int id =0;
    int i=0;
    printf("请输入你修改的学号:");
    scanf("%d",&id);
    //遍历数组判断是否有这个人
    for(i=0;i<my_class->count;i++){
        if (id=my_class->person[i].id) break;
    }
    if (i<my_class->count)
    {
        printf("请输入你想要修改的信息(姓名 性别 成绩):");
        scanf("%s%s%d",my_class->person[i].name,
                       my_class->person[i].sex,
                       &my_class->person[i].score);
        printf("修改成功");
    }
    else if(i==my_class->count){
        printf("查无此人!\n");
    }
    
    return;
}

//删除学员信息的函数--根据id删除
void delete_student(class_t *my_class){
    int id =0;
    int i=0;
    int j=0;
    printf("请输入你删除的学号:");
    scanf("%d",&id);
    //遍历数组判断是否有这个人
    for(i=0;i<my_class->count;i++){
        if (id=my_class->person[i].id) break;
    }
    if (i<my_class->count)
    {
        //执行删除的操作  把第i位后面的元素依次向前移动一步
        for(j = i; j < my_class->count-1; j++){
            my_class->person[j] = my_class->person[j+1];//结构体变量可以直接相互赋值
        }
        my_class->count--;
        printf("学员信息删除成功..\n");
    }
    else if(i==my_class->count){
        printf("查无此人!\n");
    }
    
    return;
}

//删除学员信息的函数--根据score降序排序
void sort_student(class_t *my_class){
    int i=0;
    int j=0;
    stu_t temp;
    for(i=0;i<my_class->count-1;i++){
        for(j=0;j<my_class->count-1-i;j++){
            if(my_class->person[j].score<my_class->person[j+1].score){
                temp=my_class->person[j];
                my_class->person[j]=my_class->person[j+1];
                my_class->person[j+1]=temp;
            }
        }
    }
    printf("排序完成\n");
    return;
}

//打印所有学员信息的函数--为了看现象用的
void print_student(class_t *my_class){
    //需要遍历所有的学生信息
    printf("\n");
    for(int i=0;i<my_class->count;i++){
        printf("%-8d %-10s %-10s %-3d\n",my_class->person[i].id,
                                       my_class->person[i].name,
                                       my_class->person[i].sex,
                                       my_class->person[i].score);
                                    
    }
    printf("\n");
}

main.c的代码如下

#include "student.h"

int main(int argc, const char *argv[]){
    printf("欢迎使用学生管理系统\n");
    printf("本系统由李小蓝制作,用于学习交流\n");
    class_t my_class;
    my_class.count=0;
    int choose=0;
    while(1){
        print_menu();
        scanf("%d",&choose);
        switch (choose){
            case 1:
                insert_student(&my_class);
                break;
            case 2:
                search_student(&my_class);
                break;
            case 3:
                modify_student(&my_class);
                break;
            case 4:
                delete_student(&my_class);
                break;
            case 5:
                sort_student(&my_class);
                break;
        }
        if(6==choose) break;
        printf("更新后的学生信息:\n");
        print_student(&my_class);
    }
    printf("欢迎再次使用该系统!\n");
    return 0;
}

数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值