C语言程序设计——学生成绩管理系统 设计与实现(设计篇)

大一下学期写的C语言程序设计实验报告——学生成绩管理系统课程设计与实现

此篇为“设计篇”o~

目录

前言

一、设计任务

二、程序设计与实现

1.程序设计

2.数据描述

3.功能模块设计

总结


前言

此篇为大一下学期写的C语言程序设计实验报告——学生成绩管理系统课程设计与实现

这篇为设计篇~ 代码部分可以查看下一篇文章哦>.< 

编译工具我用的是codeblocks,其他一般C语言编译器如vc++等也是可以运行的哦     

具体内容如下啦

一、设计任务

随着信息时代的到来,办公趋向无纸化、高效化,对于学生成绩的管理更是如此,基于此,我选择了学生成绩管理系统作为我的课题,希望能够模仿教务系统中成绩的录入与查询功能,编写自己的成绩管理系统。从教师与学生两个角度分别实现成绩的录入、删除、修改、排序、浏览与查询功能。

二、程序设计与实现

1.程序设计

本程序面向两类用户即教师与学生,登录需密码,登录成功后有两个入口,分别为教师端和学生端。教师端共有添加、删除、修改、查找、浏览、排序六个功能,学生权限为查看本人详细成绩、查看班级成绩由高到低排序两个功能。学生成绩管理系统功能结构图如图1.所示。

图1 学生成绩管理系统功能结构图

2.数据描述

(1)学生信息存储

代码中定义结构体类型struct student来存储学生的信息。结构体类型定义及结构体成员含义说明如下所示。

struct student

{

    char name[20];

    char num[20];

    int math;

    int Cgrade;

    int English;

    int total;

};

(2)全局变量设计

定义全局变量tea[50]记录密码用户数量,用于用户输入。

Struct teacher tea[50];

(3)账号密码设计

代码中定义结构体变量struct teacher来储存账号和密码。

struct teacher

{

    char ac[30];//账号

    char pw[30];//密码

};

3.功能模块设计

(1)函数名:void Hello()

        函数功能:显示登录界面

        输入:用户输入选项

        输出:各项功能

        算法描述:采用switch函数

        当 case 1:显示登录功能   login();

             case 2:显示注册功能   registeruser();

             case 0:退出登录

(2)函数名:void login ()  

        函数功能:显示登录功能

        输    入:账号  密码

        输    出:无

        算法描述:

(3)函数名:void registeruser()

        函数功能:注册账号功能

        输    入:用户账号  密码(六位)

        输    出:无

        算法描述:输入账号:

                          输入密码:采用for循环,使得输入密码时用*显示。

                          再次输入密码:(1)若密码正确,则注册成功

                                                   (2)若密码错误,则注册失败,重新注册

(4)函数名:void Menu() 和 void Key()

        函数功能:系统菜单,选择教师端或学生端

        输入:用户输入选项

        输出:教师菜单 或 学生菜单

        算法描述:采用switch函数

                case 1:教师端 菜单及功能   systemMenu(); keyDown();

                case 2:学生端 菜单及功能   stuMenu();  stuKeyDown();

                case 3:退出登录  回到Hello()函数 : 登录界面

                case 0:退出系统。

(5)函数名:void systemMenu()  和  void keyDown()

      函数功能:分别为显示教师菜单 和 实现教师功能

      输入:用户输入选项

      输出:各项功能

      算法描述:采用switch函数

      当case 1:录入学生信息

                        插入链表   insertNodeByHead(list,tempData);

                        保存到文件  saveInfoToFile("student.txt",list);

        case 2:浏览学生信息

                         打印链表    printList(list);

        case 3:删除学生信息

                         删除函数  deleteNodeByAppoinNum(list,tempData.num);

                         保存到文件saveInfoToFile("student.txt",list);

        case 4:修改学生信息

                         输入新的信息,保存到文件saveInfoToFile("student.txt",list);

        case 5:根据学号查找学生信息

                         searchNodeByAppoinNum(list,tempData.num);

        case 6:根据总成绩从高到低排序

                         排序函数     sortStudentListByTotal(list);

                         打印   printList(list);

        case 7:返回到主菜单  主功能   Menu();   Key();

        case 0:退出系统。

(6) 函数名:void stuMenu()  和  void stuKeyDown()

             函数功能:分别显示学生菜单 和 学生功能

             输       入:用户输入选项

             输       出:各项功能

             算法描述:采用switch函数

             case 1:根据学号查找学生个人信息

                         searchNodeByAppoinNum(list,tempData.num);

             case 2:查找班级总成绩及从高到低的排名

                         排序函数     sortStudentListByTotal(list);

                         打印   printList(list);

             case 3:返回到主菜单  主功能   Menu();   Key();

             case 0:退出系统。

(7)函数名:void deleteNodeByAppoinNum(struct Node* listHeadNode,char* num)

      函数功能:通过学号删除学生信息

      输入:学生学号

      输出:若学号匹配,则删除成功

      算法描述:

(8)函数名:struct Node *sortStudentListByTotal(struct Node *listHeadNode)

      函数功能:根据总成绩从高到低排序

      输入:无

      输出:无

      算法描述:采用选择排序法

(9)函数名:struct Node* searchNodeByAppoinNum(struct Node* listHeadNode,char* num)

        函数功能:根据学号查找学生信息

        输入:学生学号

        输出:无

        算法描述:


三、总结

通过此次实验项目,学到了(1)链表的使用;

                                           (2)以及指针的高级用法 如结构体指针等。

自己在做项目时,存在哪些问题?后续如何改正?

(1)登录注册等出现问题、以及链表运用不熟练,以至于有些程序不能如愿做出;

(2)后续会更加努力学习链表,尽量做到熟练运用,以及对文件的熟练操作等。

  • 29
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、课程设计题目 ① 基本要求题目:矩阵乘法。 ② 综合训练:学生成绩管理系统 二、设计要求 矩阵乘法:编写一个函数实现矩阵A(2行3列)与矩阵B 相乘(3行2列),乘积放在C数组中。在主函数中输入相乘的两数组,并输出结果。 学生成绩管理:(结构体数组、函数、指针、算法、流程结构及文件等的综合应用) 程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计学生成绩管理系统,使之能提供以下功能: (1)主菜单 (2)各菜单项功能 ① 成绩录入:输入学生的学号、姓名及三门课的成绩; ② 成绩查询:(至少一种查询方式)。  按学号查询学生记录。  查询不及格学生的记录。 ③成绩统计:  计算学生的平均分;  根据学生的平均分高低,对学生的数据进行排序后输出;  对学生单科成绩排序,输出学生姓名与该科成绩; ④退出系统:退出整个系统(即主菜单)。 (3)结构体数组: #define N 30struct student {int num; /* 定义学号*/ char name[20]; /* 定义姓名*/ float score[3]; /* 定义存贮三门课成绩的数组*/ float average; /* 定义平均成绩*/ };struct student stu[N];  /* 定义结构体数组,存贮多个学生的记录*/ 三、数据结构设计描述 系统功能描述 1能够输入学生的学号、姓名、三科成绩并且计算出平均成绩。 2能够以表格的形式输出学生记录 3能够按照学生三科的平均成绩进行排序 4能够按照学生的单科成绩进行排序 5能够按照学号查询学生记录 6往表中插入学生记录 7从表中删除学生记录 8存储记录到文件中 9从文件中读取记录 10退出 数据字典 1数据流条目 数据流名称:全部记录 别名:无 简述:最新更新后所有关于学生成绩的记录 来源:数据库 去向:加工“记录筛选” 数据流量:不限 组成:学号+姓名+SC1+SC2+SC3+平均成绩 数据存储条 数据存储名称:学生成绩记录 别名:无 简述:存放学生所有可供查询的信息 组成:学号+姓名+SC1+SC2+SC3+平均成绩 组织方式:索引文件,以学学号为关键字 查询要求:要求能立即查询 2数据项条目 数据项名称:学号 别名:无 简述:所有学校学生的学号 类型:字符串 3加工条目 加工名:更改的记录 激发条件:学生成绩记录被改动 优先级:普通 输入:新记录 输出:更新数据、数据未改动 加工逻辑:根据现有学生成绩记录 if 新记录旧记录 then 更新数据 else 数据未改动 endif 设计测试流程 1、进入界面 2、输入选项0,回车; 按提示输入数据 3、回到主菜单; 输入选项8,回车; 输入文件名:data,回车; 出现成功提示,则读入文件操作成功。 4、回到主菜单,输入1,回车 每10个暂停显示数据 5、回到主菜单,输入2,回车 出现排序成功信息。 6、回到主菜单,输入3,回车 出现排序成功信息。 7、回到主菜单,输入5,回车 按提示插入一组数据 8、回到主菜单,输入6,回车 按提示输入姓名,删除数据 出现删除成功的信息 9、回到主菜单,输入4,回车 输入学号进行查询 10、回到主菜单,输入1,回车 出现统计信息 11、回到主菜单,输入7,回车 输入result,回车 出现成功写入文件的信息 12、回到主菜单,输入9,回车退出系统
C语言课程设计——学生成绩管理系统(源代码 详细注释).zip》是一个包含有源代码和详细注释的学生成绩管理系统的压缩文件。 学生成绩管理系统是一种用于管理学生的考试成绩和相关信息的软件工具。该系统基于C语言开发,通过使用源代码和详细注释来了解其内部工作原理和实现细节。 源代码是指程序员使用C语言编写的计算机程序的文本文件。它包含一系列的指令和算法来实现特定的功能。通过查看源代码,我们可以了解程序是如何实现学生成绩管理的,例如如何读取和存储学生信息、计算和存储考试成绩等。同时,源代码中也包含了程序的各种功能和特性的具体实现细节。 详细注释是在源代码中加入的对代码的解释和说明,用于帮助程序员和读者理解代码的逻辑和功能。注释通常以特定的标记符或特殊的注释语法来标识,并且会提供对代码行为、变量、函数和算法的解释。通过详细注释,我们可以更好地理解程序的运行逻辑和实现方式,同时也帮助我们更加容易地进行修改和维护。 压缩文件(.zip)是一种常见的文件格式,可以将多个文件或文件夹压缩成一个单独的文件。通过将源代码和详细注释压缩成一个文件,可以方便地进行存储、传输和共享。 因此,对于《C语言课程设计——学生成绩管理系统(源代码 详细注释).zip》,我们可以通过解压缩该文件并查看源代码和详细注释来了解其中的实现细节和代码逻辑。这对于学习C语言编程以及了解学生成绩管理系统设计实现都是非常有帮助的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值