课程设计基于java的学生成绩管理系统.docx
- 文档编号:27353164
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:24
- 大小:347.48KB
课程设计基于java的学生成绩管理系统.docx
《课程设计基于java的学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计基于java的学生成绩管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
课程设计基于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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 基于 java 学生 成绩管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)