设计数据库课程设计Java实现.docx
《设计数据库课程设计Java实现.docx》由会员分享,可在线阅读,更多相关《设计数据库课程设计Java实现.docx(21页珍藏版)》请在冰豆网上搜索。
![设计数据库课程设计Java实现.docx](https://file1.bdocx.com/fileroot1/2023-6/27/064c39df-b167-4e8a-8d7b-87d3b257ec62/064c39df-b167-4e8a-8d7b-87d3b257ec621.gif)
设计数据库课程设计Java实现
一、 课程设计目的
在数据库原理课程基础上,培养学生综合运用数据库知识的能力。
学会数据库的设计、规划以及应用程序的开发和调试,使学生掌握客户机/服务器体系结构,学会大型数据库的工作模式。
大型数据库管理系统存放于服务器,数据库放在服务器上,学生在客户机上开发应用程序访问服务器上的数据库,并完成应用系统所要求的各项功能,应用程序的开发需要采用当前流行的新软件。
二、课程设计内容
1.数据库的设计
根据学生信息管理系统,经过调查研究,构建合理的数据库。
首先构建基本表以及表和表之间的联系,在此基础上构建视图和索引表。
2.服务器的组织
根据建立的基本表、视图和索引表搭建服务器。
3.前端开发工具:
java学习并完成编写程序。
服务器端:
SQLServer2012
4.开发应用程序
利用所学的新软件开发工具进行应用程序的开发。
5.连接、调试。
三、软硬件环境及系统所采用的体系结构
系统的体系结构为C/S结构,具体开发工具为Ecplise,前台为Java,后台数据库一般为SQLServer2012。
四、需求分析
通过对学生信息管理的了解,确定本系统具备一下功能。
多用户账号登录
只要通过用户登录验证后,能对学生的记录信息进行修改,增加,删除等操作。
五、系统设计
1.系统结构图
a.功能模块图
查看学科成绩
查询
增加选课
修改
删除选课
2.数据库设计
学生包含的信息:
NM
Login表
USE[Student]
GO
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATETABLE[dbo].[Login](
[userName][nvarchar](20)NOTNULL,
[password][nvarchar](10)NULL,
CONSTRAINT[PK_Login]PRIMARYKEYCLUSTERED
(
[userName]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
StudentIfor表
USE[Student]
GO
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATETABLE[dbo].[StudentIfor](
[code][nvarchar](10)NOTNULL,
[name][nvarchar](10)NOTNULL,
[sex][nchar]
(2)NOTNULL,
[room][nvarchar](10)NOTNULL,
[address][nvarchar](50)NULL,
[tel][nvarchar](11)NULL,
CONSTRAINT[PK_StudentInfor]PRIMARYKEYCLUSTERED
(
[code]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
Crouse表
CREATETABLE[dbo].[Course](
[courseID][nchar](5)NOTNULL,
[courseName][nvarchar](40)NOTNULL,
CONSTRAINT[PK_Course]PRIMARYKEYCLUSTERED
(
[courseID]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
Student_Crouse表
CREATETABLE[dbo].[Student_Course](
[code][nvarchar](10)NOTNULL,
[courseID][nchar](5)NOTNULL,
[courseGrade][float]NULL,
CONSTRAINT[PK_Student_Course]PRIMARYKEYCLUSTERED
(
[code]ASC,
[courseID]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
六、系统的实施
系统的实现方法是用java结合SqlServer2012,用java编写前端的用户界面主要的界面代码如下:
publicclasswindowsimplementsActionListener{
privateJFrameframe;
privateJLabel[]label;
privateJTextField[]textField;
privateJListlist;
privateJScrollPanejscrollPane;
privateDefaultListModellistModel;
privateJRadioButtonmjRadioButton,fjRadioButton;
privateButtonGroupsetButtonGrop;
privateJButton[]button;
privateJButtonjbu;
privateContainercon;
privateResultSetresultSet;
privateString[]sinfor={"*学号:
","*姓名:
","*性别:
","*宿舍:
","住址:
","电话:
"};
privateString[]binfor={"增加","删除","修改","查找","上一条","下一条"};
publicwindows(){
frame=newJFrame("学生信息管理");
con=frame.getContentPane();
con.setLayout(null);
frame.setLocation(350,150);
frame.setSize(7770/15,6000/15);
frame.setResizable(false);
textField=newJTextField[6];
label=newJLabel[6];
button=newJButton[6];
for(inti=0;i<6;i++)
{
label[i]=newJLabel(sinfor[i]);
label[i].setLocation(5,3+(i*670/15));
label[i].setSize(570/15,670/15);
con.add(label[i]);
if(i!
=2)
{
textField[i]=newJTextField();
textField[i].setSize(200,470/15);
textField[i].setLocation(770/15,5+(i*670/15));
con.add(textField[i]);
}else
{
mjRadioButton=newJRadioButton("男",false);
mjRadioButton.setVisible(true);
mjRadioButton.setSize(570/15,670/15);
mjRadioButton.setLocation(970/15,5+(2*670/15));
mjRadioButton.addActionListener(this);
mjRadioButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
fjRadioButton=newJRadioButton("女",false);
fjRadioButton.setSize(570/15,670/15);
fjRadioButton.setLocation(2070/15,5+(2*670/15));
fjRadioButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
fjRadioButton.setVisible(true);
fjRadioButton.addActionListener(this);
setButtonGrop=newButtonGroup();
setButtonGrop.add(mjRadioButton);
setButtonGrop.add(fjRadioButton);
con.add(mjRadioButton);
con.add(fjRadioButton);
}
button[i]=newJButton(binfor[i]);
button[i].setSize(1570/15,370/15);
button[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
button[i].addActionListener(this);
if(i<=2)
button[i].setLocation(240/15+(i*2000/15),4300/15);
else
button[i].setLocation(240/15+((i-3)*2000/15),4300/15+450/15);
con.add(button[i]);
}
jbu=newJButton("查看成绩");
jbu.setSize(1570/15,800/15);
jbu.setLocation(3*2000/15,4300/15);
jbu.addActionListener(this);
con.add(jbu);
selectse=newselect();
resultSet=se.selectTable();
listModel=newDefaultListModel();
try{
while(resultSet.next())
{
listModel.addElement(resultSet.getString("code")+""+resultSet.getString("name"));
}
}catch(SQLExceptione){
e.printStackTrace();
}
se.isDisconnection();
list=newJList(listModel);
list.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
if(e.getClickCount()==2&&list.getSelectedIndex()!
=-1)
clickTwo(list.getSelectedValue());
}
});
jscrollPane=newJScrollPane(list);
jscrollPane.setSize(200,250);
jscrollPane.setLocation(270,7);
con.add(jscrollPane);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
应用程序的编制方法是用户点击给出的功能按钮实现对应的功能,按钮响应中调用相应的类及方法,重要代码如下:
privatevoidclickTwo(Objectvalue){
Stringstr=null;
ResultSetre;
selectse;
str=value.toString().substring(0,8);
str.trim();
se=newselect();
re=se.selectCode(str);
try{
textField[0].setText(re.getString("code"));
textField[1].setText(re.getString("name"));
if(re.getString("sex").equals("女")==true)
fjRadioButton.setSelected(true);
else
mjRadioButton.setSelected(true);
textField[3].setText(re.getString("room"));
textField[4].setText(re.getString("address"));
textField[5].setText(re.getString("tel"));
}catch(SQLExceptione){
e.printStackTrace();
}
se.isDisconnection();
}
publicvoidactionPerformed(ActionEvente){
Stringcode=null,name=null,sex="",room=null,address=null,tel=null;
if(e.getSource()==button[0])
{
code=textField[0].getText();
name=textField[1].getText();
Enumerationen=setButtonGrop.getElements();
while(en.hasMoreElements()){
AbstractButtonab=en.nextElement();
if(ab.isSelected())
sex=ab.getText();
}
room=textField[3].getText();
address=textField[4].getText();
tel=textField[5].getText();
code.trim();
name.trim();
room.trim();
address.trim();
tel.trim();
if(code.equals("")!
=true&&name.equals("")!
=true&&room.equals("")!
=true&&sex.equals("")!
=true)
{if(newaddInfor(code,name,sex,address,room,tel).addToDataBase()==true)
{
JOptionPane.showMessageDialog(frame,"增加成功");
selectse=newselect();
resultSet=se.selectTable();
listModel=newDefaultListModel();
try{
while(resultSet.next())
{listModel.addElement(resultSet.getString("code")+""+resultSet.getString("name"));
}
}catch(SQLExceptione1){
e1.printStackTrace();
}
list.setModel(listModel);
se.isDisconnection();
for(inti=0;i<6;i++)
if(i!
=2)
textField[i].setText("");
}
else
JOptionPane.showMessageDialog(frame,"增加失败,请核对信息");
}
else
JOptionPane.showMessageDialog(frame,"填入信息不全,请核对","警告",JOptionPane.WARNING_MESSAGE);
}
if(e.getSource()==mjRadioButton||e.getSource()==fjRadioButton)
{
sex=e.getActionCommand();
}
if(e.getSource()==button[1])
{
Stringdeli=null;
deli=JOptionPane.showInputDialog(frame,"请输入删除的学号:
");
if(deli!
=null)
{
deli.trim();
if(deli.equals("")!
=true)
{
if(newdeleteInfor(deli).studentDel()==true)
{
JOptionPane.showMessageDialog(frame,"删除成功");
selectse=newselect();
resultSet=se.selectTable();
listModel=newDefaultListModel();
try{
while(resultSet.next())
{
listModel.addElement(resultSet.getString("code")+""+resultSet.getString("name"));
}
}catch(SQLExceptione1){
e1.printStackTrace();
}
list.setModel(listModel);
se.isDisconnection();
}
else
JOptionPane.showMessageDialog(frame,"删除失败,请核对信息");
}
else
JOptionPane.showMessageDialog(frame,"学号不能为空","错误",JOptionPane.ERROR_MESSAGE);
}
}
if(e.getSource()==button[2])
{
code=textField[0].getText();
name=textField[1].getText();
Enumerationen=setButtonGrop.getElements();
while(en.hasMoreElements()){
AbstractButtonab=en.nextElement();
if(ab.isSelected())
sex=ab.getText();
}
room=textField[3].getText();
address=textField[4].getText();
tel=textField[5].getText();
code.trim();
name.trim();
room.trim();
address.trim();
tel.trim();
if(code.equals("")!
=true&&name.equals("")!
=true&&room.equals("")!
=true&&sex.equals("")!
=true)
if(newupdate(code,name,sex,room,address,tel).updateStudentIfor()==true)
{
JOptionPane.showMessageDialog(frame,"修改成功");
selectse=newselect();
res