zoukankan      html  css  js  c++  java
  • 第十四周课程总结&实验报告(简单记事本的实现)

    实验报告(简单记事本的实现)

    实验任务详情:

    完成简单记事本的练习。

    (1)实验代码:

    package 测试;
     
    import java.awt.EventQueue;
    import java.awt.FileDialog;
    
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import javax.swing.JMenuBar;
    import javax.swing.JOptionPane;
    import javax.swing.JTextArea;
    
    import javax.swing.JScrollPane;
    import javax.swing.JMenuItem;
    	 
    public class NotePad {
    	private JFrame frame;
    	private JTextArea text;
    		private File file;
    		public static void main(String[] args) {
    			EventQueue.invokeLater(new Runnable() {
    				public void run() {
    				try {
    					NotePad window = new NotePad();
    					window.frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    
    	public NotePad() {
    		initialize();
    		}
    
    	private void initialize() {
    		frame = new JFrame("记事本");
    		frame.setBounds(100, 100, 960, 720);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		JMenuBar menuBar = new JMenuBar();
    		frame.setJMenuBar(menuBar);
    		
    		JMenu mne = new JMenu("u6587u4EF6(F)");
    		menuBar.add(mne);
    			
    		JMenuItem new_new = new JMenuItem("u65B0u5EFA");
    		mne.add(new_new);
    		//监听和处理新建
    		new_new.addActionListener(new ActionListener() {
    			
    			public void actionPerformed(ActionEvent e) {
    					int ret = JOptionPane.showOptionDialog(null, "已经打开的文件尚未保存,需要保存吗?", "提示", 
    						JOptionPane.YES_NO_CANCEL_OPTION,
    						JOptionPane.WARNING_MESSAGE, null, null, null);
    				if(ret == JOptionPane.NO_OPTION){
    					
    					text.setText(null);
    				}
    				if(ret == JOptionPane.YES_OPTION){
    					
    					//new JFileChooser();
    					FileDialog fd = new FileDialog(frame, "保存", FileDialog.SAVE);
    					
    					if(file==null)
    					{
    						fd.setVisible(true);
    							String dirPath = fd.getDirectory();
    						String fileName = fd.getFile();
    						if(dirPath==null || fileName==null)
    							return ;
    						file = new File(dirPath,fileName);
    					}
    					try
    					{
    						BufferedWriter bufw  = new BufferedWriter(new FileWriter(file));
    						String text1 = text.getText();
    						bufw.write(text1);
    						bufw.close();
    					}
    					catch (IOException ex)
    					{
    						throw new RuntimeException();
    					}
    						text.setText(null);
    					
    				}
    			}
    			});
    		
    			
    		JMenuItem open = new JMenuItem("u6253u5F00");
    			mne.add(open);
    		//监听和处理打开
    			open.addActionListener(new ActionListener() {
    				
    			public void actionPerformed(ActionEvent e) {
    					FileDialog fd = new FileDialog(frame, "打开", FileDialog.LOAD);
    				fd.setVisible(true);
    				String dir = fd.getDirectory();
    				String f = fd.getFile();
    				File f_open = new File(dir, f);
    				try {
    					BufferedReader buf = new BufferedReader(new FileReader(f_open));
    					
    					String line = null;
    					while((line=buf.readLine())!=null) {
    						
    						text.append(line+"
    ");
    						}
    					buf.close();
    				} catch (IOException e1) {
    					e1.printStackTrace();
    				}
    				}
    			});
    		
    		JMenuItem save = new JMenuItem("u4FDDu5B58");
    		mne.add(save);
    		//监听和处理保存
    		save.addActionListener(new ActionListener() {
    				
    			public void actionPerformed(ActionEvent arg0) {
    				FileDialog fd = new FileDialog(frame, "保存", FileDialog.SAVE);
    				fd.setVisible(true);
    				String dir = fd.getDirectory();
    				String f = fd.getFile();
    				File file = new File(dir, f);
    					
    				try {
    						BufferedWriter buf = new BufferedWriter(new FileWriter(file));
    						
    						String s = text.getText();
    					buf.write(s);
    						buf.close();
    				} catch (IOException e) {
    						e.printStackTrace();
    				}
    				}
    			});
    			
    			JMenuItem exit = new JMenuItem("u9000u51FA");
    		mne.add(exit);
    			//监听和处理退出
    			exit.addActionListener(new ActionListener() {
    				
    				public void actionPerformed(ActionEvent arg0) {
    					String s = text.getText();
    					if(s==null) {
    						System.exit(0);
    					}
    					else {
    						int ret = JOptionPane.showOptionDialog(null, "是否将更改保存到 无标题?", "记事本", 
    							JOptionPane.YES_NO_CANCEL_OPTION,
    								JOptionPane.WARNING_MESSAGE, null, null, null);
    					if(ret == JOptionPane.NO_OPTION){
    							
    							System.exit(0);
    						}
    						if(ret == JOptionPane.YES_OPTION){
    						
    							FileDialog fd = new FileDialog(frame, "保存", FileDialog.SAVE);
    							fd.setVisible(true);
    							String dir = fd.getDirectory();
    							String f = fd.getFile();
    						File file = new File(dir, f);
    							
    						try {
    							BufferedWriter buf = new BufferedWriter(new FileWriter(file));
    								
    								String s1 = text.getText();
    								buf.write(s1);
    								buf.close();
    							} catch (IOException e) {
    								e.printStackTrace();
    							}
    						System.exit(0);
    						}
    				}
    				
    				}
    		});
    		
    		JScrollPane scrollPane = new JScrollPane();
    			frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
    			
    			text = new JTextArea();
    			scrollPane.setViewportView(text);
    	}
    		
    
    	}
    
    

    (2)实验运行结果截图:

    (3)实验中遇到的问题:

    做这个记事本,我发现自己对于这些代码的运用还不太熟练,出现了大量的错误,勉强完成了这个代码,但是还是会有些bug,比如说读取的时候有时候会出现乱码,不太清楚应该如何解决.实力不行,还需再练.

    第十四周课程总结

    这周主要学习了JDBC

    这周学习的内容:

    1.JDBC

    • JDBC(Java Database Connectivity,Java数据库连接),提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成。
    • 在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便的向数据库中发送各种SQL命令。在JDBC中提供的是一套标准的接口,这样,各个支持JAVA的数据库生产商只要按照此接口提供相应的实现,则就都可以使用JDBC进行操作。极大的体现了JAVA的可移植性的设计思想。

    2.JDBC驱动分类

    JDBC本身提供的是一套数据库操作标准,而这些标准又需要各个数据库厂商实现,所以针对于每一个数据库厂商都会提供一个JDBC的驱动程序,目前比较常见的JDBC驱动程序可分为以下四类:

    (1).JDBC-ODBC桥驱动

    JDBC-ODBC是SUN提供的一个标准的JDBC操作,直接利用微软的ODBC进行数据库的连接操作,但是,这种操作性能较低,所以通常情况下是不推荐使用这种方式进行操作的。

    (2).JDBC本地驱动

    直接使用各个数据库生产商提供的JDBC驱动程序,但是因为其只能应用在特定的数据库上,会丧失掉程序的可移植性,但是这样操作的性能较高。

    (3).JDBC网络驱动

    这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。

    (4).本地协议纯JDBC驱动

    这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。

    3.JDBC的主要操作类及接口

    4.JDBC操作步骤

    数据库安装并配置完成之后,就可以按照以下的步骤进行数据库的操作了:

    • 1.加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,直接把JDBC操作所需要的开发包(一般为.jar或.zip)直接配置到classpath路径即可。
    • 2.连接数据库:根据各个数据库的不同,连接的地址也不同,此连接地址将由数据库厂商提供,一般在使用JDBC连接数据库的时候都要求用户输入数据库连接的用户名和密码,本章使用的是mysql数据库,所以用户名为“root”,密码为“mysqladmin”,用户在取得连接之后才可以对数据库进行查询或更新的操作。
    • 3.使用语句进行数据库操作:数据库操作分为更新和查询两种操作,除了可以使用标准的SQL语句之外,对于各个数据库也可以使用其自己提供的各种命令。
    • 4.关闭数据库连接:数据库操作完毕之后需要关闭连接以释放资源。

    5.连接及关闭数据库

    数据库驱动程序可以正常加载的话,下面就可以连接数据库了,使用DriverManager类进行连接操作,DriverManager类中的常用方法如下

    DriverManager说明
    在DriverManager中,提供的主要操作就是得到一个数据库的连接,getConnection()方法就是取得连接对象,此方法返回的类型是Connection对象,不管使用那种方式连接,都必须提供一个数据库的连接地址,如果在连接数据库的时候需要用户名和密码,则还需要将用户名和密码设置上。
    MySQL数据库的连接地址格式

    jdbc:mysql://IP地址:端口号/数据库名称
    

    通过DriverManager取得Connection对象之后,实际上就表示数据库连接上了,连接上数据库之后就可以进行数据库的更新及查询操作,但是操作的最后数据库连接必须关闭。
    Connection接口的常用方法

  • 相关阅读:
    数据字典的设计
    2005年9月全国计算机等级考试二级C语言笔试试题
    2005年4月全国计算机等级考试二级C语言笔试试题
    2004年4月全国计算机等级考试二级C语言笔试试题
    2003年9月全国计算机等级考试二级C语言笔试试卷
    2006年4月全国计算机等级考试二级C语言笔试试题
    2004年9月全国计算机等级考试二级C语言笔试试题
    2006年9月全国计算机等级考试二级C笔试真题及参考答案
    2003年4月全国计算机等级考试二级C语言笔试试题
    2002年9月全国计算机等级考试二级C语言笔试试题
  • 原文地址:https://www.cnblogs.com/zhuwanxing/p/11959977.html
Copyright © 2011-2022 走看看