1、C语言班级学生成绩管理系统项目设计C语言班级学生成绩管理系统项目设计任务1:“班级学生成绩管理系统”总体规则设计 项目的整体框架设计应当充分的进行调查研究,充分与用户进行沟通,充分了解用户的需要,在此基础上给出项目的总体规则设计方案。 这里给出了“班级学生成绩管理系统”工作模块图,其目的是给一个实例,同学们可模仿画出学校的学生成绩管理工作模块图。 任务2:“班级学生成绩管理系统”中相关数据设计 “班级学生成绩管理系统”中的数据分常量与变量、简单类型数据和复杂类型数据。 一、常量 在“班级学生成绩管理系统”中我们假定本系统能处理一个班40个学生的数据。用符号常量来定义一个班的学生人数。 定义方法
2、:#define STUNUM 40 二、变量 “班级学生成绩管理系统”中的学生信息主要包括:学号、性别、年龄、三门功课成绩、总成绩和平均成绩,再加上一些与计算全班成绩有关的最高成绩、最低成绩等。这些变量是简单类型变量,还有一些复杂类型变量,如数组、结构体、共用体、指针类型等变量。 1.简单类型 int stunum;/整数类型的学号 char stusex;/字符类型的性别 int stuage;/整数类型的年龄 float score1;/单精度类型的成绩1 float score2;/单精度类型的成绩2 float score3;/单精度类型的成绩3 float avescore;/单精
3、度类型的平均成绩 float maxscore;/单精度类型的最高分 float minscore;/单精度类型的最低分 2.复杂类型 char name10;/数组类型的姓名 struct student int stunum;/学号char name10;/姓名char stusex;/性别int stuage;/年龄 float score3;/三门成绩 stuSTUNUM;/含有40个学生的结构体数组 另外,在编程实践中还会遇到一些这里不能一一列举出来的变量和指针变量,我们将在后续的学习逐渐认识与掌握。 任务3:用输入输出函数初步设计项目封面与菜单 本任务采用C语言的标准输入输出函数分
4、别实现“班级学生成绩管理系统”的封面和主、子菜单,这些内容暂时处理成单个程序的形式,后面将介绍如何将这些封面与主、子菜单组合起来。 在下述程序中使用了system函数,这个函数是一个库函数,它能发出一个MS-DOS命令,括号中是cls是MS-DOS的清屏命令,通过system函数执行了一条DOS命令。 这里给出了封面、主菜单、编辑子菜单、显示子菜单、计算子菜单、排序子菜单六个程序,这六个程序是各自独立的程序。 1 项目封面源程序 2项目主菜单源程序 3项目编辑子菜单源程序 4项目显示子菜单源程序 5项目计算子菜单源程序 6项目排序子菜单源程序 程序执行后的效果图如下: 1项目封面效果图 2项目
5、主菜单效果图 3项目编辑子菜单效果图 4项目显示子菜单效果图 5项目计算子菜单效果图 6项目排序子菜单效果图 任务4:项目封面、菜单的顺序执行设计 该任务将封面和主、子菜单连接起来,实现封面、菜单的顺序执行。于,一个程序只有一个主函数,因此,我们将封面、主菜单、编辑子菜单、查看子菜单、计算子菜单、排序子菜单程序中的主函数分别改名为StuCover、MainMenu、EditMenu、DispMenu、CompMenu、SortMenu,并将这些函数复制到一个C程序,另外,再建立一个主函数,分别执行这些函数。 要注意的是,主函数是放在所有其他函数后面的,能不能将主函数放到所有函数前面呢?或者主函
6、数的位置是否可以任意呢?回答是肯定的,关于如何实现这一点我们将在后续内容中讲解。 该任务使用了一个getch库函数,它在这里的作用是使屏幕发生暂停,当程序执行到此函数时发生暂停,等待用户输入一个任意字符后,程序继续向下执行。这样做的好处是,可以使用户看清封面和主、子菜单。 任务5:用if语句实现菜单的选择执行设计 顺序结构调用菜单的方法在实际应用中是很少见的。因为,这种结构的程序控制权不在用户手中,而在程序的开发人员手中。一个实用程序,它对菜单的控制权应当在用户。 C语言是用分支结构来实现对菜单的选择执行的。分支结构有两种实现方法,本任务首先用ifelse语句来实现菜单的选择执行。 于任务的需
7、要,我们将任务4原来的菜单函数稍作修改。以主菜单为例,将MainMenu函数中的变量定义行和倒数3行全部删除,只保留子菜单显示语句,其他子菜单函数也一样操作,再重新书写主函数。 该项目实现如果输入06之间的整型数字,将在屏幕上打印一句话或显示相应的子菜单,于排序子菜单是属于查看子菜单下面的子菜单,它属于三级子菜单,暂时没有显示。 另外,本任务使用了函数申明,这样可以使主函数在程序中的位置变得任意。有了函数申明,就可以方便程序设计。 任务5源程序如下: 任务6:用switch语句实现菜单的选择执行设计 实现菜单的选择执行还可以用更为简捷的switch语句来实现。只要将任务5的主函数稍加修改就能实
8、现用switch语句实现菜单的选择执行。 任务6源程序如下: 任务7:用循环语句实现项目主菜单的选择执行设计 任务5和任务6实现了菜单的选择执行,虽然实现了用户选择执行菜单功能,但每执行一个菜单后,程序就结束了,这还是不能满足用户的需要。用户往往需要程序在没有被用户结束之前都能被操作,即程序的控制权应当掌握在用户手中。要实现上述功能,必须使用循环结构。 于实现循环选择执行项目菜单是一种比较复杂结构,为了便于学习,我们首先用三种方法实现主菜单的循环选择执行,即主菜单实现循环选择,而子菜单暂时不实现循环选择。 1 用for循环实现已知循环次数的循环。 该循环规定了循环执行的次数,当循环达到规定的次
9、数后将会退出循环。学习者不要理解成for循环只能实现已知循环次数的循环,实际上for循环也能够实现未知循环次数的循环。 任务8:用循环语句实现项目主、子菜单的选择执行设计 本任务不但要实现主菜单的循环选择执行,而且还要实现主、子菜单的循环选择执行。下面用while循环、dowhile循环的嵌套和switch语句来实现项目主、子菜单的循环选择执行。为了降低学习难点,本任务除执行五个菜单函数外,其他要执行的函数都用输出一句话来实现。另外,为了使任务8更为合理,增加了退出函数Quit()的定义和相关使用。 源程序如下: 任务9:项目整体框架设计 项目的整体框架设计是程序开发中关系重大的一环。整体框架
10、是程序的总体结构,是程序设计中非常重要的部分。整体框架设计的好处是为项目搭好一个骨架,这个骨架包含了项目的各种功能模块,后面的工作就是如何完成这些功能模块,当这些功能模块全部实现后,整个项目也就完成了。 该任务是对任务8作进一步完善,实现的目标是: 1主函数的位置可以任意放置; 2将原来显示一句话的语句和getch()函数调用语句放置到相应函数中; 3增加光标定位函数; 4完善程序说明函数。 程序运行结果与任务8相似。 任务9源程序如下: 任务10:初步实现学生成绩排序 要完成上述任务,在主函数中,我们设计一个包含10个学生成绩的实型一维数组。定义数组的整型常量表达式用符号常量表示,然后完善相
11、应函数。在编写函数的过程中要十分注意函数的形参与实参的设计。 本任务初步实现按升序排列学生成绩函数AsceSort()和按降序排列学生成绩函数 DropSort(),排序方法采用“冒泡法排序”。 在排序函数中,创建并生成了一个新的成绩数组,其目的是在排序的过程中,不影响原成绩数组的排列。 在任务9的基础上实现任务10,并对任务9做如下修改: 1在项目的文件包含行的下面增加 #define STUSIZE 10 2主函数稍做修改 void main() int choose,editnum,dispnum,compnum,sortnum;/定义5个输入变量float stuscoreSTUSIZE=,80,55,85,89,95,88;/定义学生成绩数组? 3函数声明修改为: void AsceSort(float score,int stusize);/按升序排列学生成绩函数声明 void DropSort(float score,int stusize);/按降序排列学生成绩函数声明 4函数调用语句修改为: AsceSort(stuscore,STUSIZE); DropSort(stuscore,STUSIZE); 5AsceSort()和DropSort()定义的修改见源程序。 任务10源程序如下:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1