JAVA课程设计之管理系统和记事本.docx
《JAVA课程设计之管理系统和记事本.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计之管理系统和记事本.docx(96页珍藏版)》请在冰豆网上搜索。
JAVA课程设计之管理系统和记事本
选题:
学生管理系统记事本_
姓名:
班级:
学号:
指导老师:
_
设计时间:
2012.12.24到2012.1.4
一课程设计内容
1目的:
(1)掌握Java语言的程序设计方法;
(2)理论联系实际,进一步提高学生的软件开发技术;
(3)培养学生分析、解决问题的能力;
(4)提高学生实践论文撰写能力。
2任务及要求:
(1)熟悉JAVA开发环境,掌握JAVA程序的编译和运行;
(2)掌握JAVA基本编程技术和方法;
(3)掌握GUI图形界面编程技术;
(4)掌握数据库编程技术;
(5)掌握JAVA中文件管理
3课程设计题目:
(1)学生管理系统
(2)记事本
4设计必备知识
JDBC应用模型
JDBC应用系统开发中,通常有两种开发模型,一种是两层开发模型,一种是三层(或多层)开发模型。
1.两层开发模型
两层开发模型,分为前台和后台。
前台一端负责处理用户界面和交互,通过网络将SQL语句直接传送给数据库。
后台数据库负责处理请求,得到结果后把它们通过网络送回给用户。
用户所在的一端称为客户端(Client),数据库所在的一端称为服务器(Server)。
两层开发模型也称为客户机/服务器模式。
2.三层(或多层)开发模型
三层模型中,增加了服务的中间层,充当客户端和服务器端的接口。
客户端将命令发送到中间层,中间层再将SQL语句发送到数据库。
数据库处理语句并将结果返回给中间层,然后,中间层再将它们返回给客户端。
客户端可以是Java应用程序,也可以是浏览器。
当客户端是Java应用程序时,可以通过RMI(RemoteMethodInvocation)远程方法调用与中间层联系。
当客户端是浏览器时,可以通过HTTP协议将操作命令传送到中间层。
三层模型是开发的主流,通常可以提供更好的性能。
实体类的定义
在数据库程序中,通常需要定义实体类。
一般情况下,实体类的类名与表名一致,类的属性与表中字段一致,起封装信息的作用。
通过将多个数据的封装,可以在网络上进行更有效的传输。
同时,封装多个字段后,对表的操作更加方便。
例如,在迎新生管理系统中,建有表student,字段为学号(id)、姓名(name)、性别(sex)年龄(age)、班级(grade)地址(address)。
与表相对应的实体类为Student。
类的属性有:
privateStringid;
privateStringname;
privateintage;
privateStringsex;
privateStringgrade;
privateStringaddress;
与表的字段相同,封装了字段的信息。
定义实体类时,需要对属性定义setter()和getter()方法,这是封装的需要。
流的概念
包中定流是计算机各部件之间的数据流动,
Java将不同类型的输入、输出抽象为流(stream),用类似的方法来处理。
java.io义与输入、输出流相关的类和接口,构成了Java语言的I/O框架。
流的分类
按传输方向可分为输入流和输出流。
按内容可分为字节流和字符流。
输入流:
指从某个数据来源(如键盘,鼠标,文件等)输入的数据序列
输出流:
指将向某个数据目的地(如屏幕,文件,网络等)输出的数据序列
字符流:
是指数据序列的基本构成单位是16位的Unicode字符数据,如各类基于字符编码的文本文件
字节流:
是指数据序列的基本构成单位是8位的字节数据,如各类基于二进制数据的文件
字节流
(1)InputStream
字节输入流的所有类的父类,抽象类
从流中读取数据
intread();//读取一个字节的数据;到末尾时返回-1
intread(byteb[]);//将数据读取到字节数组,返回实际读取数目。
intread(byteb[],intoff,intlen);
intavailable();//返回目前可读取的字节数
longskip(longn);//跳过n个字节,返回实际跳过的字节数
关闭流
close();//操作完毕后必须关闭,释放相关所有系统资源
(2)OutputStream
输出字节流的所有类的父类,抽象类。
输出数据
voidwrite(intb); //往流中写一个字节b
voidwrite(byteb[]);//往流中写一个字节数组b
voidwrite(byteb[],intoff,intlen);//把字节数组b中从下
标off开始,长度为len的字节写入流中
flush()
刷新输出流,该方法将把缓冲区中所有数据发送到目的地。
关闭流
close();//刷新并关闭流,释放与此流有关的所有系统资源
字符流
(1)、Reader
用于读取字符流的所有类的父类,抽象类
从流中读取数据
intread();//读取一个字符,读到文件结尾返回-1
intread(charb[]);//读取字符数组
intread(charb[],intoff,intlen);//读取字符数组的一部分
longskip(longn);//跳过n个字符,返回实际跳过的字符数
关闭流
close();//流操作完毕后必须关闭
(2)、Writer
写入字符流的所有类的父类,抽象类。
输出数据
voidwrite(char[]b) //往流中写入字符数组
voidwrite(intc)//写入单个字符
voidwrite(Stringstr)//往流中写一个字符串
voidwrite(charb[],intoff,intlen)//把字符数组b中从下
标off开始,长度为len的字符写入流中
voidwrite(Stringstr,intoff,intlen)//写入字符串的一部分
flush()
刷新输出流,该方法将把缓冲区中所有数据发送到目的地。
关闭流
close();//刷新并关闭流,释放与此流有关的所有系统资源
二学生管理系统
1需求分析
(1)流程图
2建立数据库
1、打开SQLServer,新建数据库,命名为student。
2、在新建的数据库中创建一张名为uu的表,
3、打开表,返回所有行。
4、在表中输入数据
5、在新建的数据库中创建一张命名为stu的表,
3建立数据库和Java的连接
1、打开控制面板,选择管理工具打开。
2、打开数据源(ODBC),选择添加。
3、选择SQLServer,单击完成按钮。
4、将数据源的名称命名为kk,服务器改为(Local),单击下一步。
5、单击下一步
6、选择相应的数据库,单击下一步
7、单击完成,实现了数据库和Java的连接
8、点击测试数据源
9、点击完成,就实现了数据源的添加
DAO:
新建一个Java类,命名为DAO
代码:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDAO{
protectedstaticStringdbCLassName="sun.jdbc.odbc.JdbcOdbcDriver";
protectedstaticStringdbURL="jdbc:
odbc:
kk";
privatestaticConnectionconn;
privateDAO(){//无参构造方法实现数据库的连接
try{
if(conn==null)
{
Class.forName(dbCLassName);//加载驱动
conn=DriverManager.getConnection(dbURL);//添加连接对象
}}catch(Exceptione)
{
e.printStackTrace();
}
}
publicstaticResultSetexecuteQuery(Stringsql)//查询方法
{try
{
if(conn==null)
newDAO();
returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//创建执行对象
}catch(SQLExceptione)
{e.printStackTrace();
returnnull;//返回null}}
publicstaticintexecuteUpdate(Stringsql)//更新方法
{try
{if(conn==null)
newDAO();
Statementstat=conn.createStatement();//创建执行对象
returnstat.executeUpdate(sql);
}catch(SQLExceptione)
{e.printStackTrace();
return-1;//返回null}}
publicstaticvoidclose()//关闭方法
{try{
conn.close();
}catch(SQLExceptione)
{e.printStackTrace();}
finally{conn=null;}
}}
运行NetBeanSIDE7.0.1
新建一个名为JAVA课程设计的类并改名为登陆窗口
设计登录窗口如下图所示
新建一个名为JAVA课程设计的JFrame窗口并改名为操作窗口
最终设计的整个窗口如下图所示:
4主要功能代码
(1)增加功能
增加用户的窗口及代码为:
Stringname=jTextField15.getText().trim();
Stringpasswd=jTextField17.getText().trim();
Stringsex=jTextField16.getText().trim();
Stringage=jTextField18.getText().trim();
Stringgrade=jTextField19.getText().trim();
Stringaddress=jTextField20.getText().trim();
Stringsql="insertintoyyvalues('"+name+"','"+sex+"','"+passwd+"','"+age+"','"+grade+"','"+address+"')";
intk=DAO.executeUpdate(sql);
JOptionPane.showMessageDialog(null,"增加用户成功");
(2)修改功能
修改用户的窗口及代码为:
Stringname=jTextField21.getText().trim();
Stringpasswd=jTextField22.getText().trim();
Stringsex=jTextField23.getText().trim();
Stringage=jTextField24.getText().trim();
Stringgrade=jTextField25.getText().trim();
Stringaddress=jTextField26.getText().trim();
Stringsql="updateyysetpasswd='"+passwd+"',sex='"+sex+"',address='"+address+"',age='"+age+"',grade='"+grade+"'wherename='"+name+"'";
intk=DAO.executeUpdate(sql);
JOptionPane.showMessageDialog(null,"修改用户成功");
(3)删除功能
删除用户的窗口及代码为:
Stringname=jTextField27.getText().trim();
Stringsql="deletefromyywherename='"+name+"'";
intk=DAO.executeUpdate(sql);
JOptionPane.showMessageDialog(null,"删除用户成功");
(4)退出功能
退出系统的窗口及代码为:
System.exit(0);
(5)查询功能
查询信息的窗口及代码为:
Stringname=jTextField13.getText().trim();
Stringsql="select*fromyywherename='"+name+"'";
ResultSetk=DAO.executeQuery(sql);
try{
if(k.next()){
System.out.println(k.getString
(2)+",");
System.out.println(k.getString(3)+",");
System.out.println(k.getString(4)+",");
System.out.println(k.getString(5)+",");
System.out.println(k.getString(6)+",");
System.out.println(k.getString(7)+",");
}
//TODOaddyourhandlingcodehere:
}catch(SQLExceptionex){
Logger.getLogger(JAVA课程设计.class.getName()).log(Level.SEVERE,null,ex);
}
}
privatevoidjButton8ActionPerformed(java.awt.event.ActionEventevt){
jTextField14.setText(null);
}
三记事本
1需求分析(功能说明)
文件:
新建、打开、保存、另存为、退出
编辑:
全选、取消选择、复制、剪切、粘贴、查找、替换、删除
格式:
字体、颜色
合并:
将两篇不同的文档合成一篇文档
转换:
将当前打开文档中的字母全部转换成大写或者小写
比较:
比较两篇文档是否是一样的(忽略文档里面字母大小写)
运行NetBeanSIDE
2设计过程
新建一个项目
名字为:
jishiben
新建一个窗体
名字为book
增加桌面窗格
然后设置菜单
主界面
3功能或界面
以上是该记事本的全部功能
(1)打开界面
(2)保存界面
(3)查找替换界面
(4)字体设置界面和弹出式菜单
弹出式菜单
通过鼠标在文本区域右击弹出常用功能菜单
(5)合并和转换功能
文档1内容截图文档2内容截图
合并后截图
转换功能
输入abcdefghijk
点击“字母全部转换大写”后结果为:
在点击“字母全部小写”后结果为:
(6)比较和统计功能
文档1内容为123文档2功能为456
比较后结果为:
新建文档3:
内容为123
比较文档1与文档3结果为:
字数统计功能
当前文本区域内容为:
点击其他里面的文本字数
结果为:
(7)帮助(说明)功能4
4部分主要功能代码
打开
privatevoiddakaiActionPerformed(java.awt.event.ActionEventevt){
JFileChooserjfc=newJFileChooser();//打开;
jfc.showOpenDialog(jMenu1);
Stringfilename=jfc.getSelectedFile().getPath();
FileReaderinput=null;
try{
input=newFileReader(filename);
}catch(FileNotFoundExceptionex){
Logger.getLogger(book.class.getName()).log(Level.SEVERE,null,ex);
}
inti;
Strings="";
try{
while((i=input.read())!
=-1){
s=s+String.valueOf((char)i);
}
}catch(IOExceptionex){
Logger.getLogger(book.class.getName()).log(Level.SEVERE,null,ex);
}
wenben.setText(s);
}
新建
privatevoidxinjianActionPerformed(java.awt.event.ActionEventevt){
Stringcon=wenben.getText();
if(!
con.equals("")){//文本域里文本不为空
intresult=JOptionPane.showConfirmDialog(null,("是否要保存?
"),("保存文件..."),JOptionPane.YES_NO_CANCEL_OPTION);
if(result==JOptionPane.NO_OPTION){//不保存
wenben.setText("");
}
elseif(result==JOptionPane.CANCEL_OPTION){
}//取消新建}
elseif(result==JOptionPane.YES_OPTION)//选择保存
{JFileChooserjfc=newJFileChooser();
FileNameExtensionFilterfilter=newFileNameExtensionFilter("文本文件","txt");
jfc.setFileFilter(filter);
jfc.showSaveDialog(this);//显保存为文件对话框
Stringfilename=jfc.getSelectedFile().getPath();//获取所选文件名
FileWriteroutput;
try{
output=newFileWriter(filename);
output.write(this.wenben.getText());
output.flush();
output.close();
this.setTitle(filename);
}catch(IOExceptionex){
JOptionPane.showMessageDialog(null,"系统错误");
}
}}}
保存
privatevoidbaocunActionPerformed(java.awt.event.ActionEventevt){
JFileChooserjfc=newJFileChooser();//保存
FileNameExtensionFilterfilter=newFileNameExtensionFilter("文本文件","txt");
jfc.setFileFilter(filter);
jfc.showSaveDialog(this);//显示保存文件对话框
Stringfilename=jfc.getSelectedFile().getPath();//获取所选文件名
FileWriteroutput;
try{
output=newFileWriter(filename);
output.write(this.wenben.getText());
output.flush();
output.close();
this.setTitle(filename);
}catch(IOExceptionex){
//Logger.getLogger(jishiben.class.getName()).log(Level.SEVERE,null,ex);
}
}
另存为
privatevoidlingcunweiActionPerformed(java.awt.event.ActionEventevt){
JFileChooserjfc=newJFileChooser();
FileNameExtensionFilterfilter=newFileNameExtensionFilter("文本文件","txt");
jfc.setFileFilter(filter);
jfc.showSaveDialog(this);//显示保存文件对话框
Stringfilename=jfc.getSelectedFile().getPath();//获取所选文件名
FileWriteroutput;
try{output=newFileWriter(filename);
output.write(this.wenben.getText());
output.flush();
output.close();
this.setTitle(filename);
}catch(IOExceptionex){
JOptionPane.showMessageDialog(null,"系统错误");
}
}
退出
privatevoidtuichuActionPerformed(java.awt.event.ActionEventevt){
Object[]options={