学生成绩管理论文(共6篇)
篇1:学生成绩管理论文
宁波大红鹰学院
项目名称:项目组长:项目成员:班级名称:专业名称:完成时间:信息工程学院
课 程 设 计 报 告
学生成绩管理系统
黄轮
蔡萍萍、邵芬芬、雷骁 09计科1、09计科2
计算机科学与技术
2010.11.3
信息工程学院制
目 录
1课程设计过程概述 ……………………………………………………………………….1 2课程设计题目描述和基本设计要求……………………………………………………...1 2.1课程设计题目描述……………………………………………………………………..1 2.2基本设计要求…………………………………………………………………………..1.3系统需求分析与设计………………………………………………………………………1 3.1系统需求分析…………………………………………………………………………..1 3.2其他需求分析…………………………………………………………………………..1 3.3系统设计………………………………………………………………………………..1 4各功能模块设计……………………………………………………………………………1 4.1学生成绩管理系统录入学生成绩模块设计…………………………………………..1 4.2求各门课程的平均分模块设计………………………………………………………..2.4.3求各门课程的最高分模块设计………………………………………………………..3 4.4求各门课程的最低分模块设计………………………………………………………..4 4.5查询所有学生信息的模块设计………………………………………………………..5 4.6查询个别学生成绩的模块设计………………………………………………………..5 4.7退出系统的模块设计……………………………………………………………….….6 5系统总代码……………………………………………………………………………..…..7 6课程设计总结……………………………………………………………………………...10.6.1遇到的问题及解决办法……………………………………………………………….10 6.2心得体会……………………………………………………………………………….10.学生成绩管理系统
1课程设计过程概述
在2010年11月,我们进行了JAVA课程的第一个课程设计学生成绩管理系统,要求我们在课后完成,并且及时接受答辩。这次课程设计的主要目的是结合Java程序设计课程,培养我们的思维,提高用Java编程的实际动手能力并增强大家对JavaZ这门课程的了解。这次课程设计的主要内容是独立用Java语言开发一个小的应用程序,学生成绩管理系统,从而深刻体会Java的应用性及其作用。
2课程设计题目描述和基本设计要求
2.1课程设计题目描述
我们设计的是学生成绩管理系统。主要用到的是做一个学生成绩管理的界面,可以在很短的时间内存储学生信息,并且及时查到某个学生的相关信息。2.2基本设计要求
(1)系统安全、灵活、可靠;
(2)功能齐全;
(3)操作方便、简单,界面友好;
3系统需求分析与设计
3.1系统需求分析
功能目标:
输入班级n个同学的学号,姓名,四科成绩(应用数学、大学英语、Java程序设计、计算机应用基础)
计算出每个学生四门课的平均成绩,并输出。
输出全组各科平均分,最高分和最低分。 输入姓名查询成绩
3.2其他需求分析
技能要求:
通过定义学生类,建立学生对象,学会运用面向对象思想进行程序设计。
通过对学生信息的输入/输出,初步掌握Java基本输入/输出方法。 通过菜单处理,掌握字符界面的菜单处理能力。 了解复杂问题的分析、设计、规划的一般流程。
3.3系统设计
要求学生成绩管理系统用字符界面实现、也可用图形界面实现,并能实现客户端的查阅。
4各功能模块设计
4.1学生成绩管理系统录入学生成绩模块设计
录入学生的成绩,可以方便用户管理更多的信息 主要的功能代码:
case 1:
for(i=0;i System.out.print(“请输入该生的学号:”);s[i].num=in.skip(“n”).nextLine();System.out.print(“请输入该生的姓名:”);s[i].name=in.nextLine();System.out.print(“请输入该生的应用数学成绩:”);s[i].Math_1=in.nextDouble();System.out.print(“请输入该生的英语成绩:”);s[i].English=in.nextDouble();System.out.print(“请输入该生的java成绩:”);s[i].Java_1=in.nextDouble();System.out.print(“请输入该生的计算机成绩:”);s[i].Computer=in.nextDouble(); } break;图1 4.2求各门课程的平均分模块设计 在这一界面我们要通过已有的数据,得出各门学科的平均分 主要的功能代码: case 2: double Math_1sum=0,Englishsum=0,Java_1sum=0,Computersum=0;double Math_1pj=0,Englishpj=0,Java_1pj=0,Computerpj=0;for(i=0;i Englishsum=Englishsum+s[i].English;Java_1sum=Java_1sum+s[i].Java_1;Computersum=Computersum+s[i].Computer;} Math_1pj=Math_1sum/i;Englishpj=Englishsum/i;Java_1pj=Java_1sum/i;Computerpj=Computersum/i;System.out.println(i+“位同学应用数学的平均分为:”+Math_1pj);System.out.println(i+“位同学英语的平均分为:”+Englishpj);System.out.println(i+“位同学Java的平均分为:”+Java_1pj);System.out.println(i+“位同学计算机的平均分为:”+Computerpj);break; 图2 4.3求各门课程的最高分模块设计 在聊天界面中,用户可以得出各门课程的最高分 主要的界面代码为: case 3: double Math_1max=0,Englishmax=0,Java_1max=0,Computermax=0;for(i=0;i if(s[i].Math_1>Math_1max) Math_1max=s[i].Math_1;if(s[i].English>Englishmax) Englishmax=s[i].English;if(s[i].Java_1>Java_1max) Java_1max=s[i].Java_1;if(s[i].Computer>Computermax)Computermax=s[i].Computer; } System.out.println(“应用数学最高分:”+Math_1max);System.out.println(“英语最高分:”+Englishmax);System.out.println(“Java最高分:”+Java_1max);System.out.println(“计算机最高分:”+Computermax);break;图3 4.4求各门课程的最低分模块设计 主要是能得出各门课程的最低分 主要的界面代码为: case 4: double Math_1min=120,Englishmin=120,Java_1min=120,Computermin=120;for(i=0;i Math_1min=s[i].Math_1;if(s[i].English Englishmin=s[i].English; if(s[i].Java_1 Java_1min=s[i].Java_1;if(s[i].Computer } System.out.println(“应用数学最低分:”+Math_1min);System.out.println(“英语最低分:”+Englishmin);System.out.println(“Java最低分:”+Java_1min);System.out.println(“计算机最低分:”+Computermin);break; 图4 4.5查询所有学生信息的模块设计 主要是为了快速的查出所有学生的信息 主要的界面代码为: case 5: for(i=0;i System.out.print(“姓名:”+s[i].name);System.out.print(“应用数学:”+s[i].Math_1);System.out.print(“英语:”+s[i].English);System.out.print(“Java:”+s[i].Java_1);System.out.println(“计算机:”+s[i].Computer);} break;图5 4.6查询个别学生成绩的模块设计 主要是为了快速的查出个别学生的信息 主要的界面代码为: case 6: System.out.print(“请输入要查找的姓名:”);int j=0;String name=in.skip(“n”).nextLine();for(i=0;i System.out.println(“学号:”+s[i].num); System.out.println(“姓名:”+s[i].name); System.out.println(“应用数学:”+s[i].Math_1); System.out.println(“英语:”+s[i].English); System.out.println(“Java:”+s[i].Java_1); System.out.println(“计算机:”+s[i].Computer); j=s.length;} } if(j==0) System.out.println(“没有你要查找的人,请确认后再查找!”); 图6 break; 查无此人的情况下: 4.7退出系统的模块设计 当查询结束的时候可以顺利的退出。 主要的界面代码为: case 7: System.out.println(“byebye!”); System.exit(0);default: System.out.println(“您输入的数字有误,应为1~7”);图7 5系统总代码 import java.util.*;class Student{ String num; String name;double Math_1,English,Java_1,Computer; } public class StudentMassage{ public static void main(String[] args){ Student[]s=new Student[3];int i;for(i=0;i } while(true){ System.out.println(“**********学生成绩管理系统**********”);System.out.println(“1.录入学生成绩”);System.out.println(“2.求各门课程的平均分”); System.out.println(“3.求各门课程的最高分”);System.out.println(“4.求各门课程的最低分”);System.out.println(“5.查询所有学生信息”);System.out.println(“6.查询个别学生成绩”);System.out.println(“7.退出系统”);System.out.print(“请选择:”);Scanner in=new Scanner(System.in);int x=in.nextInt(); switch(x){ case 1: for(i=0;i System.out.println(“请输入第”+(i+1)+“个学生的成绩信息”); System.out.print(“请输入该生的学号:”); s[i].num=in.skip(“n”).nextLine();System.out.print(“请输入该生的姓名:”);s[i].name=in.nextLine();System.out.print(“请输入该生的应用数学成绩:”);s[i].Math_1=in.nextDouble();System.out.print(“请输入该生的英语成绩:”);s[i].English=in.nextDouble();System.out.print(“请输入该生的java成绩:”);s[i].Java_1=in.nextDouble();System.out.print(“请输入该生的计算机成绩:”);s[i].Computer=in.nextDouble();} break;case 2: double Math_1sum=0,Englishsum=0,Java_1sum=0,Computersum=0;double Math_1pj=0,Englishpj=0,Java_1pj=0,Computerpj=0; for(i=0;i Math_1sum=Math_1sum+s[i].Math_1;Englishsum=Englishsum+s[i].English;Java_1sum=Java_1sum+s[i].Java_1;Computersum=Computersum+s[i].Computer;} Math_1pj=Math_1sum/i;Englishpj=Englishsum/i;Java_1pj=Java_1sum/i;Computerpj=Computersum/i;System.out.println(i+“位同学应用数学的平均分为:”+Math_1pj);System.out.println(i+“位同学英语的平均分为:”+Englishpj);System.out.println(i+“位同学Java的平均分为:”+Java_1pj);System.out.println(i+“位同学计算机的平均分为:”+Computerpj);break;case 3: double Math_1max=0,Englishmax=0,Java_1max=0,Computermax=0;for(i=0;i Math_1max=s[i].Math_1;if(s[i].English>Englishmax) Englishmax=s[i].English;if(s[i].Java_1>Java_1max) Java_1max=s[i].Java_1;if(s[i].Computer>Computermax)Computermax=s[i].Computer; } System.out.println(“应用数学最高分:”+Math_1max);System.out.println(“英语最高分:”+Englishmax);System.out.println(“Java最高分:”+Java_1max);System.out.println(“计算机最高分:”+Computermax);break;case 4: double Math_1min=120,Englishmin=120,Java_1min=120,Computermin=120; for(i=0;i Math_1min=s[i].Math_1; if(s[i].English Englishmin=s[i].English;if(s[i].Java_1 Java_1min=s[i].Java_1;if(s[i].Computer } System.out.println(“应用数学最低分:”+Math_1min);System.out.println(“英语最低分:”+Englishmin);System.out.println(“Java最低分:”+Java_1min);System.out.println(“计算机最低分:”+Computermin); } } } } break;case 5: for(i=0;i System.out.print(“学号:”+s[i].num); System.out.print(“姓名:”+s[i].name); System.out.print(“应用数学:”+s[i].Math_1); System.out.print(“英语:”+s[i].English); System.out.print(“Java:”+s[i].Java_1); System.out.println(“计算机:”+s[i].Computer);} break;case 6: System.out.print(“请输入要查找的姓名:”);int j=0;String name=in.skip(“n”).nextLine();for(i=0;i if(s[i].name.equals(name)){ System.out.println(“学号:”+s[i].num); System.out.println(“姓名:”+s[i].name); System.out.println(“应用数学:”+s[i].Math_1); System.out.println(“英语:”+s[i].English); System.out.println(“Java:”+s[i].Java_1); System.out.println(“计算机:”+s[i].Computer); j=s.length;} } if(j==0)System.out.println(“没有你要查找的人,请确认后再查找!”);break;case 7: System.out.println(“byebye!”); System.exit(0);default: System.out.println(“您输入的数字有误,应为1~7”);6课程设计总结 6.1遇到的问题及解决办法 在此次课程设计中,我遇到了一些问题,如:不能很好的将C语言的代码转化成Java语言,对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。 对于以上的问题,自己有清楚的认识,首先必须要对计算机产生兴趣,多阅读相关的书籍,多跟精通此方面的老师和同学交流、像他们学习。还有就是应该多动手编程。6.2心得体会 由于对java这门课还未深入了解,这是第一次小组合作设计程序,刚开始我们对它真的是很无措的,不知道该从哪里入手;经过指导老师的部分讲解和演示,我们茅塞顿开,着手开始编写代码,可是写着写着就出现问题了,程序实现不了,也改不出错误;后来无意中一位组员将字体改变了一下,程序错误变少了。检查一发现我们程序中字体错竟占绝大部分。再想想,这是因为我们写的过程中不够仔细,对细节问题还不够注重,以致最后的程序出现大批量的错误。不过在我们的后续检查中,这一问题已经完全解决了。当然,写的过程中遇到的问题肯定不止这样的,但最后在指导师与我们齐心协力的修改后,这些难题将不是问题了。程序完成后,我们真的很开心,虽然困难重重,但我们最终还是有了一个很好的结束啊。 这个实验让我们对java有更进一步的了解,也让我们对它产生了极大地兴趣,希望我们以后两次的实验也能顺利完成。 (1)学号为负数时结束输入: #include“stdafx.h” #define NULL 0 #include #include #include using namespace std; //声明结构体类型 typedef struct stnode { int id;//学号 char name[16];//姓名 intclass[4];//课程成绩数组 float ave;//学生个人所有课程的平均成绩struce stnode *next;//指针域 }Students; // 函数原型声明 void PrintFailStudent(Student*head); void PrintSuccessStudent(Student*head);void DeleteLink(Student*head); Student*input_data(); void main() { Student*head=input_data(); Student*input_data();//调用input_data函数,录入学生信息 PrintFailStudent(head);//调用PrintFailStudent函数,存在不及格的学生 void PrintSuccessStudent(Student*head);//打印平均分90分以上的学生 DeleteLink(head);//调用DeleteLink函数,释放内存 } // { int id;// 定义一个整数变量,存放学号 string name;//学生姓名 int class;//课程号 int scores;//各科成绩 int totl_score;//各科总成绩 Student *head=NULL, *temp;// 定义两个结构体指针 cout<<”开始录入学生成绩:”; while(1){cout<<“请输入学生学号:”;cin>>id;// 输入学号 if(id<0){// 学号为负数时结束录入break;录入学生信息 Student*input_data() } temp=new Student;// 向内存动态申请一个结构体结点 cout<<“请输入学生姓名:”; for(int a=0;a<=sizeof(a[0]);a++){temp->id=id;// 将输入的学号存入结构体结点的学号成员变量temp->name=name;// 存入学生姓名 cout<<“请输入学生课程”+a+”的成绩:”; cin>>scores;// 输入学号 totl_score=totl_score+scores;//总成绩 temp->class[a]=scores;// 课程1的成绩录入} ave=totl_score/sizeof(a[0]); } // 打印不及格学生信息 void PrintFailStudent(Student*head) { cout<<”存在不及格学生信息:”; cout<<“学号”< id< } } // 打印90平均分学生 void PrintSuccessStudent(Student*head){ } // 释放链表中的所有到结点 void DeleteLink(Student*head){ 现在的社会日新月异,发展的非常快。学校的发展也是非常的快了,而且每年都有不同的要求。学生的量也非常的大,资料可能经常性的发生更换,原来手工的管理模式就显的不怎么的合适了。而且手工的数据是存放在多处的,数据整理非常的麻烦,通过作一些相似的报表,这样不但降低了工作效率,而且非常的容易出错。在这种条件下,使用微机管理就显的非常的合适了。只要你正确的录入,统计,报表输出一点问题都没有的。 2 功能与模块设计 包括成绩的总体管理系统、成绩管理子系统、查询子系统、成绩输出子系统等,四个方面都是必须要满足:基本情况录入:输入本系统所需的基本数据。输入学生的基本情况,采用学号各班级号来区分学生。学生异动处理:处理学生转学、基本信息变动情况。 3系统功能结构图 实现功能:(1)获得登陆界面传递的权限信息、设置用户是否可以使用(增加学生、课程管理、输入成绩、系统操作、保存、修改、删除)这些操作。 (2)进入学生成绩管理主窗口、设置等待操作状态。 4 学生数据处理 数据初始化是对程序中所使用的表格进行颜色和表格间距的处理,并绑定数据源为进行到下一步操作做准备。实现功能:(1)执行学生信息表的全查询、获得所有字段名称、通过字段名称来分配数据列表的列数。(2)执行数据初始化、因使用的图表控件附带下拉列表框、日期选择框等功能、可以很方便的进行即时操作、所以数据的初始化是针对数据来确定哪一列的宽度与文本框的属性。(3)给图表控件的第一列赋值、赋值对象是学生信息表的各字段名称。(4)统计所有表内信息、得出行数、以行数进行数据分页(目的:由于数据的日渐增多、而所有数据一次性显示在表格内、会影响系统的正常使用)(5)开始根据分页内容给图表控件赋值、同时设置状态、即不可保存、可修改、可删除。 5 课程与成绩数据处理 实现功能:数据初始化是对程序中所使用的表格进行颜色和表格间距的处理,并绑定数据源为进行到下一步操作做准备。实现功能:(1)执行学生成绩表的全查询、获得所有字段名称、通过字段名称来分配数据列表的列数。(2)执行数据初始化、因使用的图表控件附带下拉列表框、日期选择框等功能、可以很方便的进行即时操作、所以数据的初始化是针对数据来确定哪一列的宽度与文本框的属性。(3)给图表控件的第一列赋值、赋值对象是学生信息表的各字段名称。(4)统计所有表内信息、得出行数、以行数进行数据分页(目的:由于数据的日渐增多、而所有数据一次性显示在表格内、会影响系统的正常使用)(5)开始根据分页内容给图表控件赋值、同时设置状态、即不可保存、可修改、可删除。 6 结语 本文通过用V B面向对象的编程环境编写学生成绩管理系统,利用软件工程原理,采用生命周期方法学,根据3NF的关系模式设计数据库表,用模块化设计方式将系统的各个功能模块层层分解,设计出系统的模块化结构,并根据系统的具体要求和需要实现的功能,详细地定义了各个模块的具体功能。 摘要:在现今信息时代,生活速度的加快,使得人们越来越向信息化、数字化发展,管理信息系统(MIS)是一个由人、计算机等组成的能进行信息的收集、传递、储存、加工、维护和使用的系统,必然能代替过去大量、繁杂的手工操作。本文通过用VB面向对象的编程环境编写学生成绩管理系统,用模块化设计方式将系统的各个功能模块层层分解,设计出系统的模块化结构,并根据系统的具体要求和需要实现的功能,详细地定义了各个模块的功能。 关键词:管理,功能,系统设计,数据处理 参考文献 [1]周佩德.《数据库原理及应用》.电子工业出版社. [2]刘炳文等,VISUAL BASIC程序设计——数据库篇,1999. 【关键词】学生成绩、数据库、成绩管理 【中图分类号】TP399 【文献标识码】A 【文章编号】1672-5158(2013)04-0314-01 学生成绩的管理是每个学校必备的信息管理系统。该系统在运行过程中,需要将大量的学生信息录入其中,用以反映教学的情况。传统的成绩录入主要以手工为主。原始的输入方式存在着数据易丢失,统计不够准确等一系列的问题。另外,手工录入,占用大量的空间和资源,维护困难,劳动量大。在信息技术高度发达的今天,使用互联网计算机,通过网络上传数据,既可以实现数据共享,同时也有效的避免了大量重复的劳动,提高工作效率。 1、需求分析 一个数据库系统的开发主要由需求分析、概念设计、逻辑设计、物理设计、代码实现、运行维护六部分组成。大多数设计者认为,数据库应用系统的设计只是简单的编程,从而将精力过早的投入到了系统的编程实现上。但是到了编程的后期,由于缺少对系统需求的分析而出现大量错误和返工的现象,造成了大量人力和物力的浪费。学生成绩管理系统一般包括:(1)学生成绩的添加、修改、删除和查询;(2)专业信息的添加、修改和查询;(3)教室信息的添加、修改和查询;(4)班级信息的添加、修改、删除和查询;(5)学生信息的添加、修改、删除和查询等。 2、系统功能分析 2.1 灵活、便捷、准确的输入功能 学生成绩管理系统,要求可以方便地录入学生基本信息、教室安排、本学期及整个求学期间课程设置等基础数据,虽然信息类目较多,但是要求输入量少,逻辑清楚,可以实行按班级录入和按个人录入两种方式。因此,在数据库和模块功能的设计上要做到一次输入多次调用,不但能够减少工作量也有效的减少了出错的概率。另外,要根据不同的操作人员设置不同的权限,如学生只能有查询成绩的权限,老师有录入的权限等等。提高系统的安全性和保密性。 2.2 成绩统计功能 该功能要求对学生的成绩进行统计分析。能统计学生的每一门课程,总成绩,平均成绩,加权平均成绩等等。根据输入不同的筛选条件准确快速的显示查询结果。 2.3 成绩输出功能 按照需求,查询系统要生成学生的各类成绩表,对每个学生在一个学期内的成绩,每个学期班级的考试成绩,出勤情况做出统计生成报表。由于各个年级的学生所上的课程是不同的,所上的课程门数也是不同的,所以这个报表有一定的困难,因为对于不同的年级这个报表的表头是变化的,课程门数也是变化的。 2.4 查询功能 该功能包括学生基本情况的查询,任课教师、所学课程、所在的系部、班级、学习期间所有课程设置等基础数据的查询,学生每学期的成绩查询,学生入学以来所有成绩查询,班级,单科成绩查询,班级入学以来全部成绩查询,班级排名等。 2.5 数据修改功能 学生因退学,转学休学或转班等原因会发生数据的变动,需要有高级权限的人对学生的信息进行修改。 3、数据库设计 数据库设计是指在给定的应用环境下,设计逻辑l生合理,结构最优化的数据库模式,建立数据库及其应用系统,不仅能快捷准确的存取数据,同时要满足用户的对所存储信息的类型和对信息进行处理的要求。数据库的设计主要包括功能与模块的设计。模块设计是在现有的应用环境下,对数据库进行主题模式和子模式的设计。功能设计是针对用户的实际操作和要求进行实现的应用程序的设计。用户可以采用采用基于E-R模型的数据库设计方法。首先,根据实际情况确定统中存在的个体,确定个实体的各种属性,找出之间的关系,如有派生属性另加说明。最后按照数据库设计原则产生本系统的所有数据库结构并优化。 4、代码设计 本系统主要由三种代码组成: (1)假设每个学生的学号有十位,其中,前两代表入学年份,第三、四位代表所在的学院,第五位代表学历,第六位表示专业代码,第七、八位表示班级,第九、十表示在班级内的学号。例如2005年入学,能源与环境工程学院,环境工程专业3班48号学生的学号为:0507110348。 (2)教师的编号可以设为六位有序数字,前两位表示所在学院,第三、四位表示所在学院的教研室,第五、六位表示个人序号,如070102的教师编号,表示能源与环境工程学院,环境工程专业教研室的02号教师。 (3)课程代码共六位,第一、二位表示学院,第三、四位表示所学的专业,第五、六位表示课序号,如070115的课程代码,表示能源与环境工程学院,污水处理这门课程。 5、数据库冗余问题 为了降低冗余度,采用关系数据库的设计规范。但是如果遵循的规范过高反而会增加数据存取的时间和次数。所以在数据库设计的阶段要遵循合理、便捷的原则。 1.功能概述 本系统具有系统登录、学生管理、课程管理、教师管理、班级管理、教学管理、成绩管理等功能。 1.1 系统登录 用户登录后才能使用本系统功能,共有学生、教师、系统管理员三种用户可使用本系统。系统管理员的登录账号和密码在数据库中预存,其他用户的账号和密码需要系统管理员创建。 1.2 教师管理 系统管理员具有增加教师、修改教师、删除教师、查询教师等四个功能。教师的相关信息有教师姓名、性别、教师工号、登录密码、年龄等。教师只可修改自己的登录密码。 1.3 课程管理 系统管理员具有增加课程、修改课程、删除课程、查询课程等四个功能。课程的相关信息有课程编号、课程名称、课程学分等。 1.4 学生管理 系统管理员具有增加学生、修改学生、删除学生、查询学生,设置学生所在班级等功能。学生的相关信息有学号、登录密码、学生姓名、性别、年龄等。学生只可修改自己的登录密码。(注意:学生学号为登录账号) 1.5 班级管理 系统管理员具有增加班级、修改班级、删除班级、查询班级等功能。班级的相关信息有班级编号、班级名称等。 1.6 教学管理 系统管理员可为每个班级设置课程以及任课老师。 1.7 成绩管理 教师可在系统中批量登录一个班一门课的成绩,可临时保存,也可提交。提交之前可以修改,提交之后不可修改。成绩提交后,学生可查看自己的成绩,但不能查看其它学生的成绩。 2.技术需求 本系统采用Java作为开发语言,画面采用JSP实现。数据库采用 成绩管理系统 zhai 要 随着Internet的发展,管理软件在各行各业得到重用。学生管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,其中学生成绩管理系统可以使管理人员方便地完成学生注册、成绩登记、修改、打印等功能,而学生也可以通过该系统查询自己的成绩。 本文采用结构化方法学对学生成绩信息管理系统进行分析、设计。在需求分析,建立三大分析模型,即数据模型、功能模型、行为模型;概要设计阶段用结构图表达;详细设计阶段的关键模块用流程图表达。 关键词:成绩管理系统 模型 分析 目录 摘要..................................................................................................................................................................1 目录..................................................................................................................................................................1 1 前言(或“绪论”)........................................................................................................................................1 1.1 设计任务..........................................................................................................................................1 1.1.1 需求说明..............................................................................................................................1 1.2 设计内容..........................................................................................................................................1 2 需求分析..........................................................................................................................................................1 2.1 数据模型..........................................................................................................................................2 2.2 功能模型..........................................................................................................................................3 2.3 行为模型..........................................................................................................................................5 3 概要设计..........................................................................................................................................................6 4 详细设计..........................................................................................................................................................9 5 体会................................................................................................................................................................13 6 参考文献........................................................................................................................................................14 武汉理工大学工程硕士课程论文─《面向对象程序设计》 前言(或“绪论”) 1.1 设计任务 1.1.1 需求说明 通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。特别是作为高职生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。 21世纪以来了,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域,使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大地方便。 1.2 设计内容 (1)建立需求分析阶段三个模型 (2)概要设计阶段具体到结构图 (3)详细设计可以只针对部分关键的部分或模块进行,用流程图表达(4)体会 需求分析 学生成绩管理是高等学校教务管理的重要组成部分,其内容较多,为了简化设计,要求设计的管理系统能够完成以下几种功能: (1)学生注册登记;(2)登记学生成绩;(3)修改学生成绩; (4)打印一个班级学生的单科成绩;(5)求出每个学生一学期中各科的平均成绩; (6)打印某一课程成绩处于指定分数段内的学生名单;(7)学生可以查询自己的成绩。武汉理工大学工程硕士课程论文─《面向对象程序设计》 2.1 数据模型 数据模型的三个因素为数据对象、属性以及关系。用实体-关系图来建立数据模型。确定系统实体:首先分析“学生成绩管理系统”的用户要求,找出该系统应该包括的实体。显然,学生、课程和成绩都是系统的实体,并且可以初步定义它们的属性。管理员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。另外,由于成绩信息包含了选课信息,因此选课信息不用单独记录。最终,确定系统的实体是学生、课程和成绩。 接着,我们分析这些实体之间的关联关系。从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。根据上述分析,我们得到如图所示的实体关系图。 实体属性定义: 学生:学号、姓名、性别、出生年月、名族、入学年月、班级 课程:课程编号、课程名称、课程学分、课程类别、课程学时 成绩:学号、课程编号、分数、考核日期 图2-1 学生实体属性 图2-2 课程实体属性 武汉理工大学工程硕士课程论文─《面向对象程序设计》 图2-3 成绩实体属性 图2-4 实体-关系图 2.2 功能模型 用数据流图来建立功能模型。本系统涉及到的业务工作主要是:学生管理、系别管理、成绩管理和课程管理等方面,系统界面可以分为管理员界面和普通用户界面,整个系统划分为下面的信息: 学生基本信息(学号,姓名,性别,出生年月等); 学生成绩(学号,姓名,各科成绩等); 学生课程信息(学号,姓名,考试课程名)。 教务人员或管理员进入管理界面后,可以输入学生的基本信息、成绩和课程信息,而学生进入普通用户界面后可以查询自己的成绩,整体数据流图如图2-5所示 图2-5 整体数据流图 武汉理工大学工程硕士课程论文─《面向对象程序设计》 对上面的学生成绩管理模块展开如下图2-6所示。 图2-6 学生成绩管理展开后的数据流图 对查询学生成绩展开如下图。武汉理工大学工程硕士课程论文─《面向对象程序设计》 图2-7 查询部分的数据流图 绘制第0层DFD的时候,将整个系统看成一个加工,然后找出作用于该加工的外部实体,以及相应的数据输入和输出。对于“学生成绩管理系统”而言,整个系统就是一个加工“学生成绩管理”。从用户的需求描述可知,“教务人员”是数据的源点,“学生”是数据的终点。另外,教务人员需要录入学生信息、课程信息和成绩,说明“学生信息”、“课程信息”和“成绩”是数据流;同样,“查询请求”和“查询结果”也是数据流。根据上述分析,得到如图所示的第0层DFD。 绘制下一层数据流图时,细化第0层的加工“学生成绩管理”,从而描述系统的主要功能。从第0层DFD得知,“学生信息”是教务人员需要录入的一个信息,因此加入一个加?quot;录入学生信息“,同样得到”录入课程信息“、”登记成绩“两个加工。另外,数据流”查询请求“和”查询结果“应该由加工”查询成绩“来完成。这样,我们用”录入学生信息“、”录入课程信息“、”登记学生成绩“和”查询学生成绩“四个加工代替第0层的”学生成绩管理“,同时增加这些数据流对应的数据存储,即”学生“、”课程“和”成绩“,最后得到如图所示的第1层DFD。 为了继续进行分解,我们分析第1层DFD中的加工”查询学生成绩“。学生查询成绩时需要提供合法性检查,因此,”查询学生成绩“可以分解为”合法性检查“和”查询成绩“两个处理步骤,从而形成如图所示的第2层DFD。 2.3 行为模型 用状态转换图来建立行为模型。 在”学生成绩管理“系统中,学生成绩信息需要采取安全措施,我们可以采取登录方法避免非法使用系统。这样,该系统存在”登录“、”正常“和”出错“等状态的转换。 启动系统之后,系统处于”登录“状态。在这种状态下,学生或管理员可以进行登录或取消登录。如果取消登录,系统直接退出;如果登录失败,系统进入”出错处理“状态,在显示错误信息后,又重新回到”登录“状态;如果登录成功,系统进入”正常" 状态,即显示操作界面(管理员操作界面或普通用户操作界面),当用户退出。系统整体的状态转换图如图2-8所示。 武汉理工大学工程硕士课程论文─《面向对象程序设计》 图2-8 状态转换图 概要设计 1. 学生成绩管理软件的数据结构 学生成绩一般都是以班级为单位进行管理的,一个班级用一个结点来表示。考虑到插入和删除的方便,这些以班级为单位的结点用链表方式组成一个主目录。每个结点有四个域: (1)班级代号;(2)课程情况;(3)学生情况;(4)班级顺序链。 课程情况应能反映出大专生所学过的全部课程。因课程是逐年增多的,所以采用链表结构以便能不断插入新的课程。该班学过的课程构成一个课程链表,所以班级结点中的课程情况用课程链表表示。学生情况主要反映学生的学号,姓名,每学期学生的成绩情况。因为学号总是顺序排列的,所以选用一个结构体数组作为反映学生情况的登陆记表。该数组的下标值接上班级结点中的班级号就是学号。例如,设每班学生数不超过40个人,班级号为9612,某学生在登记表中相应分量的下标值为26,则该学生的学号为961226。另外,学生成绩管理要分6个学期,所以在学生登记表中,开设6个指针域,每个指针指向该生某学期某门课程学成绩的结点。 各结点结构如下所示:(1)主目录中班级的结点为: 班级号 课程链 班级顺序链 学生登记表 武汉理工大学工程硕士课程论文─《面向对象程序设计》 (2)课程链表中的结点: 课程代号 学期号 二叉树链 课程顺序链(3)分数链表中的结点为: 左链 学号 课程代号 成绩分数顺序 右链 为了便于登记和查询学生的成绩,选择二叉排序来存放学生的成绩。 每个班级的每门课程对应一棵二叉树。通过主目录中班级结点的课程链找到指定的课程结点,再通过课程结点中的二叉树指针指向该门课程的成绩二叉排序树。另外通过主目录中班级结点的学生登记表中的学期指针,指向该学生本学期某门课程的分数结点,并以分数结点的分安数顺序链勾链该生各门课程的成绩。 在登记成绩和查询分数时,都要用到课程代号。课程代号和课程名称是一一对应的。为了简化程序,课程名称和代号对照表设计为一个向量,向量的下标值就作为课程代号,而向量中的元素就是课程名称,这样可以省去代号域。 1. 各模块的功能和实现 学生成绩管理的相关功能由对应的函数来实现。(1)用户登陆 用户进入登陆界面后,输入账号密码,系统会连接到数据库进行验证,若为管理员,则进入管理员界面,执行相应的操作;若为普通用户(学生),则进入普通用户界面。 (2)学生注册登记 学生入学后,首先应是注册登记。从登陆界面可以进入注册界面,注册时应先检查该学生所在班级是否已经登入主目录,未登入则若调用新结点后登陆入主目录。然后将新调入的班级结点中对应域赋初值,最后再读入学生的学号和姓名并一一填入学生登记表。这样就完成了一个班级的注册和登记工作。 (3)登记学生成绩 学生注册后才可以登记成绩,所以先要检查这个班级是否已经注册,班级中是否有这个学生。在确认有此学生后,登记该生成绩。这时需完成两个操作。一个查询课程代号,另一个是将成绩填入二叉树。这两个操作分别用两个函数来实现: ① 查询课程代号; ② 插入二叉排序树。 有了这两个函数,登记学生成绩的工作可以很方便地完成。首先查处课程代号,调用课程结点,填入课程代号和学期号;再在二叉树链域中置初值为NULL,将课程结点插入为课程链表的头结点。接着读入每个学生的学号和成绩,每个学生的每门课程都生成一分数结点插入到相应课程的二叉树中。同时,还要将该分数结点链入该生这学期各科成绩的分数链表中。学生登记表中的学期指针域中存放该分数链表的头结点地址。 (4)修改学生成绩 若登记的学生成绩有错误,则调用修改学生成绩的函数便可以加以修改。修改时从 7 武汉理工大学工程硕士课程论文─《面向对象程序设计》 主目录出发,查到班级,再从学生登记表中查对学号和姓名,再在与学期匹配的学期指针域中取得该生的学生链表的头指针,然后搜索分数链表,查到指定课程的分数结点,就可修改成绩。 (5)打印一个班级学生的单科成绩 由于学生成绩是用二叉树排序树来存储的,所以采用中序遍历的方法就可以按次序打印出学姓名和成绩。在打印了程序中,从主目录开始查到班级号,就可以从课程结点的二叉树链域中取得成绩二叉排序树的头指针;然后调用中序遍历了程序就可进行打印,同时可求出平均成绩和各个分数段的人数。 ①求出每个学生一学期中各科的平均成绩 此了程序从主目录查对班级号开始,通过学生登记表中每个学生的学期指针取得各自的分数链表的头指针。顺着分数链就可求出该生本学期各科的平均成绩。 ②打印某一课程成绩处于指定分数段内的学生名单 对二叉树序树进行中序遍历,但遍历时应判断当前成绩是否处于分数段内而决定是否打印。 (6)学生查询成绩 学生从登陆界面输入账号密码后,系统连接到数据库检查该用户是否注册等信息,若信息正确,则进入普通用户界面,然后调用查询函数即可查看成绩。 由以上分析,学生成绩管理系统可以分为三个模块:用户登录及注册模块、普通用户功能模块、管理员功能模块,如图3-1所示,管理员可以完成学生成绩的登记、修改、打印功能,而学生可以完成成绩的查询功能。 武汉理工大学工程硕士课程论文─《面向对象程序设计》 图3-1 系统总体结构图 详细设计 系统总体流程图如图4-1所示。 武汉理工大学工程硕士课程论文─《面向对象程序设计》 图4-1 系统总体流程图 系统的部分模块设计流程图如下,其中矩形代表“处理”,菱形代表“选择”,箭头代表“控制流”,圆代表“连接”。 武汉理工大学工程硕士课程论文─《面向对象程序设计》 图4-2 登录模块流程图 图4-3 登记成绩模块流程图 武汉理工大学工程硕士课程论文─《面向对象程序设计》 图4-4 修改模块流程图 图4-5 学生查询模块流程图 武汉理工大学工程硕士课程论文─《面向对象程序设计》 图4-6 打印模块流程图 体会 以前上课的时候,觉得老师讲的内容都听得懂,所以系统设计应该是件很容易的事,但当自己亲自动手去分析设计每一步时,才觉得自己有很多东西没有理解透彻,比如说建立实体关系图时,就要仔细分析哪些是有实体,哪些是没有必要作为实体的,实体的属性应该考虑哪些以及实体间的联系时怎样等等一些细节问题;在建立功能模型时,要先从整体考虑将系统分为哪些部分,各部分又该如何展开;在建立行为模型时,要分析系统内有那几个状态以及状态间是如何转换的。在此次系统设计过程中,我觉得比较难的是概要设计和详细设计,虽然老师已在模板中分析了一部分,但具体用图来表示时,还是遇到了一些困难,特别是在详细设计阶段,只对一部分模块从整体上用流程图来设计。 通过这次学生成绩信息管理系统的设计,我对系统设计的流程有了更清晰地认识,也进一步学会如何建立各种模型去分析各个阶段,同时我认识到自己所学的知识太少、太浅,以致设计很粗糙,希望以后有机会再加深学习这部分知识。 武汉理工大学工程硕士课程论文─《面向对象程序设计》 参考文献 【学生成绩管理论文】相关文章: 学生成绩管理系统论文1205-30 学生成绩管理表08-03 学生成绩论文题目05-05 学生成绩管理毕业设计04-25 学生信息成绩管理系统05-01 《学生成绩管理》实训总结05-02 学生成绩管理系统手册06-05 学生作业成绩管理系统08-17 vb学生成绩系统论文06-22篇2:学生成绩管理论文
篇3:学生成绩管理系统设计
篇4:学生成绩管理系统的设计
篇5:学生成绩管理系统需求
篇6:学生成绩信息管理系统