成绩管理系统java+mySQL.docx
- 文档编号:27778651
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:27
- 大小:897.27KB
成绩管理系统java+mySQL.docx
《成绩管理系统java+mySQL.docx》由会员分享,可在线阅读,更多相关《成绩管理系统java+mySQL.docx(27页珍藏版)》请在冰豆网上搜索。
成绩管理系统java+mySQL
《Java语言》课程期末作业
题目第9题:
学生成绩管理系统
学院计算机学院
专业
班别
学号
姓名温景钊
2013年6月10日
一、课程题目
设计一个简易的学生成绩管理系统。
用于记录学生的各科成绩,以及实现常用的统计功能。
(1)记录学生的基本信息,如姓名、学号、专业、班级等
(2)记录各科成绩
(3)实现常用的统计功能,如:
单科成绩排名、总分排名、统计成绩高于/低于某一临界值的学生、统计单科/总分平均值……
(4)使用图形方式显示某些数据,如直方图显示各分数段的人数、绘制各科分数分布曲线……(可选)
(5)必须使用数据库。
其它功能可自行扩展。
二、题目分析与设计
1.注明所使用的开发环境(Eclipse、NetBeans,JBuilder)。
开发环境:
Eclipse
2.论述题目的需求。
给出软件功能架构图。
题目需求:
通过数据库记录学生成绩和信息,并通过数据库读取这些信息,实现单个学生查找、全体学生查找等功能和单科排名、平均分、总分排名、平均分等功能。
其他扩展功能:
登录界面,保存到txt文件。
软件功能架构图:
其中,删除、修改、单个查找功能均通过学号定位学生
3.论述界面设计过程,指出其设计上的创意及组件的布局策略。
界面设计过程:
主要界面包括登录界面,主功能界面,各个子功能界面。
登录界面包括3个面板,每个面板放入相应的标签、文本框、按钮等组件,登录界面采用3行1列的网格布局;主功能界面包括菜单栏和若干面板,面板中放入标签或若干按钮,菜单栏的菜单项与按钮相对应,主功能界面采用7行1列的网格布局;学生管理类子功能(增加学生、删除学生、修改学生、单个查找)界面采用6行2列的网格布局,每个网格均放入一个面板,每个面板放入标签、文本框、组合框、按钮等组件,以达到较友好的界面效果;学生查找类子功能界面(查看全体、按年级查询、按班别查询、按专业查询)和成绩管理类子功能(单科排名、总分排名、合格学生、挂科学生)界面采用边界布局,界面的上部放入一个面板,面板放入相应的按钮或组合框,中部放入一个文本域。
所有错误信息等信息均通过对话框的形式显示相应信息。
4.论述程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述。
不得以粘贴代码的方式代替设计部分。
类的设计过程:
本程序包括19个类文件,每个类文件只含有一个类,分别是包含main方法的主类Main,实现登录功能的类Login,实现各种功能选择功能的类Function,实现数据库连接的类DataBaseCreate,实现学生信息编辑功能类StudentEdit,执行增加学生功能的类AddStudent,执行删除学生功能的类DeleteStudent,执行修改学生功能的类UpdateStudent,执行单个查询功能的类IndexOfSingle,(由于AddStudent,DeleteStudent,UpdateStudent,IndexOfSingle界面和操作基本相同,所以上4类均继承StudentEdit)实现条件查找和成绩管理功能的类IndexOrManage,执行查询全体功能的类LookAllStudents,执行按年级查询功能的类IndexOfGrade,执行按班别查询功能的类IndexOfClass,执行按专业查询的类IndexOfMajor,执行单科排名功能的类SubjectScoreRanking,执行总分排名功能的类TotalScoreRanking,执行查找单科及格学生功能的类PassStudents,执行查找单科不及格学生功能的类NotPassStudents,(由于LookAllStudents,IndexOfGrade,IndexOfClass,IndexOfMajor,SubjectScoreRanking,TotalScoreRanking,PassStudents,NotPassStudents,界面和操作基本相同,所以上8类均继承IndexOrManage)执行将文本域内容保存到TXT文件的类TxtSave。
以上19个类,除了Main类以外,均包含一个构造方法,有些还包含actionPerformed(e)方法。
对象的协作过程:
三、测试分析
小四字体,倍行距。
对程序的测试情况作出分析。
至少包括但不限于需要具备以下内容:
1.阐述扩展包(仅限于SUN官方发布)的部署过程,并将扩展包附于光盘源程序中;给出数据库的详细配置说明。
导入扩展包
数据库配置说明:
数据库mySQL
数据库服务器localhost
端口3306
用户名root
密码空
数据库名studentmanagement
Student表
2.典型测试数据的构建,并且给出测试数据的预计结果
原数据:
测试数据:
添加学生
10005张兰女20122信息工程827458
删除学生10000
修改学生10001
李嘉女20114网络工程5485
单个查找10003
查询全体
按年级查找2011级
按班别查找1班
按专业查找软件工程
单科排名并显示平均分语文
总分排名并显示平均分
单科及格学生英语
单科不及格学生语文
保存Txt总分
预测结果:
均成功完成操作
3.本程序的测试情况,与预计结果作对比
测试情况:
成功完成相关操作
添加学生
10005张兰女20122信息工程827458
删除学生10000
修改学生10001
李嘉女20114网络工程5485
单个查找1000320001
查询全体
按年级查找2011级
按班别查找1班
按专业查找软件工程
单科排名并显示平均分语文
总分排名并显示平均分
单科及格学生英语
单科不及格学生语文
保存Txt总分排名
附录:
源代码
小四字体,倍行距。
只需列出程序中所有的包及相关的文件。
不需要打印源代码。
程序中所有的包及相关的文件:
代码:
importclassMain{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Loginlogin=newLogin();
;
}
}
import.*;
import.*;
etLayout(newGridLayout(3,1));
getContentPane().add(p1);
getContentPane().add(p2);
getContentPane().add(p3);
(la1);
(name);
(la2);
(pw);
(b1);
(b2);
setBounds(500,250,100,100);
pack();
setVisible(true);
('*');
(this);
(this);
}
publicvoidactionPerformed(ActionEvente){
if()=="登录"){
Stringpassword=();
Stringuser=();
if("admin")&&("admin")){
Functionfunction=newFunction();
;
setVisible(false);
}
else{
(null,"用户名或密码错误","Error",;
}
}
elseif()=="退出"){
(0);
}
}
}
import.*;
;
import.*;
etLayout(newGridLayout(7,1));
getContentPane().add(bar);
getContentPane().add(p1);
getContentPane().add(p2);
getContentPane().add(p6);
getContentPane().add(p3);
getContentPane().add(p4);
getContentPane().add(p5);
(la1);
(add);
(del);
(update);
(single);
(la3);
(look);
(b11);
(b12);
(b13);
(la2);
(b1);
(b2);
(b3);
(b4);
setBounds(500,250,100,100);
pack();
setVisible(true);
ddActionListener(this);
items[0][1].addActionListener(this);
items[1][0].addActionListener(this);
items[1][1].addActionListener(this);
items[1][2].addActionListener(this);
items[1][3].addActionListener(this);
items[2][0].addActionListener(this);
items[2][1].addActionListener(this);
items[2][2].addActionListener(this);
items[2][3].addActionListener(this);
items[3][0].addActionListener(this);
items[3][1].addActionListener(this);
items[3][2].addActionListener(this);
items[3][3].addActionListener(this);
}
;
publicclassStudentEditextendsJFrame{
JPanelp1=newJPanel();
JPanelp2=newJPanel();
JPanelp3=newJPanel();
JPanelp4=newJPanel();
JPanelp5=newJPanel();
JPanelp6=newJPanel();
JPanelp7=newJPanel();
JPanelp8=newJPanel();
JPanelp9=newJPanel();
JPanelp10=newJPanel();
JPanelp11=newJPanel();
JPanelp12=newJPanel();
JLabella1=newJLabel("学号");
JLabella2=newJLabel("姓名");
JLabella3=newJLabel("性别");
JLabella4=newJLabel("生日");
JLabella5=newJLabel("年级");
JLabella6=newJLabel("班别");
JLabella7=newJLabel("语文");
JLabella8=newJLabel("英语");
JLabella9=newJLabel("数学");
JLabella10=newJLabel("专业");
JButtonb1=newJButton("确定");
JButtonb2=newJButton("取消");
JTextFieldnum=newJTextField(10);
JTextFieldname=newJTextField(10);
JTextFieldchinese=newJTextField(10);
JTextFieldenglish=newJTextField(10);
JTextFieldmaths=newJTextField(10);
JTextFieldbirth=newJTextField(10);
String[]sex={"","男","女"};
JComboBoxs=newJComboBox(sex);
String[]grades={"","2010","2011","2012","2013"};
JComboBoxgrade=newJComboBox(grades);
String[]classes={"","1","2","3","4","5","6"};
JComboBoxclas=newJComboBox(classes);
String[]majors={"","网络工程","软件工程","信息工程","计算机科学"};
JComboBoxmajor=newJComboBox(majors);
publicStudentEdit(){
(la1);
(num);
(la2);
(name);
(la3);
(s);
(la4);
(birth);
(la5);
(grade);
(la6);
(clas);
(la7);
(chinese);
(la8);
(english);
(la9);
(maths);
(la10);
(major);
(b1);
(b2);
etLayout(newGridLayout(6,2));
getContentPane().add(p1);
getContentPane().add(p2);
getContentPane().add(p3);
getContentPane().add(p4);
getContentPane().add(p5);
getContentPane().add(p6);
getContentPane().add(p7);
getContentPane().add(p8);
getContentPane().add(p9);
getContentPane().add(p10);
getContentPane().add(p11);
getContentPane().add(p12);
setBounds(500,250,100,100);
pack();
setVisible(true);
}
}
import.*;
importclassAddStudentextendsStudentEditimplementsActionListener{
publicAddStudent(){
super();
(this);
(this);
}
publicvoidactionPerformed(ActionEvente){
if()=="确定"){
etLayout(newBorderLayout());
getContentPane().add(p1,;
getContentPane().add(scroll,;
getContentPane().add(p2,;
setBounds(500,250,100,100);
pack();
setVisible(true);
}
}
importclassSubjectScoreRankingextendsIndexOrManageimplementsActionListener{
String[]subjects={"","语文","英语","数学"};
JComboBoxsubject=newJComboBox(subjects);
JLabella=newJLabel("选择查询科目");
publicSubjectScoreRanking(){
super();
(la);
(subject);
quals("语文"))
s="Chinese";
elseif().equals("英语"))
s="English";
elseif().equals("数学"))
s="Maths";
else
(null,"找不到该科目","Message",
;
if("")){
}
else
try{
Connectioncon=();
Statementsql=,;
ResultSetrs=("select"+s+"fromstudent");
();
quals("语文"))
s="Chinese";
elseif().equals("英语"))
s="English";
elseif().equals("数学"))
s="Maths";
else
(null,"找不到该科目","Message",
;
if("")){
}
else
try{
Connectioncon=();
Statementsql=,;
ResultSetrs=("select*fromstudentwhere"+s+">=60");
()+"及格学生:
\r\n");
("学号姓名专业年级班别成绩\r\n");
while()){
("Num")+""+("Name")+""+("Major")
+""+("Grade")+""+("Class")+
""+(s)+"\r\n");
}
}catcherr){
(null,(),"ClassNotFoundException:
",
;
}catch(SQLExceptionex){
(null,(),"SQLException:
",;
}
}
elseif()=="取消"){
setVisible(false);
}
elseif()=="保存"){
TxtSavesave=newTxtSave(),()+"合格");
}
}
}
importclassNotPassStudentsextendsIndexOrManageimplementsActionListener{
String[]subjects={"","语文","英语","数学"};
JComboBoxsubject=newJComboBox(subjects);
JLabella=newJLabel("选择查询科目");
publicNotPassStudents(){
super();
(la);
(subject);
quals("语文"))
s="Chinese";
elseif().equals("英语"))
s="English";
elseif().equals("数学"))
s="Maths";
else
(null,"找不到该科目","Message",
;
if("")){
}
else
try{
Connectioncon=();
Statementsql=,;
ResultSetrs=("select*fromstudentwhere"+s+"<60");
()+"不及格学生:
\r\n");
("学号姓名专业年级班别成绩\r\n");
while()){
("Num")+""+("Name")+""+("Major")
+""+("Grade")+""+("Class")+
""+(s)+"\r\n");
}
}catcherr){
(null,(),"ClassNotFoundException:
",
;
}catch(SQLExceptionex){
(null,(),"SQLException:
",;
}
}
elseif()=="取消"){
setVisible(false);
}
elseif()=="保存"){
TxtSavesave=newTxtSave(),()+"挂科");
}
}
}
importclassLookAllStudentsextendsIndexOrManageimplementsActionListener{
publicLookAllStudents(){
super();
quals("")){
(null,"找不到该年级","Message",
;
}
else
try{
Connectioncon=();
Statementsql=,;
quals("")){
(null,"找不到该班别","Message",
;
}
else
try{
Connectioncon=();
Statementsql=,;
quals("")){
(null,"找不到该专业","Message",
;
}
else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成绩管理系统 java mySQL
![提示](https://static.bdocx.com/images/bang_tan.gif)