第一篇:java课程设计毕业论文
许多计算机专业的同学每学期都要做个毕业设计,下面是小编整理的java课程设计毕业论文,希望对你有所帮助!
在浏览器中输入图片网址,里面有很多的Java项目,有SSH的,还有适合初学java的新手教程
也有安卓的教程和一些案例,也有Html5的教程
下载方法:
找到要下载的项目,点击图片中红线标出的区域,这是真正的下载地址
点击按钮后会到如图所示的页面,输入验证码后即可下载
第二篇:JAVA课程设计
JAVA程序设计课程设计报告
目 录
一、项目背景及意义:...............................................2
二、系统描述...............................................................2
三、分析与设计...........................................................3 1.分析.......................................................................3 2.功能模块划分.......................................................3 3.功能模块流程图...................................................5 4.各模块的关键代码...............................................5
四、系统测试...............................................................5
五、课程设计进度.....................................................13
六、心得体会.............................................................13
七、参考文献.............................................................14
八、附录.....................................................................14
一、项目背景及意义:
记事本千百年来都在人类的工作生活中起到重要的作用,计算机革命电子产品未出现之前,人们的记事都是基于纸质加笔两者的简单记事,也即单纯的文本记录。直到计算机的出现和更新换代,高科技电子产品大行其道,人们日益将在纸质上的记事转移到将事件记录在个人电子设备如PC上,现在基于电子移动设备如手机和平板等的记事本app开发更是迅猛,功能更加丰富多彩,能记录的不单纯是文本了,人们能将声音和图片甚至视频结合起来,将一件事“有声有色”地记录下来,保存在个人电子设备产品中。近年来产生的采用云存储技术的“云笔记”,更是能让人们随时随地将集文本、语音、图像和视频于一体的事件记录保存在所谓的“云端”,能同步到个人其他设备中,解决了个人资料和信息跨平台跨地点的管理问题。
现在我们以有限的资源以及智慧力量,用Java语言编写一个可以在装有jar模拟器的个人电子移动设备上使用的简单记事本软件,没视频记录功能和基于网络功能但却能集文本、声音和图像于一起记录的功能的记事本,我们将轻便和简洁走向极致!所以此记事本软件操作起来简单易上手,能给带来同学简单便捷的记事体验。另外,这不单纯是个人人都可以打开的记事本,使用时需要账号密码登陆,因此能较好地保障个人隐私。
二、系统描述
Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的eclipse开发工具。
三、分析与设计
1.分析
现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoft Notepad,Notepad++,win32pad,SkimEdit,UniRed,xint。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的笔记本程序。2.功能模块划分
程序构建的记事本程序具有Windows系统记事本工具基本功能,并且能够创 建多个不同的用户和保存图片功能。以下是具体说明: 第一部 登陆界面
(1)用户名和密码输入文本框,供已注册的用户输入用户名和密码。(2)登陆控件,在用户名和密码正确的前提下,进入软件主界面。
(3)注册控件,点击此按钮,将进入用户创建,创建之后用户名和密码会自动保存在电脑的相应文件中。第一部分 菜单栏
(1)菜单中有“新健”,“删除”,“显示”,“菜单”,“帮助”五个主菜单。(2)“新建”有“新建笔记”“新建笔记本”二个子菜单:分别用于创建新的笔记和新的笔记本。
(3)“删除”中有“删除笔记”和“删除笔记本”二个子菜单,和“新建”相对应。
(4)“显示”中可以选择界面的风格,有Metal风格、Windows风格、Motif风格、Nimbus风格;还有界面排版的选择,可以选择水平显示或垂直显示。(5)“帮助”菜单中有关于笔记本程序的说明,作者等信息。第二部分 笔记本排列区
显示用户创建的所有笔记本。第三部分 笔记显示排列区
此处主要显示选中笔记本中的所有笔记,并且可以在此区右击来创建、删除笔记、查看笔记,当然也可以在菜单栏中的“新建”和“删除”菜单中创建和删除笔记。
第四部分 笔记编辑区
此部分为用户设计选择操作和右键操作,可以在笔记中插入图片、更改字体颜色、和插入时间;方便用户进行一系列的编辑操作,增强本记笔记本的用户体验性能。
3.功能模块流程图
4.各模块的关键代码
1构造函数创建窗口界面 主菜单,子菜单
public MainFrame(String name){
this.name=name;
this.setUser_path(“Users/”+name);
this.setBook_Path(this.getUser_path()+“/默认笔记本”);
this.setNote_Path(this.getBook_Path()+“/默认笔记”);//
一、菜单界面
menu=new Menu(this);
/**
二、创建三个JPanel *1.l笔记正文 TextPanel
*2.笔记名目录及查找方式 DirectoryPanel *3.笔记类型目录及排序方式选择 NoteTypePane */
/*笔记正文部分*******/ TextPanel=new JPanel();rightPanel=new RightPanel(TextPanel,this);
} /*文件名目录部分******/
DirectoryPanel=new JPanel();midPanel =new MidPanel(DirectoryPanel,this);/*笔记类型目录部分*****/
NoteTypePanel =new JPanel();leftPanel=new LeftPanle(NoteTypePanel,this);leftPanel.update_Left_view();
//
三、处理拆分窗格
splitM_R =new JSplitPane(1,DirectoryPanel,TextPanel);splitM_R.setOneTouchExpandable(true);splitL_M =new JSplitPane(1,NoteTypePanel,splitM_R);splitL_M.setOneTouchExpandable(true);this.add(splitL_M);
//
四、设置标题等
this.setTitle(name+“ 的笔记本”);this.setLocation(200,100);this.setSize(1000,600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);2 添加右键菜单并为其添加监听器
public RightPanel(JPanel panel,MainFrame mainFrame)
{ this.mainFrame=mainFrame;this.panel=panel;
//创建一个 文本域存放文字 JTextArea textPane =new JTextPane();//设置自动换行
textPane.setFont(new Font(“", 1, 12));jsp_Pane=new JScrollPane(textPane);//滚轮
//设置鼠标右击弹框效果
//cut
cutItem=new JMenuItem(”Cut“,new ImageIcon(”image/cut.png“));
cutItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//设置快捷键 ”ctrl x“
cutItem.addActionListener(this);
//copy
copyItem=new JMenuItem(”Copy“,new ImageIcon(”image/copy.png“));
copyItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//设置快捷键 ”ctrl O“
copyItem.addActionListener(this);
//paste
pasteItem=new JMenuItem(”Paste“,new ImageIcon(”image/haha.png“));
pasteItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl v“));//设置快捷键 ”ctrl v“
pasteItem.addActionListener(this);
saveItem=new JMenuItem(”Save“,new ImageIcon(”image/save.png“));
saveItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl s“));
saveItem.addActionListener(this);
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
if(e.getActionCommand()==”Cut“){//剪切
textPane.cut();}else if(e.getActionCommand()==”Copy“){//复制
textPane.copy();}else if(e.getActionCommand()==”Paste“){//粘贴
textPane.paste();}else if(e.getActionCommand()==”Save“){//保存
this.book_Save();}else if(e.getSource()==image_Button){//插入图片
String temp=Tools.open_Choose();if(!temp.equals(”not“)){
textPane.insertIcon(new ImageIcon(temp));}
}else if(e.getSource()==font_Button){//修改字体颜色
Color c=JColorChooser.showDialog(this, ”Color“, Color.black);textPane.setForeground(c);}else if(e.getSource()==timeButton){//插入时间
Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat(”yyyy/MM/dd HH:mm:ss“);//可以方便地修改日期格式
String hehe = dateFormat.format(now);
textPane.replaceSelection(hehe);
} 设为Document类型
public static void setDocument(File file){
try {
} JTextPane tempPane=new JTextPane();FileOutputStream outputStream=new FileOutputStream(file);ObjectOutputStream oos=new ObjectOutputStream(outputStream);oos.writeObject(tempPane.getDocument());
oos.close();} catch(FileNotFoundException e){ // TODO Auto-generated catch block
e.printStackTrace();} catch(IOException e){ // TODO Auto-generated catch block
e.printStackTrace();} 系统测试
1、笔记本登陆、用户注册
3、菜单栏 a.总菜单
b.新建菜单
c.删除菜单
d.显示菜单
e.“菜单”菜单
f.帮助 4.导入笔记、导出笔记、及插入图片选择
5.字体颜色选择
6.插入时间
7、插入图片
四、课程设计进度
我们进行了若干阶段的部署,令课题研究可以在每个阶段有条不紊地进行。具体如下:
(一)理论学习和开题论证
1.浏览相关网站,查阅与课题研究的相关理论、研究方法; 2.运用文献研究法,深入学习java理论,对要有关课题研究的知识进行理论上的研究和探讨。3,制订研究计划和方案。
(二)第一阶段
1.以调查法为主开展研究。(1)对有关java的课题设计进行调查,查阅网络上java应用的设计案例,并分析和总结,寻找思路。(2)对更新频率快的java应用进行追踪,采取观察,评价、讨论的方式分析和总结。
2.制订第二阶段实验方案,为下阶段实验做准备。
(三)第二阶段
1.按计划在继续第一阶段实验的基础上,进一步加强java应用的实施和研究。采用实验法对上一阶段的总结的结论进行验证和拓展。
2.让同学体验一下我们初步完成的作品,根据他们用完之后的感受,进一步修正作品存在的问题,完善作品。
(四),总结阶段
1.收集和整理研究资料,参照相关书籍分析和研究实验情况 2.制订总结阶段计划 3.总结和提炼研究成果 4.全面总结实验工作 5.解题论证
6.成果展示(课题报告)(五)总结阶段(2013.12)整理材料,撰写课题报告。
五、心得体会
此次课程设计由我们小组一起共同合作完成,花费了差不多两个月的时间。在这期间我们共同协作,互帮互助取得了很好的效率,也为我们构建友好的同学关系,学习气氛良好做出了一定的贡献。在这期间我领略到了团队协作的重要性,13 也看到了团队合作的高效率性。还有通过这次试验我们领悟到了团队的力量是巨大的,也学习到的一些学习方法,比如追查API,如何在短时间内学习一个自己不懂的东西那就是利用好所有的搜索引擎,多去图书馆找资料。总之此次课程设计我们不仅长了学科知识,在生活上我也长了见识。
六、参考文献
a.黄晓东 等编著 Java课程设计案例精编(第二版)[M].北京:中国水利水电出版社,2007 b.李兴华 等编著 Java开发实战经典Java开发实战经典 北京:清华大学出版社,2009 C.李尊朝 苏军 Java程序设计(第二版)图形用户界面设计、Swing组件 中国铁道出版社,2007
七、附录
1.程序结构 2.程序
(1)Tools.java package common;
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;
import javax.swing.*;
public class Tools {
/**打开选择框 返回详细地址*/ public static String open_Choose(){
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle(”请选择...“);
int judge=jfc1.showOpenDialog(null);
jfc1.setVisible(true);
//得到文件的完全路径
if(judge==JFileChooser.APPROVE_OPTION)
return(jfc1.getSelectedFile().getAbsolutePath());
else
return ”not“;} /**保存选择框 返回详细地址*/ public static String save_Choose(){
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle(”请选择...“);
int judge=jfc1.showSaveDialog(null);
jfc1.setVisible(true);
//得到文件的完全路径
if(judge==JFileChooser.APPROVE_OPTION)
return(jfc1.getSelectedFile().getAbsolutePath());
else
return ”not“;
}
/**显示对话框,需要传递 标题和显示内容*/ public static void showMessage(String text,String title){
JOptionPane.showMessageDialog(null,text,title,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION);} /**新建笔记时将笔记设为Document类型,方便存储图片,在本地不能打开*/ public static void setDocument(File file){
try {
JTextPane tempPane=new JTextPane();
FileOutputStream outputStream=new FileOutputStream(file);
ObjectOutputStream oos=new ObjectOutputStream(outputStream);
oos.writeObject(tempPane.getDocument());
oos.close();
} catch(FileNotFoundException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
} } /**删除文件 传一个文件地址 返回一个boolean 为了方便删除文件夹才将此方法提取出来*/ public static boolean deleteFile(String path){
File file=new File(path);
return(file.delete());}
/**删除文件 传一个文件地址
返回一个boolean 先删除里面的文件再删除文件夹*/ public static boolean deleteFolder(String path){
File folder=new File(path);
File[] list=folder.listFiles();
for(int i=0;i deleteFile(path+”/“+list[i].getName()); return(folder.delete());} } (2)User.java package common;/** * 处理用户属性 * 为用户创建自己的专有途径 * 如果有了则不创建 */ import java.io.*; import javax.swing.JTextPane;import javax.swing.text.Document; import view.MainFrame; public class User { public User(String name) { //如果第一次登录的话,为用户新建一个专属区 File file=new File(”Users/“+name); if(!file.exists()) { try { file.mkdir(); } catch(Exception e1){ e1.printStackTrace(); } //第一次登录创建默认笔记本 File book=new File(”Users/“+name+”/默认笔记本“); try { book.mkdir(); } catch(Exception e1){ e1.printStackTrace(); } //第一次登录创建默认笔记 File note=new File(”Users/“+name+”/默认笔记本“+”/默认笔记.ser“); try { note.createNewFile(); Tools.setDocument(note); } catch(Exception e1){ e1.printStackTrace(); } } //构造完毕 正式进入笔记本 new MainFrame(name); } } (3)login_zhuce.java package login; import java.awt.*;import java.awt.event.*;import java.io.*; import javax.swing.*; import common.User;import view.MainFrame; public class login_zhuce extends JFrame implements ActionListener { JPanel jp0;JPanel jp1,jp2,jp3,jp4,jp5;JTextField jtf;JPasswordField jpf;JLabel jl1,jl2,jl3;JButton jb1,jb2,jb3;ImageIcon bg; public static void main(String[] args){ // TODO Auto-generated method stub login_zhuce lz = new login_zhuce();} public login_zhuce(){ try {//默认 NImbus风格 UIManager.setLookAndFeel(”com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel“); } catch(ClassNotFoundException e){ // TODO Auto-generated catch block e.printStackTrace();} catch(InstantiationException e){ // TODO Auto-generated catch block e.printStackTrace();} catch(IllegalAccessException e){ // TODO Auto-generated catch block e.printStackTrace();} catch(UnsupportedLookAndFeelException e){ // TODO Auto-generated catch block e.printStackTrace();} jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();jp4 = new JPanel();jp1.setOpaque(false);jp2.setOpaque(false);jp3.setOpaque(false);jp4.setOpaque(false); //no.1 jl1 = new JLabel(”用户名“);jtf = new JTextField(10);jp1.add(jl1);jp1.add(jtf); //no.2 jl2 = new JLabel(”密 码“);jpf = new JPasswordField(10);jp2.add(jl2);jp2.add(jpf);//3 jb1 = new JButton(”登陆“);jb1.addActionListener(this);jb1.setActionCommand(”denglu“);jb2 = new JButton(”取消“);jb2.addActionListener(this);jb2.setActionCommand(”quxiao“);jb3 = new JButton(”注册“);jb3.addActionListener(this);jb3.setActionCommand(”zhuce“); jp3.add(jb1); jp3.add(jb2); jp3.add(jb3); this.setLayout(new GridLayout(4,1)); this.add(jp4); this.add(jp1); this.add(jp2); this.add(jp3); bg = new ImageIcon(”image//huashi.jpg“); jl3 = new JLabel(bg); jl3.setBounds(0, 0, 300, 200); this.getLayeredPane().add(jl3,new Integer(Integer.MIN_VALUE)); jp5 =(JPanel)this.getContentPane(); jp5.setOpaque(false);//设置透明 this.setTitle(”笔记本登陆“); this.setSize(300,200); // 获取屏幕分辨率,以此设置程序出现在屏幕中央 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension testSize = getSize(); this.setLocation((screenSize.widthtestSize.width)/ 2,(screenSize.height-testSize.height)/ 2);this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals(”queding“)){ String st1 = ”ff“; String st2 = ”.txt“; String st3 = this.jtf1.getText(); String st4 = st1 + st3 +st2; System.out.println(st4); File f = new File(st4); if(!f.exists()){ String password1=new String(jtf2.getPassword()); String password2=new String(jtf3.getPassword()); System.out.println(password1); System.out.println(password2); if(!(password1.equals(password2))){ JOptionPane.showMessageDialog(null, ”两次密码输入不一样,请重新输入“, ”错误提示“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); this.jtf2.setText(null); this.jtf3.setText(null); } else { try { f.createNewFile(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } FileWriter fw = null; BufferedWriter bw = null; try { fw = new FileWriter(st4,true); bw = new BufferedWriter(fw); bw.write(st3+”rn“); bw.close(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } finally{ try { fw.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } try { fw = new FileWriter(st4,true); bw = new BufferedWriter(fw); bw.write(this.jtf2.getPassword()); bw.close(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } finally{ try { fw.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } JOptionPane.showMessageDialog(null, ”创建账户成功“, ”恭喜你“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); this.dispose(); login_zhuce lz = new login_zhuce(); } } else { JOptionPane.showMessageDialog(null,”该用户名已被占用,请重新输入用户名“,”错误提示“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); System.out.println(”该用户名已被占用,请重新输入用户名“); this.jtf1.setText(null); } // if(this.jpf1.getText()!=this.jpf2.getText()){ // JOptionPane.showMessageDialog(null, ”两次密码输入不一样,请重新输入“, ”错误提示“, // JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION);// this.jpf1.setText(null);// this.jpf2.setText(null);// } } else if(e.getActionCommand().equals(”quxiao“)){ this.dispose(); System.exit(0); } } } (5)LefgPanle.java package view;/** * 将卡片布局修改 修改成仅有两片 * 第一片 所有笔记 按钮 * 第二片 所有笔记 目录 */ import java.awt.*;import java.awt.event.*;import java.io.*; import javax.swing.*; public class LeftPanle extends JPanel implements ActionListener,MouseListener{ /**************笔记本类型部分声明*****************/ CardLayout cardLayout;//卡片布局的方式 JPanel firstPanel,secondPanel;//分别存储两片 //第一片声明 JPanel allBookPanel,firstTempPanel;//所有笔记 JButton allBook;//所以笔记,排序,回收站的按钮 JScrollPane allBookjsp;//第二片声明 JPanel secondTempPanel,timePaenl_o;JButton allBook_o;//所以笔记,排序,回收站的按钮 JScrollPane timePaenljsp_o; //处理文件部分内容 File book;String [] book_name;JLabel[] member; JPanel panel;MainFrame mainFrame;public final int TOTAL=20; /**************笔记本类型部分声明结束*****************/ public LeftPanle(JPanel panel,MainFrame mainFrame){ this.mainFrame=mainFrame;this.panel=panel;//处理第一片***11111111111 //设置初始界面 显示 所以笔记,排序,回收站的按钮 //ImageIcon imageIcon=new ImageIcon(”image/note.png“);allBook=new JButton(”所有笔记“,new ImageIcon(”image/expand.png“));allBook.addActionListener(this);//点击按时间排序时显示第二片 allBookPanel=new JPanel(new GridLayout(TOTAL,1,1,4));member=new JLabel[TOTAL];for(int i=0;i member[i]=new JLabel(”“); member[i].addMouseListener(this);} allBookjsp=new JScrollPane(allBookPanel);//滚动 firstPanel=new JPanel(new BorderLayout());//将第一片设置为边界布局 firstPanel.add(allBook,”North“);firstPanel.add(allBookjsp); //处理第二片***222222 //仅有一个按钮 allBook_o=new JButton(”所有笔记“,new ImageIcon(”image/collapse.png“));allBook_o.addActionListener(this);//点击所有笔记时 显示第一片 secondPanel=new JPanel(new BorderLayout());//将第二片设为 边界布局 secondPanel.add(allBook_o,”North“); //进行卡片布局 cardLayout=new CardLayout();panel.setLayout(cardLayout);panel.add(firstPanel,”1“);panel.add(secondPanel,”2“); } //更新leftPanel中的笔记本,在新建或删除笔记本是需要刷新 并附带刷新右边两个Panel public void update_Left_view(){ book=new File(mainFrame.getUser_path()); book_name=book.list(); if(book.exists()) { for(int i=0;i { member[i].setText(”“); member[i].setIcon(null); member[i].removeMouseListener(this); } for(int i=0;i { //为每个好友设置头像和名字,每一个好友用 JLabel组件 存放 ImageIcon imageIcon=new ImageIcon(”image/note.png“); member[i].setText(book_name[i]); member[i].setIcon(imageIcon); member[i].addMouseListener(this);//为每一种笔记的排序方式注册监听 allBookPanel.add(member[i],i);//将笔记添加到所有笔记面板 } mainFrame.setBook_Path(mainFrame.getUser_path()+”/“+book_name[0]); mainFrame.midPanel.update_Mid_View(); } } @Override public void mouseClicked(MouseEvent e){ // TODO Auto-generated method stub //将选中部分字体设为红色 JLabel jl = null; for(int i=0;i { if(e.getComponent().equals(member[i])) { jl=(JLabel)e.getSource(); jl.setForeground(Color.red); } else { member[i].setForeground(Color.black); // // // // } } //保存当前笔记本的路径 如...mainFrame.setBook_Path(book.getAbsolutePath()+”“+jl.getText());//点击打开一个笔记本 刷新中间的目录 mainFrame.midPanel.update_Mid_View(); } @Override public void mousePressed(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e){ // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e){ // TODO Auto-generated method stub JLabel jl=(JLabel)e.getSource();jl.setForeground(Color.red);//jl.setFont(new Font(”“,1,30));//在笔记本界面操作 允许删除笔记本 不允许删除笔记 mainFrame.menu.delete_item[0].setEnabled(false);//不允许删除笔记 mainFrame.menu.delete_item[1].setEnabled(true);//允许删除笔记本 } @Override public void mouseExited(MouseEvent e){ // TODO Auto-generated method stub JLabel jl=(JLabel)e.getSource();jl.setForeground(Color.black);//jl.setFont(new Font(”“,1,12));} @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getSource()==allBook){ //cardLayout.show(this.getContentPane(), ”2“); cardLayout.next(panel);}else if(e.getSource()==allBook_o){ //cardLayout.show(this.getContentPane(), ”1“); cardLayout.next(panel); } } } (6)MainFrame.java package view;/** * 笔记本 java版 * 1、将主界面分为四块 北边的菜单 以及左中右的笔记本目录,笔记目录和笔记内容 * 2、左边目录为卡片布局,实现点了”所有笔记“弹出所有笔记的效果 * 3、中间显示笔记目录 采用网格布局 每个网格用了JMenuItem * 4、右边是一个JTextArea可能会改成JTextPane * 5、实现了新建删除笔记(本),但界面刷新有点问题(会重叠) * 6、采用MVC的思想实现时事刷新界面的效果 * 7、鼠标右击删除新建 测试成功(鼠标右击是笔记本的新建与删除没有) * 8、注册登录系统 已测试成功 在包login里面 * 9、图片的问题已成功解决 * 10、可以更改字体颜色(大小没有写),以及插入时间等 * 11、显示处添加实现多种版本的切换(如可切换成windows) */ import java.awt.*;import java.awt.event.*;import javax.swing.*; import common.User; public class MainFrame extends JFrame implements ActionListener{ Menu menu;//连接菜单栏 JPanel NoteTypePanel,DirectoryPanel,TextPanel;//三个大Panel JSplitPane splitM_R,splitL_M; LeftPanle leftPanel;//左边第一个Panel MidPanel midPanel;//连接中间Panel RightPanel rightPanel;//连接右边Panel //存放路径 public String name=null;public String user_path=null;public String book_Path=null;public String note_Path=null; public MainFrame(String name){ this.name=name; this.setUser_path(”Users/“+name); this.setBook_Path(this.getUser_path()+”/默认笔记本“); this.setNote_Path(this.getBook_Path()+”/默认笔记“); // 一、菜单界面 menu=new Menu(this); /** 二、创建三个JPanel *1.l笔记正文 TextPanel *2.笔记名目录及查找方式 DirectoryPanel *3.笔记类型目录及排序方式选择 NoteTypePane */ /*笔记正文部分*******/ TextPanel=new JPanel(); rightPanel=new RightPanel(TextPanel,this); /*文件名目录部分******/ DirectoryPanel=new JPanel(); midPanel =new MidPanel(DirectoryPanel,this); /*笔记类型目录部分*****/ NoteTypePanel =new JPanel(); leftPanel=new LeftPanle(NoteTypePanel,this); leftPanel.update_Left_view(); // 三、处理拆分窗格 splitM_R =new JSplitPane(1,DirectoryPanel,TextPanel); splitM_R.setOneTouchExpandable(true); splitL_M =new JSplitPane(1,NoteTypePanel,splitM_R); splitL_M.setOneTouchExpandable(true); this.add(splitL_M); // 四、设置标题等 this.setTitle(name+” 的笔记本“); this.setLocation(200,100); this.setSize(1000,600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } this.setVisible(true);} //为了方便后面的垂直和水平显示 public void showStyle(int show){ this.remove(splitL_M);//先把以前的去掉重新添加 splitM_R =new JSplitPane(show,DirectoryPanel,TextPanel);splitM_R.setOneTouchExpandable(true); splitL_M =new JSplitPane(1,NoteTypePanel,splitM_R);splitL_M.setOneTouchExpandable(true);this.add(splitL_M);this.setVisible(true);} @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub } public String getUser_path(){ return user_path;} public void setUser_path(String user_path){ this.user_path = user_path;} public String getBook_Path(){ return book_Path;} public void setBook_Path(String book_Path){ this.book_Path = book_Path;} public String getNote_Path(){ return note_Path;} public void setNote_Path(String note_Path){ this.note_Path = note_Path;} (7)package view; import java.awt.*;import java.awt.event.*;import java.io.*; import javax.swing.*;import javax.swing.text.Document;import javax.swing.text.StyledDocument; import common.Tools;import common.User;import login.login_zhuce; public class Menu extends JFrame implements ActionListener{ //菜单部分声明 JMenuBar menuBar=null;//菜单主干 JMenu newNote_menu,deliteNote_menu,show_menu,menu_menu,help_menu;//菜单组件 树干 //处理新建笔记菜单 newNote_menu JMenuItem[] newNote_item={ new JMenuItem(”新建笔记“),new JMenuItem(”新建笔记本“) };//处理删除deliteNote_menu JMenuItem[] delete_item={ new JMenuItem(”删除笔记“),new JMenuItem(”删除笔记本“) }; //处理显示 JMenuItem[] show_item={ new JMenuItem(”Metal风格“),new JMenuItem(”Windows风格“),new JMenuItem(”Motif风格“),new JMenuItem(”Nimbus风格“),new JMenuItem(”水平显示“),new JMenuItem(”垂直显示“) }; //处理menu_menu JMenuItem[] menu_item={ new JMenuItem(”丨账户“),new JMenuItem(”丨导入“),34 new JMenuItem(”丨导出“),new JMenuItem(”丨注销“),new JMenuItem(”丨退出“) }; //处理help_menu JMenuItem[] help_item={ new JMenuItem(”关于作者“),new JMenuItem(”关于笔记本“)}; MainFrame mainFrame; public Menu(MainFrame mainFrame){ this.mainFrame=mainFrame;// 一、先处理菜单 menuBar=new JMenuBar();//各菜单menu[0]menu[1]menu[2]menu[3]menu[4] newNote_menu=new JMenu(”新建“);deliteNote_menu=new JMenu(”删除“);deliteNote_menu.setToolTipText(”选中笔记(本)时才可删除“);show_menu=new JMenu(”显示“);help_menu=new JMenu(”帮助“);menu_menu=new JMenu(”菜单“); //将菜单项添加到各菜单 for(int i=0;i 菜单 newNote_menu.add(newNote_item[i]);for(int i=0;i deliteNote_menu.add(delete_item[i]);for(int i=0;i show_menu.add(show_item[i]);for(int i=0;i help_menu.add(help_item[i]);for(int i=0;i { menu_menu.add(menu_item[i]); if(i==0||i==2)//添加分隔线 将导入和导出框起来 menu_menu.addSeparator();} //添加事件监听 for(int i=0;i newNote_item[i].addActionListener(this); for(int i=0;i delete_item[i].addActionListener(this); for(int i=0;i show_item[i].addActionListener(this); for(int i=0;i help_item[i].addActionListener(this); for(int i=0;i menu_item[i].addActionListener(this); //将菜单 添加到主干中 menuBar.add(newNote_menu); menuBar.add(deliteNote_menu); menuBar.add(show_menu); menuBar.add(menu_menu); menuBar.add(help_menu); mainFrame.add(menuBar,”North“); } //构造完毕 //实现风格转换 private void changeFlavor(int flavor)throws Exception { switch(flavor) { case 1: UIManager.setLookAndFeel(”javax.swing.plaf.metal.MetalLookAndFeel“); break; case 2: UIManager.setLookAndFeel(”com.sun.java.swing.plaf.windows.WindowsLookAndFeel“); break; case 3: UIManager.setLookAndFeel(”com.sun.java.swing.plaf.motif.MotifLookAndFeel“); break; case 4: UIManager.setLookAndFeel(”com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel“); break; } SwingUtilities.updateComponentTreeUI(this.getContentPane()); SwingUtilities.updateComponentTreeUI(mainFrame); } //实现监听后的动作 @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub String str=e.getActionCommand(); if(str.equals(”新建笔记“)){ String note_name=null; note_name=JOptionPane.showInputDialog(null,”请输入笔记的名字“,”新笔记“,JOptionPane.INFORMATION_MESSAGE |JOptionPane.OK_OPTION); //如果用户点取消 或没有输入文件名 则不用新建 if(note_name!=null){ File file=new File(mainFrame.book_Path+”/“+note_name+”.ser“); if(!file.exists()) { try { file.createNewFile(); //将新建的笔记格式设为Document对象 Tools.setDocument(file); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } //刷新中间和左边的Panel mainFrame.midPanel.update_Mid_View(); } } }else if(str.equals(”新建笔记本“)){ String book_name=null; book_name=JOptionPane.showInputDialog(null,”请输入笔记的名字“,”新笔记“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); if(book_name!=null){ File file=new File(mainFrame.getUser_path()+”/“+book_name); //System.out.println(”User_path:“+mainFrame.getUser_path()); if(!file.exists()) { try { file.mkdir(); //将笔记本路径设为新建笔记本的路径 mainFrame.setBook_Path(mainFrame.getUser_path()+”/“+book_name); mainFrame.leftPanel.update_Left_view(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); } //改变的笔记本总数 刷新左边Panel mainFrame.leftPanel.update_Left_view(); } } }else if(str.equals(”删除笔记“)){ Tools.deleteFile(mainFrame.getNote_Path()); //删除笔记之后需要刷新右边的两个Panel mainFrame.midPanel.update_Mid_View(); }else if(str.equals(”删除笔记本“)){ Tools.deleteFolder(mainFrame.book_Path); //笔记本目录发生改变 mainFrame.leftPanel.update_Left_view(); }else if(str.equals(”关于作者“)){ Tools.showMessage(”邓伟杰、苏俊钦、陈通、陈盛锋、林健祺、尹国瑜、温天宇、赵潮顺“, ”帮助“); }else if(str.equals(”关于笔记本“)){ Tools.showMessage(”还存在许多BUG,望老师指正“, ”呵呵“); }else if(str.equals(”丨账户“)){ Tools.showMessage(”姓名:“+mainFrame.name, ”用户信息“); }else if(str.equals(”丨导入“)){//即打开一个笔记 String temp=Tools.open_Choose(); if(!temp.equals(”not“)) { FileInputStream inputStream=null; ObjectInputStream ois=null; try { inputStream=new FileInputStream(Tools.open_Choose()); ois=new ObjectInputStream(inputStream); mainFrame.rightPanel.textPane.setDocument((Document)ois.readObject()); mainFrame.rightPanel.book_Save(); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); }finally{ try { ois.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } } }else if(str.equals(”丨导出“)){//即另存为一个笔记 String temp=Tools.open_Choose();if(!temp.equals(”not“)){ FileOutputStream outputStream=null; ObjectOutputStream oos=null; try { outputStream=new FileOutputStream(Tools.save_Choose()); oos=new ObjectOutputStream(outputStream); oos.writeObject(mainFrame.rightPanel.textPane.getDocument()); } catch(Exception e1){ // TODO Auto-generated catch block e1.printStackTrace(); }finally{ try { oos.close(); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } } }else if(str.equals(”丨注销“)){ mainFrame.dispose();new login_zhuce();//注销之后重新登录 }else if(str.equals(”丨退出“)){ System.exit(0);}else if(str.equals(”垂直显示“)){ mainFrame.showStyle(0);//重新调用一下拆分窗格 }else if(str.equals(”水平显示“)){ mainFrame.showStyle(1);}else { try{ if(str.equals(”Metal风格“)){ this.changeFlavor(1); }else if(str.equals(”Windows风格“)){ this.changeFlavor(2); }else if(str.equals(”Motif风格“)){ this.changeFlavor(3); }else if(str.equals(”Nimbus风格“)){ this.changeFlavor(4); } }catch(Exception e1){ e1.printStackTrace(); } } } } (8)Midpanel.java package view; import java.awt.*; import javax.swing.*;import javax.swing.text.Document; import common.Tools; import java.awt.event.*;import java.io.*; public class MidPanel extends JPanel implements ActionListener,MouseListener{ JPanel panel;MainFrame mainFrame;/// JScrollPane jscroll2; JMenuItem[] items;File lists[]; JPanel jp1; //鼠标右击部分 JPopupMenu right_Click; JMenuItem delete_book,properties_book,new_book; public final int TOTAL=20;public String filename;public String temp_path=null;//右击时记录选中笔记的途径 public MidPanel(JPanel panel, MainFrame main){ this.panel=panel; this.mainFrame=main; jp1=new JPanel(); jp1.setLayout(new GridLayout(TOTAL,1,1,4)); //初始化20个MenuItem items =new JMenuItem[TOTAL]; for(int j=0;j items[j]=new JMenuItem(”“); items[j].addMouseListener(this); } //处理鼠标右击问题 right_Click=new JPopupMenu(); new_book=new JMenuItem(”New“);//新建笔记 delete_book=new JMenuItem(”Delete“);//删除笔记 properties_book=new JMenuItem(”Properties“); delete_book.addActionListener(this); properties_book.addActionListener(this); new_book.addActionListener(this); //right_Click.right_Click.add(new_book); right_Click.addSeparator(); right_Click.add(delete_book); right_Click.add(properties_book); JLabel label=new JLabel(”All Note & Note All “); label.setEnabled(false); label.setBackground(Color.gray); jscroll2 = new JScrollPane(jp1);//为Panel添加滚动条 panel.setLayout(new BorderLayout()); panel.add(label,”North“); panel.add(jscroll2); } //在新建或删除是需要刷新,并附带刷新 RightPanel中的内容 public void update_Mid_View() { File file = new File(mainFrame.getBook_Path()); if(file.isDirectory()) { lists = file.listFiles(); for(int j=0;j items[j].setText(”“); items[j].setArmed(false); items[j].removeMouseListener(this);//避免某个笔记被删除之后还可以被点的情况 } for(int i=0;i items[i].setText(lists[i].getName());//创建20个JLanel items[i].addActionListener(this); items[i].addMouseListener(this); jp1.add(items[i],i); //在该项上右击弹出一个选择框 items[i].setComponentPopupMenu(right_Click); } //更新右边的Panel 里面应该没有内容 mainFrame.rightPanel.update_Right_view(); } } public void showfile(int y){ String filename1 = lists[y].getAbsolutePath(); FileInputStream inputStream=null; ObjectInputStream ois = null; try { inputStream=new FileInputStream(filename1); ois=new ObjectInputStream(inputStream); mainFrame.rightPanel.textPane.setDocument((Document)ois.readObject()); } catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { ois.close(); } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getActionCommand().equals(”New“)){ String note_name=JOptionPane.showInputDialog(null,”请输入笔记的名字“,”新笔记“,JOptionPane.INFORMATION_MESSAGE | JOptionPane.OK_OPTION); //如果用户点了取消 则不用新建笔记 if(!note_name.equals(”null“)){ File file=new File(mainFrame.book_Path+”/“+note_name+”.ser“); if(!file.exists()) { try { file.createNewFile(); //为新建的笔记写入一个空白的对象 避免打开时报指针的错误 Tools.setDocument(file); } catch(IOException e1){ // TODO Auto-generated catch block e1.printStackTrace(); } } //刷新中间和左边的Panel mainFrame.midPanel.update_Mid_View(); } }else if(e.getActionCommand().equals(”Delete“)){ File file=new File(this.getTemp_path()); file.delete(); //删除笔记之后需要刷新右边的两个Panel mainFrame.midPanel.update_Mid_View();}else if(e.getActionCommand().equals(”Properties“)){ Tools.showMessage(this.getTemp_path(),”笔记“);}else { mainFrame.rightPanel.textPane.setEditable(true); mainFrame.setNote_Path(mainFrame.getBook_Path()+”/“+e.getActionCommand()); for(int x=0;x if(e.getActionCommand().endsWith(lists[x].getName())) this.showfile(x); } } } @Override public void mouseClicked(MouseEvent arg0){ // TODO Auto-generated method stub //设置选中部分的情况 JMenuItem jmtemp=null;for(int i=0;i if(arg0.getComponent().equals(items[i])) { jmtemp=(JMenuItem)arg0.getSource(); jmtemp.setArmed(true); }else{ items[i].setArmed(false); } } //记录被要在右边显示出内容的笔记途径 可以在菜单中删除该笔记 mainFrame.setNote_Path(mainFrame.getBook_Path()+”/“+jmtemp.getText()); mainFrame.menu.delete_item[0].setEnabled(true);//允许删除笔记 mainFrame.menu.delete_item[1].setEnabled(false);//不允许删除笔记本 } @Override public void mouseEntered(MouseEvent arg0){ // TODO Auto-generated method stub JMenuItem jm=(JMenuItem)arg0.getSource();//将当前笔记的途径 存到辅助路径中 this.setTemp_path(mainFrame.getBook_Path()+”/“+jm.getText());} @Override public void mouseExited(MouseEvent arg0){ // TODO Auto-generated method stub JMenuItem jm=(JMenuItem)arg0.getSource(); //jm.setBackground(new Color(238,238,238));} @Override public void mousePressed(MouseEvent arg0){ // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0){ // TODO Auto-generated method stub } public String getTemp_path(){ return temp_path;} public void setTemp_path(String temp_path){ this.temp_path = temp_path;} } (9)RightPanel.java package view;/** * 改用JTextPane实现图片即单个文字更改字体或颜色的功能 */ import java.awt.*;import java.awt.event.*;import java.io.*;import java.text.SimpleDateFormat;import java.util.Date; import javax.swing.*;import javax.swing.text.Document; import common.Tools; public class RightPanel extends JPanel implements ActionListener{ JPanel panel; MainFrame mainFrame; //文本域 JTextPane textPane;JScrollPane jsp_Pane;//鼠标右击部分 JPopupMenu right_Click;JMenuItem cutItem,copyItem,pasteItem,saveItem;//插入图片与更改字体 JToolBar toolBar;JButton image_Button,font_Button,timeButton; public RightPanel(JPanel panel,MainFrame mainFrame){ this.mainFrame=mainFrame; this.panel=panel; //创建一个 文本域存放文字 JTextArea textPane =new JTextPane(); //设置自动换行 textPane.setFont(new Font(”“, 1, 12)); jsp_Pane=new JScrollPane(textPane);//滚轮 //设置鼠标右击弹框效果 //cut cutItem=new JMenuItem(”Cut“,new ImageIcon(”image/cut.png“)); cutItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//设置快捷键 ”ctrl x“ cutItem.addActionListener(this); //copy copyItem=new JMenuItem(”Copy“,new ImageIcon(”image/copy.png“)); copyItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl x“));//设置快捷键 ”ctrl O“ copyItem.addActionListener(this); //paste pasteItem=new JMenuItem(”Paste“,new ImageIcon(”image/haha.png“)); pasteItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl v“));//设置快捷键 ”ctrl v“ pasteItem.addActionListener(this); saveItem=new JMenuItem(”Save“,new ImageIcon(”image/save.png“)); saveItem.setAccelerator(KeyStroke.getKeyStroke(”ctrl s“)); saveItem.addActionListener(this); //将各菜单项添加到 右击菜单组中 right_Click=new JPopupMenu(); //right_Click.right_Click.add(cutItem); right_Click.add(copyItem); right_Click.add(pasteItem); right_Click.addSeparator(); right_Click.add(saveItem); //为右击注册监听 textPane.setComponentPopupMenu(right_Click); //可以懂工具条部分 toolBar=new JToolBar(”工具“); image_Button=new JButton(”插入图片“); image_Button.addActionListener(this); font_Button=new JButton(”更改字体颜色“); font_Button.addActionListener(this); timeButton = new JButton(”插入时间“); timeButton.setToolTipText(”点击可以插入当前时间“); timeButton.addActionListener(this); toolBar.add(image_Button); toolBar.add(font_Button); toolBar.add(timeButton); //将工具条和textPane添加到panel panel.setLayout(new BorderLayout()); panel.add(toolBar,”North“);panel.add(jsp_Pane);} //更新文本框 在新建或删除 笔记或笔记本 的时候需要刷新 public void update_Right_view(){ textPane.setText(”“);textPane.setEditable(false);} //保存当前笔记 public void book_Save(){ FileOutputStream outputStream=null;ObjectOutputStream oos=null;try { outputStream=new FileOutputStream(mainFrame.getNote_Path()); oos=new ObjectOutputStream(outputStream); oos.writeObject(textPane.getDocument());} catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { oos.close(); } catch(IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void actionPerformed(ActionEvent e){ // TODO Auto-generated method stub if(e.getActionCommand()==”Cut“){//剪切 textPane.cut(); }else if(e.getActionCommand()==”Copy“){//复制 textPane.copy(); }else if(e.getActionCommand()==”Paste“){//粘贴 textPane.paste(); }else if(e.getActionCommand()==”Save“){//保存 this.book_Save(); }else if(e.getSource()==image_Button){//插入图片 String temp=Tools.open_Choose(); if(!temp.equals(”not“)){ textPane.insertIcon(new ImageIcon(temp)); } }else if(e.getSource()==font_Button){//修改字体颜色 Color c=JColorChooser.showDialog(this, ”Color“, Color.black); textPane.setForeground(c); }else if(e.getSource()==timeButton){//插入时间 Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat(”yyyy/MM/dd HH:mm:ss");//可以方便地修改日期格式 String hehe = dateFormat.format(now); textPane.replaceSelection(hehe); } } } 统一要求: 设计成品(按难度自选一个到两个完成) 可分组或单独完成,每组最多两人,19周前交 1设计报告 (1)本程序的功能描述 (2)程序设计思想(数据结构和各功能的实现办法)(3)核心程序清单(应有必要说明)2结果分析 (1)本程序的局限性及改进方法 (2)应用本程序的设计方法可以编写哪些类似的程序 一:小型通讯管理系统 通讯录管理系统含有:输入 显示 查找 删除 要求 1通讯录的每一条信息包括姓名,单位,电话!(可用数组或数据库)2输入功能:可以一次完成若干条信息的输入.3显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)4查找功能:完成按姓名查找通讯信息.5删除功能:完成按姓名删除通讯信息.6应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观! 二:个人简历程序:(参照中华英才网http://www.xiexiebang.com的创建个人简历的选项) 通过文本框输入姓名,通过单选按钮设置性别,通过组合框选择籍贯(列出省、市),文化程度、出生日期、现居住地。以及填写教育经历、语言及方言等。 请按自行安排界面排版方式,注意美观性。 三:多小球运动程序: 请编写一个多小球运动的程序,要求可以设置每个小球的半径,初始书度,加速度。 当用户点击发射按钮时,程序按指定的弹出一个小球,当小球碰到边界线时,碰撞为完全碰撞。 要求每个小球为一个线程,不考虑小球之间的碰撞。 四:打字小程序。 从屏幕顶端随机落下不同的英文。如果在字符下落的过程中,用户正确输入对应字符,字符消失,加1分;到字符落到底端还没正确输入,扣一分。 给出最宗成绩。程序可设 重新开始,暂停,练习时间,字符出现的数量,速度等。 五:龟兔赛跑 龟兔在同一个圆赛跑,要求可以设置龟兔跑一周的时间,兔比龟快。龟兔同时其跑,当兔快龟一圈时,计算器加1,并显示在屏幕上。六:学生成绩管理系统。 完成一个班学生的成绩管理。为完成程序功能,至少要有两个这样的功能模块: l 输入成绩 2 查询成绩 因为查询模块中又分为: l 按学生查询 2 按课程查询 所以为它们分别编写函数。因为上述这些操作中要输入某位学生和某门课程,所以再编写两个函数来输出数组中的学生信息和课程信息并请用户从中选择: 1显示学生信息从中进行选择 2显示课程信息从中进行选择 系统管理员需要管理系统所有用户的信息,包括用户编号、名称、备注等,可以对其添加删除修改和启用停用等操作。 还需要为系统用户划分角色和权限,保证不同身份的用户进入后可以有不同的权限,如某科目的老师可以录入本科目的成绩,学生只可以有查询权限等。 七:使用ServerSocket和Socket实现服务器支持多客户机通信。当有多个客户向服务器提出时请求时,服务器一端会分别为每个客户从一个包含多行文字的文本文件中读取一行文字,发送给每个客户,直到文件读完文件中所有行,服务器一端发出“bye”并停止运行,客户端也都停止运行。 八:编写一个图形用户界面的应用程序,在窗口中,有一个图片循环地从窗口的左面移动到窗口的右边。当鼠标点击窗口时,图片停止运动,再次点击图片恢复运动。九:编写程序,在文件中输入若干个单词(每个单词可重复一次或多次)。编程实现统计每个单词重复次数,并对非重复的单词进行排序,将排序结果输出到文件中。十. JDBC技术的应用 ——校园卡信息/学生信息/教师信息/图书信息/宿舍信息/学生会/成绩/课程/教室管理/公务员招考系统的设计实现 以校园卡信息管理、学生信息管理、教师信息管理、图书信息管理、宿舍信息管理、学生会活动管理、成绩管理、教室管理等为例,使用JDBC-ODBC数据库接口,完成对后台数据库的插入、删除、修改、查询等操作。数据库系统可采用Sql Server、Access等,要根据完成的不同功能在数据库系统中定义有关的各种信息表:如在教师信息管理系统中要设计教师基本信息表、教师学习进修情况表、教师奖惩情况表、教师上课情况表等。其他几个子系统中数据表的设计由同学们根据实际的需求自主完成设计。十一.文本编辑器的设计与实现 设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。十二..计算器的设计与实现 设计一个能实现计算器功能的Java程序,可以进行加、减、乘、除(另外可适当加上阶乘、正弦、余弦和指数)运算。十三.图象浏览器的设计与实现 设计一个能实现图象浏览与编辑功能的Java程序,包括如下功能: 1)从已有的图象文件列表中选择某一个,即可显示该图象,并可做旋转等变换。2)在画布区域上可以进行各种规则图形的绘制(如:线段、矩形、多边形、圆等),还可通过鼠标的拖动自由绘图。 3)可以连续播放所选文件夹下的所有图象。十四: 媒体播放器的设计与实现 利用JMF(Java Media Framework)提供的API,实现图像浏览、音频播放、视频播放功能。 十五:局域网聊天程序的设计与实现 该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。服务器端程序:可将消息发送到客户端和接受客户端发送来的信息 十六:基于Web的应用 ——网上超市/网上书店/网上花店/网上物流/网上招聘/同学录/网上选课/网上考试系统的设计 应用JSP技术,设计一个类似电子商务、电子政务类的简单应用系统,可以在网上动态展示各类信息,并根据相应的业务流程进行必要的逻辑处理,系统信息可以进行后台维护。需要动态显示的信息要存放数据库中,数据库可以用Sql Server、Access;后台管理要提供对数据库中信息进行动态维护(包括添加、删除、修改)的页面。十七:益智类小游戏的设计与实现 运用多线程和多媒体技术设计一个简单的益智类小游戏,游戏内容自行构思,不得直接利用网上现有游戏程序,要求有人机交互和界面动画,游戏过程中有声音效果,游戏成绩能记录、显示。 Java及J2EE课程设计题目 1、文件档案管理 文件档案管理系统主要对外来文件、下发文件和需要抄送的文件进行统一管理。划分为以下三个模块:收文管理、发文管理、抄送文件。 1.收文文件增加、删除和修改,其字段有:收文编号、收件日期、文件标题、内容、发文单位、签发人 2.发文文件增加、删除和修改,其字段有:发文编号、发件日期、文件标题、内容、收文单位、发件人 3.抄送文件增加、删除和修改,其字段有:文件编号、发件日期、文件标题、内容、抄送单位、发件人 4.查询条件是发文类型(收文、发文还是抄送)、文件标题、内容进行模糊查询。 应用工具:jsp+struts+jdbc 题目等级:A2、运动员档案管理 运动员档案管理系统是对运动员的基本信息及参加比赛的情况进行管理维护。分为两个模块:运动员建档、比赛记录。 5.运动员建档增加、删除和修改,其字段有:学生编号、姓名、出生日期、性别、民族、政治面貌、主修项目、联系方式 6.对运动员的档案进行模糊查询,查询条件有:学生编号、学生姓名、性别、主修项目 7.对比赛记录进行增加、删除、修改,其字段有:学生编号、姓名、时间、地点、比赛名称、参加项目、成绩、名次 8.对比赛记录进行模糊查询,查询条件有:学生编号、学生姓名、比赛名称、参加项目、成绩 应用工具:jsp+struts+jdbc 题目等级:A3、信息发布系统 信息发布系统是将最新信息、以最快的方式展示给用户。提供信息的维护管理功能。信息主要字段:发布时间、标题、内容、有效期开始时间、结束时间、发布人、是否阅读,完成对信息的发布、修改、删除操作,对信息进行模糊查询,其查询条件为标题、内容、发布人 应用工具:jsp+struts+jdbc 题目等级:A4、通讯录管理 通讯录管理系统是方便用户管理自己的联系人,查找相应的联系方式。根据类别的不同对联系人进行分类管理。联系人信息有:姓名、性别、职务、办公电话、手机、宅电、电子邮件、通讯地址,完成对联系人的增加、删除、修改操作,提供对通讯录进行模糊查询,其条件为姓名、性别、职务、通讯地址字段 应用工具:jsp+struts+jdbc 题目等级:A5、备忘录管理 备忘录管理系统是记录每天需要做的事情,起到一个提醒的作用。提供对这些信息的维护功能。备忘录中的内容主要有:日期、标题、内容这三个数据项,完成对其的增加、删除、修改操作,并可以按日期和标题、内容进行模糊查询 应用工具:jsp+struts+jdbc 题目等级:A6、会议管理 会议管理系统是记录会议的基本信息,开完会后记录会议的讨论结果,进行备案,供以后查询使用。会议的基本信息:会议主题、会议类型(周会、报告会、考务会……)、会议状态(准备中、进行中、已结束三种)、会议时间、会议地址、参与者、会议主要内容,完成对其会议基本信息的增加、删除、修改操作,并要记录会议结果,会议记录结果主要记录的是会议讨论结果、领导签字两个数据项。应用工具:jsp+struts+jdbc 题目等级:A7、日程管理 日程管理要记录每天的工作日程安排,主要内容包括:记录时间、名称、内容、地点、日程的开始 和结束时间,完成对基本信息的增加、删除、修改操作,并对日程的信息进行查询,查询条件有:名称、内容 应用工具:jsp+struts+jdbc 题目等级:A8、日志管理 日志管理要记录每一天完成工作的情况,记录的信息有时间、上午工作记录、下午工作记录、记录人,完成对这些信息的维护,并对日期进行查询 应用工具:jsp+struts+jdbc 题目等级:A9、用户管理 为了方便网站管理者对用户进行身份确认,或者是用户购买以后进行配送等服务,必须要有用户管理系统。用户管理系统应该具有用户注册、用户登录、用户修改和用户注销等功能。 1. 用户注册(1) 2. 用户登录(1) 3. 用户信息修改(1) 4. 用户注销(1) 应用工具:jsp+struts+jdbc 题目等级:A10、数据查询 网上购物的一个优势是可以在商品中进行查询。 1. 生成查询记录集(1) 2. 分页显示功能(1) 3. 查看商品详细信息(1) 应用工具:jsp+struts+jdbc 题目等级:A11、购物车 1.添加到购物车(1) 2.查看购物车(1) 3.购物车操作(1) 4.结帐(1) 应用工具:jsp+struts+jdbc 题目等级:A 12.新闻管理系统 题目:当今社会是一个信息社会,人们通过信息了解社会情况,进行社会活动,而新闻作为企事业单位宣 传自己,发布信息的主要形式,而在网络新闻的宣传是一个新兴事务,并且发展很快,已经成为一个重要信息发布媒体。所以现要求你设计一个用于新闻管理的信息系统,实现新闻的编辑与发布。 功能要求:本系统要求可以完成新闻在线发布,在线编辑,新闻分类,图片新管理等功能,技术上要求 使用JSP技术。 题目等级:B 13.在线考试系统 题目:考试作为学员学习效果的检验的主要方式一直被采用,而且考试形式也有许多方式,如笔试,面 试等,在线测试作为一种新的考试形式,得到越来越快的发展。所以现要求你设计一个在线考试系统,实现在线测试。 功能能要求:实现在线测度,在线评测,随机出题,试题编辑等功能,技术上采用JSP+JavaBean实现。题目等级:A 14.网上书店系统 题目:图书是人们了解知识,掌握知识的主要手段,传统的书店都店面形式,人们需要去书店才能够购 买,花费大量的时间也不一定得到一本满意的书籍。而网上书店就是利用网络为人们提供一个足不出户就可以买到一本理想的书籍的方式。所以要求你设计一个网络书店系统,实现书籍的在线销售,在线阅读。 功能要求:实现图书在线阅览,在线选购,新书推荐等功能,技术上要求采用JSP +JavaBean实现。题目等级:A 15.学生学籍系统 题目:学生学籍管理是一个学校管理的重要组成部分,学生学籍管理也是最麻烦的一项管理,所以实现 学生学籍管理的信息化是一种简化管理的主要途径。现要求你设计一个实现学生学籍管理的系统,实现学生学籍管理的信息化。 功能要求:学生学籍注册,查询,更新,学生奖惩,学籍变动等功能。技术上要求采用JSP技术实现。题目等级:B 16.留言本 题目:留言本是网站中用于与管理员进行信息交流的主要方式,是网站中的一个重要功能之一,现要求 你设计一个留言本,实现在线留言。 功能要求:留言发布,留言回复,留言置顶,留言验证等功能,技术采用JSP实现。 题目等级:C 17.在线投票问卷管理系统 题目:在线调查是调查了解对某件事情人们反映的主要方式,是目前比要流行的一种调查方式。现要求 实现一个在线投票调查系统,并可以进行结果统计,结果评测等功能。 功能要求:在线投票,在线答卷,在线统计,在线评测等功能,技术上采用JSP实现。 题目等级:C 18.员工档案管理系统 题目:员工档案是一个企业人才建设管理的重要资源,好的员工档案管理,对提高员工工作积极性,提高企业效益的重要方式。所以要求设计一个员工档案管理系统,实现员工档案管理的信息化管理。 功能要求:员工档案注册,员工考核,员工调动等功能,技术上采用JSP+JavaBean实现。 题目等级:A 19.文本编辑器 题目:参照Windows记事本程序设计一个文本编程器,可以进行文本的格式编辑。 功能要求:要求有菜单,工具栏,文本编辑功能所需要的功能,技术上采用Java图形窗口技术实现。题目等级:C 20.计算器 题目:参照Windows计算器程序设计一个计算器,可以实现数学计算。 功能要求:要求功能上要与Windows计算器功能类似。 题目等级:C 21.HANNOI-塔 题目:运用多线程与图形接口技术设计一个HANNOI-塔演示程序,要求增加简易图形界面。功能要求:能够至少演示5级HANNOI-塔。 题目等级:B 22.挖雷游戏 题目:运用多线程程序与图形接口技术设计一个挖雷游戏程序,要求有简易的图形界面。 功能要求:功能上与Windows扫雷游戏类似。 题目等级:A 23.动态时钟 题目:运用Applet和多线程技术设计钟表程序,以实现当前时钟的显示。 功能要求:要求有表盘,可以调整时间。 题目等级:B 24.音乐播放器 题目:运用Applet技术设计一个可以播放音乐的播放器。 功能要求:可以播放音乐,可以添加乐曲等功能。 题目等级:C 25.实验室网上签到系统 题目:要求实现一个实验在线签到系统,学生可以在上实验时完成签到。 功能要求:课程设置,新建签到,学生签到列表,学生在线签到等功能。技术上采用JSP+JavaBean技 术实现。 题目等级:B 26.用户管理系统 题目:要求实现用户管理系统,可以实现用户注册,用户权限管理等功能。 功能要求:用户注册,用户极限分配,用户登录等功能。技术采用JSP技术实现。、题目等级:C 27.图书馆管理系统 题目:要求实现图书馆的在线管理,学生可以在线借书,在线阅览等功能。 功能要求:在线图书管理。在线阅读,在线借书,还书等功能。技术上采用JSP+JavaBean实现。题目等级:B 28.求职招聘系统 题目:网上求职是当今人才流动,人才引进的重要途径,但对于成百万的简历的管理,职位的发布的管理如果采用人工的方式会花费大量的人力、物力,但如果实现计算机网络化 管理就显得容易一些,所以现要求你设计一个求职招聘管理系统,实现人才交流的信息化处理。 功能要求:职位发布,在线投简,在线应聘等功能。技术上采用JSP+JavaBean技术实现。题目等级:B 29.仓库管理系统 题目:仓库管理是一个非常烦琐,但是很重要的工作。如果能够实现仓库管理的计算机处理,对于提 高工作效率,降低工作成本,能够起到非常重要的作用,所以现要求实现一个仓库管理系统,实现仓库的信息化管理。 功能要求:实现货物的出库,入库,库存统计,库存预警等功能。技术上采用JSP+JavaBean技术实现。题目等级:B 30企业网站管理系统 题目:网站对企业宣传工作的开展提供一个非常的好的效果,产生很好的效益,这就说明网站已经成为企业宣传自己的重要手段,网站管理的好坏直接影响这个网站的应用,所以现要求为某企业网站设计一个管理系统,实现网站的后台管理。 功能要求:产品发布,用户管理,信息发布等功能。技术上采用JSP+JavaBean技术实现。题目等级:A 31.流量统计系统 题目:网络流量是反映一个网站受关注度情况的重要表现,是网站调整版面信息的参考,访问流量高的网站证明其效益非常好,是一个非常理想的网站,但流量低的网站就需要进行信息的更新和版面的修改,以提高网站的访问量,这样网站流量的时时统计能够给网站管理员提供一个网站运行情况信息参考,为其更好的管理网站提供帮助。现要求你设计一个网站访问流量的统计系统,时时统计网站访问流量。 功能要求:显示在线人数,当前访问者IP,历史访问人数,最高流量时间等功能。技术上采用JSP技 术实现。 题目等级:C 其它可选题目 以上题目的等级全都为C,所选工具应为jsp+jdbc,都要完全相应的增、删、改、查等功能 (1)酒店管理信息系统 (2)客房管理信息系统 (3)药品管理信息系统 (4)学籍管理信息系统 (5)成绩管理信息系统 (6)宿舍管理信息系统 (7)图书管理信息系统 (8)财务处理信息系统 (9)固定资产核算信息系统 (10)工资管理信息系统 (11)材料管理信息系统 (12)成本管理信息系统 (13)房地产产权产籍管理信息系统的开发 (14)住宅小区物业管理信息系统的开发 (15)建设工程报价管理信息系统的开发 (16)建设工程预算系统的开发 (17)项目材料管理信息系统的开发 (18)工程材料采购管理信息系统的开发 (19)工程成本管理信息系统的开发 (20)机械设备租赁管理系统的开发 (21)工程图档管理信息系统的开发 (22)企业人力资源管理信息系统的开发 (23)企业职工培训管理信息系统的开发 (24)企业职工医疗保险信息系统的开发 (25)商品销售管理信息系统的开发 Java课程设计题目 一、Java语言课程设计目的和要求 1.目的: 1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握; 2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力; 3)培养学生在项目开发中团队合作精神、创新意识及能力。2.要求: 1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; 2、系统设计要实用,编程简练,可用,功能全面 3、说明书、流程图要清楚 4、记录设计情况(备查,也为编写设计说明书作好准备); 5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。 6、设计上交内容:设计报告一组一份(按格式书写);心得体会每人一份;源程序文件。 二、Java课程设计选题如下: 1、四则运算测试 功能要求:该程序实现十道100以内四则运算数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。 界面要求:图形界面实现,基于ArrayList、Vector等高级类。 2、文件加密、解密软件 功能要求:通过软件界面选择打开一个文本文件,使用移位密码对文件内容进行加密并保存,或者针对移位密码加密的文本文件进行解密操作并保存。 界面要示:图形界面实现。 3、学生成绩管理 功能要求: 1)输入若干同学的学号,姓名,四科成绩(应用数学、大学英语、Java程序设计、计算机应用基础),存储入数据库中。2)计算出平均成绩。以平均成绩降序输出成绩表。3)输出全组各科平均分,最高分和最低分。4)输入姓名查询成绩 界面要示:无。 4、对对碰游戏 功能要求:该程序显示GUI用户界面,界面中随机安排10对图片,背面向上,当翻开的2张图片相同时就消失,不相同时重新翻回背面,最终显示用时和分数(=400-翻的次数)。 界面要示:图形界面实现。 5、画随机圆 功能要求:实现简单的动画。具体要求:自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度由HTML文件传入的参数控制(控制sleep时间)。 界面要求:用Java Applet实现。 6、绘图板 功能要求:实现简单绘图功能,具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小也可在界面中设定)。 界面要求:图形界面实现。可参考图 1、图2和图3。 图1 初始界面 图2 使用菜单绘图 图3 使用按钮绘图 7、标准化考试 功能要求:程序从文件系统(或数据库)中读入考试题目(主要为选择题)及答案,显示在GUI界面中,答题者按照题目内容进行答题,点击按钮提交后可以看到自己的答题结果。 界面要示:图形界面实现。 8、Socket文件传输 功能要求:基于Socket编程,实现服务器端向客户端发送文件的操作。界面要示:无。 9、网络相册 功能要求:用户在网页上通过前进、退后按键或自动播放方式浏览相册,每张相片可以放大观看。 界面要示:Applet实现。 三、设计时间 一周,具体安排如下: 第一阶段: 1.班级分组,选定课题,查阅相关资料 1周 2.划分模块、小组成员分工,编制源程序 1-2周 第二阶段:上机调试,修改、完善系统 一周 第三阶段:撰写、上交课程设计说明书(1份/人),上交课程设计作品源程序(每课题组一份),作品答辩。1天 四、设计方式和安排 1.分组选题:最多5人为一组,每组一个课题(可根据课题工作量大小,合理分配人数),每组设组长一名,负责该组设计工作的协调、分工等。2.设计过程: 1)分析设计准备阶段(按组讨论、对系统功能进行分析,确定算法,并进行明确分工); 2)编程调试阶段(绘制流程图,编制源程序;上机调试,修改程序)3)总结报告和书写说明书阶段(撰写上交相关资料) 3、考核过程 17周周五下午答辩。 五、考核内容和方式 1、在设计期间,学生要按时上机,设计结束根据记录的设计材料整理成设计说明书。设计说明书中应写下设计中的主要收获,要求对问题有一定的分析,文字简短明确流畅。 2、通过设计答辩方式,并结合学生的动手能力,独立分析解决问题的能力和创新精神,设计成绩由指导教师根据考勤、设计说明书质量、答辩表现以及学习态度按五级分制综合评定。 成绩分优、良、中、及格和不及格五等。 六、课程设计报告格式及要求 一、封面; 二、目录; 三、设计任务书; 四、本组课题及本人任务; 五、程序功能简介; 六、主体内容(简要说明总体情况,详细介绍本人任务部分): 1.设计分析; 2.程序结构(画流程图) 3.各模块的功能及程序说明; 4.源程序; 5.操作方法(流程);(可省)6.试验结果(包括输入数据和输出结果)7.设计体会。(可省)第三篇:Java课程设计
第四篇:Java课程设计
第五篇:Java课程设计题目