栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C 语言之学生管理系统-多文件编程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C 语言之学生管理系统-多文件编程

总体设计

        通过c语言来设计一款学生管理系统以实现增删查改排等功能。

效果展示 增:

 删:

 查:

 排:

 退:

 系统源码

stu_sys.c

#include "stu.h"
#include 
#include 

int main(int argc, const char* argv[])
{
    int chose;
    // 1.定义出来班级
    class_t cls;

    // 2.初始化班级内学生的个数
    cls.n = -1;

    class_t* p1;
    //分配空间
    p1 = malloc(sizeof(class_t));


    
    while (1) {
        puts("***************欢迎进入学生管理系统********************");
        puts("**1.添加 2.删除 3.修改 4.查询 5.排序 6.退出************");
        puts("*******************************************************");
        printf("input chose > ");
        scanf("%d", &chose);
        while ((getchar()) != 'n')
            ;

        switch (chose) {
        case ADDSTU:
            cls.n = add_stu(p1, cls.n);
            break;
        case DELSTU:
            cls.n=del_stu(p1, cls.n);
            break;
        case MODSTU:
            mod_stu(p1, cls.n);
            break;
        case CHKSTU:
            chk_stu(p1, cls.n);
            break;
        case SOTSTU:
            sot_stu(p1, cls.n);
            break;
        case QITSTU:
            printf("退出学生管理系统....n");
            return -1;
        }
    }

    return 0;
}

stu.c

#include "stu.h"
#include 
#include 
#include 

int add_stu(class_t* p1, int n)
{
    //1.检查班级人数是否满员
    if (n >= 29) {
        printf("班级已满员,无法进行添员操作!n");
        return -1;
    }
    //2.输入人员姓名,性别,分数
    int ret = 0;
    printf("请分别输入添加学生的姓名,性别,成绩(eg.zhangsan m 90):");
    ret = scanf("%s %c %d", p1->stu[n + 1].name, &p1->stu[n + 1].sex, &p1->stu[n + 1].score);
    //3.检查参数
    if (ret != 3) {
        printf("input error,try againn");
        return -1;
    }
    while ((getchar() != 'n'))
        ;
    //4.班级当前人数加1
    int new = n + 1;
    //5.添加成功返回主页面
    printf("添加成功,返回主页面!n");
    return new;
}
int chk_stu(class_t* p1, int n)
{
    //1.检查班级是否有人
    if (n <= -1) {
        printf("班级无人,无法进行查找操作!n");
        return -1;
    }
    //2.将班级成员列出来
    int j = 0;
    for (j = 0; j <= n; j++) {
        printf("%sn", p1->stu[j].name);
    }
    //3.输入查找人员信息的姓名
    int ret = 0;
    printf("请分别输入查找学生的姓名(eg.zhangsan):");
    char s[20] = { 0 };
    ret = scanf("%s", s);
    //3.检查参数
    if (ret != 1) {
        printf("input error,try againn");
        return -1;
    }
    while ((getchar() != 'n'))
        ;
    //5.查找
    int i = 0;
    int flag = 0;
    for (i = 0; i <= n; i++) {
        if (!(strcmp(p1->stu[i].name, s))) {
            flag = 1;
            break;
        }
    }
    //6.查找结果
    if (flag == 1) {
        printf("查找成功,该生信息如下!n");
        printf("%s,%c,%dn", p1->stu[i].name, p1->stu[i].sex, p1->stu[i].score);
    } else if (flag == 0) {
        printf("查找失败,返回主页面!n");
    }
    return 0;
}
int del_stu(class_t* p1, int n)
{
    //1.检查班级是否有人
    if (n <= -1) {
        printf("班级无人,无法进行删除操作!n");
        return -1;
    }
    //2.将班级成员列出来
    int j = 0;
    for (j = 0; j <= n; j++) {
        printf("%sn", p1->stu[j].name);
    }
    //3.输入删除人员信息的姓名
    int ret = 0;
    printf("请输入删除学生的姓名(eg.zhangsan):");
    char s[20] = { 0 };
    ret = scanf("%s", s);
    //3.检查参数
    if (ret != 1) {
        printf("input error,try againn");
        return -1;
    }
    while ((getchar() != 'n'))
        ;
    //5.查找
    int i = 0;
    int flag = 0;
    for (i = 0; i <= n; i++) {
        if (!(strcmp(p1->stu[i].name, s))) {
            flag = 1;
            break;
        }
    }
    //6.删除操作
    int m = n;
    if (flag == 1) {
        printf("开始删除......!n");
        for (m = n; i <= m; m--) {
            strcpy(p1->stu[i].name, p1->stu[i + 1].name);
            p1->stu[i].sex = p1->stu[i + 1].sex;
            p1->stu[i].score = p1->stu[i + 1].score;
        }
        printf("删除成功!n");
    } else if (flag == 0) {
        printf("请输入正确的姓名!n");
    }
    //7.班级人数-1
    int new = n - 1;
    return new;
}
int mod_stu(class_t* p1, int n)
{
    //1.检查班级是否有人
    if (n <= -1) {
        printf("班级无人,无法进行删除操作!n");
        return -1;
    }
    //2.将班级成员列出来
    int j = 0;
    for (j = 0; j <= n; j++) {
        printf("%sn", p1->stu[j].name);
    }
    //3.输入修改人员信息的姓名
    int ret = 0;
    printf("请输入需要修改学生的姓名(eg.zhangsan):");
    char s[20] = { 0 };
    ret = scanf("%s", s);
    //3.检查参数
    if (ret != 1) {
        printf("input error,try againn");
        return -1;
    }
    while ((getchar() != 'n'))
        ;
    //5.查找
    int i = 0;
    int flag = 0;
    for (i = 0; i <= n; i++) {
        if (!(strcmp(p1->stu[i].name, s))) {
            flag = 1;
            break;
        }
    }
    //6.修改操作
    int m = n;
    int name = 0;
    int sex = 0;
    int score = 0;
    if (flag == 1) {
        printf("是否修改姓名:1(修改)/0(不修改)");
        scanf("%d", &name);
        if (1 == name) {
            char newname[20] = { 0 };
            printf("请输入该生新姓名:");
            scanf("%s", newname);
            strcpy(p1->stu[i].name, newname);
            printf("姓名修改成功!n");
        }
        while ((getchar()) != 'n')
            ;

        printf("是否修改性别:1(修改)/0(不修改)");
        scanf("%d", &sex);
        while ((getchar()) != 'n')
            ;
        if (1 == sex) {
            printf("请输入该生新性别:");
            scanf("%c", &p1->stu[i].sex);
            printf("性别修改成功!n");
        }
        while ((getchar()) != 'n')
            ;
        printf("是否修改成绩:1(修改)/0(不修改)");
        scanf("%d", &score);
        while ((getchar()) != 'n')
            ;
        if (1 == score) {
            printf("请输入该生新成绩:");
            scanf("%d", &p1->stu[i].score);
            printf("成绩修改成功!n");
        }
    } else if (flag == 0) {
        printf("请输入正确的姓名!n");
    }
    return 0;
}
int sot_stu(class_t* p1, int n)
{
    //1.检查班级是否有人
    if (n <= -1) {
        printf("班级无人,无法进行删除操作!n");
        return -1;
    }
    //2.排序
    int j = 0;
    int i = 0;
    int c = 0;
    int tmp=0;
    char s1[20]={0};
    for (c = 0; c <= n-1 ; c++) {
        for (i = 0; i <= n-c-1; i++) {
            if((p1->stu[i].score)>(p1->stu[i+1].score)){
                tmp=p1->stu[i].score;
                p1->stu[i].score=p1->stu[i+1].score;
                p1->stu[i+1].score=tmp;
                strcpy(s1,p1->stu[i].name);
                strcpy(p1->stu[i].name,p1->stu[i+1].name);
                strcpy(p1->stu[i+1].name,s1);
            }
        } 
    }
    //3.输出
    printf("从分数低到分数高排序为:n");
    int k = 0;
    for (k = 0; k <= n; k++) {
        printf("%s,%dn", p1->stu[k].name,p1->stu[k].score);
    }
    return 0;
}

stu.h

#ifndef __STU_H__
#define __STU_H__

#define ADDSTU 1
#define DELSTU 2
#define MODSTU 3
#define CHKSTU 4
#define SOTSTU 5
#define QITSTU 6

typedef struct {
    char name[20]; //姓名 
    char sex;      //性别
    int score;     //分数
}stu_t;

typedef struct{
    stu_t stu[30]; //班级内能容纳的学生的个数
    int n;         //班级内当前学生的个数
}class_t;



int add_stu( class_t* p1,int n);
int chk_stu(class_t* p1,int n);
int del_stu(class_t* p1,int n);
int mod_stu(class_t* p1, int n);
int sot_stu(class_t* p1, int n);


#endif

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号