java课程整体教学设计(通用6篇)
篇1: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); } } } 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)企业职工医疗保险信息系统的开发 1 Java教学中教师采用“双备”策略 充分备课是上好课的前提,提高课堂教学质量和效果,首先要抓好备课这一环。Java教学中我们采用“双备”策略。老师的备课分两步走,第一步是“备知识”;第二步是“备学生”。 1.1“备知识” “备知识”是每位老师上课前必做的工作,包括教学目标,教学计划等。首先老师要给Java课程确定目标,能够向学生介绍本门课与生活实际联系,学习本门课程的用途,掌握了这门课程后学生能干什么,具体到以后参加工作,能哪个工作岗位上发展,让学生有一个初步的定位;其次,老师应该对整本书的课时分配有个计划,并能够把各个章节的联系连贯性备下来,以方便授课当中,让学生对各个章节有个大体的认识;最后,针对Java的知识老师要牢固掌握。 1.2“备学生” 一般学校开设J a v a课程都是在大二、大三,学生有了一定的开发基础,这个时候首先要认识学生的基础,以备授课中,哪些详细讲解,哪些跳过;其次,将“案例教学”引入到教学当中,提高学生的兴趣;最后,针对不同层次的学生,布置难度不同的任务,培养学生的自主学习能力。 2 Java教学中让学生坚持“步步为营”策略 Java教学中采用分步策略,掌握一门语言,不是你掌握语法多么好,能读懂行代码的能力,而是你能够掌握这门语言的核心思想,能够运用到实际的编程当中,真正做到学以致用。 2.1 确定学习目标 充分对学生强调,作为一名计算机专业的学生,学生自己要给自己定一个目标,而不是简单的通过老师检查和考试,有目标才有动力 2.2 熟练掌握开发工具的用法 学生首先要学会编译Java程序,学习J a v a基础的开发平台,即J 2 S D K,简称J D K,那第一步要掌握的是安装J D K,配置两个环境变量,在D O S下将“H e l l o Word”程序运行成功,基本的DOS下运行学好,再去学习其他的集成开发工具 一个好的开发环境能为学生的学习带来方便,但也会屏蔽具体的实现过程和进行代码隐藏.在开发工具选用上要注重几条原则:一是由易到难先选用使用免费的、较为简单开发工具。随着学习的深入可以过渡为Eclipse、Jbuilder、Netbeans这样集成度高,功能强的开发环境中,这样学生在学习过程就不会因为开发环境的使用困难而降低学习程序设计的兴趣;二是选用主流开源的集成开发环境;三是尽可能选用英文的开发环境以提高学生在英语平台下进行操作的能力,以适应计算机技术人才培养的国际化要求。 2.3 小任务开始,由浅入深 掌握好集成开发环境后,从最简单的“Hello World”开始写起,建立相应的Java项目和类,编译成功,再逐步加大难度,开发游戏、JSP与数据库连接的小型网站等。 3 Java教学中“面向对象思想”编程思维培养 学习一门编程语言,首先是掌握编程思想,找到编程感觉,一旦掌握了编程思想,只要简单了解该语言的语法特点便可触类旁通。 3.1 严格区分面向对象语言与面向过程语言的区别 面向过程的语言,程序中的数据和处理数据的过程分别存储在不同的地方,数据和过程之间没有逻辑或组织上的联系。C语言是面向过程的语言。 面向对象语言的特点在于其封装性、继承性和多态性,具体体现于类与对象。相对传统的面向过程有着明显的优越性。 3.2 培养良好的面向对象编程思维 在日常教学中,要结合具体的实例详细讲解面向对象的概念,让学生理解其思想。一是封装性:封装的基本单元是类,类是数据及其相关操作的封装体,是对象的抽象描述。例如按照同一张图纸可以造出很多具体的小汽车,换成计算机语言就是利用一个汽车类可以创建多个汽车对象。用户在使用一个已定义的类,就不需要了解内部的实际工作流程,只要知道如何通过其对外接口使用它即可。二是继承性:例如汽车燃油的特点,但也有部分汽车改装双燃料汽车,除汽油外还可以使用液化石油气,这种汽车保留原汽车的全部特性,增加了部分功能,是原有汽车的继承。三是多态性:多态使得相同的消息被不同的对象收到时,导致不同的动作,例如,说去运动,不同的人根据爱好不同,有的去游泳,有的去跑步,有的去踢足球,或者其他。 编程思想是在反复的教学、观察、分析、比较、总结中积累的。通过实例讲解对学生采用启发式教学,让学生能够通过自己的理解举出例子,培养学生的分析和设计能力。 4 Java实验实训教学改革策略 实验实训课是Java课程的重要组成部分,学生通过上具体的上机操作,巩固和强化课堂上学习的理论知识。 4.1 强调基础的实验安排 针对随着教学进度安排的实验课可以按照配套的实验教材,每次安排学生单独练习一个知识点。如基本数据类型与控制语句有实验“猜数字”、“回文数”等试验,类与对象有实验“三角形、梯形和圆形的类封装”,多线程有“双线程接力”等,以巩固随堂学习的知识点。 4.2 突出实践能力锻炼的实训安排 采用以项目为引导的实训安排,选一个真实的案例为指导,进行对学生的现场演示,由学员进行分析,提问,沟通。学生通过对该项目的设计,学习和掌握每一环节的基本知识和了解所需的必备能力。在完成项目过程中有针对性地培养学生的独立工作能力、想象力、创新能力以及与人合作沟通的能力。 5 注重培养学生的自学能力和职业素质教育 5.1 培养学生自学能力 Java程序设计涉及知识面广泛,而教学课时相对较少,引导和培养学生的自学能力也是Java教学的重要内容。在教学实践过程中,不仅要强调自学能力的重要性,还应在实践中把方法教给学生: 1)在基础知识打牢的基础上,学习使用Java API文档,Java API文档是最为重要的参考资料,是提升学生自学能力的重要手段。在教学实践中,教师应在介绍类String、ArrayList、GUI编程时介绍Java API文档的使用方法,示范其功效,强调其作用,引导、鼓励学生学会使用它。 2)引导学生学习使用调试工具,掌握一些调试方法在授课过程中,教师所举的程序只需要正确编译就可以正确执行,从而对学生产生了一些误导,忽略了调试工作,甚至根本不知道调试方法。在教学实践中,应该由简单到复杂,通过逐步调试、测试、改进,达到最终效果。在此过程中,既介绍了处理问题的方法,又强化了思维过程,也教授了一些调试、测试方法。 5.2 培养职业素质教育 对于Java教学,职业素质教育首先应该强调团队精神和分工协作能力。在J ava实践教学过程中要强调学习态度、敬业精神、表达能力、团队精神等的非技术素质的培养。同时在教学实践过程中也要注意加强教师与学生之间的沟通以及学生与学生之间协作能力的培养 6 结束语 独立学院计算机教育应在教学实践过程中根据专业发展的需求,有针对性地调整教学目标,重视教学实践环节过程,适时适度地调整好提高学生应用能力的教学策略,注重培养学生的自主学习能力、创新能力和团队协作精神,以及从应用中发现问题、提出问题、分析问题和解决问题的能力——问题求解能力,使培养的学生能与社会需求相吻合,从而满足市场对人才的需求。 摘要:本文从对Java程序设计面向对象的特点分析,根据独立学院学生自身特点,教师应该在教学中应采取的“双备”策略和“步步为营”策略进,需要根据Java语言的特点调整教学目标,提出了先做基础实验后将以项目为指导引入到实验实训教学中的观点,通过项目教学提高学生学习兴趣和自信心,同时在教学中注重学生自学能力、团队合作能力、职业素质能力的培养与提高。通过多策略的结合培养出综合素质好的学生,满足市场人才需求。 关键词:Java程序设计,教学策略,面向对象思维,实验实训教学改革 参考文献 [1]陈红军,耿永军,闫洪亮.《Java程序设计》课程教学改革探讨[J].信息系统工程.2010,19(4):128-130 [2]王毅鹏.软件专业Java课程教学改革实践初探[J].科教文汇.2010,(01):168-169 [3]郭广军.面向应用的《Java程序设计》精品课程教学改革与实践[J].计算机教育.2009(,12):76~79 [4]全成斌,杨士强,赵有健.计算机工程实践教学的改革与探索[J].计算机教育.2010(,20):80-83. [5]马迪芳,宋泾舸,王芳.Java程序设计实用教程[M].北京:清华大学出版社.2004.106 [6]邵奇峰.Java系列课程的教学改革与实践[J].计算机教育.2010,(20):40-43 [7]向模军,刘松青.Java教学的探讨和实践[J].计算机与信息技术.2008(,3):70-73 关键词:Java课程;实践教学;高校;学习兴趣 中图分类号:TP312.2-4 文献标识码:A 文章编号:1007-9599 (2012) 10-0000-02 目前,软件开发企业需要大量的基础的应用人才,很多高校和学生看到了这一机遇,高校开始开设与Java相关的教学课程,很对学生也开始报考学习这些课程,然而,由于目前我国高校Java课程在实际教学中存在着一定的问题,这就在一定程度上使得Java课程教学的效果不理想,从而在一定程度上使得学生不能满足软件开发企业的要求,使得学生在毕业后很难顺利地就业,有的学生则到了工作岗位也很难胜任自己的工作,因此,作为高校和教师,我们有必要对Java课程的教学进行研究,不断地提高Java课程的教学效果,只有这样,我们才能为软件开发企业培养出合格的人才,学生毕业后才能顺利地踏上工作岗位,顺利地进入社会,为社会的和谐发展贡献自己的一份力量。 一、Java课程在实际教学中所存在的问题 (一)学生害怕学习Java 通过调查研究,我们发现学生都说Java课程很难,这在一定程度上使得他们害怕学习Java。在学习Java之前,高校一般都为学生开始C语言课程,因此,对于Java语法级别的学习,学生则相对来说感到比较容易。然而,与C语言不同,Java是面向对象的语言,而不是面向过程的语言,这就要求学生要用面向对象的概念进行思考,要用面向对象的概念进行设计,对于大多数的学生来说,这是一种新的体验,这是一种新的挑战。通过调查研究,我们还发现,很多学生不能够很好地理解“面向对象”,他们对于“对象”可以做什么而感到困惑,对于“对象”怎么做感到困惑,而且除了要求设计者要具有很强的逻辑思维能力,要求设计者的思路要清晰以外,程序设计还要求设计者要不断地自我学习,要能够适应现代编程技术的变化,这些都对学生的学习造成了一定的压力,从而使得学生在一定程度上害怕学习Java。 (二)学生对Java技术理解不够深 目前,Eclipse、NetBeans、JBator等是较为流行的Java集发环境,它们各自有自己的优点,同时,他们也各自有自己的缺点。作为教师,我们在选择编程环境的过程中,要根据不同的讲授对象来选择与他们相应的编程环境,而不能统一用一种编程环境。比如,对于非计算机专业的学生来说,我们就不应该选择基于图形用于界面的框架,如果選择了这样的一种框架,那么,会在一定程度上使得学生忽视了对Java语言本身的理解,使得他们忽视了对Java语言本身的学习,相反,则会使他们将大部分的精力花在对框架结构额理解上,使他们将大部分的精力花在对框架结构的使用上。当然,这会使得学生相对来说擅长整合,擅长快速开发,但是,这会使得学生对系统的理解比较薄弱,在一定程度上使得他们缺乏自主分析问题的能力,使得他们缺乏解决问题的能力。 (三)实践教学不够,学生动手能力不强 通过调查研究,我们发现,目前很多高校的教师在讲授Java课程时,过于重视语法,他们相对地忽视了实践教学,这就在一定程度上使得学生的动手能力不强。教授语言的课程的目的是让学生学会用计算机解决问题的思考方法,是培养学生的实际编程能力,而不是仅仅让学生掌握好相关的基础知识。然而,有些教师在授课的过程中,仅仅注重语言的讲解,他们忽视了培养学生用计算机解决问题的思考方法,忽视了培养学生的实际编程能力。也就是说,教师在授课的过程中,忽视了实践教学,没有给学生足够的实际锻炼的机会,这就使得他们缺乏实际动手的能力,缺乏解决实际问题的能力,达不到学习的实际目的。 二、政策建议 (一)注重训练编程思想 要想完全掌握一种编程语言,我们应该首先掌握相关的编程思想,如果我们掌握了相关的编程思想,那么,只要我们简单的了解了该语言的语法特点,我们便可以触类旁通,完全掌握该语言。编程思想是在反复的教学、观察、分析、比较和总结中积累的。逻辑思维能力对与编程思路很重要,也就是说,如果要想有一个好的编程思路,那么,我们就应该要具有较强的逻辑思维能力。因此,在日常的教学中,教师不应该仅仅教授学生相关的基础知识,同时,教师还应该要注重培养学生的逻辑思维能力,培养学生面向对象的分析能力,培养学生面向对象的设计能力,只有这样,才能最大限度地让学生掌握好Java课程,才能为软件企业培养出合格的人才,从而让学生毕业后顺利地走入社会,踏上工作岗位。 (二)采用案例教学 案例教学是一种对真实项目的模拟,是一种对真实项目的仿真。对于程序设计课程来说,如果我们只是一味地讲解一些抽象的话,一味地讲解一些难懂的概念,一味地讲解一些难懂的语言,而不在授课的过程中采用相关的案例,那么,教学过程就会显得枯燥无味,同时,还会在一定程度上使得学生对所讲授的知识感到困惑,不能很好地理解和掌握所讲授的知识。因此,在Java课程教学中,作为教师,我们应该改变传统的教育方式,尽量地多采用相关的案例,只有这样,我们才能让学生更好地理解和掌握我们所讲授的知识,同时,运用案例,我们还可以向学生提出相关的问题,并让学生针对所提出的问题,发表自己的看法,这样,不仅可以让我们了解学生对于所讲授知识的掌握程度,同时,还可以在一定程度上提高学生学习的兴趣,让学生获取全面的知识。 (三)采用多媒体教学 多媒体教学是现代化的一种教学手段,其会使得所讲授的知识更加的形象,更加生动。对于大多数学生来说,Java课程过于抽象,内容比较枯燥,如果在授课的过程中,我们还是采用传统的教学方法,那么,学生的学习兴趣就相对较低,有的学生甚至会产生厌学的情绪,从而使得他们的学习效果较差。所以,作为教师,在授课的过程中,我们应该利用现代多媒体技术,制作相关的课件来辅助教学,这样,就会在一定程度上提高学生学习的兴趣,同时,还会使得学生对于所讲授的知识有一个比较深的印象,利于学生掌握,利于学生理解。此外,通过运用现代多媒体技术,我们还可以进行相关的演示,这样,对于一些难于理解的知识,学生可以通过演示来更好地理解他们,从而掌握他们,这在一定程度上提高了教学效果。 (四)注重实践模拟 培养学生分析问题的能力,培养学生解决问题的能力是程序设计语言的教学目的,只有学生具备了分析问题的能力,具备了解决问题的能力,学生才能在一定程度上具备项目开发的能力,只有学生具备了项目开发的能力,学生才能满足软件企业的需求。实践是实现这一目的的最有效的方法,实践是对所学内容的综合运用,是对所学内容的巩固提高,通过实践,不仅可以使学生很好地巩固前面所到的知识,而且,其还能让学生自己动手去完成相关的模块,这在一定程度上使得学生对于开发项目的基本流程有了一个教授的了解,从而为日后从事Java领域的开发工作打好了一定的基础。在理论教授结束后,我们可以紧接着为学生安排上机实习,这样不仅可以使学生对于所学的知识得到了巩固,得到了提高,同时,其还在一定程度上使得学生的实际操作能力也得到了相应地提高。作为教师,我们还应该根据学生的实际情况,给他们布置一些相应地能够提高他们动手能力的课后练习及其课后实训课题,给他们布置一些相应地能够提高他们创新能力的课后练习及其课后实训课题,让学生自己动手去完成一些相应的项目,这样,一方面可以使得学生获得一定的成就感,使得学生获得一定的自信心,另一方面,其还在一定程度上发挥了学生的主动性,在一定程度上发挥了学生的创造性,从而提高了学生独立思考的问题,提高了学生分析问题的能力,提高了学生解决问題的能力。 (五)给学生充分的自由,建立开放式课堂 在Java课堂教学的过程中,作为教师,我们应该充分调动学生的主动性,我们应该意识到学生是学习的主体,充分考虑学生的学习基础,充分考虑学生的学习需求,给学生充分的自由空间,我们应该利用一切可以利用的条件,为学生创造良好的学习环境,为学生创造良好的学习条件,例如,我们可以利用BBS平台,利用及时交流工具,利用开放的实验室等与学生进行交流,同时也让学生与学生之间进行交流,这样不仅可以提高学生学习的主动性,而且还可以让学生通过交流发现自己的不足,通过交流发现他人的长处,让教师及时地掌握学生对所讲授知识的掌握程度等等,这些都在一定程度上提高了教学效果。 参考文献: [1]刘旭红,佟俐鹃.《面向对象程序设计》双语教学的探索与实践[J].教育理论与实践,2007年S1期 [2]王先耀.基于Windows 32位平台基础上面向对象的程序设计及开发工具[A].加入WTO和中国科技与可持续发展——挑战与机遇、责任和对策(下册)[C],2002年 [3]向模军,刘松青.Java教学的探讨和实践[J].计算机与信息技术,2008年03期 [4]王健,高忠泽,苏秀苹.基于Game理论的交流接触器电磁系统多目标优化设计的软件实现[A].中国电工技术学会低压电器专业委员会第十一届学术年会论文集[C],2002年 [5]姜海红.浅谈JAVA教学心得[J].黑龙江科技信息,2009年08期 [作者简介] 题 目:指导老师:姓 名:专 业:班 级:日 期:课程设计报告 目 录 一、系统总体设计.......................................1 (一)设计目标及完成功能..............................1 (二)系统结构设计...................................1 二、数据库设计........................................1 三、详细设计..........................................1(一)界面设计........................................1(二)系统设计........................................2(三)关键技术及算法..................................2 四、测试..............................................2 五、安装使用说明.......................................2 总结(体会)..........................................2 参考文献:............................................2 《Java语言程序设计》课程设计报告 一、系统总体设计 (一)设计目标及完成功能 此部分可以包括如下内容: 1.窗口功能说明:设计了几个窗口,分别实现什么功能.2.菜单栏或工具栏说明:如果设计了菜单或工具栏,分别说明包括哪些项及其各自实现什么操作.…… (二)系统结构设计 说明:要绘出系统结构图 二、数据库设计 必须包含以下内容:E-R图(说明所有实体及其属性)、表结构列表(字段名、类型、主键、备注等)。 没有用到数据库的不用写此部分 三、详细设计 (一)界面设计 界面抓图,图要有编号和标题(格式:图1 主界面图),位于图的下方居中对齐。 《Java语言程序设计》课程设计报告 (二)系统设计 1.共设计了几个类或接口,是否有继承关系,各实现什么功能,绘图(列表)说明。 2.列表说明各类的方法及其功能。 (三)关键技术及算法 使用的主要算法分析、关键技术说明。如数据库连接技术、加密解密算法等。 四、测试 五、安装使用说明 1.系统配置说明。是否需要配置数据源或安装补丁包、导入数据库等。 2.登录的用户名、密码。3.其他特殊说明。 总结(体会) (谈谈本次课程设计的心得体会) 参考文献: [1] 窦万峰.软件工程方法与实践[M].机械工业出版社,2009 [2] 李兆锋,张得生.Java Web项目开发案例精粹[M].电子工业出版社,2010 [3] 沈泽刚,秦玉平.Java Web编程技术[M].清华大学出版社,2009 《Java语言程序设计》课程设计报告 包括书籍、网站、论坛等。 说明:(以下内容作为要求) 正文部分一律用小四号字,宋体,1.5倍行距。一级大标题黑体四号字靠左,加粗。二级大标题黑体四号靠左,不加粗。 参考文献: 一、课程设计的目的 为了进一步巩固java程序设计课程所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了一周的Java程序设计课程设计。 通过此次课程设计,巩固所学java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 二、课程设计的基本要求 1、明确题目要求,进行需求分析; 2、进行功能设计,编写设计说明; 3、进行程序设计与调试; 4、对设计过程进行系统的总结; 5、界面美观大方; 6、完成设计报告 7、课程设计建议在Editplus +JDK、JCreator +JDK、myeclipse平台上开发、调试。 8、Java源程序应加上详尽的注释语句,对所设计的类、属性、方法说明其用途,对方法的调用说明其用意和使用参数的原因。特别是有深刻理解、有独特见解的地方,用注释语句加以说明。 三、课程设计的主要内容 利用学到的编程知识和编程技巧,通过具体项目的分析、设计和开发,掌握开发Java大型软件项目过程中所需要的软件技术并熟悉软件。 可以以小组为单位,每组1至2名学生,在教师的指导下,每组完成一个题目。题目可由下面提供的选题中选择或学生自选经教师审核后方可。该组每个同学承担题目的不同部分,每位同学的课程设计报告必需独立完成。题目类型大致分配如下: 1、网络通讯类,编制网络聊天(Chat)程序,以下简称“网络”类。 2、图形界面Application类,编制类似计算器、MP3播放器、围棋打谱,斗地主、潜艇大战、挖地雷、迷宫等功能单一的程序,以下简称“图形 ”类。 3、通讯类,使用Socket通讯完成信息通讯,比如QQ 4、数据处理类,编制考试系统、出题系统、查询系统、学生学籍、课程成绩、图书编目、仓库货物等数据录入查询程序,以下简称“数据”类。 5、其它类型,自选题目,须经老师同意。 四、主要技术关键的分析、解决、方案比较 以下是可以参考的课程设计可能包含的相关知识: 1、Java核心编程J2SE: 面向对象技术 Java程序运行机制 开发环境的安装和配置 Java语言基础和重点API Java程序异常的处理 I/O、控制台程序开发 Swing程序开发 Socket通讯 2、数据库技术: 关系型数据库原理 SQL数据查询语言 MS SQL Server使用方法 数据库中对象的建立与使用 Java数据库编程(JDBC) 五、课程设计考核方式与标准 采用上机情况、程序质量、实习报告相结合的考核形式: 1、上机情况 包括出勤情况、调试程序时表现。 2、程序质量与创新能力 最终完成的程序设计的工作量、质量、难易程度。 3、课程设计报告 报告的格式与内容。 六、参考题目及要求: 1、多媒体播放器程序的设计与实现 目的:利用java开发一个支持mp3、wma、wmv、avi、mpg等不同音频、视频格式的多媒体播放器。通过课程设计掌握多媒体编程的基本原理。任务: 编程实现一个可支持多种音视频格式的多媒体播放器,其基本功能包括媒体播放、音量调节、播放进度选择、暂停、停止以及歌曲信息的查询与添加等; 2、带格式的文本编辑器 功能参考word软件 3、学生信息(包括成绩)管理系统 要求: 使用图形用户界面 用数据库建立1或2个学生信息表。(不限使用哪种数据库)能连接数据库并实现查询、增、删、改等功能。 4、期刊资料信息管理系统 要求: 使用图形用户界面 用数据库建立1或2个图书信息表。(不限使用哪种数据库)能连接数据库并实现查询、增、删、改等功能。借阅记录等信息 5、聊天小程序QQ 要求:使用图形用户界面。能实现一个聊天室中多人聊天。可以两人私聊。提示:使用socket通信 6、ATM柜员机模拟程序 要求:使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行: 1)查询余额:初始余额为10000元 2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 3)ATM存款:不能出现负存款。 4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 7、超市收银系统 要求:使用图形用户界面。 由收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等。从数据库中取出有关价格信息,再把这些信息返回给收银台。同时把该收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库存储以供查询。 另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息。如果一个未持卡顾客一次购物满200元,可为其发放一张会员卡,以后在该商场购物可向9折优惠。 8、网络监听程序 要求:使用图形用户界面。 有服务器和客户端,服务器监听客户端的登陆。即:如果A客户端登陆服务器,则服务器界面上的A字母对应的红灯变成绿色。 绿灯表示连接,红灯表示断线。提示:socket的监听方法 9、全球通计费程序 要求:使用图形用户界面。 使用真实的全球通资费标准,模拟统计一个特定号码的一个月的实时话费。能根据输入实现各种用户的话费的计算并显示月实时帐单。 提示:使用接口和多个子类实现分别表示金卡、银卡等各种套餐的话费计算。 10.学生机房上网计费系统 要求: socket通讯 11.电子英汉词典 要求: 能够编辑词典库中的信息 能够实现英译汉,汉译英。(要考虑一词多义) 12.加密与解密 要求:采用图形用户界面 1)给定任意一个文本文件,进行加密,生成另一个文件。2)对加密后的文件还原。3)图像水印的添加以及还原 13.小游戏 要求:。 程序随机产生20—50根火柴,由人与计算机轮流拿,每次拿的数量不超过3根,拿到最后一根为胜。(使用图形界面) 14.敏感词汇分析 要求: 任意选择一个文本文件,分析该文件,如果存在敏感词汇(这些词汇保存在sentive.txt文件中,每个词占一行),报告每个词出现的次数。 15、猜数字游戏 要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。 要求提交Application和Applet两个版本的程序。 16、小学算术运算测试程序 要求:制作一个可供小学数学运算程序:10以内加减法,能根据输入题数出题,判断做题是否正确,最后计算分数。 要求提交Application和Applet两个版本的程序。 17、模拟画图 要求:模拟Windows中的画图程序,实现图形图像的编辑、修改、保存等功能。模拟时钟 要求:通过多线程技术,重绘界面,界面包括表盘和指针。并用数字表显示时间。实现要点:多线程技术,图形的绘制。 18、打字训练测试软件 要求:设计一个英文打字测试软件。从文件中调入英文录入材料,最后可以给出错误率,平均录入速度。 19、用java开发一个小型数据库管理系统,比如Access 在界面中输入SQL语句,可以完成数据可的相关功能 20、学生宿舍管理系统 数据库 21、电话号码查询系统,ip地址、手机归属地查询 要求:有电话录入,修改,增加,删除,按姓名查询,按电话号码查询,按部门查询,按部门显示,显示所有电话号码信息,打印等功能。 22、同学录管理系统() 要求信息的录入、查询、删除、修改等一列功能。 22、购物车子系统 要求:使用图形用户界面。当输入给定的顾客编号和密码(初始卡号和密码为123456)时,系统能进入购物车子系统,顾客可以按照以下规则进行: 查询自己购物车中商品信息; 修改 删除物品 数据库库存管理 23、火车票管理系统 要求: socket通讯,多线程 服务器端数据库存放火车票信息 客户端(窗口)卖票,退票 24、利用Socket通讯模拟学生食堂卖饭系统 账户的管理,充值管理,售饭管理 启动两个客户端(窗口),模拟售饭过程 25、为一个超市设计一个货物管理程序。 要求: 进货库:货号,货名,型号 ,进货量,进货价,经办人,销售库:货号,销售量,售价,利润。 存库: 货号,库存量。 二 包含功能: 1)在程序中初始化库存库,销售库,及进货库.2)可提供菜单,供随时添加,修改,删除,查找库中信息.(具体货物及编号等自编),在设计时应尽量考虑全面,比如查找就可以按照货名或者货号,经办人等来查找。 3)可自动计算利润等字段。可以统计总利润。 4)可随时根据进货库调整库存库。 5)可随时根据销售库调整库存库。 6.)可根据要求核对库中内容,如数量是否一致等。 7.)可根据销售情况统计出销售排行榜。 8.)自行设计的其他功能。 【java课程整体教学设计】相关文章: java课程设计题目09-21 java课程设计选题09-21 java课程设计题目106-03 java课程设计学生信息06-19 java课程设计报告小组06-20 Java技术综合课程设计论文04-29 java课程设计管理系统06-19 java课程设计人事管理06-20 java课程设计心得体会06-25 java课程设计带源代码06-20篇2:java课程整体教学设计
篇3:java课程整体教学设计
篇4:高校Java课程教学浅析
篇5:java课程设计报告
篇6:JAVA课程设计题目