学生信息管理系统

第一章 概  述

一、设计的背景与意义

学生信息管理系统设计的背景是为了更高效地管理学校或教育机构的学生信息,包括学生的个人资料、成绩、考勤、课程安排等。通过该系统,学校可以更方便地查找和更新学生信息,为老师和管理人员提供更便捷的工作方式。
        这样的系统的意义在于提高学校管理的效率和准确性,减少人工操作的错误和成本。同时,学生信息管理系统也可以提供数据分析和报告功能,帮助学校更好地了解学生的整体情况,为学生提供更有针对性的教学和管理服务。

二、设计的目标

加深对结构化理论和基本知识的理解,掌握使用C语言进行结构化程序设计的基本方法,提高学生的编程能力及综合运用C语言解决实际问题的能力。综合运用C语言与结构化程序开发方法,分析、设计和编写一个“学生信息管理系统”,并满足以下要求:

1.“学生信息管理系统”需要提供以下基本功能:

(1)能够从外部数据文件读入学生信息,并以数据文件的形式存储学生信息;

(2)能够增加学生信息,按学号修改、删除学生的信息;

(3)能够按学号、姓名等方式查询学生信息;

(4)能够根据条件对学生信息进行排序浏览;

(5)能够根据条件统计学生人数;

(6)查看所有学生信息。

2.由顶而下理清系统功能需求,合理划分系统功能模块,绘制系统功能模块图。

3.正确抽象和定义函数模块,各函数功能明确、层次清晰。

4.根据学生数据的特点和操作需求,合理定义数据类型,选择特定的数据组织及数据存储方式,正确设计功能算法,并完成代码编写。

5.系统以菜单的方式提供人机交互。



第二章  相关技术

一、开发环境

系统以C语言作为开发语言,以Dev C++为开发环境。

二、C语言


/*
源代码:
数科3班 谢杰 2023236072 
综合运用C语言与结构化程序开发方法,分析、设计和编写一个“学生信息管理系统”,并满足以下要求:
1.“学生信息管理系统”需要提供以下基本功能:
(1)能够从外部数据文件读入学生信息,并以数据文件的形式存储学生信息;
(2)能够增加学生信息,按学号修改、删除学生的信息;
(3)能够按学号、姓名等方式查询学生信息;
(4)能够根据条件对学生信息进行排序浏览;
(5)能够根据条件统计学生人数;
(6)查看所有学生信息。
2.由顶而下理清系统功能需求,合理划分系统功能模块,绘制系统功能模块图。
3.正确抽象和定义函数模块,各函数功能明确、层次清晰。
4.根据学生数据的特点和操作需求,合理定义数据类型,选择特定的数据组织及数据存储方式,正确设计功能算法,并完成代码编写。
5.系统以菜单的方式提供人机交互。
6.要求主页面显示:
 1.录入学生信息
 2.查找学生信息
 3.删除学生信息
 4.修改学生信息
 5.插入学生信息
 6.排序学生信息
 7.统计学生总数
 8.显示所有学生信息
 0.退出系统
*/


/*
数科3班 谢杰 2023236072 
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STUDENT_NUM 100 // 最大学生数
#define FILE_NAME "student.txt" // 数据文件名

// 学生信息结构体
typedef struct {
    char id[20]; // 学号
    char name[20]; // 姓名
    int age; // 年龄
    float score; // 成绩
} Student;

// 学生信息数组
Student students[MAX_STUDENT_NUM];
int studentNum = 0; // 学生数

// 从文件中读取学生信息
void readFromFile() {
    FILE *fp = fopen(FILE_NAME, "r");
    if (fp == NULL) {
        printf("无法打开文件 %s\n", FILE_NAME);
        return;
    }
    while (!feof(fp)) {
        Student student;
        fscanf(fp, "%s %s %d %f", student.id, student.name, &student.age, &student.score);
        students[studentNum++] = student;
    }
    fclose(fp);
}

// 将学生信息写入文件
void writeToFile() {
    FILE *fp = fopen(FILE_NAME, "w");
    if (fp == NULL) {
        printf("无法打开文件 %s\n", FILE_NAME);
        return;
    }
    for (int i = 0; i < studentNum; i++) {
        fprintf(fp, "%s %s %d %f\n", students[i].id, students[i].name, students[i].age, students[i].score);
    }
    fclose(fp);
}

// 添加学生信息
void addStudent() {
    if (studentNum >= MAX_STUDENT_NUM) {
        printf("学生数已达到最大值,无法添加!\n");
        return;
    }
    Student student;
    printf("请输入学生信息(学号 姓名 年龄 成绩):");
    scanf("%s %s %d %f", student.id, student.name, &student.age, &student.score);
    students[studentNum++] = student;
    printf("添加成功!\n");
}

// 根据学号查找学生信息
void findStudentById() {
    char id[20];
    printf("请输入要查找的学生学号:");
    scanf("%s", id);
    for (int i = 0; i < studentNum; i++) {
        if (strcmp(students[i].id, id) == 0) {
            printf("学号\t姓名\t年龄\t成绩\n");
            printf("%s\t%s\t%d\t%.2f\n", students[i].id, students[i].name, students[i].age, students[i].score);
            return;
        }
    }
    printf("未找到该学生!\n");
}

// 根据学号修改学生信息
void modifyStudentById() {
    char id[20];
    printf("请输入要修改的学生学号:");
    scanf("%s", id);
    for (int i = 0; i < studentNum; i++) {
        if (strcmp(students[i].id, id) == 0) {
            printf("请输入修改后的学生信息(学号 姓名 年龄 成绩):");
            scanf("%s %s %d %f", students[i].id, students[i].name, &students[i].age, &students[i].score);
            printf("修改成功!\n");
            return;
        }
    }
    printf("未找到该学生!\n");
}

// 根据学号删除学生信息
void deleteStudentById() {
    char id[20];
    printf("请输入要删除的学生学号:");
    scanf("%s", id);
    for (int i = 0; i < studentNum; i++) {
        if (strcmp(students[i].id, id) == 0) {
            for (int j = i; j < studentNum - 1; j++) {
                students[j] = students[j + 1];
            }
            studentNum--;
            printf("删除成功!\n");
            return;
        }
    }
    printf("未找到该学生!\n");
}

// 插入学生信息
void insertStudent() {
    int index;
    if (studentNum >= MAX_STUDENT_NUM) {
        printf("学生数已达到最大值,无法插入!\n");
        return;
    }
    printf("请输入要插入的位置(从0开始):");
    scanf("%d", &index);
    if (index < 0 || index > studentNum) {
        printf("插入位置不合法!\n");
        return;
    }
    Student student;
    printf("请输入学生信息(学号 姓名 年龄 成绩):");
    scanf("%s %s %d %f", student.id, student.name, &student.age, &student.score);
    for (int i = studentNum; i > index; i--) {
        students[i] = students[i - 1];
    }
    students[index] = student;
    studentNum++;
    printf("插入成功!\n");
}

// 根据条件排序学生信息
void sortStudent() {
    int choice;
    printf("请选择排序方式(1.按学号升序 2.按成绩降序):");
    scanf("%d", &choice);
    if (choice == 1) {
        for (int i = 0; i < studentNum - 1; i++) {
            for (int j = 0; j < studentNum - i - 1; j++) {
                if (strcmp(students[j].id, students[j + 1].id) > 0) {
                    Student temp = students[j];
                    students[j] = students[j + 1];
                    students[j + 1] = temp;
                }
            }
        }
    } else if (choice == 2) {
        for (int i = 0; i < studentNum - 1; i++) {
            for (int j = 0; j < studentNum - i - 1; j++) {
                if (students[j].score < students[j + 1].score) {
                    Student temp = students[j];
                    students[j] = students[j + 1];
                    students[j + 1] = temp;
                }
            }
        }
    } else {
        printf("选择不合法!\n");
        return;
    }
    printf("排序成功!\n");
}

// 统计学生总数
void countStudent() {
    printf("学生总数为:%d\n", studentNum);
}

// 显示所有学生信息
void showAllStudent() {
    printf("学号\t姓名\t年龄\t成绩\n");
    for (int i = 0; i < studentNum; i++) {
        printf("%s\t%s\t%d\t%.2f\n", students[i].id, students[i].name, students[i].age, students[i].score);
    }
}

// 主函数
int main() {
    readFromFile(); // 从文件中读取学生信息
    int choice;
    while (1) {
		printf("|++++++++++++++++++++++++++++++++++|\n");
		printf("|         学生信息管理系统         |\n");
		printf("|++++++++++++++++++++++++++++++++++|\n");
        printf("|          1.录入学生信息          |\n");
        printf("|          2.查找学生信息          |\n");
        printf("|          3.删除学生信息          |\n");
        printf("|          4.修改学生信息          |\n");
        printf("|          5.插入学生信息          |\n");
        printf("|          6.排序学生信息          |\n");
        printf("|          7.统计学生总数          |\n");
        printf("|          8.显示所有学生信息      |\n");
        printf("|          0.退出系统              |\n");
        printf("|++++++++++++++++++++++++++++++++++|\n");
        printf("|          请选择操作:            |\n");
        printf("|++++++++++++++++++++++++++++++++++|\n");
		scanf("%d", &choice);
        switch (choice) {
            case 1:
                addStudent();
                break;
            case 2:
                findStudentById();
                break;
            case 3:
                deleteStudentById();
                break;
            case 4:
                modifyStudentById();
                break;
            case 5:
                insertStudent();
                break;
            case 6:
                sortStudent();
                break;
            case 7:
                countStudent();
                break;
            case 8:
                showAllStudent();
                break;
            case 0:
                writeToFile(); // 将学生信息写入文件
                printf("谢谢使用!\n");
                return 0;
            default:
                printf("选择不合法!\n");
                break;
        }
    }
    return 0;
}


第三章 系统分析与设计

一、系统功能分析

1.学生信息的录入:录入学生的基本信息,包括学号、姓名、年龄、性别、联系方式等。

2.学生信息的查询:根据学号或姓名查询学生的详细信息。

3.学生信息的修改:可以修改学生的基本信息。

4.学生信息的删除:可以删除学生的信息。

5. 学生成绩的录入和查询:录入学生成绩并能够查看学生成绩信息。

二、系统功能设计

1.使用菜单系统实现主界面,包括录入、查询、修改、删除和成绩管理等选项。

2.使用结构体来存储学生信息,包括学号、姓名、年龄、性别、联系方式以及成绩。

3. 使用文件来进行数据存储,包括学生基本信息和学生成绩信息的存储。

三、数据存储

1.学生基本信息可以存储在一个文本文件中,一行代表一个学生的信息,字段之间使用逗号或空格进行分隔。

2. 学生成绩可以分别存储在另一个文本文件中,每行记录学生的学号和对应的成绩信息,使用逗号或空格进行分隔。



第四章 系统实现

一、系统主界面

图4.1  系统主界面

图4.2  系统主界面该功能的关键代码如图:

二、增加学生

图4.3  增加学生代码

图4.4  增加学生运行结果

三、显示所有学生

  

图4.5  显示所有学生代码

4.6  显示所有学生运行结果



第五章 总  结

学生信息管理系统是一个基于C语言开发的应用程序,旨在实现对学生信息的管理和查询。系统功能包括学生信息的录入、查询、修改、删除以及成绩管理。采用菜单系统作为主界面,通过结构体来存储学生信息,包括学号、姓名、年龄、性别、联系方式和成绩等。数据存储方面,采用文件存储学生基本信息和成绩信息,每个学生信息为文件中的一行记录,字段之间使用逗号或空格进行分隔。系统实现了对学生信息的灵活管理和有效查询,为教师和学校管理人员提供了便利。通过该系统,用户可以高效地录入、查询、修改和删除学生信息,并能够管理学生成绩,从而实现学生信息的全面管理和统计分析。

在学习C语言的过程中,我深刻体会到了它作为一种结构化编程语言的重要性和广泛应用。通过学习C语言,我对计算机程序设计的基本原理和方法有了更深入的理解,也培养了自己的编程能力和逻辑思维能力。
        首先,C语言的语法简洁明了,清晰易懂。它的语法规则严谨,逻辑性强,对于初学者来说,相对容易上手。通过学习C语言,我能够掌握变量、数据类型、运算符等基本概念,了解程序的结构和控制流程,以及函数的定义和调用,这为我打下了扎实的编程基础。
其次,在学习C语言的过程中,我更加深刻地认识到了程序的执行原理和内存管理的重要性。C语言提供了丰富的指针和内存操作的功能,这让我能够更深入地了解程序的底层运行机制,也使我更加谨慎地进行内存管理,避免了内存泄漏等问题。
        此外,通过C语言的学习,我也学会了如何进行模块化的程序设计和模块间的数据传递,这有助于我写出更加清晰、高效和易于维护的程序。我也了解到了C语言在系统编程和嵌入式开发中的重要性,它不仅能够编写高效的系统程序,还可以对硬件进行直接控制,这为我以后的学习和工作奠定了坚实的基础。
        总的来说,学习C语言不仅仅是学习一门编程语言,更是学习编程思维和程序设计的基础。在未来的学习和工作中,我会继续加强对C语言的学习和应用,不断提升自己的编程能力和解决问题的能力,为自己的发展打下坚实的基础。

  • 17
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息
安卓学生管理系统 学生管理系统需求分析报告 ——移动互联网开发一班第七小组一:需求背景学生信息管理系统是具有统计,管理学生和老师各种在校相关信息,方便学校对于学生信息的统一管理的系统。 随着高校的扩招,需要处理的学生信息日趋加大,不仅花费大量的教师资源,处理的效率还十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它解决了学生管理数据信息量大,修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息,成为管理高校中必不可少的管理工具。二:需求概述(1)目标学生信息管理系统的目标是为方便学校教务处系统的管理学生信息并学校和学生间提供一个信息共享的平台(2)需求学生管理系统的管理用户国分为三大类,分别是管理员登录功能,教师登录功能以及学生登录功能需求分析*管理员对功能的需求管理员权限最大,可以对学生的班级,课程,情况进行统一的管理,细分如下:超级管理员可增加,修改,删除普通管理员有关学生信息的浏览,,学生信息的添加修改和删除学校基本课程的浏览,学校基本课程的添加修改和删除学生课程的浏览与统计,可按成绩范围对成绩进行统计学生选课信息的管理,包括查询,修改与删除*学生对功能的需求学生利用此系统进行与自己有关的信息查询与输入,细分如下:浏览个人基本信息修改登录密码浏览课程信息浏览在校期间的奖惩情况浏览个人学分信息利用个人账户进行查询选修课程基本信息与选修课程的选择和退出浏览个人选课情况*教师对功能的需求教师对所带班级学生的信息查询与修改,细分如下:教师可利用此系统查询所带班级的基本信息查询所带班级的学生在校期间的奖惩录入与修改所带班级学生的成绩信息查询所带班级学生的成绩信息查询班级学生的选课情况功能模块(一)学生用户功能主要包括以下部分:(1)注册 (2)登录 (3)修改密码 (4)查询个人信息 (5)选课(退课) (6)查询成绩具体功能介绍如下:(1)注册实现功能:创建一条学生记录,由学生自己填写个人信息并保存,实现统一管理个人信息内容:学号,姓名,性别,出生年月,籍贯,民族,学院,班级,宿舍号,个人联系电话,父母联系电话,家庭住址(2)用户登录 实现功能:用户注册后可直接登录,使用查询信息,选课,退课等功能(3)修改密码 实现功能:输入旧密码,输入两次新密码,如旧密码正确且两次新密码一致则用新密码覆盖旧密码,否则重新输入旧密码或者两次新密码不一致重新输入新密码(4)查询个人信息实现功能:在此显示学生的个人信息内容:学号,姓名,性别,出生年月 籍贯 民族 学院 班级 宿舍 联系电话(只可查询不可修改)(5)查询成绩 实现功能:显示入学以来所修课程的所有成绩和学分等信息(6)选课(退课) 实现功能:在学校规定时间内为学生提供网上选课及退课功能以及查看个人选课信息 约束:1.只能选择人数未满的课程及未修的课程 2.只能退已选课程(二)教师学生用户功能主要包括以下部分:(1)注册 (2)登录(3)查看个人信息(4)查看全校学生信息(5)录入成绩 (6)修改密码具体功能介绍如下:注册实现功能:常见一条教师记录,由老师自己填写并保存,实现统一管理个人信息内容:教师编号 姓名 性别 出生年月 籍贯 民族 学院 联系电话用户登录实现功能:用户注册后可直接登录用于查看个人信息 查看学生信息 以及实现录入学生成绩等功能(3)修改密码实现功能:输入旧密码,输入两次新密码,如旧密码正确且两次新密码一致则用新密码覆盖旧密码,否则重新输入旧密码或者两次新密码不一致重新输入新密码(4)查询个人信息实现功能:显示教师的个人信息显查询内容:教师编号 姓名 性别 出生年月 籍贯 民族 学院 联系方式(5)查看学生成绩信息实现功能:查询所有学生的课程成绩信息查询流程:选择学生所属院系—>专业—>班级—>学年(6)录入成绩实现功能:教师录入所带班级学生成绩信息(三)管理员用户功能主要包括以下部分:(1)登录学生/教师端信息管理 (2)登录课程信息管理 (3)宿舍信息管理具体功能介绍如下:登录实现功能:管理员身份验证,学生信息管理 教师信息管理 宿舍信息管理学生/教师信息管理实现功能:对在校学生/教师的信息的增删改查等功能实现流程:学生:选择个人信息或成绩信息,输入相应学号进行相应的查询与更新功能教师:输入教师编号查询教师信息并进行相应的操作课程信息管理实现功能:创建课程信息 包括课程编号 课程名称 学时 学分 等相应字段宿舍信息管理实现功能:对学生住宿情况进行统筹管理数据库设计创建学院数据库创建表创建院系信息表 字段有 院系编号 院系名称 院系人数 院系简介 创建专业信息表 字段有 专业编号 专业名称 专业人数 所属院系 院系简介创建辅导

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋xj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值