博客
关于我
学生成绩管理系统
阅读量:673 次
发布时间:2019-03-15

本文共 2919 字,大约阅读时间需要 9 分钟。

学习C语言是每一个编程爱好者的必经之路。为完成工作中的编程需求,我阅读了《C Primer Plus》,对基础知识进行了初步了解。为了巩固所学知识,我决定独立开发了一个学生成绩管理系统

主要功能概述

该系统能够完成以下操作:

  • 录入信息:输入学生的基本信息,包括学号、姓名、性别、数学成绩、英语成绩及总成绩。
  • 打印信息:输出已录入的所有学生数据清晰的表格形式。
  • 保存数据:将录入的学生信息保存至指定文件中。
  • 读取数据:从文件中读取并显示学生信息。
  • 统计人数:计算已录入学生的总人数。
  • 查找信息:通过学生姓名查询对应的详细信息。
  • 修改信息:支持对指定学生的信息进行单项修改,包括学号、姓名、性别、成绩等。
  • 删除信息:允许管理员删除特定学生的记录。

开发思路

在编写代码时,主要采用以下方法:

  • 使用while循环接收用户输入,确保程序能够持续运行。
  • 利用switch语句根据用户输入选择相应操作模块,增强代码的可维护性。
  • 将学生信息存储在结构体中,采用链表结构管理学生数据,支持动态添加、删除操作。
  • 在读取文件时,通过将数据转换为字符数组适配输入方式,确保数据读取的准确性。
  • 代码实现

    主菜单显示

    void show_menu() {    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("返回主目录\n");    printf("*********************************************************\n");    printf("请输入功能编号\n");}

    主函数逻辑

    int main() {    while (1) {        show_menu();        int choice;        scanf("%d", &choice);        switch (choice) {            case 1: addinfo(); break;            case 2: PrintInfo(); break;            case 3: savestudent(); break;            case 4: ReadStudentInfo(); break;            case 5: CountItem(); break;            case 6: FindStudent(); break;            case 7: ChangeStudent(); break;            case 8: DelStudent(); break;            default: printf("输入有误,请重选\n"); break;        }    }}

    信息录入

    void addinfo() {    Node *newNode = malloc(sizeof(Node));    newNode->next = NULL;    Node *current = head;        if (head == NULL) {        head = newNode;    } else {        while (current->next != NULL) {            current = current->next;        }        current->next = newNode;    }        printf("请输入学号:"); scanf("%ld", &newNode->stu.num);    printf("请输入姓名:"); scanf("%s", newNode->stu.name);    printf("请输入性别:"); scanf("%s", newNode->stu.sex);    printf("请输入数学成绩:"); scanf("%d", &newNode->stu.maths);    printf("请输入英语成绩:"); scanf("%d", &newNode->stu.english);    newNode->stu.total = newNode->stu.maths + newNode->stu.english;        printf("信息录入成功\n");}

    信息打印

    void PrintInfo() {    if (head == NULL) {        printf("无相关数据\n");        return;    }        printf("*********************************************************\n");    printf("学号      姓名  性别  数学  英语  总成绩\n");        Node *current = head;    while (current != NULL) {        printf("%ld       %s    %s    %d    %d    %d\n",               current->stu.num, current->stu.name, current->stu.sex,               current->stu.maths, current->stu.english, current->stu.total);        current = current->next;    }        printf("*********************************************************\n");}

    其他功能

    =fopen("student_data.db", "w");

    fprintf(fd, "\t学号\t姓名\t性别\t数学\t英语\t总成绩\n");
    ...
    азвание和实现过程略。

    转载地址:http://bjgmz.baihongyu.com/

    你可能感兴趣的文章
    mysql 记录的增删改查
    查看>>
    MySQL 设置数据库的隔离级别
    查看>>
    MySQL 证明为什么用limit时,offset很大会影响性能
    查看>>
    Mysql 语句操作索引SQL语句
    查看>>
    MySQL 误操作后数据恢复(update,delete忘加where条件)
    查看>>
    MySQL 调优/优化的 101 个建议!
    查看>>
    mysql 转义字符用法_MySql 转义字符的使用说明
    查看>>
    mysql 输入密码秒退
    查看>>
    mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
    查看>>
    mysql 里对root及普通用户赋权及更改密码的一些命令
    查看>>
    Mysql 重置自增列的开始序号
    查看>>
    MySQL 错误
    查看>>
    MySQL 面试,必须掌握的 8 大核心点
    查看>>
    MySQL 高可用性之keepalived+mysql双主
    查看>>
    MySql-2019-4-21-复习
    查看>>
    mysql-connector-java各种版本下载地址
    查看>>
    mysql-group_concat
    查看>>
    MySQL-redo日志
    查看>>
    MySQL-【1】配置
    查看>>
    MySQL-【4】基本操作
    查看>>