学生成绩管理系统C语言课程设计
××××学院课程设计报告××××学院课程设计报告 课程名称: 学院: 专业班级: 姓名: 学号: 指导教师: 完成时间: 报告成绩: 评阅意见: 评阅老师:评阅时间: 1 / 21 《学生成绩管理系统》《学生成绩管理系统》C C 语言课程设计语言课程设计 一、一、 设计要求设计要求 1) 收集资料,全面分析课题,分解问题,形成中体编程思路; 2) 深入分析各个小问题,编写个部分程序模块; 3) 对于设计中用到的关键函数,要联系实际 问题进行具体介绍; 4) 上机调试,确保程序能正确运行; 二、二、 设计目的:设计目的: 1) 通过设计,了解 C 语言的实际运用,加强对 C 语言的重视; 2) 通过设计,强化 C 语言的基本运用及 C 语句的准确掌握; 3) 通过设计,掌握设计软件一般方法,了解软件设计的一般思路; 4) 通过设计,锻炼撰写报告的水平。 三、三、 课题分析:课题分析: 编写一个《学生成绩管理系统》的 C 程序,包括以下功能: 1) 学号段查询功能; 2) 输入功能; 3) 添加功能、修改功能; 4) 成绩处理功能等 5) 可实现数据输入、数据显示、数据插入、数据访问、数据保留、数据更新等存储 功能,以及各学科平均分、最高分、最低分的提取等数据处理功能。该程序运行相对只能 化,可通过学号比较来插入数据、根据姓名查找数据以及更新数据。其操作简单,查找方 便,修改迅速,普遍适合学校学生成绩管理,可大大减少人工管理的工作量,提高工作效 率。 四、四、 定义数据结构及相关解释:定义数据结构及相关解释: 1) 在《学生成绩管理系统》中,各模块功能系统之间构成的数据结构关系为非线性数 据结构的树结构。 2) 树结构:每一个结点只有一个前件,称为父结点。没有前件的结点只有一个,称为 树的根结点,简称树的根。在《学生成绩管理系统》中的数据结构图中“图书馆管理程序” 为根;在树结构中,每一个结点都可以有多个后件,他们都称为该结点的子结点,没有后 件的结点称为叶子。例如,在《学生成绩管理系统》中的数据结构图中“查看数据”、 “ 通 过比较学号来插入数据” 、 “ 通过姓名查找查看数据” 、 “ 通过姓名查找来更新数据” 、 “ 保 2 / 21 留数据”以及求各学科的“平均分、最高分、最低分”为“学生成绩管理系统”的子结点, 也是该树结构的叶子。 五、五、 软件的模块划分:软件的模块划分: 根据对《学生成绩管理系统》功能分析的情况,可将《学生成绩管理系统》做如下模 块划分: 1)main( )主函数 --- 学生成绩管理系统程序主函数; 2)print( )打印函数 --- 设置学生成绩管理系统界面; 3)cin( )数据输入函数 --- 数据多格式输入; 4)cindata( )其他数据继续输入函数; 5)lookdata( )查看数据函数 --- 查看已保存的数据; 6)insert( )插入数据的函数 --- 通过比较学号来插入数据; 7)find( )查看数据的函数 --- 通过姓名查找查看数据; 8)update( )更新数据的函数 --- 姓名查找来更新数据; 9)save( )保留数据函数 --- 储存处理后的数据; 10) caverage();求各学生语文平均分、最高和最低分成绩的函数; 11) maverage();求各学生数学平均分、最高和最低分成绩的函数; 12) eaverage();求各学生英语平均分、最高和最低分成绩的函数; 13) comaverage();求各学生计算机平均分、最高和最低分成绩的函数 注:(2)—(13)为自定义功能函数,通过 main()主函数调用实现其功能。 六、六、 程序流程设计:程序流程设计: 根据 《学生成绩管理系统》功能分析绘制流程图: 3 / 21 开始passwords初始界面用户信息 输入其他数据 插入数据 功能选择 查找查看数据 查找更新数据 保留数据 显示或打印数据 求学生语文平均分 求学生数学平均分 求学生英语平均分 求学生计算机平均分 空操作 主程序流程图, 《学生成 绩管理系统》操作流程。返回 其他数据输入姓名学号性别成绩 语文 数学 英语 计算机 选择 返回 继续输入 其他数据输入过程 注:其他功能的流程图可参照“其他数据输入”的流程图绘制。 4 / 21 七、七、 各功能模块编写内容详细情况及调试:各功能模块编写内容详细情况及调试: 1) 数据类型的定义。 在定义数据类型时,由于学生成绩管理信息需要由不同类型的数据反映出来。如:姓 名、性别都需要用 char 型数据,而学号和成绩则需要用 int 型数据,并且每位同学的以 上信息都需要一次性输入,所以采用结构体类型定义。 如: typedef struct student/*定义结构体*/ { char name[MAX]; -------------------- 定义 char 型姓名 int num[MAX]; -------------------- 定义 int 型学号 char sex[MAX]; -------------------- 定义 char 型性别 int chinese; -------------------- 定义 int 型语文成绩 int mathematic; -------------------- 定义 int 型数学成绩 int english; -------------------- 定义 int 型英语成绩 int computer; -------------------- 定义 int 型计算机成绩 struct student *next; -------------------- 结构体指针 }stu; 说明:在定义结构体类型和变量时,可采用先定义结构体类型再定义结构提变量,也 可同时定义结构体类型和变量,还可以直接定义结构提变量。上例中的定义方式为同时定 义结构体的类型和变量。 结构体定义的格式如下: 2) 函数的命名和库函数的使用。 A. 函数命名是遵循标识符的命名规则,并且要尽量做到顾名思义的效果。如: lookdata( )为查看数据函数。 B. 库函数使用时要提前声明(#include 等)用到的函数必须包括在库函数或 者已自定义的函数中,否则编译出错。 C. 函数调用时要注意形参和实参数据类型的对应。 5 / 21 struct [结构体名] { 类型标识符成员名; }; 3) 函数结构和功能实现。 A. 数据输入函数“cin( )” B. 查看数据函数“lookdata( )” C. 插入数据的函数“insert( )” D. 查看数据的函数“find( )” E. 更新数据的函数“update( )” F. 保留数据函数“save( )” 注:以上的六个功能函数为《学生成绩管理系统》的输入、读取、修改等主要功能函 数,其中主要运用字符串比较,定义指针变量,输入输出等多种函数和操作实现其对外界 输入内容进行处理功能以及防止出错的备份功能。 G. 管理系统中的各个模块函数的功能实现基本都依靠与以上三中函数类似的编辑方 法编写。主要通过以下结