学生成绩信息管理系统

余年寄山水
920次浏览
2021年02月02日 18:09
最佳经验
本文由作者推荐

背景声音-冷笑话全集

2021年2月2日发(作者:一二拍拍手)
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;

背景声音-冷笑话全集


背景声音-冷笑话全集


背景声音-冷笑话全集


背景声音-冷笑话全集


背景声音-冷笑话全集


背景声音-冷笑话全集


背景声音-冷笑话全集


背景声音-冷笑话全集