java学生成绩管理系统课程设计报告

时间:2024.4.20

山东交通学院

java语言课程设计

题 目 学生成绩管理系统

系(部): 信息科学与电气工程学院

专 业: 信息管理及信息系统

班 级: 信管111

姓 名: 田忠平

学 号: 110813125

指导教师: 庞希雨

时间:20xx年4月1日 至 4月14日 共2周

指导教师(签字)

系 主 任(签字)

20xx年 4 月 1 日

1

目 录

1设计目的及内容要求 ............ 1

2 系统总体设计 .................. 1

3 系统详细设计 .................. 2

4 运行结果及分析 ............... 17

5 参考文献 ..................... 22

2

关键词:学生成绩管理系统;存储过程;数据库;java。

1设计目的及内容要求

1、 设计目的:巩固和加深学生对高级语言程序设计课程的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,提高运用java语言解决实际问题的能力。

2、 内容要求实现学生成绩的管理(增、删、改、查询、持久化、成绩排序、成绩统计等功能),在文件中增加、删除、学生信息,根据学号查询、修改学生信息,统计功能求每个人的总分并按从高到低排序,通过这些操作对文件中的信息保存。

2 系统总体设计

成功登陆系统以后,出现成绩管理界面,系统初始化,可对学生成绩进行增加、删除、查询、修改、统计,进入相应界面进行成绩管理,退出系统自动保存本次操作内容,保存信息.

3

简易流程图:

java学生成绩管理系统课程设计报告

3 系统详细设计

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import java.util.Vector;

import javax.swing.*;

public class

java学生成绩管理系统课程设计报告

extends JFrame implements ActionListener {

Connection conn = null; //与特定数据库连接。 PreparedStatement ps; //执行sql语句。 ResultSet rs= null; //返回sql结果。

JPanel jp1,jp2,jp3; //轻量级容器

JLabel jl,jl1; //显示文本,图像。

JButton jb1,jb2,jb3,jb4,jb5,jb6; //按钮。

JTable jt ; //表格。

JTextField jtf,jtf1; //单文本框。

JScrollPane jsp =null; //滚条。

StudentModel sm=null; //创类对象。

public StudentManagement() //构造函数。

4

{

jp1=new JPanel();

jl=new JLabel("请输入名字:");

jtf=new JTextField(20);

jb1=new JButton("查询");

jb1.addActionListener(this);//注册监听器。查询按钮

jp1.add(jl);

jp1.add(jtf);

jp1.add(jb1);

jp2=new JPanel();

jb2=new JButton("添加");

jb3 =new JButton("修改");

jb4 =new JButton("删除");

jb5 =new JButton("返回");

jb2.addActionListener(this);//注册监听器。添加按钮

jb3.addActionListener(this);//注册监听器。修改按钮

jb4.addActionListener(this);//注册监听器。删除按钮

jb5.addActionListener(this);//注册监听器。删除按钮

jp2.add(jb2);

jp2.add(jb3);

jp2.add(jb4);

jp2.add(jb5);

jp3=new JPanel();

jl1=new JLabel("请输入名字:");

jtf1=new JTextField(20);

jb6=new JButton("成绩查询");

jb6.addActionListener(this);//注册监听器。查询按钮

jp3.add(jl1);

jp3.add(jtf1);

jp3.add(jb6);

sm =new StudentModel();

jt=new JTable(sm);

jsp=new JScrollPane(jt);

this.add(jsp);

this.add(jp1,BorderLayout.NORTH);

this.add(jp3,BorderLayout.WEST);

this.add(jp2,BorderLayout.SOUTH);

this.setSize(800,250);

this.setLocation(200, 200); //窗口在屏幕中的位置。 this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 进程。

5 //关闭

}

public static void main(String[] args) {

StudentManagement ta=new StudentManagement();//形成一个实例。开始段。

}

@Override

public void actionPerformed(ActionEvent e)

{

// TODO Auto-generated method stub

if(e.getSource()==jb1){ //jb1查询,e.getSource()按钮响应事件

String name=this.jtf.getText().trim(); //trim()->去掉头和尾的空格。

String sql ="select * from stuView where stuName='"+name+"'"; if(name.trim().equals("")){

sm = new StudentModel();

}

else{

sm = new StudentModel(sql);//【如何返回原窗口】;

}

jt.setModel(sm); //更换表格

}

else if(e.getSource()==jb2){ //添加 StuAddDialog sad =new StuAddDialog(this,"添加学生",true); //this->JFrame

sm =new StudentModel(); //添加成功后,返回最顶层窗口

jt.setModel(sm); //更换表格

}

else if(e.getSource()==jb3){ //修改

System.out.println("修改");

int rownum =this.jt.getSelectedRow(); //getSelectedRow()-选中其中一行,并将行数送给rownum.

if(rownum==-1){

JOptionPane.showMessageDialog(this,"请选择表格中的一行"); //弹出小对话框,

return;

}

new StudentUpdateDialog(this,"修改对话框

",true,sm,rownum);//this->JFrame

sm =new StudentModel();

jt.setModel(sm);//重置表格

}

6

else if(e.getSource()==jb4)

{

int rownum=this.jt.getSelectedRow(); //getSelectedRow()-选中其中一行,并将行数送给rownum.

if(rownum==-1)

{ JOptionPane.showMessageDialog(this,"请选择一行"); //弹出小对话框, return; } String stuId=(String)sm.getValueAt(rownum, 1); try{ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); conn

=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mysql","sa","tian");

{

{

//trim()->去掉头和尾的空格。 try{ jtf.setText(null);//将查询完后 返回时 使但文本框中的名字消失。 sm =new StudentModel(); jt.setModel(sm); } ps=conn.prepareStatement("delete from student where stuName=?"); ps.setString(1, stuId); ps.executeUpdate(); }catch(Exception dd){ dd.printStackTrace(); } sm =new StudentModel(); jt.setModel(sm); } else if(e.getSource()==jb5) else if(e.getSource()==jb6)

String url

="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mysql"; String user = "sa";

String psword = "tian";

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//加载驱动

7

conn =DriverManager.getConnection(url,user,psword); //连接数据库

String name=this.jtf1.getText().trim();

//创建存储过程的对象

CallableStatement c=conn.prepareCall("{call dt_stu(?,?)}"); //问号将用作参数的占位

//给存储过程的第一个参数设置值 c.setString(1,name); //注册存储过程的第二个参数,java.sql.Types.INTEGER——>注册的 JDBC 类//换言之, registerOutParameter 使用的是 JDBC 类型(因此它与数据库型所对应的 java 类型。 返回的 JDBC 类型匹配)

c.registerOutParameter(2,java.sql.Types.INTEGER);

//执行存储过程 c.execute(); int in=c.getInt(2); if(in==0){ } System.out.println ("成绩是:"+in); // getXXX 方法将取回参数值 conn.close(); System.out.println("请输入你要查询的姓名:"); return;

}catch(Exception ee)

{

ee.printStackTrace();

}

/*String sql ="select * from stuView where stuName='"+name+"'"; if(name.trim().equals("")){ sm = new StudentModel();

}

else{ sm = new StudentModel(sql);//【如何返回原窗口】;

} jt.setModel(sm); //更换表格*/

8 } } }

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Vector;

import javax.swing.table.AbstractTableModel;

public class

java学生成绩管理系统课程设计报告

extends AbstractTableModel{ Vector rowData,columnNames;//表格的行,列。

Connection conn = null; //与特定数据库连接。

PreparedStatement ps;

ResultSet rs= null;

public StudentModel() //无参构造函数

{

this.init(""); //引用定义函数

}

//

public StudentModel(String sql)//有参构造函数

{

this.init(sql); //引用定义函数

}

/////////////////////////////

public void init(String sql) //自定义函数

{

if( sql.trim().equals("")) //判断传来的sql是否为空,trim()->去掉头和尾的空格。

{

sql="select stuId,stuName,stuSex,stuAge,kchName,grade from stuView";

}

columnNames = new Vector();

columnNames.add("学号");//将参数指定的组件追加到这个容器的尾部

columnNames.add("姓名");

columnNames.add("性别");

columnNames.add("年龄");

columnNames.add("课名");

columnNames.add("成绩");

9

rowData = new Vector();

try{

String url

="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mysql"; String user = "sa";

String psword = "tian";

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//加载驱动

conn =DriverManager.getConnection(url,user,psword); //连接数据库

ps = conn.prepareStatement(sql);//用于处理预编译的SQL语句。

rs=ps.executeQuery(); //把SQL语句发送到数据库中执行,并返回。

while(rs.next())

{ Vector row1 = new Vector();

row1.add(rs.getString(1));

row1.add(rs.getString(2));

row1.add(rs.getString(3));

row1.add(rs.getInt(4));

row1.add(rs.getString(5));

row1.add(rs.getInt(6));

rowData.add(row1);

}

}catch(Exception e)

{

e.printStackTrace();

}

}

////////////////////

@Override

public int getColumnCount() {

// TODO Auto-generated method stub

return this.columnNames.size(); //查看列有多少元素。

}

@Override

public int getRowCount() {

10

// TODO Auto-generated method stub

return this.rowData.size(); //查看行有多少元素。

}

@Override

public String getColumnName(int column) {

// TODO Auto-generated method stub

return (String)this.columnNames.get(column);

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

return ((Vector)this.rowData.get(rowIndex)).get(columnIndex); }

}

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.*;

import javax.swing.*;

public class StuAddDialog extends JDialog implements ActionListener{ JLabel jl1,jl2,jl3,jl4,jl5,jl6;

JButton jb1,jb2;

JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;

JPanel jp1,jp2,jp3;

public StuAddDialog(Frame owner , String title , boolean modal) //构造函数,modal-》true只能操作当前窗体

{

super(owner,title,modal);

jl1 = new JLabel("学号"); //静态文本,图片

11

jl2 = new JLabel("姓名");

jl3 = new JLabel("性别");

jl4 = new JLabel("年龄");

jl5 = new JLabel("课名");

jl6 = new JLabel("成绩");

jtf1 = new JTextField();

jtf2 = new JTextField();

jtf3 = new JTextField();

jtf4 = new JTextField();

jtf5 = new JTextField();

jtf6 = new JTextField();

jb1 = new JButton("添加");

jb2 = new JButton("取消");

jp1 = new JPanel();

jp2 = new JPanel();

jp3 = new JPanel();

jp1.setLayout(new GridLayout(7,1));// jp2.setLayout(new GridLayout(7,1));

jp1.add(jl1);

jp1.add(jl2);

jp1.add(jl3);

jp1.add(jl4);

jp1.add(jl5);

jp1.add(jl6);

jp2.add(jtf1);

jp2.add(jtf2);

jp2.add(jtf3);

jp2.add(jtf4);

jp2.add(jtf5);

jp2.add(jtf6);

jp3.add(jb1);

jp3.add(jb2);

this.add(jp1,BorderLayout.WEST); this.add(jp2,BorderLayout.CENTER); this.add(jp3,BorderLayout.SOUTH);

jb1.addActionListener(this); //注册监听 jb2.addActionListener(this);

12

this.setSize(300, 200);

this.setLocation(200, 300);

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == jb1)

{

Connection conn=null;

PreparedStatement ps=null;

PreparedStatement pss=null;

try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

conn =

DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mysql","sa", "tian");

ps = conn.prepareStatement("insert into student values (?,?,?,?)"); //预编译

String ss=this.jtf1.getText().trim();

String sss="Id";

ps.setString(1,this.jtf1.getText().trim());

ps.setString(2,this.jtf2.getText().trim());

ps.setString(3,this.jtf3.getText().trim());

ps.setInt(4,Integer.parseInt(this.jtf4.getText().trim())); //对int型的处理

pss = conn.prepareStatement("insert into grade1 values (?,?,?,?)"); //预编译

pss.setString(1,ss);

pss.setString(2,sss);

pss.setString(3,this.jtf5.getText().trim());

pss.setInt(4,Integer.parseInt(this.jtf6.getText().trim())); //对int型的处理

int i= ps.executeUpdate(); //一个指示受影响的行数的 int,如果使用 DDL 语句,则为 0。

int j= pss.executeUpdate();

if(i != 0&&j!=0 ){

System.out.println("添加完成");

}else{

13

System.out.println("添加失败");

}

}catch(Exception es){

es.printStackTrace();

}

this.dispose();//释放由该window,其子组件及其拥有的所有子组件使用的所有本机屏幕资源。

}

else if(e.getSource() == jb2)

{

this.dispose();

}

}

}

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.*;

public class StudentUpdateDialog extends JDialog implements

ActionListener{

JLabel jl1, jl2,jl3, jl4, jl5 ,jl6;

JButton jb1,jb2;

JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;

JPanel jp1,jp2,jp3;

public StudentUpdateDialog(Frame owner,String title,boolean

model,StudentModel sm,int rownum){ //构造函数

super(owner,title, model); //作用对象是直接父类。

jl1=new JLabel("学号");

jl2=new JLabel("姓名");

jl3=new JLabel("性别");

jl4=new JLabel("年龄");

jl5=new JLabel("课名");

jl6=new JLabel("成绩");

jtf1=new JTextField();

jtf2=new JTextField();

jtf3=new JTextField();

jtf4=new JTextField();

14

jtf5=new JTextField();

jtf6=new JTextField();

jtf1.setText((String)sm.getValueAt(rownum,0)); //rownum:行,0:列。getValueAt()获得指定的表格中的数据。

jtf1.setEditable(false); //使调用这个函数的控件不能被编辑,如果设为true或者不调用这个函数,则控件可以编辑.

jtf2.setText((String)sm.getValueAt(rownum,1));

jtf3.setText((String)sm.getValueAt(rownum,2));

jtf4.setText(sm.getValueAt(rownum,3)+"");

jtf5.setText((String)sm.getValueAt(rownum,4));

jtf6.setText(sm.getValueAt(rownum,5)+"");

jb1=new JButton ("修改");

jb2=new JButton ("取消");

jp1=new JPanel();

jp2=new JPanel();

jp3=new JPanel();

//设置布局

jp1.setLayout(new GridLayout(7,1));

jp2.setLayout(new GridLayout(7,1));

//添加组件

jp1.add(jl1);

jp1.add(jl2);

jp1.add(jl3);

jp1.add(jl4);

jp1.add(jl5);

jp1.add(jl6);

jp2.add(jtf1);

jp2.add(jtf2);

jp2.add(jtf3);

jp2.add(jtf4);

jp2.add(jtf5);

jp2.add(jtf6);

jp3.add(jb1);

jp3.add(jb2);

//布局

this.add(jp1,BorderLayout.WEST);

this.add(jp2,BorderLayout.CENTER);

this.add(jp3,BorderLayout.SOUTH);

//注册监听

jb1.addActionListener(this);

jb2.addActionListener(this);

15

//展现

this.setSize(300,200);//调整组件大小(width,height)

this.setLocation(200, 200); //窗口在屏幕中的位置。

this.setVisible(true);//根据参数的值显示或隐藏该window

}

@Override

public void actionPerformed(ActionEvent e)

{

// TODO Auto-generated method stub

if(e.getSource()==jb1) //修改

{

Connection ct =null; //接口 创建PreparedStatement的对象

PreparedStatement ps =null; //预编译SQL语句,并调用其方法传给数据库。 PreparedStatement pss =null; //预编译SQL语句,并调用其方法传给数据库。 try {

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); ct

=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mysql","sa","tian");

ps=ct.prepareStatement("update student set

stuName=?,stuSex=?,stuAge=? where stuId=?");

String ss="Id";

ps.setString(1,this.jtf2.getText());//1:位置,

this.jtf2.getText():加入的字符

ps.setString(2,this.jtf3.getText());

ps.setString(3,this.jtf4.getText());

ps.setString(4,this.jtf1.getText());

String s=this.jtf1.getText();

pss=ct.prepareStatement("update grade1 set

kchId=?,kchName=?,grade=? where stuId=?");

pss.setString(1,ss);

pss.setString(2,this.jtf5.getText());

pss.setString(3,this.jtf6.getText());

pss.setString(4,s);

int j=pss.executeUpdate(); //更新数据库

int i=ps.executeUpdate(); ////一个指示受影响的行数的 int,如果使用 DDL 语句,则为 0。

if(i==1&&j==1){

System.out.print("修改成功ok");

}else{

16

System.out.print("修改失败");

}

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

this.dispose();

}

else if(e.getSource() == jb2)

{

this.dispose();

}

}

}

4 运行结果及分析

1、成绩管理界面

对系统进行初始化,读出文件信息,监听按钮,创建其它界面对象,弹出界面

java学生成绩管理系统课程设计报告

17

2、 添加信息

输入学生信息,监听添加按钮,实现向文件中添加信息,若学号以存在需要重新添加

java学生成绩管理系统课程设计报告

3、 修改信息

输入学生学号,查找所有成绩,在文本框中直接修改按钮,点击修改及完成修改功能

java学生成绩管理系统课程设计报告

18

4、 删除信息

输入需要删除的学生的学号,删除对应学号的学生信息

java学生成绩管理系统课程设计报告

5、 查询界面

通过对输入的学号进行查询,将查到的对象的相应信息输出到文本框中

java学生成绩管理系统课程设计报告

19

6、 统计信息

进入统计界面后,点击统计按钮,实现对学生成绩求总分,并按总分从大到小输出到文本区域中

java学生成绩管理系统课程设计报告

参考文献

[1] 张海藩.软件工程导论. 清华大学出版社, 2010

[2] 沈洪, 施明利. VB程序设计案例汇编. 清华大学出版社, 2010

[3] 孟德欣. VB程序设计. 清华大学出版社, 2011

[4] 石志国. VB.NET数据库编程. 清华大学出版社, 2009

[5] 张友生. 软件体系结构原理、方法与实践. 清华大学出版社, 2010

20

更多相关推荐:
学生成绩管理系统设计报告

电子信息科学与技术专业课程设计题单班级_***_学生***课程名称专业课程设计_课题密码锁的设计设计要求利用visualc#作为前台开发工具,SQLServer后台数据库管理,实现一学生成绩管理系统。实现具体功…

数据结构课程设计——学生成绩管理系统报告书

课程设计报告书设计名称题目学生姓名专业班别学号指导老师日期年XXX一问题描述设计目的1掌握线性链表的建立2掌握线性链表的基本操作3掌握查找的基本算法设计内容利用线性链表实现学生成绩管理系统具体功能输入输出插入删...

java学生成绩管理系统课程设计报告以及代码共享

java学生成绩管理系统课程设计报告以及代码共享Java语言课程期末作业题目第9题学生成绩管理系统学院计算机学院专业计算机科学与技术班别学号姓名20xx年12月7日一课程题目设计一个简易的学生成绩管理系统用于记...

C#学生成绩管理系统课程设计报告

目录摘要1第一章绪论错误未定义书签11设计目的错误未定义书签12开发工具选择错误未定义书签13开发环境错误未定义书签14本报告的主要内容错误未定义书签第二章需求分析错误未定义书签21系统需求简介2211系统目标...

C语言学生成绩管理系统课程设计报告

C语言课程设计报告一问题描述题目七学生成绩管理系统设计学生成绩信息包括学期学号班别姓名四门课程成绩语文数学英语和计算机等主要功能1能按学期按班级完成对学生成绩的录入修改2能按班级统计学生的成绩求学生的总分及平均...

数据库课程设计报告学生成绩管理系统

数据库原理及应用课程设计报告目录1引言111课程设计选题112课程设计的目的113课程设计的背景12系统分析与设计221功能及性能分析2211功能需求222系统的开发运行环境223系统总体设计23数据库设计33...

C++学生成绩管理系统课程设计报告

C课程设计报告书题目学生成绩管理系统专业信息与计算科学班级020xx03学号020xx0306姓名张亚炬任课老师文军学生成绩管理系统课程设计报告摘要本系统主要用于对学生的成绩进行管理通过本系统可以将各个学生的成...

C#学生成绩管理系统课程设计报告

C课程设计报告20xx年1月1日目录第一章绪论111设计目的112开发工具选择113开发环境114本报告的主要内容1第二章需求分析221系统需求简介2211系统目标2212功能需求分析2213性能需求分析2第三...

Java课程设计报告学生成绩管理系统

中南民族大学管理学院学生课程设计报告课程名称Java语言课程设计题目学生成绩管理系统年级20xx专业信息管理与信息系统学号姓名SPLJH指导教师张晴完成地点管理学院综合实验室完成日期目录1题目描述和分析12问题...

C_学生成绩管理系统课程设计报告[1]

C程序设计课程设计报告20xx20xx学年第2学期题目专业计算机应用班级11计应姓名学号指导教师成绩20xx年12月17日目录摘要1第一章绪论211设计目的212开发工具选择213开发环境214本报告的主要内容...

学生成绩管理系统设计报告

南昌航空大学计算机课程设计测试与光电工程学院课程设计任务书系班学号课题名称学生成绩管理系统的设计课题要求使用C语言设计学生成绩管理系统设计的编程学生成绩信息包括学期学号班级姓名四门课程成绩语文数学英语电路等主要...

学生成绩管理系统程序设计报告

程序设计报告201201学年第学期题目学生成绩管理系统专业软件工程NIIT学生姓名杨金霖班级学号B120xx015指导教师成小惠指导单位计算机软件学院日期20xx326学生成绩管理系统一课题内容和要求设计一个简...

学生成绩管理系统课程设计报告(29篇)