博客
关于我
学生成绩管理系统
阅读量: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主从失败 错误Got fatal error 1236解决方法
    查看>>
    MySQL主从架构与读写分离实战
    查看>>
    MySQL主从篇:死磕主从复制中数据同步原理与优化
    查看>>
    mysql主从配置
    查看>>
    MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
    查看>>
    MySQL之CRUD
    查看>>
    MySQL之DML
    查看>>
    Mysql之IN 和 Exists 用法
    查看>>
    MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法
    查看>>
    MySQL之SQL语句优化步骤
    查看>>
    MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
    查看>>
    Mysql之主从复制
    查看>>
    MySQL之函数
    查看>>
    mysql之分组查询GROUP BY,HAVING
    查看>>
    mysql之分页查询
    查看>>
    Mysql之备份与恢复
    查看>>
    mysql之子查询
    查看>>
    MySQL之字符串函数
    查看>>
    mysql之常见函数
    查看>>
    Mysql之性能优化--索引的使用
    查看>>