学生成绩信息管理系统
余年寄山水
920次浏览
2021年02月02日 18:09
最佳经验
本文由作者推荐
背景声音-冷笑话全集
1
问题描述
学生成绩管理系统
学生成绩管理系统
学生信息包括学期、学号、班级、姓名,和语文 、数学、英语、计算机四门
课成绩。并按班级、学期查询学生成绩,并能录入、修改,求学生平均成绩和 总
成绩,输出不及格科目,按班级输出成绩单,按班级对学生成绩进行排序。
2
系统分析
问题定义
学生成绩管理系统设计
学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩
(
语文、数学、
英语和计算机
)
。
主要功能:
(
1
)
能按学期、按班级完成对学生成绩的录入、修改
(
2
)
能按班级统计学生的成绩,
求学生的总分及平均分,
设计并输出统计
报表
(
3
)
能查询学生成绩,不及格科目及学生名单
(
4
)
能按班级输出学生的成绩单
(
5
)
能按班级,按课程,对学生成绩进行排序。
要求:使用二进制文件方式存储数据,系统以菜单方式工作
开发工具
VC++
数据结构
typedef struct studentMark
{
int term;
int classes;
char name[10];
int number;
char sex[7];
float chinese;
float math;
float english;
float computer;
struct studentMark *next;
} MARK;
这是定义一个结构体,主要包括学期,班级 ,姓名,学号,性别,语文成绩,数
学成绩,
英语成绩,
计算机成绩,
以及包 括一个结构体指针。
另外还用了
typedef
这个关键字。因此,在程序的后面也可 以用
MARK
来定义结构体变量或结构体指
针变量。
int term;
定义学期,学期只能是第一学期或者第二学期。
例如
int 1
;则表示第一学期。
int classes;
定义班级,班级只能是一班或者二班。
char name[10];
定义姓名,在数组中存放字符串。
例如
int 2
;则是表示定义为二班。
例如
char name[]=
“
yang
”;则该学生的姓名为
yang
char sex[7];
定义姓别,其性别最大长度为
7.
int number;
定义学号,例如
int 1
;则该学生学号为
1
号。
例如
char
sex[]=
“
man
”;说明该学生为男生。同样可
int main();
主函数,程序的入口。
void m(MARK *head);
主菜单的函数原型,在函数
m
(
head
)中主 要有选择创建学生成绩信息,
查询学生成绩信息,
修改学生成绩信息,
统计学生成绩信 息,
输出学生成绩信息,
MARK *creat(void );
创建函数的函数原型,在函数
creat
()中用户可以输入初始的 学生信息:
其中包括学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和
fl oat chinese;
定义语文成绩。
float math;
定义数学成绩。
float english;
定义英语成绩。
float computer;
定义计算机成绩。
以这样定义女生。
struct studentMark *next;
定义一个结构体指针。
存储学生成绩信息于文件,以及退出体统等选项可供用户选择。
计算机等相关信息。
void searchMark(MARK *head);
查询菜单的函数原型,在函数
searchMar k
(
head
)中用户可以自由选择是
查询某一个学生的
成
绩还是
查
询不及
格
学生的成
绩。而
这通过调用
函数
searchMarkStusentone
(
head
)和函数
s earchMarkFail(head
)完成操作。
void searchMarkStusentone(MARK *head);
查询某个学生成绩的函数原型,在函数
searchMarkStusentone
(
head
)中
用户可以按学号或
班
级或者
是
按学期
来
查找某个
学生的
成绩。通过
函数
searchnumber(he ad
)
和函数
searchclasses
(
head
)
以及函数
searchterm
(
head
)
完成操作。< br>
void searchnumber(MARK *head)
按学号查找学生的函数原型,
;
void searchclasses(MARK *head);
按班级查找学生的函数原型,
void searchterm(MARK *head);
按学期查找学生的函数原型,
void searchMarkFail(MARK *head);
查询没有及格的学生的函数原型,通过这个函数可以查找学生不及格科目
及学生名单。
MARK *changeMark(MARK *head);
修改学生成绩信息的函数原型,可以修改学生的学期、班级、姓名、学号和
性别以及学生的语文、数学、 英语和计算机等相关信息。
void conuntMark(MARK *head);
统计学生成绩的函数原型,在函数
conun tMark
(
head
)中用户可以统计
学生的总成绩以及平均成绩,通过调 用函数
totalMark
(
head
)和函数
aveMark(
head
)完成操作。
void totalMark(MARK *head);
统计学生总成绩的函数原型,
void aveMark(MARK *head);
统计学生平均成绩的函数原型,
void printClassMark(MARK *head);
输出学生成 绩信息的函数原型,通过此函数可以输出学生的学期、班级、
姓名、学号和性别以及学生的语文、数学、 英语和计算机等相关信息到屏幕上。
void saveFileMark(MARK *head);
存储学生成绩信息于文件的函数原型,
通过此函数 可以输出学生的学期、
班
级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信 息与文件
中。
算法描述
(
1
)创建主菜单
(
2
)实现学生成绩信息录入
(
3
)实现学生成绩信息查询
(
4
)实现学生成绩信息修改
(一)修改某个学生的成绩
(a)
按学期查询学生的成绩
(
b
)按班级查询学生的成绩
(c)
按学号查询学生的成绩
(
二
)
查询不及格的科目和学生名单
(
5
)实现学生成绩统计
(a)
按班级统计学生的总分。
(b)
按班级统计学生的平均分。
(
6
)实现学生成绩信息输出
(
7
)保存学生的成绩信息于文件
(
8
)流程图如下:
程序调试情况
(
1
)源程序如下:
#include<>
#include<>
#include<>
#include<>
#define
MAR
(struct
studentMark
studentMark))
typedef struct studentMark
{
int term;
int classes;
char name[10];
int number;
char sex[7];
float chinese;
float math;
float english;
float computer;
struct studentMark *next;
} MARK;
void m(MARK *head);
MARK *creat(void );
void searchMark(MARK *head);
void searchMarkStusentone(MARK *head);
void searchnumber(MARK *head);
void searchclasses(MARK *head);
void searchterm(MARK *head);
void searchMarkFail(MARK *head);
*)malloc(sizeof(struct
MARK *changeMark(MARK *head);
void conuntMark(MARK *head);
void totalMark(MARK *head);
void aveMark(MARK *head);
void printClassMark(MARK *head);
void saveFileMark(MARK *head);
int main(void)
{
MARK *head=NULL;
printf(
*************** *******************************n
printf(
欢迎进入学生成绩信息管理系统
##n
print f(
******************************************** **n
}
void m(MARK *head )
{
int choose;
while(1)
{
printf(
head=creat();
m(head);
return(0);
printf(
printf(
学生成绩信息管理
n
printf(
printf(
创建成绩信息
n
}
printf(
查询成绩信息
n
printf(
修改成绩信息
n
printf(
统计成绩信息
n
printf(
按班级输出学生信息
n
printf(
保存成绩信息于文件
n
printf(
退出系统
n
printf(
fflush(stdin);
printf(
请选择:
scanf(
if(1==choose)
head=creat();
else if(2==choose)
searchMark(head);
else if(3==choose)
head=changeMark(head);
else if(4==choose)
conuntMark(head);
else if(5==choose)
printClassMark(head);
else if(6==choose)
saveFileMark(head);
else
printf(
退出系统
break;
}
xt
stu=fopen(fileName,
while(p!=NULL)
{
fprintf(stu,
fprintf(stu,
fprintf(stu,
fprintf(stu,
uter );
}
//
查找某个学生的成绩
void searchMarkStusentone(MARK *head)
{
char ch1,ch2;
}
}
fclose(stu);
printf(
已经保存文件在
%s
中!
n
printf(
请按任意键返回主菜单!
n
getchar();
p=p->next
MARK *p=head->next;
if(p==NULL)
{
}
else
while(1)
printf(
没有任何信息,请先存入信息!
n
printf(
请按任意键返回主菜单!
n
getchar();
{
printf(
你要选择何种方式查询成绩
!n
printf(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n
printf(
、学号
: n
printf(
、班级
: n
printf(
、学期
: n
printf(< br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n
}
//
查询不及格学生
void searchMarkFail(MARK *head)
{
MARK *p=head->next
char name[10];
fflush(stdin);
scanf(
switch(ch1)
{
case 'a':searchnumber(head);break;
case 'b':searchclasses(head);break;
case 'c':searchterm(head);break;
}
printf(
printf(
是否还要继续查询学生的信息
(y/n):
fflush(stdin);
if((ch2=getchar())=='n')
}
break;