课程设计基于java的学生成绩管理系统.docx

上传人:b****1 文档编号:15030039 上传时间:2023-06-29 格式:DOCX 页数:24 大小:347.48KB
下载 相关 举报
课程设计基于java的学生成绩管理系统.docx_第1页
第1页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第2页
第2页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第3页
第3页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第4页
第4页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第5页
第5页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第6页
第6页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第7页
第7页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第8页
第8页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第9页
第9页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第10页
第10页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第11页
第11页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第12页
第12页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第13页
第13页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第14页
第14页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第15页
第15页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第16页
第16页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第17页
第17页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第18页
第18页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第19页
第19页 / 共24页
课程设计基于java的学生成绩管理系统.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课程设计基于java的学生成绩管理系统.docx

《课程设计基于java的学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计基于java的学生成绩管理系统.docx(24页珍藏版)》请在冰点文库上搜索。

课程设计基于java的学生成绩管理系统.docx

课程设计基于java的学生成绩管理系统

课程设计--基于java的学生成绩管理系统

一.绪论

1.1引言

课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。

《面向对象课程设计》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。

1.2设计要求

1.组队时只能1-3位同学为一组,要求有数据库连接操作。

1.只能1-3个一组,要求有数据库连接操作。

2.同组之间的文档要分开,每个人的文档只写自己做的功能模块。

3.每组程序必须保证运行通过,程序和文档均在老师检查通过以后方可打印上交!

(源程序不需要打印)

注意:

老师没有检查的小组程序均视不合格。

4.倘若需要提前交程序的同学,请上交一个辅导员签字的请假条。

5.最后的上交材料是:

a.一份程序说明书打印版,b.将源程序和文档的电子版一起放在一个文件夹下,文件夹命名为学号+姓名

1.3开发环境

系统平台:

WindowsXP

数据库服务器:

Mysql

开发工具:

Eclipsedk7

1.4开发人员

张众一、胡先洋和樊曙光同学共同完成

二.系统功能介绍

本次课程设计完成一个基于java的学生成绩管理系统模型,采用c/s结构,它的基本功能是学生通过客户端连接服务器登陆,实现成绩的查询以,成绩统计查询;实现老师通过客户端登陆查询授课情况,学生名单,及进行账户管理。

添加学生成绩以及进行账户管理。

(根据自己的系统详细展开叙述)。

详细的功能描述如下:

(1)用户登录验证:

对登录用户进行登录验证。

(假设用户信息已经由数据库管理员设置)

(2)账户管理:

学生可以查看自给的账户信息(假设已由数据管理员给出)并可修改密码。

学生成绩查询:

学生可以通过输入学期查询自己某学期的选修课程成绩(假设学修课程表已经给出),同时,学生也可以查询自己地历史选课成绩清单。

学生成绩统计查询:

学生用户可以查询自己各学期成绩统计指数,各学年成绩统计指数以及历史成绩的指数。

(3)老师账户管理;管理员可以查看自给的账户信息(假设已由数据管理员给出)并可修改密码。

授课查询:

老师可以查询自己的授课情况(假设已给出)。

学生名单查询:

老师可以查询选修该老师课程的所有学生名单。

添加学生成绩:

老师可以天加学生的学生成绩。

三.系统功能模板图

3-1系统功能模板图

客户端成绩管理系统

历史成绩

成绩统计

学期成绩

学年成绩

成绩查询

学期成绩

历史成绩

账户管理

密码修改

账户信息

账户信息

账户管理

老师用户

登录

学生用户

授课查询

学生名单查询

添加学生成绩

密码修改

修改密码

四.数据库设计

4.1需求分析

系统验正证

老师

学生

成绩管理系统

显示信息

信息错误

信息正确

外部存储

查询添加数据

登录信息数据存储

4-1-1数据流图

4.2需求要求:

(1)学生基本信息管理(不由管理系统添加和修改)

(2)学生登录信息修改:

学生登录后可进行且仅能修改登录密码。

(3)课程信息管理:

假设信息已经存在(不由管理系统添加和修改)

(4)教职工信息管理:

假设选课表已经给出(不由管理系统添加和修改)

教师登录信息修改:

教师登录后可进行且仅能修改登录密码。

(5)选课管理:

假设选课表已经给出(不由管理系统添加和修改)

其中:

学生可以同时选修一门或多门课程。

可以同时为多个学生选修某一门或某几门课程。

(6)学生成绩信息管理:

老师登陆后,可以按课程添加选学该老师学生成绩;

学生登录后按学期号查询学期成绩信息,直接查询历史成绩信息,按学期(学年)查询成绩的平均成绩,平均绩点,总成绩,以及历史平均绩点,

(7)用户注册信息管理:

不同权限用户登录的账号为学号或是教工号由,数据库管理员已经创建,密码信息用户课以自行更改

(8)信息查询:

学生只能查询该学生自己基本信息、查询成绩信息及统计信息,老师登录能查询该老师自己基本信息教职工基本信息,可以查询自己的授课情况,可以查询选修自己课程的学生名单。

按课程号、课程名称、教师姓名输出对应课程的成绩登记表。

4.3需求总数

以上的用户请求经应用程序的转化,化为对数据库中的相应的表或视图的操作,数据库再把处理的结果(或都是错误信息)返回结应用程序。

应用程序把结果返回给用户,该结果可能为一个对表操作的结果(如插入,删除等),也可能为一个查询的结果,甚至可能为一个错误的信息。

4.5逻辑结构设计

由e-r图经过数据模型优化可得数据结构,

Course(course_name,course_i,num)

Student(student_,student_name,student_faccty,age)Teacher(teacher_id,teacher_name,age)

Register(num,register_number,register_id,register_type)

Faculty(faculty_id,faculty_name,facuty_principal)

Seleccourse(course_id,student_id,garde,teacher_id,term)

Teaching_table(teacher_id,course_id)

采用mysql数据库建立如下表结构:

Register:

Register:

Num

INT

NN

AI

Register_number

Varchar

Key

NN

Register_password

Varcahr

NN

Register_type

Varchar

NN

Course:

Num

INT

NN

AI

Course_id

Varchar

Key

NN

Course_name

Varchar

NN

Student:

Num

INT

NN

AI

Student_id

Varchar

Key

NN

Student_name

Varchar

NN

Student_facuty

Int

Student_age

Int

NN

Teachaer:

Num

INT

NN

AI

Teacher_id

Varchar

Key

NN

Teacher_name

Varchar

NN

Teacher_age

INT

NN

Selecourse:

Num

INT

Key

NN

AI

Course_id

Varchar

Teacher_id

Varchar

Grade

INT

Student_id

Varchar

Term

INT

NN

Teaching_table:

Num

INT

Key

NN

AI

Teacher_id

Varchar

Course_Id

INT

Student_facuty:

Facuty_id

INT

Key

NN

Facuty_name

Varchar

Facuty_principal

Varchar

五.系统设计

5.1设计介绍

本设计模型采用c/s结构,通过shocket进行传输数据。

客户端主要实现用户任务的识别和分发,服务端主要实现接受任务处理业务返回结果通过序列化对象实现数据的封装传输。

设计模式采用mvc结构,实现数据分层。

5.2系统设计的几个主要类

1.登录类,loginFrame主要有登陆账户,密码,权限。

权限分为学生和老师两种。

主要行为是在用户确认之后,判断用户类型,封装用户信息,后台验证成功后,建立用户服务类,开启管理界面。

2.学生管成绩理类StudentFrame,该类主要显示学生成绩管理系统的主界面,和相关时间的响应。

主要行为时判断用户的操作(界面事件),并将行为转交给服务类,实现与用户的交互。

3.教师管成绩理类teacherFrame,该类主要显示教师成绩管理系统的主界面,和相关时间的响应。

主要行为时判断用户的操作(界面事件),并将行为转交给服务类,实现与用户的交互。

4.服务类客户端服务类StudentService,服务器StudentService

前者主要处理前端用户发出任务的业务逻辑,并将指令和数据发给服务器StudentService,接受服务器送回结果。

后者主要接受前者的数据和指令,并分发业务,通过model层处理数据库信息用户信息并得出业务结果,将结果返回前端。

5.数据库处理类dao主要实现对数据库的查询删除操作。

6.bean数据类Grade,Student,Teacher,serialvector

Grade主要用于前后端传输成绩实现了序列化。

Student,teacher主要用于传输和封装用户信息。

serialVector主要用于封装和批量传输数据。

7.服务器框架类serverFrame主要用于开启服务器,发出关闭服务器请求,设置监听客户端连接,并开启新线程。

8.线程类serverthread类主要用于处理用户业务,接受命令,接收数据,分发任务,到service层并将结果传给客户端。

六.系统实现

本模型系统采用的MVC设计模式,分为service模块,model模块,view模块。

本人负责view模块和bean中gradeserialVectorstudentteacherclient的封装数据类的实现

主要由客户端的界面,服务器端界面(bean中之一grade和serialVector为例)。

以下为主要代码(非主要方法略及实现代码相似函数省略):

服务器端框架代码:

packageserverFrame;

publicclassMainFrameextendsJFrameimplementsActionListener{

JButtonstart=null;

JButtonend=null;

JLabelstartTime=null;

JLabelcurrentTime=null;

staticJTextAreajta=null;

StartServerThreadsst=null;//处理监听程序

publicMainFrame(){

super("成绩管理服务器");

this.setLayout(newFlowLayout());

start=newJButton("开启服务器");

start.addActionListener(this);

end=newJButton("结束服务器");

end.addActionListener(this);

jta=newJTextArea(10,40);

jta.disable();

JScrollPanejsp=newJScrollPane(jta);

currentTime=newJLabel("未开启");

startTime=newJLabel("现在时间是:

");

this.add(end);

this.add(start);

this.add(jsp);

this.add(startTime);

this.add(currentTime);

//this.add(jta);

}

publicstaticvoidmain(Stringagrgs[]){

MainFramemainFrame=newMainFrame();

mainFrame.setVisible(true);

mainFrame.setBounds(100,100,500,500);

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==this.start)

startActionDealing();

if(e.getSource()==this.end)

endActionDealing();

}

//处理结束按钮事件

privatevoidendActionDealing(){

if(sst==null)

jta.append("服务器尚未开始服务。

\n");

else{

sst.setStartSign(false);

//sst.destroy();wrong

jta.append("服务器结束请求已处理,等待中.....\n");

}

}

//处理开始服务器按钮事件

privatevoidstartActionDealing(){

//开启新线程处理监听

sst=newStartServerThread();

sst.start();

}

publicstaticJTextAreagetJta(){………

publicstaticvoidsetJta(JTextAreajta){………

publicstaticvoidsetJta(JTextAreajta){………

}

登陆界面

packageFrames;

publicclassLogInFrameextendsJFrame{

publicStringgetClientType;

publicLogInFrame(){

super("登陆");

this.setLayout(newFlowLayout());

LoginPanelloginPanel=newLoginPanel(this);

loginPanel.setPreferredSize(newDimension(300,300));

this.add(loginPanel,BorderLayout.CENTER);

this.setVisible(true);

this.setResizable(false);

this.setBounds(500,200,400,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

客户端学生管理界面

packageFrames;

publicclassStudentManagerextendsJFrame{

Iconicon=null;

Clientclient=null;

StudentServicess=null;

JPaneljp=null;

publicStudentManager(Clientclient,StudentServicess){

super("学生成绩管理系统");

this.ss=ss;

imageIcon();

this.client=client;

addcompoents();

this.setVisible(true);

this.setBounds(400,100,500,500);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

privatevoidaddcompoents(){

setLayout(newBorderLayout());

Containercon=getContentPane();

StudentManagerHeadPanelsmhp=newStudentManagerHeadPanel(client);

con.add(smhp,BorderLayout.NORTH);

StudentManBodysmb=newStudentManBody(client,ss,this);

con.add(smb,BorderLayout.CENTER);

JLabellb=newJLabel("");

lb.setIcon(icon);

con.add(lb,BorderLayout.SOUTH);

}

voidimageIcon(){………

publicvoidsetJp(JPaneljp){………

}

客户端教师管理界面:

packageFrames;

publicclassStudentManagerextendsJFrame{

Iconicon=null;

Clientclient=null;

StudentServicess=null;

JPaneljp=null;

publicStudentManager(Clientclient,StudentServicess){

super("学生成绩管理系统");

this.ss=ss;

imageIcon();

this.client=client;

addcompoents();

this.setVisible(true);

this.setBounds(400,100,500,500);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

privatevoidaddcompoents(){

setLayout(newBorderLayout());

Containercon=getContentPane();

StudentManagerHeadPanelsmhp=newStudentManagerHeadPanel(client);

con.add(smhp,BorderLayout.NORTH);

StudentManBodysmb=newStudentManBody(client,ss,this);

con.add(smb,BorderLayout.CENTER);

JLabellb=newJLabel("");

lb.setIcon(icon);

con.add(lb,BorderLayout.SOUTH);

}

voidimageIcon(){………

}

添加学生信息类

packageFrames;

publicclassAddStudentGradeextendsJFrameimplementsActionListener{

Labelprompt=newLabel("请输入各项添加信息");

LabellbId,lbName,lbAge,TS;

TextFieldtxtId,txtName,txtAge,txtTs;

ButtonbtnAdd,btnQuit,btnreAdd;

TeacherServicetss=null;

publicAddStudentGrade(TeacherServicets){

super("添加学生信息");

this.tss=ts;

setResizable(false);

TS=newLabel("学期:

");

lbId=newLabel("学号:

");

lbName=newLabel("课程:

");

lbAge=newLabel("成绩:

");

txtTs=newTextField(8);

txtId=newTextField(10);

txtName=newTextField(10);

txtAge=newTextField(10);

btnAdd=newButton("添加到数据库");

btnQuit=newButton("退出");

btnreAdd=newButton("继续添加");

btnAdd.addActionListener(this);

btnQuit.addActionListener(this);

btnreAdd.addActionListener(this);

this.setLayout(newFlowLayout());

add(prompt);

this.add(lbId);

this.add(txtId);

this.add(lbName);

this.add(txtName);

this.add(lbAge);

this.add(txtAge);

this.add(TS);

this.add(txtTs);

this.add(btnAdd);

this.add(btnreAdd);

his.add(btnQuit);

this.setSize(170,400);

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

this.setVisible(true);

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==btnQuit){dispose();}

if(e.getSource()==btnAdd){

Stringid=txtId.getText();

Stringname=txtName.getText();

Stringage=txtAge.getText();

Stringts=txtTs.getText();

if(id.equals("")||name.equals("")||age.equals("")||ts.equals("")){

JOptionPane.showMessageDialog(this,"不允许有选项为空!

");

return;}

Gradegrade=newGrade();

grade.setCourseName(name);

grade.setGrade(Integ

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2