福建工程学院计算机与信息科学系
实验报告
2012 – 2013 学年第 1 学期 任课老师: 章静 矚慫润厲钐瘗睞枥庑赖賃軔朧碍鳝。
课程名称
结构化程序综合设计
班级
计算机1001
座号
3100301114
姓名
张扬文
实验题目
学生成绩管理系统
实验时间
实验开始日期:2012/2/24 报告提交日期:2012/3/10
实验目的、要求
1.该实验的课内学时是4个课时。
2.程序完成后应该完成如下基本功能:
1)用自定义结构体typedef struct设计该软件的数据结构;
2)用数组或指针链表将所有学生的数据按照学号顺序链接起来;
3)程序能够按照学号顺序输入学生的三门成绩,并计算平均成绩和总成绩。
4)程序能够显示已经输入的指定学号的学生成绩以及平均成绩和总成绩。
5)程序能够按要求显示指定分数段的学生成绩以及平均成绩和总成绩。
6)能够统计班级总人数、班级平均成绩。
7)能够增加和删除指定学生的成绩。
8)按照指定的要求以及顺序(升序或降序)显示学生成绩以及平均成绩和总成绩。
实验步骤与内容
按如下顺序写:
主要设计思想;
学生成绩管理系统包含多种功能,可以输入学生成绩,删除,插入,排序,查找等等。。。输入的信息又包含学生姓名,学号,各科成绩。。所以首先要定义一个结构体:
typedef struct node
{
char id[20];
char name[15];
int score[MAXCOURSE];
int sum;
double average;
struct node *next;
}Student;
根据结构体中的内容飙血程序。
主要数据结构及其解释
在此次程序设计中用了链表来实现对数据的处理,并设计了菜单界面如图,根据switch语句来对用户的选择:
模块关系图;
主函数
主函数
输入学生信息
打印成绩
计算平均分和总分
查找学生成绩
插入学生成绩
显示分数段的学生
按总分平均分降序排列
菜单
所有函数的简要说明;
插入函数Insert_Before();主要是要重新加入学生的信息,通过头插法。
计算平均分和总分Count_Score();将输入的数据计算出学生的平均分和总分。
删除学生信息Del_Student();删除某个学生的成绩。
按姓名查找Searchname_Student();通过输入学生的姓名找到学生的成绩。
计算班级总人数people=Count_People();将总的输入学生人数打印出来。
显示某分数段学生信息Section_Score();首先选择你要某科目的成绩并输入成绩的范围,按条件输出学生成绩。
按总分,平均分降序排列Descend_English();将输入的全部学生成绩按总分排序。
所有源代码;
/*
学生成绩管理系统 C语言
*/
#include
#include
#include
#define MAXID 10
#define MAXNAME 20
#define MAXCOURSE 3
/* 学生数据结构 */
typedef struct node
{
char id[20];
char name[15];
int score[MAXCOURSE];
int sum;
double average;
struct node *next;
}Student;
/* 头指针 */
Student *head = NULL;
/*课程名称*/
char ClassName[MAXCOURSE][20]={"数学","英语","计算机"};
/* 菜单 */
int Menu()
{
system("cls");
fflush(stdin);
printf(" 计算机1001 张扬文 3100301114 \n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("************学生成绩管理系统****************\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" 1-初始化\n");
printf(" 2-输入学生信息\n");