学生成绩管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 问题描述

学生成绩管理系统

学生成绩管理系统

学生信息包括学期、学号、班级、姓名,和语文、数学、英语、计算机四门课成绩。并按班级、学期查询学生成绩,并能录入、修改,求学生平均成绩和总成绩,输出不及格科目,按班级输出成绩单,按班级对学生成绩进行排序。

2 系统分析

2.1 题目要求

学生成绩管理系统设计

学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。

主要功能:

(1)能按学期、按班级完成对学生成绩的录入、修改

(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表

(3)能查询学生成绩,不及格科目及学生名单

(4)能按班级输出学生的成绩单

(5)能按班级,按课程,对学生成绩进行排序。

要求:使用二进制文件方式存储数据,系统以菜单方式工作

2.2算法设计

(1)创建主菜单

(2)实现学生成绩信息录入

(3)实现学生成绩信息修改

(4)实现学生成绩信息查询

(a)按学期、班级查询学生的成绩

(b)按学号查询学生的成绩

(c)查询不及格的科目和学生名单

(5)实现学生成绩成绩统计

(a)按班级统计学生的总分、平均分

(b)按班级、课程对学生的总分进行排序

(6)实现学生成绩信息浏览

2.3流程图

2.4关键问题

难点:指针p、函数。

解决:head=NULL无条件循环指针p指向新开辟的单元

指针p是否为空

是否

输入学号p->num

输出p->num是否为@

内存是否

溢出输入姓名p->name

停止for(i=0;i<3;i++)

输入输入成绩

返回p->sum=s;

菜单 p->average=(float)s/3;

主函数: int main()

新建函数:infor *init()

输入函数:infor *creat()

显示函数: struct infor *view(struct infor *head)

删除函数: infor *delete(infor *head)

按名字寻找函数: void lookup(infor *head)

保存函数: void save(infor *head)

按总分排序函数: infor *sort(infor *head)

计算总分和均分函数: void zong(struct infor *head) 修改函:void change(struct infor *head)

按学号排序函数: infor *index(infor *h)

3 系统实现

3.1 题目一

(源代码)

#include

#include

#include

#define N 4

struct infor

{

int term; // 定义学期(1或2) int no; //学号

int clas; //定义班级(1或2班)

char name[9]; //姓名

float chinese; //定义四门成绩

float english;

float math;

float computer;

struct infor *link;

};

int n=0 ;

//***************************************************************************** *

//函数功能:创建链表,录入学生的相关信息,此函数返回一个指向链表头的指针

//***************************************************************************** *

struct infor *creat()

{

struct infor *head=NULL,*p=NULL,*q=NULL;

char c;

fflush(stdin);

printf("是否要输入信息(y/n):");

scanf("%c",&c);

p=q=(struct infor *)malloc(sizeof(struct infor));

q=head;

while(p!=NULL&&c=='y')

{

n++;

p=(struct infor *)malloc(sizeof(struct infor));

printf("请输入要录入学生信息的学期:");

fflush(stdin);

scanf("%d",&p->term); //学期只能为1或2

while(p->term!=1&&p->term!=2)

{

getchar();

printf("输入错误!请重新输入:"); //若学期不为1或2,则输入有误

scanf("%d",&p->term);

}

printf("请输入要录入学生成绩信息的班级:");

fflush(stdin); //班级只能为1或2

scanf("%d",&p->clas);

while(p->clas!=1&&p->clas!=2)

{

getchar();

printf("输入错误!请重新输入:");

scanf("%d",&p->clas);

}

printf("请输入该班的学生信息!\n"); //输入学生信息(包括学号、四门成绩)

printf("请输入学生学号:");

fflush(stdin);

scanf("%d",&p->no);

printf("请输入学生姓名:");

fflush(stdin);

scanf("%s",p->name); //输入学生姓名

printf("请输入语文成绩(0-100):"); //输入四门成绩scanf("%f",&p->chinese);

printf("请输入数学成绩(0-100):");

scanf("%f",&p->math);

printf("请输入英语成绩(0-100):");

scanf("%f",&p->english);

printf("请输入计算机成绩(0-100):");

scanf("%f",&p->computer);

if(n==1) //创建新结点head=p;

else

q->link=p;

q=p;

printf("是否还要输入信息(y/n):");

fflush(stdin);

scanf("%c",&c);

相关文档
最新文档