java课程设计学生成绩管理系统.docx
《java课程设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《java课程设计学生成绩管理系统.docx(59页珍藏版)》请在冰点文库上搜索。
![java课程设计学生成绩管理系统.docx](https://file1.bingdoc.com/fileroot1/2023-7/4/ff127661-56fa-49f0-80cd-360749fa25f0/ff127661-56fa-49f0-80cd-360749fa25f01.gif)
java课程设计学生成绩管理系统
课程设计(论文)任务书
一、课程设计(论文)题目 学籍管理系统
二、课程设计(论文)工作自2011年12月12日起至2011年12月16日止。
三、课程设计(论文)地点:
软件学院实训中心
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)掌握Java语言的程序设计方法;
(2)理论联系实际,进一步提高学生的软件开发技术;
(3)培养学生分析、解决问题的能力;
(4)提高学生实践论文撰写能力。
2.课程设计的任务及要求
1)课程设计任务:
设计基于文件结构的学籍管理系统,实现以下功能:
(1)录入学生基本信息的功能
(2)修改学生基本信息的功能
(3)查询学生基本信息的功能
(4)删除学生基本信息的功能
2)创新要求:
实现数据库的链接,并能实现数据的录入与输出。
3)课程设计论文编写要求
(1)课程设计任务及要求
(2)设计思路--工作原理、功能规划
(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代
码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,
巩固了哪些知识,有哪些提高。
(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)
(7)报告按规定排版打印,要求装订平整,否则要求返工;
(8)课设报告的装订顺序如下:
封面---任务书---中文摘要---目录----正文---附录
(代码及相关图片)
(9)严禁抄袭,如有发现,按不及格处理。
4)课程设计评分标准:
(1)学习态度:
20分;
(2)程序检查:
20分;
(3)课设答辩:
20分;
(4)课设报告:
40分。
5)参考文献:
(1)丁振凡.Java语言实用教程(第2版)[M].清华大学出版社.2008.1
(2)
(3)
6)课程设计进度安排
1.准备阶段(4学时):
选择设计题目、了解设计目的要求、查阅相关资料
2.程序模块设计分析阶段(4学时):
程序总体设计、详细设计
3.代码编写调试阶段(8学时):
程序模块代码编写、调试、测试
4.撰写论文阶段(4学时):
总结课程设计任务和设计内容,撰写课程设计论文
学生签名:
2011年12月12日
课程设计(论文)评审意见
(1)学习态度(20分):
优( )、良( )、中( )、一般( )、差( );
(2)程序检查(20分):
优( )、良( )、中( )、一般( )、差( );
(3)课设答辩(20分):
优( )、良( )、中( )、一般( )、差( );
(5)论文撰写(40分):
优( )、良( )、中( )、一般( )、差( );
评阅人:
职称:
讲师
2011年12月16日
中文摘要
本文论述某学校学生学籍管理系统的开发过程。
全文分课程任务及要求、需求分析、设计思路、详细设计、运行调试与分析讨论设计体与小结及参考文献共七部份内容。
本系统以JavaEclipse为开发平台,选择了易学易用可java图形界面开发编程语言,主要用到了swing、awt、sql三个类包,结合单位实际,利用软件工程化思想和方法,总体上用结构化生命周期法进行系统分析和设计,采用快速原型法来实现系统。
在程序设计与调试上采用了自上而下、逐步细化,逐步完善的原则。
采用结构化的功能模块设计系统功能,可读性好,易于扩充。
系统由学生基本信息添加、学生基本信息查询、学生基本信息删除、学生基本信息修改及学籍管理系统退出系统等功能模块组成,基本功能较全面。
本系统用户界面友好、清晰、操作简便,易学易用;系统可读性好,易于维护、更新,安全性较好。
本系统采用传统下拉菜单功能选择,方便、快捷、一目了然,并且在一个窗体中进行操作,每个功能界面颜色不同,这样可使系统可视化性比较强。
对学生的基本信息进行简单操作,可按学号进行查询、修改、删除操作。
本系统采用链入数据库进行存储,可动态进行查看、操作,这样的系统可修改性较强。
目 录
一、课程设计任务及要求
课程设计任务:
学籍管理系统
课程设计要求:
录入学生基本信息
修改学生基本信息
查询学生基本信息
删除学生基本信息
通过这次的设计,主要是做出一个小型的学生学籍管理系统,来加强对JAVA所学知识的巩固和融会贯通,主要是在图形界面方面可以说是对一个学期所学知识的一个小结,加深对JAVA数据库的理解。
二、需求分析
该学生学籍管理系统的所有功能均在一个Frame窗体中实现。
学生学籍管理系统主界面模块:
采用Frame窗体来设置欢迎界面包括背景图片及字幕(可以设计成滚动字幕效果),左上方的菜单条设计成下拉式。
包括“录入学生基本信息”、“修改学生基本信息”、“删除学生基本信息”、“查询学生基本信息”和“退出系统”五项菜单项。
录入学生基本信息模块:
采用Panel面板来设置该部分内容信息并采用方位布局(边缘布局)和Box轻量级组件来设置“学号”、“姓名”、“性别”、“专业”、“年级”、“出生”,并在该面板中添加了“录入”和“重置”两个按钮进行监听,最后将该面板加入到Frame窗体中去。
修改学生基本信息模板:
采用Panel面板来设置该部分内容信息,同样是采用方位布局及Box组件来设置相关信息,并在学号旁设置了“开始修改”按钮。
在面板南部方位添加了“确定修改”和“重置”两按钮进行监听。
查询学生基本信息模板:
采用Panel面板来设置该部分内容信息,并将该面板加入到主窗体中去,采用边缘布局进行方位设置,在上方加入“查询”按钮进行监听。
删除学生基本信息模板:
也是采用Panel面板进行设置相关内容,并用边缘布局进行布局,并在上方添加“确定”按钮,在下方添加“确定删除”按钮实现监听。
退出系统模板:
采用JDialog组件来实现该部分功能,是以弹跳出对话框形式进行选择是否退出该系统,并设置“是”和“否”两个按钮来实现该功能的监听。
综上,本学籍管理系统就是由以上六部分组成,并将所有内容信息在同一窗体中实现,这样可使系统可视化性提高。
三、设计思路
定义四个Panel面板用来实现该学籍管理系统对学生基本信息的操作:
.定义add(录入学生基本信息)面板来实现录入功能
采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“录入学生基本信息”的标签,并更改字体,颜色等。
接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向box中,通常使用此方法强行使两个组件之间具有某一空间量。
然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向box中,通常使用此方法强行使两个组件之间具有某一空间量。
然后在面板的South方位设置“录入”与“重置”两按钮。
最后实现与数据库的桥接,能够将从文本框获得的信息存储到数据库中去。
.定义Query(查询学生基本信息)面板来实现查询功能
该部分同样采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“查询学生基本信息”的标签,并更改字体,颜色等。
接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一个“查询”按钮。
并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向box中,通常使用此方法强行使两个组件之间具有某一空间量。
然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向box中,通常使用此方法强行使两个组件之间具有某一空间量。
最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去。
.定义Update(修改学生基本信息)面板来实现修改功能
该部分同样也是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。
接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向box中,通常使用此方法强行使两个组件之间具有某一空间量。
并在“学号”该文本框后添加一个“开始修改”按钮用来监听。
然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向box中,通常使用此方法强行使两个组件之间具有某一空间量。
最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,并将修改后的信息存储到数据库中去。
.定义Delete(删除学生基本信息)面板来实现删除功能
该部分还是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。
接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一“确定”按钮实现监听。
并将其所有文本框和标签加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向box中,通常使用此方法强行使两个组件之间具有某一空间量。
并在“学号”该文本框后添加一个“开始修改”按钮用来监听。
然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向box中,通常使用此方法强行使两个组件之间具有某一空间量,还在本面板的South方位添加“确定删除”按钮。
最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,删除后同时在数据库中也删除该信息并保存该操作。
.定义exit(退出系统)对话框来实现退出功能
本部分采用JDialog来实现,在该对话框的North方位添加“确定要退出学籍管理系统吗?
”这一标签,在South方位添加“是”和“否”两个按钮来实现是否退出学籍管理系统。
.定义fra(欢迎界面窗)窗体来实现下拉菜单条并进入以上五部分功能
用MenuBar类封装绑定到框架的菜单栏与Menu对象是从菜单栏部署的下拉式菜单组件来实现下拉式菜单条。
流程图如下
四、详细设计
首先导入该程序中所需要用到的java包如下:
importjava.sql.*;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjavax.swing.JOptionPane;
设计录入学生基本信息这一模块功能
//add(录入学生基本信息)面板(Panel)设计:
classaddextendsPanelimplementsActionListener{
Connectioncon;
Statementsql;
PanelpNorth,pCenter;
JButtondone,readd;
Boxbox,box0,box1,box2,box3,box4,box5,box6,box7;
JTextFieldnum,name,sex,birth,cla,professional;
publicadd(){
setLayout(newBorderLayout());
Fontfont=newFont("华文中宋",Font.BOLD,22);
UIManager.put("Label.font",font);
num=newJTextField(20);
name=newJTextField(20);
sex=newJTextField(20);
professional=newJTextField(20);
cla=newJTextField(20);
birth=newJTextField(20);
box0=Box.createHorizontalBox();
JLabeljl=newJLabel("录入学生基本信息");
jl.setForeground(Color.red);
jl.setFont(newFont("华文行楷",Font.BOLD,34));
box0.add(jl);
box1=Box.createHorizontalBox();
box1.add(newJLabel("学号:
"));
box1.add(Box.createHorizontalStrut(8));
box1.add(num);
box2=Box.createHorizontalBox();
box2.add(newJLabel("姓名:
"));
box2.add(Box.createHorizontalStrut(8));
box2.add(name);
box3=Box.createHorizontalBox();
box3.add(newJLabel("性别:
"));
box3.add(Box.createHorizontalStrut(8));
box3.add(sex);
box4=Box.createHorizontalBox();
box4.add(newJLabel("专业:
"));
box4.add(Box.createHorizontalStrut(8));
box4.add(professional);
box5=Box.createHorizontalBox();
box5.add(newJLabel("年级:
"));
box5.add(Box.createHorizontalStrut(8));
box5.add(cla);
box6=Box.createHorizontalBox();
box6.add(newJLabel("出生:
"));
box6.add(Box.createHorizontalStrut(8));
box6.add(birth);
box7=Box.createHorizontalBox();
done=newJButton("录入");
done.setFont(newFont("华文行楷",Font.BOLD,22));
done.setForeground(Color.black);
done.setBackground(Color.white);
done.addActionListener(this);
box7.add(done);
box7.add(Box.createHorizontalStrut(8));
readd=newJButton("重置");
readd.setFont(newFont("华文行楷",Font.BOLD,22));
readd.setForeground(Color.black);
readd.setBackground(Color.white);
readd.addActionListener(this);
box7.add(readd);
box=Box.createVerticalBox();
box.add(box0);
box.add(Box.createVerticalStrut(12));
box.add(box1);
box.add(Box.createVerticalStrut(12));
box.add(box2);
box.add(Box.createVerticalStrut(12));
box.add(box3);
box.add(Box.createVerticalStrut(12));
box.add(box4);
box.add(Box.createVerticalStrut(12));
box.add(box5);
box.add(Box.createVerticalStrut(12));
box.add(box6);
box.add(Box.createVerticalStrut(12));
box.add(box7);
pCenter=newPanel();
pCenter.add(box);
add(pCenter,"Center");
setBackground(Color.cyan);
}
//实现动作事件并链接数据库将文本框内信息存储到数据库中:
publicvoidactionPerformed(ActionEvente){
Stringnum0,num1,name1,sex1,cla1,professional1,birth1;
intout=1;
if(e.getSource()==done){
name1=name.getText();
if(name1.equals("")){
JOptionPane.showMessageDialog(this,"对不起,姓名不能为空!
");
}
else{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundExceptionee){
}
try{
con=DriverManager.getConnection("jdbc:
odbc:
stud","","");
sql=con.createStatement();
ResultSetrs=null;
booleanAbook;
rs=sql.executeQuery("select*fromstud");
while(rs.next()){
num1=rs.getString("学号");
if(num1.equals(num.getText().trim())){
num.setText("");
JOptionPane.showMessageDialog(this,"对不起,该学号已存在!
","学籍管理系统",
JOptionPane.ERROR_MESSAGE);
out=0;
break;
}
}
con.close();
sql.close();
}catch(SQLExceptionr){}
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundExceptionee){
}
try{
con=DriverManager.getConnection("jdbc:
odbc:
stud","","");
sql=con.createStatement();
num1="'"+num.getText().trim()+"'";
name1=name.getText().trim();
sex1="'"+sex.getText().trim()+"'";
professional1="'"+professional.getText().trim()+"'";
cla1="'"+cla.getText().trim()+"'";
birth1="'"+birth.getText().trim()+"'";
Stringtemp="insertintostudvalues("+num1+","
+"'"+name1+"'"+","+sex1+","
+professional1+","+cla1+","+birth1+")";
sql.executeUpdate(temp);
sql.close();
con.close();
}catch(SQLExceptionerr){
JOptionPane.showMessageDialog(this,"信息录入错误,请重新录入!
","学籍管理系统",
JOptionPane.ERROR_MESSAGE);
out=0;
}
if(out==1){
JOptionPane.showMessageDialog(this,"录入成功!
","学籍管理系统",
JOptionPane.INFORMATION_MESSAGE);
num.setText("");
name.setText("");
sex.setText("");
cla.setText("");