摘 要
在计算机技术的应用和计算机网络技术的快速发展的今天,信息化的建设被 更多的教育单位所重视,一般来讲,通过使用优秀的计算机网络技术对学生的成绩进行管理,不仅工作效率提高了,对于人力资源的浪费也减少了,出于对学生成绩信息进行管理的教务管理人员们的需求的考虑,一套适用于对学生成绩进行管理的系统,它的开发显得尤为重要。 本系统依据这个具体情况,再经过多番调查研究,根据软件开发流程,经过了可行性分析、总体描述、系统设计、编码、调试和测试等步骤,设计并开发出了学生成绩管理系统。通过运用了系统结构图,系统流程图,以及程序流程图,将学生成绩管理系统从分析设计到实现运用的过程整体展现出来,对于读者理解本系统的整体设计和具体开发流程提供了很大的帮助。本系统主要实现对学生成绩信息的增加、删除、修改、查询等功能。具有界面简洁,操作简单,使用性强的特点,大大提高了管理效率,节省了人力,最重要的是,能够达到对学生信息全面详细的进行管理的目的。
关键词 JAVA 学生成绩管理系统 eclipse
一 概述
1.1 需求分析
21世纪以来,随着信息技术在全球范围内的兴起,以及互联网的迅速发展,使计算机渗透到国民经济和社会发展的各个领域和各个层次。由于我国高校的进一步扩招和对高校信息管理要求的进一一步 提高,原先的一些学生成绩管理系统的局限性已经显现出来了。在这样的背景下,为了加快校园的信息化建设,实现高校办公自动化也就显得越来越重要了。
高校学生的信息量是非常庞大的,如何有效利用信息技术管理好学生信息,加快高校信息化进程,成为高校管理者所面临的新的课题。以前高校的成绩管理工作都是在手工的情况下完成的,效率低下、重复工作、数据不能共享、管理模糊,现在利用计算机来管理学生成绩更能体现查询快捷、保密性好、安全性高、存储量大、寿命长、成本低和效率高等优点,同时更有利于管理和操作。
1.2 系统目标
论文通过结合高校学生成绩管理的水平和现实状况,分析了现今学生成绩管理系统中所应用的几个环节,并针对每个环节作出了详细的阐述和探讨。根据实际情况确定了不同权限的用户管理:课程管理:成绩管理:班级管理等四大模块,介绍了系统开发用到的使用的相关计算机技术和Java编程语言,以及后台方法和使用,并对模块的功能进行了具体分析和详细设计。并通过综合剖析系统,从而得出结论:学生成绩管理系统在高校可以得到广泛的运用。
二 学生成绩管理系统需求分析
2.1 系统功能需求
2.11 录入功能:为教师提供对所有信息的录入功能。
2.12 查询功能:为教师提供查询的功能,可查询允许范围内的所有信息。2.13 维护功能:教师能够对输入信息进行修改删除。
2.14 退出功能:结束并关闭系统。
2.2 可行性分析
2.2.1经济可行性
由于本方案是单机作业,不具有网络资源共享,学生不方便直接进行信息的查询与修改,因此,适用范围小,发挥的作用小,只是使用计算机代替手工工作。此系统建成后,只能支持简单的输入查询修改信息的功能,但是可以省去人力,也可以带来一些经济效益,从经济上来说是可行的。
2.2.2技术可行性
本方案技术要求不高,系统的安全性可行性要求也不高,从技术上来说完全可行。
2.2.3系统运行可行性
本软件简单,易学易用,不需要对专业人员进行培训,因此系统具有运行可行性。
综上所述,此系统开发目标已明确,在技术和经济以及运行方面都是都可行的,故该系统的开发是完全可行的。
三 学生成绩管理系统总体设计
3.1 功能设计
系统所实现的功能强弱是衡量一个软件好坏的最直接也是最根本的标准。经过对系统的可行性分析、需求分析、数据分析以及数据库设计后,结合调研的情况,本系统分为教师登录、输入学号姓名班级,输入成绩,计算平均值,降序排列,退出登录,确定了本系统的功能模块
3.2实现特点
系统能够方便实现教师对学生成绩的观察,统计,比较方便快捷。
详细设计
- 成绩录入
- 成绩修改
程序代码
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Student {
private static Student[] s = new Student[100]; //录入学生上限
int n = 0;
private String name;
private int num;
private String classAge;
private int math;
private int english;
private int programming;
private int computer;
//判断是否有录入学生信息
public void judge() throws IOException {
int i;
char ch;
String str;
Scanner In = new Scanner(System.in);
if (n == 0) {
System.out.println("你还没有录入任何学生信息,是否录入(Y/N):");
str = In.next();
ch = str.charAt(0);
while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
System.out.println("输入有误,请重新输入:");
str = In.next();
ch = str.charAt(0);
}
if (ch == 'Y' || ch == 'y') {
this.add();
}
if (ch == 'N' || ch == 'n') {
this.menu();
}
}
}
//菜单
public void menu() throws IOException //将异常抛出,调用这个方法去处理异常,如果main方法也将异常抛出,则交给Java虚拟机来处理,下同.
{
int a;
Scanner in = new Scanner(System.in);
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("***** 0.退出管理系统 ******");
System.out.println("******************************************");
System.out.print("请选择(0~6):");
a = in.nextInt();
while (a < 0 || a > 6) {
System.out.print("输入无效,请重新输入:");
a = in.nextInt();
}
switch (a) {
case 1:
this.add();
break;
case 2:
this.show();
break;
case 3:
this.modif();
break;
case 4:
this.delete();
break;
case 5:
this.avg();
break;
case 6:
this.classAvg();
break;
case 0:
System.out.println("成功退出系统!!!");
System.exit(0);
break;
}
}
private void classAvg() throws IOException {
if (n == 0) {
System.out.println("请录入学生信息!");
this.menu();
}
// 总分
int computerSum = 0, englishSum = 0, programmingSum = 0, mathSum = 0;
// 最高分
int maxComputer = 0, maxEnglish = 0, maxProgramming = 0, maxMath = 0;
for (int i = 0; i < n; i++) {
Student stu = s[i];
int c = stu.getComputer();
int e = stu.getEnglish();
int p = stu.getProgramming();
int m = stu.getMath();
// 计算最高分
maxComputer = c > maxComputer ? c : maxComputer;
maxEnglish = e > maxEnglish ? e : maxEnglish;
maxProgramming = p > maxProgramming ? p : maxProgramming;
maxMath = m > maxComputer ? m : maxMath;
// 计算最低分
int minComputer = 0, minEnglish = 0, minProgramming = 0, minMath = 0;
for (int t= 0; t< n;t++) {
Student stu1 = s[i];
int a = stu1.getComputer();
int b = stu1.getEnglish();
int d = stu1.getProgramming();
int n = stu1.getMath();
minComputer = a < minComputer ? a : minComputer;
minEnglish = b < minEnglish ? b : minEnglish;
minProgramming = d < minProgramming ? d : minProgramming;
minMath = n <minMath ? n : minMath;
}
// 计算总分
computerSum += c;
englishSum += e;
programmingSum += p;
mathSum += m;
}
System.out.println("平均成绩:" + computerSum / n);
System.out.println("最高分:" + computerSum / n);
System.out.println("最低分:" + computerSum / n);
this.menu();
}
private void avg() throws IOException {
if (n == 0) {
System.out.println("请录入学生信息!");
this.menu();
}
for (int i = 0; i < n; i++) {
Student stu = s[i];
int avg = (stu.getComputer() + stu.getEnglish() + stu.getProgramming() + stu.getMath()) / 4;
System.out.println("姓名:" + stu.getName() + " 学号:" + stu.getNum() + " 平均成绩:" + avg);
}
this.menu();
}
//录入学生信息
public void add() throws IOException {
String str, str1, str2;
int i, num1, t = 1;
char ch, ch1;
FileWriter fw = new FileWriter("D://JAVAWENJIAN/student.txt", true); //将学生信息录入指定的txt文件中
fw.write(" 录入的学生信息列表\r\n\r\n学号 姓名 班级 应用数学成绩 大学英语成绩 程序设计成绩 计算机应用基础成绩\r\n");
Scanner In = new Scanner(System.in);
while (t == 1) {
System.out.println("请输入学生学号:");
num1 = In.nextInt();
//判断学号是否重复
for (i = 0; i < n; i++) {
while (s[i].getNum() == num1) {
System.out.println("已存在此学号,请重新输入");
System.out.print("请输入学号:");
num1 = In.nextInt();
}
}
s[n].setNum(num1);
fw.write(s[n].getNum()+ " ");
System.out.println();
System.out.println("请输入学生姓名:");
s[n].setName(In.next());
fw.write(s[n].getName() + " ");
System.out.println();
System.out.println("请输入学生班级:");
s[n].setClassAge(In.next());
fw.write(s[n].getClassAge() + " ");
System.out.println("请输入学生应用数学成绩:");
s[n].setMath(In.nextInt());
fw.write(s[n].getMath() + " ");
System.out.println("请输入学生大学英语成绩:");
s[n].setEnglish ( In.nextInt());
fw.write(s[n].getEnglish() + " ");
System.out.println("请输入学生程序设计成绩:");
s[n].setProgramming(In.nextInt());
fw.write(s[n].getProgramming() + "\r\n");
System.out.println("请输入学生计算机应用基础成绩:");
s[n].setComputer(In.nextInt());
fw.write(s[n].getComputer() + " ");
++n;
System.out.println();
System.out.println("是否继续添加(Y/N)");
str = In.next();
ch = str.charAt(0);
while (ch != 'N' && ch != 'n' && ch != 'Y' && ch != 'y') {
System.out.println("输入无效,请重新输入:");
str = In.next();
ch = str.charAt(0);
}
if (ch == 'N' || ch == 'n') {
break;
}
}
fw.close();
System.out.println();
System.out.print("是否返回系统主菜单(Y/N)");
str1 = In.next();
ch1 = str1.charAt(0);
while (ch1 != 'Y' && ch1 != 'y' && ch1 != 'N' && ch1 != 'n') {
System.out.println("输入无效,请重新输入:");
str1 = In.next();
ch1 = str1.charAt(0);
}
if (ch1 == 'Y' || ch1 == 'y') {
this.menu();
}
if (ch1 == 'N' || ch1 == 'n') {
System.out.println("");
System.out.println("你已退出系统!!!");
System.exit(0);
}
}
//显示学生信息
public void show() throws IOException {
int i;
this.judge();
System.out.println("本次操作共录入" + n + "位学生!");
System.out.println("你录入的学生信息如下:");
System.out.println();
System.out.println("学号\t姓名\t班级\t应用数学\t大学英语\t程序设计\t计算机应用基础");
for (i = 0; i < n; i++) {
System.out.println(s[i].getNum() + " " + s[i].getName() + " " + s[i].getClassAge() + " " + s[i].getMath() + " " + s[i].getEnglish() + " " + s[i].getProgramming() + " " + s[i].getComputer());
}
System.out.println("系统返回主菜单!");
this.menu();
}
//删除学生信息
public void delete() throws IOException {
this.judge();
int j = 0, t = 0, k = 0, num1;
char ch;
String str;
Scanner pin =
new Scanner(System.in);
System.out.println("请输入要删除的学号:");
num1 = pin.nextInt();
for (j = 0; j < n; j++) {
if (s[j].getNum() == num1) {
k = 1;
t = j;
}
}
if (k == 0) {
System.out.println("对不起!你要删除的学号不存在!");
System.out.println("系统将返回主菜单!");
this.menu();
}
if (k == 1) {
System.out.println("你要删除的学生信息如下:");//打印管理员要删除的学生信息
System.out.println("学号\t姓名\t班级");//本功能暂时不备扩展性
System.out.println(s[t].getNum() + " " + s[t].getName() + " " + s[t].getClassAge());
System.out.println();
System.out.println("你确定要删除(Y/N):");
str = pin.next();
ch = str.charAt(0);
while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
System.out.println("输入无效,请重新输入:");
str = pin.next();
ch = str.charAt(0);
}
if (ch == 'N' || ch == 'n') {
System.out.println();
System.out.println("系统返回主菜单!");
this.menu();
}
if (ch == 'Y' || ch == 'y') {
for (j = t; j < n - 1; j++) {
s[j] = s[j + 1];
}
n--;
System.out.println("学生数据成功删除!");
System.out.println("系统返回主菜单!");
this.menu();
}
}
}
//查看学生信息
public void look() throws IOException {
FileReader fr = new FileReader("D://JAVAWENJIAN/student.txt"); //查看txt中的学生信息
int a;
while ((a = fr.read()) != -1) {
System.out.print((char) a);
}
fr.close();
System.out.println("系统返回主菜单!");
System.out.println();
this.menu();
}
//修改学生信息
public void modif() throws IOException {
this.judge();
int j = 0, t = 0, k = 0, num2, num3, moi, c = 1;
char ch;
String str, str1, str2,str3,str4,str5,str6;
Scanner pin = new Scanner(System.in);
System.out.println("请输入要修改的学号:");
num2 = pin.nextInt();
for (j = 0; j < n; j++) {
if (s[j].getNum() == num2) {
k = 1;
t = j;
}
}
if (k == 0) {
System.out.println("对不起!你要修改的学号不存在!");
System.out.println("系统将返回主菜单!");
this.menu();
}
if (k == 1) {
//打印将要要删除的学生信息
System.out.println("你要修改的学生信息如下:");
System.out.println("学号\t姓名\t班级应用数学\t大学英语\t程序设计\t计算机应用基础");
System.out.println(s[t].getNum() + " " + s[t].getName() + " " + s[t].getClassAge()+" " + s[t].getMath() + " " + s[t].getEnglish() + " " + s[t].getProgramming() + " " + s[t].getComputer());
System.out.println();
System.out.println();
System.out.println("你确定要修改(Y/N):");
str = pin.next();
ch = str.charAt(0);
while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
System.out.println("输入无效,请重新输入:");
str = pin.next();
ch = str.charAt(0);
}
if (ch == 'N' || ch == 'n') {
System.out.println();
System.out.println("系统返回主菜单!");
this.menu();
}
while (c == 1) {
if (ch == 'Y' || ch == 'y') {
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.println("****************************************");
System.out.println("请选择:");
moi = pin.nextInt();
switch (moi) {
case 1:
System.out.print("请输入新的学号:");
num3 = pin.nextInt();
s[t].n = num3;
break;
case 2:
System.out.print("请输入新的班级:");
str1 = pin.next();
s[t].setClassAge(str1);
break;
case 3:
System.out.print("请输入新的姓名:");
str2 = pin.next();
s[t].setName(str2);
break;
case 4:
System.out.print("请输入新的应用数学成绩:");
str3 = pin.next();
s[t].setName(str3);
break;
case 5:
System.out.print("请输入新的大学英语成绩:");
str4 = pin.next();
s[t].setName(str4);
break;
case 6:
System.out.print("请输入新的程序设计成绩:");
str5 = pin.next();
s[t].setName(str5);
break;
case 7:
System.out.print("请输入新的计算机应用基础成绩:");
str6 = pin.next();
s[t].setName(str6);
break;
}
System.out.println("数据已成功修改!");
}
System.out.print("是否继续修改(Y/N)");
str = pin.next();
ch = str.charAt(0);
System.out.println();
while (ch != 'Y' && ch != 'y' && ch != 'N' && ch != 'n') {
System.out.print("输入无效,请重新输入:");
str = pin.next();
ch = str.charAt(0);
}
if (ch == 'N' || ch == 'n') {
break;
}
}
}
System.out.println();
System.out.println("系统返回主菜单!");
this.menu();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getClassAge() {
return classAge;
}
public void setClassAge(String classAge) {
this.classAge = classAge;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
public int getProgramming() {
return programming;
}
public void setProgramming(int programming) {
this.programming = programming;
}
public int getComputer() {
return computer;
}
public void setComputer(int computer) {
this.computer = computer;
}
public static void main(String[] args) throws IOException {
Student stu = new Student();
for (int i = 0; i < 100; i++) {
s[i] = new Student();
}
stu.menu();
}
}