基于JAVA和MySql数据库的CS架构学生成绩管理系统的设计与实现.docx
《基于JAVA和MySql数据库的CS架构学生成绩管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于JAVA和MySql数据库的CS架构学生成绩管理系统的设计与实现.docx(36页珍藏版)》请在冰豆网上搜索。
基于JAVA和MySql数据库的CS架构学生成绩管理系统的设计与实现
上海理工大学计算机学院
可视化程序设计报告
(2010——2011年度第2学期)
题目学生成绩管理系统
院系
专业电子商务
年级2009级
学号
姓名
指导教师
成绩_______________________
2011年03月09日
一、课程设计的目的与要求……………………………………………2
二、设计的正文………………………………………………………2
1.系统分析………………………………………………………………2
1.1系统开发背景等…………………………………………………2
1.2业务流程分析……………………………………………………2
1.3数据流程图………………………………………………………3
2.系统设计………………………………………………………………3
2.1功能设计…………………………………………………………3
2.2系统运行环境与数据库设计……………………………………4
2.3输入/输出设计……………………………………………………4
3.系统实施………………………………………………………………4
3.1登录与退出界面…………………………………………………4
3.2修改密码…………………………………………………………10
3.3成绩查询…………………………………………………………15
3.4相关数据库表……………………………………………………24
三、课程设计总结………………………………………………………25
四、参考文献……………………………………………………………26
《学生成绩查询系统》
一、课程设计的目的与要求
通过面向对象程序设计课程设计,进一步掌握面向对象程序设计的理论和方法。
培养和锻炼开发小型学生成绩查询系统的能力。
为今后相关系统开发打下良好的基础。
要求了学生成绩查询系统开发的全过程,理解面向对象程序设计课程相关的概念,掌握面向对象程序设计的开发方法,巩固对Java相关方法和概论的理解。
主要包括:
系统调研方法;业务分析、数据分析、系统逻辑模型设计方法;数据库设计、功能设计、物理模型设计方法;系统的实现等方法。
完成一个小型系统的设计与开发。
二、设计正文
1系统分析
1.1系统开发背景、开发范围、建设目标与必要性
随着国家对于教育的重视逐渐加大,学校正向着大型化、规模化发展,而对于大中型学校,跟学生信息管理有关的信息随之急剧增加。
在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。
该系统就是设计一个学生信息数据库管理系统,由计算机代替人工执行一系列诸如增加新学生,删除旧学生,学生信息修改,查询,维护及打印等操作。
这样就使学生部门管理人员可以轻松快捷地完成学生信息管理的任务。
1>本课题的研究意义
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
2>本课题的研究现状
管理查询信息系统是进行信息的采集、存储、查询、加工、维护和使用的系统。
它是随着管理科学和技术科学的发展而形成的。
学生成绩管理查询系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者和学生来说都至关重要,所以学生成绩管理查询系统应该能够为用户提供充足的信息和快捷的查询手段,但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
1.2业务流程分析
主要业务流程图,如下图所示
1.3数据流程图
2系统设计
2.1功能设计
学生信息管理系统主要提供方便高效的查询功能,学生可以通过该系统查询相关信息。
对于本系统,我们需要实现以下一些基本功能:
1)密码管理功能
该模块实现对用户密码进行管理的功能,主要是进行密码的修改。
为了防止个人的名片信息被泄露,不知道用户密码的人员不能进入本系统。
出于安全的考虑,用户可以定期修改自己的密码,以防止密码被盗用。
2)成绩管理功能
该模块实现成绩查询功能。
用户在查询学生成绩时,有时需要了解学生的基本信息,因此希望在查询出的内容中包括学生基本情况和成绩信息。
有时用户需要查询学生的某些课程成绩,因此应该具有查询课程成绩的功能。
有时需要查询学生的学期总成绩,因此也应该具有该功能。
3)退出系统
完成了对学生成绩的查询的操作后,应该可以安全地离开该系统。
通过该模块实现安全退出大学生成绩查询系统。
2.2系统运行环境与数据库设计
鉴于本系统的业务性质,必须选择具有较高的可靠性、稳定性和必要的容错能力的计算机硬件和软件系统,以保证任何情况下都不至于丢失、损坏数据;必须具有较高的响应速度,以保证各项具体业务的顺利进行;应考虑具有良好的可维护性,可操作性和可扩充性,以保证将来系统规模的扩展和升级的需要。
开发与运行环境的使用
开发前台工具:
JAVA
开发后台工具:
MySQL
本系统采用MicrosoftWindows2000Server作为操作系统。
本系统准备采用客户机/服务器(C/S)结构模式。
2.3输入/输出设计
格式说明:
学生成绩输入界面格式为对话框格式,可是选项为:
学生学号、姓名、班级、各科目成绩。
输出单个学生成绩也是对话框形式,全部学生成绩输出为表格形式。
安全性设计:
设置了用户名和密码验证方式,防止用户非法登录。
3系统实施
3.1登录与退出界面
登录界面:
退出界面
关键代码如下,
publicclassLoginextendsJFrameimplementsActionListener,FocusListener,
KeyListener,ItemListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
JLabeltop,bott;
JPanelpanelMain,panelInfo;
JTextFielduserName;
JPasswordFieldpassword;
JButtonlogin,cancel;
StringculeString="提示:
";
publicLogin(){
super("重庆大学城市科技学院2008级电子商务--学生成绩管理系统");
top=newJLabel(newImageIcon("picture/login_top.gif"));
bott=newJLabel();
panelMain=newJPanel(newBorderLayout(10,10));
bott.setBorder(newLineBorder(newColor(184,173,151)));
buildCenter();
panelMain.add("North",top);
panelMain.add("South",bott);
panelMain.add(panelInfo);
//加监听事件
login.addActionListener(this);
cancel.addActionListener(this);
login.addFocusListener(this);
cancel.addFocusListener(this);
login.addKeyListener(this);
cancel.addKeyListener(this);
userName.addFocusListener(this);
userName.addKeyListener(this);
password.addFocusListener(this);
password.addKeyListener(this);
//加窗口监听,newWindowAdapter适配器
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEventwe){
quit();
}//EndwindowClosing
});
this.setContentPane(panelMain);//设置窗口面板
this.setLocation(400,335);
this.setSize(350,250);
this.setResizable(false);//设置窗口大小不可变
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
///***************///
this.setVisible(true);
password.requestFocus(true);//设置焦点给密码框
}
privatevoidbuildCenter(){
//TODOAuto-generatedmethodstub
JLabellb1,lb2;
lb1=newJLabel("用户名:
");
lb2=newJLabel("密码:
");
userName=newJTextField(15);
password=newJPasswordField(15);
login=newTJButton("picture/key.gif","登录","登录系统");
cancel=newTJButton("picture/exit.gif","退出","关闭系统");
//**************************//
//定义面板为无布局
panelInfo=newJPanel(null);
//加入组建
panelInfo.add(lb1);
panelInfo.add(lb2);
panelInfo.add(userName);
panelInfo.add(password);
panelInfo.add(login);
panelInfo.add(cancel);
lb1.setBounds(70,14,60,25);
lb2.setBounds(70,48,60,25);
userName.setBounds(150,14,150,25);
password.setBounds(150,48,150,25);
login.setBounds(80,100,80,23);
cancel.setBounds(195,100,80,23);
//设置边框线
panelInfo.setBorder(BorderFactory.createTitledBorder(""));
}
privatevoidquit(){
intflag=0;
Stringmsg="您现在要关闭系统吗?
";
flag=JOptionPane.showConfirmDialog(null,msg,"提示",
JOptionPane.YES_NO_OPTION);
if(flag==JOptionPane.YES_OPTION){
this.setVisible(false);
System.exit(0);
}
return;
}
privatevoiddengLu(){
Stringusername=userName.getText().trim();
//System.out.println(user);
Stringpwd=String.valueOf(password.getPassword());
Stringsql="selectpasswordfromuserinfowhereusername='"
+username+"'";
ResultSetrs=ConnectionDB.verification(sql);//从数据库获取匹配user的密码结果集
intflag=0;//用户登录错误次数的标记
try{
while(rs.next()){//用户名存在
if(pwd.equals(rs.getString
(1))){
bott.setText(culeString+"登录成功,正在进入系统......");
SaveUserInfouser=newSaveUserInfo();//保存用户名
user.setUsername(username);
user.setPassword(pwd);
newRegisterUI();
this.setVisible(false);
}else{
bott.setText(culeString+"用户名/密码不正确,请重新输入......");
intm=JOptionPane.showConfirmDialog(null,
"用户名/密码错误,请重新输入!
","错误信息",JOptionPane.YES_OPTION);
if(m==JOptionPane.NO_OPTION){
System.exit
(1);
}else{
flag++;
if(flag==3){
JOptionPane.showMessageDialog(null,
"您不是本系统的用户,系统关闭...","警告",
JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
//在Login.java这个页面里面点击鼠标右键,runas->JavaApplication就OK了明白了
//还有一种方法,上面哟uge绿的圆形图标,那个下拉菜单有需要运行的类名称,需要运行哪个就点一下哦
//程序要改一下==
return;
}
}
}catch(HeadlessExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicvoidactionPerformed(ActionEventae){
//动作按键
if(ae.getSource()==login){
dengLu();//登录
}else{
quit();//退出
}
}
publicvoiditemStateChanged(ItemEventie){
password.requestFocus(true);
}
publicvoidkeyListener(KeyEventke){
//键盘按下监听
intkey=ke.getKeyCode();
if(key==ke.VK_ENTER){
if(ke.getSource()==userName){
password.requestFocus(true);//按下Enter键后,焦点从用户名框转到密码框
}elseif(password.getPassword().length>0){
dengLu();//按Enter键登录系统
}
}elseif(key==ke.VK_ESCAPE){
quit();//按ESC键退出系统
}
}
publicvoidkeyReleased(KeyEventke){
//键盘释放监听
}
publicvoidkeyTyped(KeyEventke){
//按键类型监听
}
publicvoidfocusGained(FocusEventfe){
if(fe.getSource()==userName){//窗口下面的功能提示
bott.setText(culeString+"请输入用户名...");
}elseif(fe.getSource()==password){
bott.setText(culeString+"请输入登录密码...");
}elseif(fe.getSource()==login){
bott.setText(culeString+"登录系统...");
}elseif(fe.getSource()==cancel){
bott.setText(culeString+"退出系统...");
}
}
publicvoidfocusLost(FocusEventfe){
//失去焦点监听
}
*/
publicstaticvoidmain(String[]args){
newFStartWindow("picture/Login.gif",newJFrame(),1200);
newLogin();
}
publicvoidkeyPressed(KeyEvente){
//TODOAuto-generatedmethodstub
}
}
3.2修改密码
修改密码:
学生输入正确的用户名和密码后可以对自己的密码进行修改。
管理员也可以登录系统后,进入用户管理模块,点击修改用户密码,输入原始密码,新密码和确认密码,如果原始密码输入错误系统将提示密码错误,新密码和确认密码必须是一样的这样才能修改成功。
privatestaticfinallongserialVersionUID=1L;
Stringusername=SaveUserInfo.getUsername();
Stringpassword=SaveUserInfo.getPassword();
JButtonbt1,bt2;
JTextFieldtf1,tf2,tf3,tf;
JPanelpanelMain;
publicRePassword(JFrameframe){
super(frame,"修改密码",true);
panelMain=newJPanel(newBorderLayout());
BuildPanel();
Addlistener();
this.setContentPane(panelMain);
this.setSize(350,200);
this.setMaximumSize(newDimension(500,500));
this.setResizable(false);
this.setLocation(450,350);
this.setVisible(true);
}
privatevoidAddlistener(){
//TODOAuto-generatedmethodstub
bt1.addActionListener(this);
bt2.addActionListener(this);
bt1.addMouseListener(this);
bt2.addMouseListener(this);
tf1.addActionListener(this);
tf2.addActionListener(this);
}
privatevoidBuildPanel(){
//TODOAuto-generatedmethodstub
JLabelpass1,pass2,pass3;
pass1=newJLabel("原密码:
");
pass2=newJLabel("新密码:
");
pass3=newJLabel("重复新密码:
");
//文本框
tf1=newJTextField(15);
tf2=newJTextField(15);
tf3=newJTextField(15);
tf=newJTextField("密码信息");
tf.setHorizontalAlignment(JTextField.CENTER);
tf.setBackground(newColor(199,183,143));
tf.setBorder(newLineBorder(newColor(87,87,47)));
tf.setEditable(false);
//按钮
bt1=newTJButton("picture/modi3.gif","确定","修改密码");
bt2=newTJButton("picture/cancel.gif","取消","取消操作");
JPanelps,pc,pcc,pcc1,pcc11,pcc12;
//
//JLabelline0=newJLabel(newImageIcon("pic/line5.gif"));//分隔线
//JLabelline1=newJLabel(newImageIcon("pic/line4.gif"));//分隔线
ps=newJPanel(newFlowLayout(FlowLayout.CENTER,50,10));//放置确定和取消按钮