学生综合测评系统

更新时间:2024-05-03 16:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

一、系统开发的背景 ....................................................... 1 二、系统分析与设计 ....................................................... 1 (一) 系统功能要求 ...................................................... 1 (二) 系统模块结构设计 .................................................. 1 三、系统的设计与实现 ..................................................... 2 (一) 学生成绩录入 ...................................................... 2 (二) 学生成绩查询 ...................................................... 4 (三) 学生成绩修改 ...................................................... 5 (四) 学生成绩排名 ...................................................... 8 (五) 学生基本信息查询 ................................................. 10 四、系统测试 ............................................................ 11 (一) 测试MAIN_( )函数 ................................................. 11 (二) 测试INITIAL()函数 ................................................. 11 (三) 测试SEARCH()函数 ................................................ 12 (四) 测试AMEND()函数 ................................................ 12 (五) 测试SORT()函数 ................................................. 13 (六) 测试MESSAGE()函数 ............................................... 13 五、总结 ................................................................ 14 六、附件(代码、部分图表) .............................................. 14

学生综合测评系统

一、系统开发的背景

为了对学生的基本信息和考试成绩进行更方便的管理,因此编写了学生综合测评系统。

二、系统分析与设计

(一) 系统功能要求

功能:可以录入学生的成绩,对全班同学按照成绩进行排序,可以查询同学的成绩和排名。

1、学生基本信息(包括姓名、性别、学号、班级、成绩等) 2、新增、删除、修改一名学生信息 3、查询学生信息

4、可以实现新增、删除、修改学生成绩 5、按成绩排序

(二) 系统模块结构设计

通过对系统功能的分析,学生综合测评系统功能如图X所示。

学生综合测评系统

学生成绩录入学生成绩查询学生成绩修改学生成绩排名学生基本信息查询退出 1

图1 学生综合测评系统功能图

通过上图的功能分析,把整个系统划分为6个模块:

1、 学生成绩录入:该模块主要实现学生各个科目成绩的初始化,借助函数initial()来实现。

2、 学生成绩查询:该模块主要实现对学生各个科目成绩的查询,借助函数search()来实现。

3、 学生成绩修改:该模块主要实现对学生各个科目的成绩的修改,借助函数amend()来实现。

4、 学生成绩排名:该模块主要是实现对学生总成绩进行排名,借助函数sort()来实现。

5、 学生基本信息输出:该模块主要实现学生基本信息(学号、姓名、性别、系别班级)的输出,借助函数message()来实现。

6、 退出。

三、系统的设计与实现

(一) 学生成绩录入

分析: 选择成绩录入选项,输入需要录入成绩的学生的学号,分别录入各个科目的成绩。流程图如图所示

2

开始 输入学生的学号n n>10||n<=0 N

计算总成绩sum 计算平均成绩average 结束

图1:initial()流程图

分别输入学生的各科成绩 Y 没有此学生信息!

该模块的具体代码如下所示:

void initial() /*成绩录入*/ {

int n;

printf(\学生成绩录入***************************\\n\

printf(\请输入学生学号:\ scanf(\ if(n>10||n<=0)

printf(\没有此学生信息!\\n\ else {

student[n-1].num=n; printf(\请输入学生数学成绩:\ scanf(\ printf(\请输入学生英语成绩:\

3

scanf(\ printf(\请输入学生计算机成绩:\ scanf(\ printf(\请输入学生体育成绩:\ scanf(\ printf(\请输入学生马原成绩:\ scanf(\

student[n-1].sum=student[n-1].math

+student[n-1].English+student[n-1].computer+student[n-1].my+student[n-1].PE;

student[n-1].average=student[n-1].sum/5; }

}

(二) 学生成绩查询

分析:选择学生成绩查询选项,输入所要查询的学生的学号,查询学生各个科目的成绩。流程图如图所示:

开始

输入学生的学号n n>10||n<=0 Y 输出学生各科目成绩, 总成绩,平均分 结束 N 没有此学生信息!

图2:search()流程

4

该模块的具体代码如下所示:

void search() /*成绩查询*/ {

int n;

printf(\学生成绩查询***********************\\n\ printf(\请输入要查询的学号:\ scanf(\ if(n>10||n<=0)

printf(\没有此学生信息!\\n\ else {

switch(n) {

case 1:printf(\学号:01\\n姓名:白宗峰\\n\ case 2:printf(\学号:02\\n姓名:陈兴旭\\n\ case 3:printf(\学号:03\\n姓名:陈玉国\\n\ case 4:printf(\学号:04\\n姓名:邓文娟\\n\ case 5:printf(\学号:05\\n姓名:董学斌\\n\ case 6:printf(\学号:06\\n姓名:杜翔宇\\n\ case 7:printf(\学号:07\\n姓名:范志琦\\n\ case 8:printf(\学号:08\\n姓名:顾子航\\n\ case 9:printf(\学号:09\\n姓名:韩厉英\\n\ case 10:printf(\学号:10\\n姓名:蒋东琴\\n\ }

printf(\数学成绩:%.1f\\n英语成绩:%.1f\\n计算机成绩:%.1f\\n体育成绩:%.1f\\n马原成绩:%.1f\\n平均成绩:%.1f\\n总成

绩:%.1f\\n\E,student[n-1].my,student[n-1].average,student[n-1].sum);

} }

(三) 学生成绩修改

分析:选择学生成绩修改选项,输入所要修改成绩的学生的学号,选择需要修改成绩的科目,修改该科目的成绩。流程图如下:

5

开始 输入学生的学号n n>10||n<=0 N 输入需要修改成绩 的科目的编号q Y 没有此学生信息!

q>5||q<0 输入新的成绩 没有此科目的信息! 计算总成绩sum 计算平均成绩average 结束 图3:amend()流程

该模块的具体代码如下所示:

void amend() /*成绩修改*/ {

void math(int n); void English(int n); void computer(int n); void PE(int n); void my(int n); int n,q;

printf(\学生成绩修改*************************\\n\

6

printf(\请输入学生学号:\ scanf(\ if(n>10||n<=0)

printf(\没有此学生信息!\\n\ else {

student[n-1].num=n;

printf(\ printf(\学生考试科目 *\\n\ printf(\ printf(\数学 2.英语 *\\n\ printf(\计算机 4.体育 *\\n\ printf(\马克思原理 *\\n\ printf(\

printf(\请选择需要修改的科目(例如:修改计算机成绩请输入: 3)\\n\ scanf(\ switch(q) {

case 1: math(n);break; case 2: English(n);break; case 3: computer(n);break; case 4: PE(n);break; case 5: my(n);break; }

student[n-1].sum=student[n-1].math

+student[n-1].English+student[n-1].computer+student[n-1].my+student[n-1].PE;

student[n-1].average=student[n-1].sum/5; /*修改后重新计算总分和平均分*/

} }

void math(int n) {

printf(\请重新输入学生数学成绩:\ scanf(\ }

void English(int n) {

printf(\请重新输入学生英语成绩:\ scanf(\ }

void computer(int n)

7

{

printf(\请重新输入学生计算机成绩:\ scanf(\ }

void PE(int n) {

printf(\请重新输入学生体育成绩:\ scanf(\ }

void my(int n) {

printf(\请重新输入学生马原成绩:\ scanf(\ }

(四) 学生成绩排名

分析:选择学生成绩排名选项,系统根据学生总成绩完成对学生

成绩的排名。流程图如下:

开始

图4:sort()流程

结束 输出学生成绩排名结果 该模块的具体代码如下所示:

void sort() /*成绩排名*/ {

int i,j,p;

for(i=0;i<10;i++) student_0[i]=student[i];

for(j=0;j<9;j++)

8

for(i=0;i<9-j;i++)

if(student_0[i].sum

s=student_0[i];

student_0[i]=student_0[i+1]; student_0[i+1]=s; }

printf(\学生成绩排名*************************************\\n\

printf(\┌──────────────────────────────────———┐\\n\

printf(\│ 学生成绩总表 │\\n\

printf(\├──┬──┬───┬───┬───┬───┬───┬───┬───┬───┤\\n\

printf(\│排名│学号│ 姓名 │ 数学 │ 英语 │计算机│ 体育 │ 马原 │平均分│ 总分 │\\n\

printf(\├──┼──┼───┼───┼───┼───┼───┼───┼───┼───┤\\n\

for(i=0;i<10;i++) {

printf(\│ %-3d\ p=student_0[i].num; switch(p) {

case 1:printf(\│ 01 │白宗峰│\ case 2:printf(\│ 02 │陈兴旭│\ case 3:printf(\│ 03 │陈玉国│\ case 4:printf(\│ 04 │邓文娟│\ case 5:printf(\│ 05 │董学斌│\ case 6:printf(\│ 06 │杜翔宇│\ case 7:printf(\│ 07 │范志琦│\ case 8:printf(\│ 08 │顾子航│\ case 9:printf(\│ 09 │韩厉英│\ case 10:printf(\│ 10 │蒋东琴│\ default:printf(\│ │ │\ }

printf(\│%6.1f│%6.1f│%6.1f│%6.1f│%6.2f│%6.1f│

\\n\nt_0[i].my,student_0[i].average,student_0[i].sum); } }

9

(五) 学生基本信息查询

分析:选择查询学生基本信息选项,输入学生的学号,查询相应学

号学生的基本信息。流程图如下:

开始

输入学生的学号n

n>10||n<0 N 输出学号对应 学生的成绩 Y 无此学生的基本信息! 结束 图5:message()流程

该模块的具体代码如下所示:

void message() /*基本信息查询*/ {

int n;

printf(\学生基本信息查询***************************\\n\ printf(\请输入学生学号:\\n\ scanf(\ if(n>10||n<=0)

printf(\没有此学生信息!\\n\else {

switch(n) {

case 1:printf(\学生姓名:白宗峰\\n学生学号:01\\n学生性别:男\\n学生系别:工学系\\n学生专

10

业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 2:printf(\学生姓名:陈兴旭\\n学生学号:02\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 3:printf(\学生姓名:陈玉国\\n学生学号:03\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 4:printf(\学生姓名:邓文娟\\n学生学号:04\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 5:printf(\学生姓名:董学斌\\n学生学号:05\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 6:printf(\学生姓名:杜翔宇\\n学生学号:06\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 7:printf(\学生姓名:范志琦\\n学生学号:07\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 8:printf(\学生姓名:顾子航\\n学生学号:08\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 9:printf(\学生姓名:韩厉英\\n学生学号:09\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\ case 10:printf(\学生姓名:蒋东琴\\n学生学号:10\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\ default:printf(\没有此学生信息!\\n\ } } }

四、系统测试

(一) 测试main_( )函数

(二) 测试initial()函数

(1) 测试该函数使用的测试方法:逐个输入法 。

(2) 测试的具体步骤:选择成绩录入功能选项,输入学号,然

后依次输入各科成绩。

(3) 测试用例的选取:学号:3,数学成绩:78,英语成绩67,

11

计算机成绩:81,体育成绩:75,马原成绩:65.

(4) 测试的结果:

(三) 测试search()函数

(1)测试该函数使用的测试方法:随意选择一个学号。

(2)测试的具体步骤:选择成绩查询功能选项,输入需要查询成绩的学号,系统自动输出各科成绩。

(3)测试用例的选取:学号:1。 (4)测试的结果:

(四) 测试amend()函数

(1)测试该函数使用的测试方法:随意选择输入。

(2)测试的具体步骤:选择成绩修改功能选项,输入学号,输入需要修改的科目,输入新的成绩。

(3)测试用例的选取:学号:5,修改科目:计算机,修改成绩:60。

12

(4)测试的结果:

(五) 测试sort()函数

(1)测试该函数使用的测试方法:

(2)测试的具体步骤:选择成绩排名功能选项,系统自动对学生按总成绩排名,然后输出。

(3)测试用例的选取 (4)测试的结果:

(六) 测试message()函数 (1)测试该函数使用的测试方法:

13

(2)测试的具体步骤:选择学生基本信息查询功能选项,输入所要查询的学号,系统自动输出该学号对应学生的信息。

(3)测试用例的选取:学号:7。 (4)测试的结果:

五、总结

系统完成了对学生成绩的录入、查询、修改、学生基本信息的查

询、以及根据学生总成绩对学生进行排名的功能。该系统的应用能使成绩管理变得更加方便。

系统的不足是系统只设置了10个学生名额,只能管理10个学生

的成绩和个人信息,修改学生的个人信息只能从程序中修改,程序没有设置修改学生信息的功能。其次,不能新增和删除学生个人基本信息。

通过这次课程设计实验,使我对c语言有了一个更好的掌握,尤

其是在函数调用方面,能够把不同的模块进行划分,分别调用函数去实现。

六、附件(代码、部分图表)

#include

#include struct student {

int num; /*学号*/ char name[15]; /*姓名*/ float math; /*数学成绩*/ float English; /*英语成绩*/

14

float computer; /*计算机成绩*/ float PE; /*体育成绩*/ float my; /*马原成绩*/ float average; /*平均成绩*/ float sum; /*总成绩*/ }student[10],student_0[10],s; void main()

{ int a;

void initial(); /*成绩录入*/ void search(); /*成绩查询*/ void amend(); /*成绩修改*/ void sort(); /*成绩排名*/ void message(); /*基本信息查询*/ for(;;) {

printf(\n\

printf(\学生综合测评系统 \\n\

printf(\学生考试成绩录入 2.学生考试成绩查询 \\n\

printf(\学生考试成绩修改 4.学生考试成绩排名 \\n\

printf(\学生基本信息查询 0. 退出 \\n\

printf(\n\

printf(\请选择你需要进行的操作(例如:进行学生考试成绩录入请输入: 1) \\n\

printf(\ scanf(\ switch(a) {

case 1:initial();break; case 2:search();break; case 3:amend();break; case 4:sort();break; case 5:message();break; case 0:exit(0);break; } } }

void initial() /*成绩录入*/

15

{

int n;

printf(\学生成绩录入***************************\\n\ printf(\请输入学生学号:\ scanf(\ if(n>10||n<0)

printf(\没有此学生信息!\\n\ else {

student[n-1].num=n; /* student[0]-student[9] */

printf(\请输入学生数学成绩:\ scanf(\ printf(\请输入学生英语成绩:\ scanf(\ printf(\请输入学生计算机成绩:\ scanf(\ printf(\请输入学生体育成绩:\ scanf(\ printf(\请输入学生马原成绩:\ scanf(\

student[n-1].sum=student[n-1].math

+student[n-1].English+student[n-1].computer+student[n-1].my+student[n-1].PE; student[n-1].average=student[n-1].sum/5; /*计算总分和平均分*/ } }

void search() /*成绩查询*/ {

int n;

printf(\学生成绩查询***********************\\n\ printf(\请输入要查询的学号:\ scanf(\ switch(n) {

case 1:printf(\学号:01\\n姓名:白宗峰\\n\ case 2:printf(\学号:02\\n姓名:陈兴旭\\n\ case 3:printf(\学号:03\\n姓名:陈玉国\\n\ case 4:printf(\学号:04\\n姓名:邓文娟\\n\ case 5:printf(\学号:05\\n姓名:董学斌\\n\ case 6:printf(\学号:06\\n姓名:杜翔宇\\n\ case 7:printf(\学号:07\\n姓名:范志琦\\n\ case 8:printf(\学号:08\\n姓名:顾子航\\n\ case 9:printf(\学号:09\\n姓名:韩厉英\\n\

16

case 10:printf(\学号:10\\n姓名:蒋东琴\\n\ }

printf(\数学成绩:%.1f\\n英语成绩:%.1f\\n计算机成绩:%.1f\\n体育成绩:%.1f\\n马原成绩:%.1f\\n平均成绩:%.1f\\n总成

绩:%.1f\\n\-1].PE,student[n-1].my,student[n-1].average,student[n-1].sum); }

void amend() /*成绩修改*/ {

void math(int n); void English(int n); void computer(int n); void PE(int n); void my(int n); int n,q;

printf(\学生成绩修改*************************\\n\ printf(\请输入学生学号:\ scanf(\ student[n-1].num=n;

printf(\ printf(\学生考试科目 *\\n\ printf(\ printf(\数学 2.英语 *\\n\ printf(\计算机 4.体育 *\\n\ printf(\马克思原理 *\\n\ printf(\

printf(\请选择需要修改的科目(例如:修改计算机成绩请输入: 3)\\n\ scanf(\ switch(q) {

case 1: math(n);break; case 2: English(n);break; case 3: computer(n);break; case 4: PE(n);break; case 5: my(n);break; }

student[n-1].sum=student[n-1].math

+student[n-1].English+student[n-1].computer+student[n-1].my+student[n-1].PE; student[n-1].average=student[n-1].sum/5; /*修改后重新计算总分和平均分*/ }

void math(int n)

17

{

printf(\请重新输入学生数学成绩:\ scanf(\ }

void English(int n) {

printf(\请重新输入学生英语成绩:\ scanf(\ }

void computer(int n) {

printf(\请重新输入学生计算机成绩:\ scanf(\ }

void PE(int n) {

printf(\请重新输入学生体育成绩:\ scanf(\ }

void my(int n) {

printf(\请重新输入学生马原成绩:\ scanf(\ }

void sort() /*成绩排名*/ {

int j,i,p,t;

for(i=0;i<10;i++) /* student_0[i]=student[i];

for(j=0;j<9;j++) /* for(i=0;i<9-j;i++)

if(student_0[i].sum

s=student_0[i];

student_0[i]=student_0[i+1]; student_0[i+1]=s; }

printf(\学生成绩排名

18

传值 */ 起泡法排序 */

*************************************\\n\

printf(\┌──────────────────────────────────———┐\\n\

printf(\│ 学生成绩总表 │\\n\

printf(\├──┬──┬───┬───┬───┬───┬───┬───┬───┬───┤\\n\

printf(\│排名│学号│ 姓名 │ 数学 │ 英语 │计算机│ 体育 │ 马原 │平均分│ 总分 │\\n\

printf(\├──┼──┼───┼───┼───┼───┼───┼───┼───┼───┤\\n\

for(i=0;i<10;i++) {

printf(\│ %-3d\ p=student_0[i].num; switch(p) {

case 1:printf(\│ 01 │白宗峰│\ case 2:printf(\│ 02 │陈兴旭│\ case 3:printf(\│ 03 │陈玉国│\ case 4:printf(\│ 04 │邓文娟│\ case 5:printf(\│ 05 │董学斌│\ case 6:printf(\│ 06 │杜翔宇│\ case 7:printf(\│ 07 │范志琦│\ case 8:printf(\│ 08 │顾子航│\ case 9:printf(\│ 09 │韩厉英│\ case 10:printf(\│ 10 │蒋东琴│\ default:printf(\│ │ │\ }

printf(\│%6.1f│%6.1f│%6.1f│%6.1f│%6.2f│%6.1f│\\n\student_0[i].my,student_0[i].average,student_0[i].sum); } }

void message() /*基本信息查询*/ {

int n;

printf(\学生基本信息查询***************************\\n\ printf(\请输入学生学号:\\n\ scanf(\ switch(n) {

19

case 1:printf(\学生姓名:白宗峰\\n学生学号:01\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 2:printf(\学生姓名:陈兴旭\\n学生学号:02\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 3:printf(\学生姓名:陈玉国\\n学生学号:03\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 4:printf(\学生姓名:邓文娟\\n学生学号:04\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 5:printf(\学生姓名:董学斌\\n学生学号:05\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 6:printf(\学生姓名:杜翔宇\\n学生学号:06\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 7:printf(\学生姓名:范志琦\\n学生学号:07\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 8:printf(\学生姓名:顾子航\\n学生学号:08\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 9:printf(\学生姓名:韩厉英\\n学生学号:09\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 10:printf(\学生姓名:蒋东琴\\n学生学号:10\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\ default:printf(\没有此学生信息!\\n\ } }

20

case 1:printf(\学生姓名:白宗峰\\n学生学号:01\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 2:printf(\学生姓名:陈兴旭\\n学生学号:02\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 3:printf(\学生姓名:陈玉国\\n学生学号:03\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 4:printf(\学生姓名:邓文娟\\n学生学号:04\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 5:printf(\学生姓名:董学斌\\n学生学号:05\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 6:printf(\学生姓名:杜翔宇\\n学生学号:06\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 7:printf(\学生姓名:范志琦\\n学生学号:07\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 8:printf(\学生姓名:顾子航\\n学生学号:08\\n学生性别:男\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 9:printf(\学生姓名:韩厉英\\n学生学号:09\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\

case 10:printf(\学生姓名:蒋东琴\\n学生学号:10\\n学生性别:女\\n学生系别:工学系\\n学生专业(方向)班级:计算机科学与技术(网络工程方向)\\n\ default:printf(\没有此学生信息!\\n\ } }

20

本文来源:https://www.bwwdw.com/article/najg.html

Top