java课程设计学生信息
第一篇:java课程设计学生信息
大学JAVA课程设计——学生信息管理系统
沈阳理工大学课程设计
沈阳理工大学课程设计
摘要
Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。本设计可以帮助同学掌握和应运所学的面向对象程序设计学生学籍信息管理系统的编程内容,培养同学们建立对象模型,处理对象和对象集关系和对图形用回界面设计编程以及文件和流的编程问题的能力,训练同学为解决实际问题而创建较完整的简单面向对象和管理系统编程应运程序的独立编程能力.本设计是一个常见的学生学籍管理系统应运程序.
系统实现的功能: 界面操作实现学生学籍信息的添加、删除、查询、修改功能,在文本文件中的的信息的动态处理。
关键词:
学生学籍管理系统;图形用户界面设计;文件和流;java
I
沈阳理工大学课程设计
目 录
一、课程设计的目的与意义 .......................................................................................... 1
1.目的 .......................................................... 1 2.意义 .......................................................... 1
二、需求分析 .......................................................................................................................... 1
1. 学生学籍管理系统主界面模块 ................................ 1 2. 录入学生基本信息模块 ...................................... 1 3. 修改学生基本信息模板 ...................................... 1 3. 查询学生基本信息模板 ...................................... 1 4. 删除学生基本信息模板 ...................................... 1
三、分案设计 .......................................................................................................................... 3
1. 定义四个Panel面板 ...................................... 3
四、方案的实施 ...................................................................................................... 3
五、心得体会 ......................................................................................................... 15
六、参考文献 ......................................................................................................... 16
II
沈阳理工大学课程设计
一、课程设计的目的与意义
目的:深入理解java语言的语法规则及其优势,掌握类与方法的构造方法,掌 握基于java的各种操作的实现方法,训练对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。在实践中培养独立分析问题和解决问题的作风和能力。
意义:熟练运用java语言、基本构造方法和算法的基础知识,独立编制一个具有中等难度的、解决实际应用问题的应用程序。通过题意分析、选择类结构、算法设计、编制程序、调试程序、软件测试、结果分析、撰写课程设计报告等环节完成软件设计的全过程,不断地完善程序以提高程序的性能。
二、需求分析
该学生学籍管理系统的所有功能均在一个Frame窗体中实现。 1.学生学籍管理系统主界面模块:
采用Frame窗体来设置欢迎界面包括背景图片及字幕(可以设计成滚动字幕效果),左上方的菜单条设计成下拉式。包括“录入学生基本信息”、“修改学生基本信息”、“删除学生基本信息”、“查询学生基本信息”和“退出系统”五项菜单项。 2.录入学生基本信息模块:
采用Panel面板来设置该部分内容信息并采用方位布局(边缘布局)和Box轻量级组件来设置“学号”、“姓名”、“性别”、“专业”、“年级”、“出生”,并在该面板中添加了“录入”和“重置”两个按钮进行监听,最后将该面板加入到Frame窗体中去。 3.修改学生基本信息模板:
采用Panel面板来设置该部分内容信息,同样是采用方位布局及Box组件来设置相关信息,并在学号旁设置了“开始修改”按钮。在面板南部方位添加了“确定修改”和“重置”两按钮进行监听。 4.查询学生基本信息模板:
采用Panel面板来设置该部分内容信息,并将该面板加入到主窗体中去,采用边缘布局进行方位设置,在上方加入“查询”按钮进行监听。
5.删除学生基本信息模板:
也是采用Panel面板进行设置相关内容,并用边缘布局进行布局,并在上方添加“确定”按钮,在下方添加“确定删除”按钮实现监听。
三、模块设计
定义四个Panel面板
1.定义Reg(录入学生基本信息)面板
采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“录入学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用
1
沈阳理工大学课程设计
createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后在面板的South方位设置“录入”与“重置”两按钮。最后实现与数据库的桥接,能够将从文本框获得的信息存储到数据库中去。
2.定义Search(查询学生基本信息)面板
该部分同样采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“查询学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一个“查询”按钮。并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去。
3.定义Modify(修改学生基本信息)面板
该部分同样也是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。并在 “学号”该文本框后添加一个“开始修改”按钮用来监听。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,并将修改后的信息存储到数据库中去。
4.定义Delete(删除学生基本信息)面板
该部分还是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一“确定”按钮实现监听。并将其所有文本框和标签加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间
2
沈阳理工大学课程设计
具有某一空间量。并在 “学号”该文本框后添加一个“开始修改”按钮用来监听。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量,还在本面板的South方位添加“确定删除”按钮。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,删除后同时在数据库中也删除该信息并保存该操作。
四、方案的实施
1、学生信息管理系统的登录
学生信息管理系统可由管理员和学生两种身份的人使用。管理员和学生身份登录所能操作的功能有很大的区别。系统初始化一个系统管理员,登录名:admin 密码:admin 学生登录系统的登录名为学号,密码也为学号(如:10001),登录后可以修改密码。
登录界面
登录系统后的界面
3
沈阳理工大学课程设计
注册学生信息界面
4
沈阳理工大学课程设计
修改学生信息界面
查询学生信息界面
5
沈阳理工大学课程设计
删除学生信息界面
6
沈阳理工大学课程设计
1 程序类的设计
DeleteListener.java:删除监听 JTMouseListener.java:树状视图 LoginListener.java:登陆监听 ResetListener.java:重置监听 SaveListener.java:保存监听
SearchAllListener.java:搜索所有学生信息 SearchDListener.java:搜索一个学生信息 SearchListener.java:搜索一个学生信息 SearchRListener.java:搜索一个学生信息 SubmitListener.java:提交信息监听
2 系统的使用说明及环境配置
学生信息管理系统提供了管理员和学生这两个角色登录系统,管理员通过用户名:admin 密码:admin 登录系统后可以进行相应的操作。学生通过以自己的学号(如10001)作为用户名和密码登录系统后进行相应的学生权限范围内的操作。 数据库:Mysql 连接数据库的登录名:root 密码:zfz 代码:
DeleteListener.java:删除监听 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton; import javax.swing.JOptionPane;
import manager.dao.JdbcIcpCURD; import manager.ui.conponent.DeletePanel;
public class DeleteListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton jb=(JButton) e.getSource();
DeletePanel dp=(DeletePanel) jb.getParent();
String xuehao=dp.xuehaoFd.getText();
String msg= "你确定要删除学号为"+xuehao+"的学生信息么?";
int i=JOptionPane.showConfirmDialog(dp,msg,"提",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
if(i==0){
JdbcIcpCURD curd=new JdbcIcpCURD();
boolean b=curd.deleteByXuehao(Integer.parseInt(xuehao));
if(b){
dp.errorLb.setText("删除成功");
}
else{
dp.errorLb.setText("删除失败");
}
}
return; }
7
示信息
沈阳理工大学课程设计
} JTMouseListener.java:树状视图 package manager.ui.listener;
import java.awt.CardLayout; import java.awt.Component; import java.awt.event.MouseEvent; import java.awt.event.MouseListener;
import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath;
import manager.ui.conponent.MainFrame; import manager.ui.conponent.PLeft;
public class JTMouseListener implements MouseListener {
@Override public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub JTree jt=(JTree) e.getSource(); PLeft p=(PLeft) jt.getParent(); MainFrame f=(MainFrame) p.getParent().getParent().getParent().getParent(); TreePath path = jt.getPathForLocation(e.getX(), e.getY()); if(path==null){ return; } DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); String s=node.toString(); CardLayout cl=f.getPright().getLayout(); if(s.equals("注册学生")){ cl.show(f.getPright(), "register"); } if(s.equals("修改学生信息")){ cl.show(f.getPright(), "modify"); } if(s.equals("查询学生信息")){ cl.show(f.getPright(), "search"); } if(s.equals("删除学生信息")){ cl.show(f.getPright(), "delete"); } if(s.equals("学生信息管理")){ cl.show(f.getPright(), "welcom"); } }
@Override public void mouseEntered(MouseEvent e) {
8
沈阳理工大学课程设计
} } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } // TODO Auto-generated method stub LoginListener.java:登陆监听
package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton; import javax.swing.JOptionPane;
import manager.ui.conponent.Login; import manager.ui.conponent.MainFrame;
public class LoginListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) {
JButton bt=(JButton) e.getSource();
Login frame=(Login) bt.getParent().getParent().getParent().getParent();
String username=frame.usernameTa.getText().trim();
String password=frame.passwordTa.getText().trim();
if(username!=null||password!=null){
if("admin".equals(username)&&"123".equals(password)){
new MainFrame().setVisible(true);
frame.dispose();
}
else{
frame.messageLb.setText("用户名或密码错误");
}
}
9
沈阳理工大学课程设计
else{
frame.messageLb.setText("用户名或密码错误");
} } } ResetListener.java:重置监听 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.ui.conponent.RegPanel;
public class ResetListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) { JButton jb=(JButton) e.getSource(); RegPanel jp=(RegPanel) jb.getParent(); jp.xuehaoFd.setText(""); jp.nameFd.setText(""); jp.addressFd.setText(""); } } SaveListener.java:保存监听 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD; import manager.domain.Student; import manager.ui.conponent.ModifyPanel;
public class SaveListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) {
JButton jb=(JButton) e.getSource();
ModifyPanel mp=(ModifyPanel) jb.getParent();
String xuehao=mp.xuehaoTf.getText().trim();
String name=mp.nameTf.getText().trim();
String gender=mp.genderTf.getText().trim();
String address=mp.addressTf.getText().trim();
String oldXuehao=mp.xuehaoFd.getText().trim();
if(oldXuehao==null||xuehao.equals("")){
10
沈阳理工大学课程设计
}
} oldXuehao=xuehao; } if(xuehao==null||xuehao.equals("")){ mp.errorLb.setText("请输入修改后的学号..."); return; } if(name==null||name.equals("")){ mp.errorLb.setText("请输入修改后的姓名..."); return; } if(gender==null||gender.equals("")){ mp.errorLb.setText("请输入修改后的性别..."); return; } if(address==null||address.equals("")){ mp.errorLb.setText("请输入修改后的地址..."); return; } Student stu=new Student(); stu.setXuehao(Integer.parseInt(xuehao)); stu.setName(name); stu.setGender(gender); stu.setAddress(address); int old=Integer.parseInt(oldXuehao); JdbcIcpCURD curd=new JdbcIcpCURD(); if(curd.modify(stu, old)){ mp.errorLb.setText("修改成功..."); }
SearchAllListener.java:搜索所有学生信息 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector;
import javax.swing.JButton; import javax.swing.JTextArea;
import manager.dao.JdbcIcpCURD; import manager.domain.Student; import manager.ui.conponent.SearchPanel;
public class SearchAllListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) {
JButton jb=(JButton) e.getSource();
SearchPanel sp=(SearchPanel) jb.getParent();
11
沈阳理工大学课程设计
}
} JTextArea jt=sp.resultTa; JdbcIcpCURD curd=new JdbcIcpCURD(); Vector students=curd.getAllStudent(); StringBuilder sb=new StringBuilder(); for(Student s:students){ sb.append(" "); sb.append(s.getXuehao()); sb.append(" "); sb.append(s.getName()); sb.append(" "); sb.append(s.getGender()); sb.append(" "); sb.append(s.getAddress()); sb.append(" "); sb.append(s.getRegTime().toString()); sb.append(" "); } jt.setText(sb.toString()); SearchDListener.java:搜索一个学生信息 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD; import manager.domain.Student; import manager.ui.conponent.DeletePanel; import manager.ui.conponent.ModifyPanel; import manager.ui.conponent.SearchPanel;
public class SearchDListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) {
JButton jb=(JButton) e.getSource();
DeletePanel dp=(DeletePanel) jb.getParent();
JdbcIcpCURD curd=new JdbcIcpCURD();
String s=dp.xuehaoFd.getText().trim();
Student stu=curd.searchByXuehao(Integer.parseInt(s));
if(stu==null){
dp.errorLb.setText("没有查询到此学生");
return;
}
dp.xuehaoTf.setText(new Integer(stu.getXuehao()).toString());
dp.nameTf.setText(stu.getName());
dp.genderTf.setText(stu.getGender());
dp.addressTf.setText(stu.getAddress());
12
沈阳理工大学课程设计
} } SearchListener.java:搜索一个学生信息 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD; import manager.domain.Student; import manager.ui.conponent.ModifyPanel;
public class SearchListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) {
JButton jb=(JButton) e.getSource();
ModifyPanel mp=(ModifyPanel) jb.getParent();
String s=mp.xuehaoFd.getText().trim();
if(s==null||s.equals("")){
mp.errorLb.setText("请输入学号..");
return;
}
JdbcIcpCURD curd=new JdbcIcpCURD();
Student stu=curd.searchByXuehao(Integer.parseInt(s));
mp.xuehaoTf.setText(new Integer(stu.getXuehao()).toString());
mp.nameTf.setText(stu.getName());
mp.genderTf.setText(stu.getGender());
mp.addressTf.setText(stu.getAddress()); } } SearchRListener.java:搜索一个学生信息 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton;
import manager.dao.JdbcIcpCURD; import manager.domain.Student; import manager.ui.conponent.ModifyPanel; import manager.ui.conponent.SearchPanel;
public class SearchRListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) {
13
沈阳理工大学课程设计
}
} JButton jb=(JButton) e.getSource(); SearchPanel sp=(SearchPanel) jb.getParent(); JdbcIcpCURD curd=new JdbcIcpCURD(); String s=sp.xuehaoTf.getText().trim(); Student stu=curd.searchByXuehao(Integer.parseInt(s)); if(stu==null){ return; } StringBuilder sb=new StringBuilder(); sb.append(" "); sb.append(stu.getXuehao()); sb.append(" "); sb.append(stu.getName()); sb.append(" "); sb.append(stu.getGender()); sb.append(" "); sb.append(stu.getAddress()); sb.append(" "); sb.append(stu.getRegTime().toString()); sb.append(" "); sp.resultTa.setText(sb.toString());
SubmitListener.java:提交信息监听 package manager.ui.listener;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date;
import javax.swing.JButton; import javax.swing.JLabel;
import manager.dao.JdbcIcpCURD; import manager.domain.Student; import manager.ui.conponent.RegPanel;
public class SubmitListener implements ActionListener {
@Override public void actionPerformed(ActionEvent e) { JButton jb=(JButton) e.getSource(); RegPanel jp=(RegPanel) jb.getParent(); String xuehao=jp.xuehaoFd.getText(); String name=jp.nameFd.getText(); String address=jp.addressFd.getText(); String gender=""; boolean b1=jp.maleRB.isSelected(); boolean b2=jp.femaleRB.isSelected();
14
沈阳理工大学课程设计
if(b1){ } JLabel errorLabel=jp.errorLabel; if(xuehao==null||xuehao.trim().equals("")){ errorLabel.setText("没有填写学号.."); return; } if(name==null||name.trim().equals("")){ errorLabel.setText("没有填写姓名.."); return; } if(address==null|address.trim().equals("")){ errorLabel.setText("没有填写地址.."); return; } if(!(b1||b2)){ errorLabel.setText("请选择性别..."); return; } if(b1){ gender="男"; } if(b2){ gender="女"; } Student stu=new Student(Integer.parseInt(xuehao),name,gender,new Date(System.currentTimeMillis()),address); JdbcIcpCURD curd=new JdbcIcpCURD(); boolean b=curd.insert(stu); if(b){ errorLabel.setText("注册成功!!"); jp.xuehaoFd.setText(""); jp.nameFd.setText(""); jp.addressFd.setText(""); } } }
五、心得体会
我们刚学习java这门课程,对专业的java编程知识并未有深入的学习和探索。但是当我们查找过一些书籍资料后,在不断努力下我们还是把课程设计题目顺利的完成了。通过此次学生学籍管理系统的设计,使我们对java编程语言有了更深层次的了解。不过在编写的过程中也存在一些问题,例如在选择适宜的方法实现修改和删除功能的时候,由于对
15
沈阳理工大学课程设计
数组的理解还不能满足当前的编程需要,并未选择更加简单的数组来处理数据,以至于当删除指定内容后在文本文件中留有空行,从而导致了在接下来的查询异常和再次修改和删除功能无法正常实现,还需人工删除掉文本文件中的空行以保证程序的正常运行。我们也可以选用其他的更加方便的处理方法使得程序更加优化和简洁。
“书山有路勤为径,学海无涯苦作舟”,我们现今所学的知识还远远不够,在今后的学习过程中我们要进一步学习java的更多的知识,此次课程设计不仅锻炼了我们独立思考和团队合作的能力,而且提高了我们动手的能力,我会继续努力学习此课程的。
六、参考文献
1 郑阿奇 编著《Java实用教程(第二版)》电子工业出版社 2 良葛格 编著《Java学习笔记》清华大学出版
16
第二篇:人员信息管理系统 java课程设计
大学人员信息管理系统
1 / 29
目录
目录 ....................................................................................................................................... 1 设计任务书 ............................................................................................................................... 2 课程设计任务 ........................................................................................................................... 2 程序功能实现: ....................................................................................................................... 3 1.程序主体 ............................................................................................................................ 3 2.流程图: ............................................................................................................................ 4 3.模块说明 ............................................................................................................................ 4 3.1、主菜单四个选项 ...................................................................................................... 4 3.
2、教师功能菜单 .......................................................................................................... 5 3.3、学生功能菜单 .......................................................................................................... 5 3.
4、查找菜单 .................................................................................................................. 6 4.源代码及说明 ................................................................................................................. 6 4.1、listStuTea 类 ............................................................................................................ 6 4.
2、Menu 类 ................................................................................................................ 10 4.3、StudnTeach 类 ....................................................................................................... 16 4.
4、Student 类 ............................................................................................................. 19 4.5、Teacher 类 ............................................................................................................. 19 4.
6、Person 类 ............................................................................................................... 20 4.7、lkExecption类 ........................................................................................................ 21 4.
8、MainStuTea类........................................................................................................ 23 5.操作方法和测试结果 ...................................................................................................... 24 5.1.1、教师信息显示 ..................................................................................................... 24 5.1.
2、教师信息添加 ..................................................................................................... 24 5.1.3、教师信息删除 ..................................................................................................... 25 5.1.
4、教师信息查找 ..................................................................................................... 26 5.2、学生菜单实现 ........................................................................................................ 28 6.设计体会 .......................................................................................................................... 28
Java程序设计 大学人员信息管理系统
2 / 29
设计任务书
问题描述:
编写程序对大学里的人员进行管理。大学里的人员主要由学生、教师和在职进修教师(既是学生又是教师)组成,各类人员均有姓名、电话和住址等信息,学生另有所属专业信息,教师另有所在系部、授课信息及工资信息,在职进修教师具备以上各类人员的信息。
要求:
1、设计Person类,保存各类人员均有的姓名、电话和住址等信息。
2、设计Student类或接口,继承Person类,并添加所属专业班级信息。
3、设计Teacher类接口,继承Person类,并添加所在系部信息,授课信息及工资信息。
4、设计StudenTeacher类,继承Student类接口和Teache类接口。其具备以上各类人员信息。
5、把创建的所有StudenTeacher对象按照其所属系部依次组织在一个文件中方便查询、修改、删除及添加等操作。
6、对各类的对象进行信息输入操作,输入信息包括该类对象的所有信息。
7、对各类的对象进行输出操作,显示输出该类对象的所有信息
课程设计任务及设计人
设计任务:
大学人员信息管理系统 课程目的:
1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;
2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;
Java程序设计 大学人员信息管理系统
3 / 29
3、培养学生在项目开发中团队合作精神、创新意识及能力。
课程要求:
1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;
2、系统设计要实用,编程简练,可用,功能全面
3、说明书、流程图要清楚
4、记录设计情况(备查,也为编写设计说明书作好准备);
5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。
6、本设计需要实现Java的面向对象开发运用到的有Java的接口,Java的继承,Java的异常处理,Java类的封装。能够在异常输入的情况下,能正确处理。最后得到正确结果。
程序功能实现:
一、
二、
三、
四、
五、
六、
按照课程的要求实现学生和教师的基本信息的录入。 把输入的教师和学生信息显示出来。
有姓名和专业两种查找方式去分别把老师和学生的信息查找并且显示出来。 删除选项可以删除相应学生和老师信息。
用switch语句实现菜单功能,字符界面做到简洁清晰
异常处理处理错误的输入并且返回错误的提示,更正后填入正确数据。
1.程序主体
1、 设计分析:
1.1、 实体是实现程序思想的主要方式,首先应该分为学生和老师2个入口,分别做查询和信息添加、显示、删除和查找的功能。
1.2、 学生和老师的信息输入考虑要求多名信息考虑用对象数组去实现。但是对象数组的删除不是本学期的内容。且排序麻烦。考虑用其他方式实现信息录入,查阅相关信息发现可以使用list对象实现信息录入和删除。
1.3、 菜单使用switch语句实现菜单功能,菜单的相互调用实现功能的循环。
Java程序设计 大学人员信息管理系统
4 / 29
2.流程图:
3.模块说明
3.1、主菜单四个选项
学生入口:
Java程序设计 大学人员信息管理系统
5 / 29
这个模块与学生功能模块相连。
教师入口:
这个模块与教师功能模块相连
显示全部信息:
这个模块显示所有的老师和学生信息
3.2、教师功能菜单
显示教师信息:
这个模块显示输入的教师信息,如果不存在提示输入信息
添加教师信息:
这个模块添加教师基本信息
删除教师信息:
这个模块按照序号删除教师信息,如果不存在提示信息输入
查找教师信息:
按照姓名和专业查找教师信息
返回上一级菜单: 返回主菜单
3.3、学生功能菜单
显示学生信息:
这个模块显示输入的教师信息,如果不存在提示输入信息
添加学生信息:
这个模块添加教师基本信息
删除学生信息:
这个模块按照序号删除教师信息,如果不存在提示信息输入
查找学生信息:
按照姓名和专业查找学生信息
返回上一级菜单: 返回主菜单
Java程序设计 大学人员信息管理系统
6 / 29
3.4、查找菜单
按照姓名查找:
查找模块,按照姓名查找,如果不存在则提示输入信息。 按照专业查找:
查找模块,按照专业查找,如果不存在则提示输入信息。
返回上一级菜单: 返回主菜单
4.源代码及说明
4.1、listStuTea 类
用来实现学生和教师数据添加、删除、查找的方法
import java.util.*; import lkExecption.LKExecption; public class listStuTea extends StudnTeach{
final int SIZE = 50;//最大学生和教师人数
listStuTea[] st = new listStuTea[SIZE];//学生和老师对象数组 Scanner into = new Scanner(System.in); List list1=new ArrayList(); List list2=new ArrayList(); public int getTeaNumber() //返回教师链表长度 { } public int getStuNumber() //返回学生链表长度 { } public int getNumber() { // TODO Auto-generated method stub return list2.size()+list1.size(); return list2.size(); return list1.size(); Java程序设计 大学人员信息管理系统
7 / 29
} public void FindStuName() {
} public void FindTeaName() {
String tpname; boolean zy = true; StudnTeach point; System.out.println("请输入教师姓名:"); tpname = into.nextLine(); for(int i = 0;i
} point =list1.get(i); if(tpname.equals(point.name)) {
} //break; System.out.println("要查找的姓名存在"); { showTea(i,point); zy = false; //标志位 } String tpname; boolean zy = true; StudnTeach point; System.out.println("请输入学生姓名:"); tpname = into.nextLine(); for(int i = 0;i
} if(zy) System.out.println("没有该学生"); if(getStuNumber()==0) System.out.println("警告!!!学生数据为空请添加数据"); point =list2.get(i); if(tpname.equals(point.name)) {
} System.out.println("要查找的姓名存在"); showStu(i,point); zy = false; Java程序设计 大学人员信息管理系统
8 / 29
if(zy) System.out.println("没有该老师"); if(getTeaNumber()==0) System.out.println("警告!!!老师数据为空请添加数据");
} {
public void FindteaSpec() String tpSpec; boolean zy = true; StudnTeach point; System.out.println("请输入教师专业:"); tpSpec = into.nextLine(); for(int i = 0;i
} if(zy) System.out.println("没有该专业的老师"); if(getTeaNumber()==0) System.out.println("警告!!!老师数据为空请添加数据"); point =list1.get(i); if(tpSpec.equals(point.getteaSpeciality())) { showTea(i,point); zy = false;//标志位 }
} {
public void FindstuSpec() String tpStu; boolean zy = true; StudnTeach point; System.out.println("请输入学生专业:"); tpStu = into.nextLine(); for(int i = 0;i
} if(zy) System.out.println("没有选修该专业的学生"); point =list2.get(i); if(tpStu.equals(point.getstuSpeciality())) { showStu(i,point); zy = false;//标志位 } Java程序设计 大学人员信息管理系统
9 / 29
if(getStuNumber()==0) System.out.println("警告!!!学生数据为空请添加数据"); } public void showStu(int n,StudnTeach point) { point=list2.get(n); System.out.println("学生编号:"+n);
System.out.println("姓名:"+point.name+" 性别:"+point.sex+" 年龄:"+point.age);
System.out.println("电话:"+point.phone); System.out.println("地址:"+point.address); System.out.println("专业:"+point.getstuSpeciality()); System.out.println("班级:"+point.getClassname()); }
public void showTea(int n,StudnTeach point) { point=list1.get(n); System.out.println("教师编号:"+n);
System.out.println("姓名:"+point.name+" 性别:"+point.sex+" 年龄:"+point.age);
System.out.println("电话:"+point.phone); System.out.println("地址:"+point.address); System.out.println("专业:"+point.getteaSpeciality()); System.out.println("工资:"+point.getPay()); }
public void addstu(int n) throws LKExecption {
st[n] = new listStuTea(); st[n].add(); st[n].setClassname(); st[n].setstuSpeciality(); list2.add(st[n]); if(list2.size()!=0) System.out.println("添加学生成功");
}
public void addtea(int n) throws LKExecption {
st[n] = new listStuTea(); st[n].add(); st[n].setteaSpeciality(); Java程序设计 大学人员信息管理系统
10 / 29
}
st[n].setPay(); list1.add(st[n]); if(list1.size()!=0) System.out.println("添加教师成功");
}
public void delTea() {
}
public void delStu() {
} System.out.println("请输入被删的学生编号"); int k =into.nextInt(); if(list2.size()<=k||k<0) System.out.println("删除失败!编号不存在请重新输入!"); else { list2.remove(k); System.out.println("删除成功"); } System.out.println("请输入被删的教师编号"); int k =into.nextInt(); if(list1.size()<=k||k<0) System.out.println("删除失败!编号不存在请重新输入!"); else { list1.remove(k); System.out.println("删除成功"); } 4.2、Menu 类
字符菜单的实现
import java.util.*; import lkExecption.LKExecption; public class Menu {
Scanner into = new Scanner(System.in); int num = 0; List list=new ArrayList(); Java程序设计 大学人员信息管理系统
11 / 29
StudnTeach point = new listStuTea();//遍历指针 public Menu() throws LKExecption{ } public int setIn() {
} void MainMenu() throws LKExecption//主菜单 { System.out.println("================"); System.out.println("1.教师入口"); System.out.println("2.学生入口"); System.out.println("3.显示全部信息"); System.out.println("4.退出管理"); switchMainMenu(); } void FindMenu()//查找菜单 {
} void MenuTea1_1() throws LKExecption//老师菜单 {
System.out.println("----------------"); System.out.println("1.显示教师信息"); System.out.println("2.添加教师信息"); System.out.println("3.删除教师信息"); System.out.println("4.查找教师信息"); System.out.println("5.返回上一级菜单"); System.out.println("----------------"); System.out.println("1.按照姓名查找"); System.out.println("2.按照专业查找"); System.out.println("3.返回上一级菜单"); //switchMainMenu(); int t; String tpNum = null; try{
} catch(NumberFormatException e) { } return t; t = new LKExecption().Num1Execption(tpNum); System.out.println("请输入选项"); tpNum = into.nextLine(); t = Integer.parseInt(tpNum); MainMenu(); Java程序设计 大学人员信息管理系统
12 / 29
} switchMenuTea1_1(); void MenuStu1_1() throws LKExecption//学生菜单 {
} void switchFindStuMenu() throws LKExecption//查找学生菜单 {
} void switchFindTeaMenu() throws LKExecption//查找教师菜单 {
int t; t = setIn(); switch(t) { case 1: int t; t = setIn(); switch(t) { case 1:
} point.FindStuName(); FindMenu(); switchFindStuMenu(); break; point.FindstuSpec(); FindMenu(); switchFindStuMenu(); break; MenuStu1_1(); switchMenuStu1_1(); break; System.out.println("输入错误请重新输入"); switchFindStuMenu(); System.out.println("----------------"); System.out.println("1.显示学生信息"); System.out.println("2.添加学生信息"); System.out.println("3.删除学生信息"); System.out.println("4.查找学生信息"); System.out.println("5.返回上一级菜单"); switchMenuStu1_1(); case 2: case 3: default: Java程序设计 大学人员信息管理系统
13 / 29
} void switchMainMenu() throws LKExecption//主菜单 {
int t; t = setIn(); switch(t) { case 1:
MenuTea1_1();//老师显示菜单
break; MenuStu1_1();//学生显示菜单
break; if(point.getNumber()==0) System.out.println("警告!!!数据为空请添加数据"); else{
} for(int i = 0;i
point.showTea(i,point); point.showStu(i,point); for(int i = 0;i
} point.FindteaSpec(); FindMenu(); switchFindTeaMenu(); break; MenuTea1_1(); switchMenuTea1_1(); break; System.out.println("输入错误请重新输入"); switchFindTeaMenu();
point.FindTeaName(); FindMenu(); switchFindTeaMenu(); break; case 2: case 3: default: case 2: case 3: Java程序设计 大学人员信息管理系统
14 / 29
}
} MainMenu(); break; System.out.println("欢迎再次光临!大学人员信息管理系统!!"); break; System.out.println("输入错误请重新输入"); switchMainMenu(); case 4: default: void switchMenuTea1_1() throws LKExecption {
System.out.println("----------------"); int t; t = setIn(); switch(t) { case 1:
if(point.getTeaNumber()==0) System.out.println("警告!!!教师数据为空请添加数据"); for(int i = 0;i
FindMenu(); switchFindTeaMenu(); break; MainMenu(); break; case 2: case 3: case 4: case 5: Java程序设计 大学人员信息管理系统
15 / 29
}
} default:
} System.out.println("输入错误请重新输入"); switchMenuTea1_1(); void switchMenuStu1_1() throws LKExecption {
} System.out.println("----------------"); int t; t = setIn(); switch(t) { case 1:
} if(point.getStuNumber()==0) System.out.println("警告!!!学生数据为空请添加数据"); for(int i = 0;i
Java程序设计 大学人员信息管理系统
16 / 29
4.3、StudnTeach 类
继承于教师和学生接口实现它们抽象方法,且继承人类属性。
import java.util.*;
import lkExecption.LKExecption; class StudnTeach extends Person implements Student,Teacher{
Scanner into = new Scanner(System.in); float pay = 0;//工资
String classname = null;//班级 String stuSpec = null;//老师专业 String teaSpec = null;//学生专业
void add() throws LKExecption {
}
public void addstu(int n) throws LKExecption{
}
public void addtea(int n) throws LKExecption{
}
public void setPay() {
String tpNum = null; try{ //add();
//setteaSpeciality(); //setPay() ; //add();
//setClassname(); //setstuSpeciality(); setName(); setSex(); setAge(); setPhone (); System.out.println("请输入地址"); address = into.nextLine();
Java程序设计 大学人员信息管理系统
17 / 29
}
} System.out.println("请输入工资:"); tpNum = into.nextLine(); pay = Integer.parseInt(tpNum); catch(NumberFormatException e) { } pay = new LKExecption().Num1Execption(tpNum); public float getPay() {
}
public void setClassname() {
}
public String getClassname() {
}
public void setstuSpeciality() {
}
public String getstuSpeciality() {
}
return stuSpec;
System.out.println("请输入专业:"); stuSpec = into.nextLine();
return classname;
System.out.println("请输入班级:"); classname = into.nextLine();
return pay; Java程序设计 大学人员信息管理系统
public void setteaSpeciality() {
System.out.println("请输入专业:");
teaSpec = into.nextLine();
}
public String getteaSpeciality() {
return teaSpec; }
public void show(boolean b, int num, StudnTeach point) {
}
public void showStu(int num, StudnTeach point) {
}
public void showTea(int num, StudnTeach point) {
}
public int getStuNumber() {
return 0; }
public int getTeaNumber() {
return 0; }
public int getNumber() {
return 0; }
public void delStu() {
} Java程序设计
18 / 29 大学人员信息管理系统
19 / 29
} public void FindteaSpec() { } public void FindTeaName() { } public void FindstuSpec() { } public void FindStuName() { } public void delTea() { }
4.4、Student 类
接口、学生的抽象方法
public interface Student {
} abstract void setstuSpeciality(); abstract String getstuSpeciality(); abstract void setClassname(); abstract String getClassname();
4.5、Teacher 类
接口、教师的抽象方法
public interface Teacher { Java程序设计 大学人员信息管理系统
20 / 29
} abstract void setteaSpeciality(); abstract String getteaSpeciality(); abstract void setPay(); abstract float getPay();
4.6、Person 类
定义人类的基本属性
import java.util.*; import lkExecption.LKExecption; public class Person {
Scanner into = new Scanner(System.in); String name; int phone; String address; String sex; int age; public void setName() {
} public void setSex() throws LKExecption {
} public void setAge() { String tpAge = null; try{ System.out.println("请输入性别:"); sex = into.nextLine(); if(sex.equals("man")||sex.equals("woman")) {} else
} catch(LKExecption lk) { } sex = new LKExecption().sexExecption(sex); throw new LKExecption(); System.out.println("请输入姓名:"); name = into.nextLine(); Java程序设计 大学人员信息管理系统
21 / 29
}
} try{
} catch(NumberFormatException e) { } age = new LKExecption().NumExecption(tpAge); System.out.println("请输入年龄:"); tpAge = into.nextLine(); age = Integer.parseInt(tpAge); public void setPhone () {
} String tpNum = null; try{
} catch(NumberFormatException e) { } phone = new LKExecption().Num1Execption(tpNum); System.out.println("请输入电话号码:"); tpNum = into.nextLine(); phone = Integer.parseInt(tpNum);
4.7、lkExecption类
自定义异常类
package lkExecption; import java.util.Scanner; public class LKExecption extends Exception {
Scanner into = new Scanner(System.in); public String sexExecption(String mg) {
String str; boolean pd = true; do{
System.out.println(mg+" 不是正确的性别,正确的性别为 man 或者 woman"); str = into.next(); Java程序设计 大学人员信息管理系统
22 / 29
} //System.out.println(mg+" 验证");
if(str.equals("man")||str.equals("woman")) { } }while(pd); return str; pd = false; public int NumExecption(String mg) {
String num = null; int tpNum = 0; boolean pd = true; System.out.println(mg+" 请正确的数字或者不在范围内!请重新输入!!"); do{
try{
} catch(NumberFormatException e) { System.out.println(num+" 请正确的数字或者不在范围内!请重新输num = into.nextLine(); tpNum = Integer.parseInt(num); if(tpNum>120||tpNum<0) //范围判断 throw new NumberFormatException(); else pd = false; 入!!");
}
} public String charExecption(String mg) {
final String[] str={"null"};//这里指定 规定字段 boolean pd = true; do{ System.out.println(mg+" 不是正确字段,请输入指定的字段"); mg = into.next(); for(int i =0;i
23 / 29
}
} } }while(pd); return mg; public int Num1Execption(String mg) {
} String num; int tpNum = 0; System.out.println(mg+" 不是数字!请输入数字!!"); do{
try{
} catch(NumberFormatException e) { System.out.println(mg+" 不是数字!请输入数字!!"); } num = into.nextLine(); tpNum = Integer.parseInt(num); break; }while(true); return tpNum; 4.8、MainStuTea类
主函数调用
import lkExecption.LKExecption; public class MainStuTea {
} public static void main(String[] args) throws LKExecption { Menu lk = new Menu(); }
Java程序设计 大学人员信息管理系统
24 / 29
5.操作方法和测试结果 5.1.1、教师信息显示
选择一进入教师信息入口
选择一进入教师信息查看
因为我们没有添加教师信息,所以他要求我们添加教师信息
5.1.2、教师信息添加
选择二进入教师信息添加
Java程序设计 大学人员信息管理系统
25 / 29
教师信息添加成功,如果不是指定字段输入,出现异常则重新输入 如下为添加的信息输入显示
5.1.3、教师信息删除
Java程序设计 大学人员信息管理系统
26 / 29
5.1.4、教师信息查找
专业查找
现在添加三个教师信息,如下显示
首先使用专业查找,我们查找computer专业的
Java程序设计 大学人员信息管理系统
27 / 29
查找其他math专业
查找不存在的专业
姓名查找
再添加一个同名的教师
查找lisi Java程序设计 大学人员信息管理系统
28 / 29
5.2、学生菜单实现
学生信息采取同样测试
6.设计体会
这个课程设计可以的设计心得,可谓十分波折。全部的源代码都出自自己,其中的list排列我们还没有学习。在这里要感谢google感谢baidu。没有他们就没有今天的代码。当然网上只有相似的课题没有相同的代码,list排列经过自己一小时的摸索可以了解了部分的运用,首先写了一个test类来测试这个用法
import java.util.ArrayList; import java.util.LinkedList; import java.util.Iterator; import java.util.List; import java.util.Scanner;
public class test { public static void main(String[] args) {
System.out.println("开始:"); String a = "A", b = "B", c = "C", d = "D", e = "E"; List list = new LinkedList(); list.add(a); list.add(e); list.add(d); Java程序设计 大学人员信息管理系统
29 / 29
list.set(1, b);// 将索引位置为1的对象e修改为对象b list.add(2, c);// 将对象c添加到索引位置为2的位置 list.add(e); list.remove(1); Iterator it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }
System.out.println("结束!"); } } 再想了一下把它添加进了listStuTea对象,全都的代码完成用了一天的时间,在原来想起写500多行的代码几乎是不可能的,但是在这个课程设计中实现了。这个课程设计真的使自己学到了很多的东西。在接口的使用还不是很好的和实际模型很多的结合起来,这是锻炼较少的原因,前期的分析也幼稚的表现了自己在这方面的不足,在层次结构上浪费了较多的时间。 总之在这方面的锻炼还是比较少,我想不管是在以后布置下来的课程设计才去编写代码,这是不可行的,得在平时多多锻炼。
Java程序设计
第三篇:Java程序设计课程设计学生考勤系统
信息与电子工程学院
课程设计报告
课程名称:
姓名: 学号: 班级: 指导老师: 完成时间:
2016年6月 Java程序设计课程设计
学生考勤系统
问题描述:
以班为单位,可以以日期为标识记录每个学生的考勤情况(正常、旷课、请假、迟到、早退)、可以查看某个学生的考勤情况、可以查看全班的考勤情况.
1.需求分析(标题,黑体,小四,段前段后0.5行)
(1)用户需求描述:
学生用户:学生对本系统的主要需求是在线请假以及查看学期内的上课出勤信息。 在线请假中,学生可以随时查看请假的进展情况。另外学生还可以修改本人的密码。
教师用户:任课老师对本系统的主要需求是查看班级信息,查看学生信息。并且在上课前进行点名,管理所教班级学生的上课出勤信息,查看学生上课出勤情况,对学生请假审请进行批准等。另外,教师还可以修改自己的密码。 (2)系统功能划分: 根据用户需求的描述,该考勤管理系统应该具备:在线请假模块,考勤管理模块这两大模块。
在线请假模块:
该模块主要操作用户是由学生,由学生登录并进行请假操作。可以选择请假开始时间,请假结束时间,请假的原因等,最后提交由教师和辅导员进行审核审批,审核通过后学生可以在请假记录里面实时查看请假通过情况。若教师或辅导员不允许该请假,学生可以在请假失败记录里面查看具体原因。
考勤管理模块:
该模块主要由教师登录并进行操作,自己操作界面中修改学生考勤。老师在上课时通过该模块可以对本课程考勤情况进行网上考勤,考勤结果会保存在后台,也可以通过选择导出为E表格,最后方便统计整个学期本课程所有学生的考勤情况。
2.总体设计
功能结构图;
ER图:
数据库设计: 1 数据库需求分析
学生考勤管理系统要实现在线请假、随堂考勤两大子系统,需要了解学生用户、教师用户两类用户的功能模块。然后,据此分析出数据需求。学生表:学生流水号、学生学号、学生名字、性别、宿舍号、联系方式、密码。请假表:请假开始时间、请假结束时间、请假原因、请假天数、审批时间。考勤表:考勤流水号、考勤的学生ID、考勤的课程ID、考勤时间、考勤课次、考勤结果。
3.主要功能的实现
(1)设计的思路: 根据用户需求的描述,该考勤管理系统应该具备:在线请假模块,考勤管理模块这三大模块。
在线请假模块:
该模块主要操作用户是由学生,由学生登录并进行请假操作。可以选择请假开始时间,请假结束时间,请假的原因等,最后提交由教师和辅导员进行审核审批,审核通过后学生可以在请假记录里面实时查看请假通过情况。若教师或辅导员不允许该请假,学生可以在请假失败记录里面查看具体原因。
考勤管理模块:
该模块主要由教师登录并进行操作,自己操作界面中修改学生考勤。老师在上课时通过该模块可以对本课程考勤情况进行网上考勤,考勤结果会保存在后台,也可以通过选择导出为E表格,最后方便统计整个学期本课程所有学生的考勤情况。 用户信息修改模块: 该模块主要操作用户是由学生和老师,由用户登录并进行操作。选择修改用户密码,验证旧的用户密码,输入新的用户密码,并且重复确认输入,点击确定之后,系统修改用户信息并保存。
(2)算法流程图:
(3)UML时序图:
学生输入用户名和密码,系统验证用户名和密码是否正确,如果正确,显示系统主页面。 (4)活动图:
学生登陆系统点击请假申请,然后填写假条信息,填写完成后点击提交,老师审批假条并返回信息给申请者。 (2)程序执行结果
4.小结
课程设计小结:该系统还有较多不完善之处,个人能力也有待进一步的提升。通过这次课程设计,重新掌握了一些以前掌握的不够牢固的知识和一些不懂的方法实现的思路及想法,让我们得到进一步的提高。
第四篇: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发布,
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系统记事本工具基本功能,并且能够创
3 建多个不同的用户和保存图片功能。以下是具体说明: 第一部 登陆界面
(1) 用户名和密码输入文本框,供已注册的用户输入用户名和密码。 (2) 登陆控件,在用户名和密码正确的前提下,进入软件主界面。
(3) 注册控件,点击此按钮,将进入用户创建,创建之后用户名和密码会自动保存在电脑的相应文件中。 第一部分 菜单栏
(1)菜单中有“新健”,“删除”,“显示”,“菜单”,“帮助”五个主菜单。 (2)“新建”有“新建笔记”“新建笔记本”二个子菜单:分别用于创建新的笔记和新的笔记本。
(3)“删除”中有“删除笔记”和“删除笔记本”二个子菜单,和“新建”相对应。
(4)“显示”中可以选择界面的风格,有Metal风格、Windows风格、Motif风格、Nimbus风格;还有界面排版的选择,可以选择水平显示或垂直显示。 (5)“帮助”菜单中有关于笔记本程序的说明,作者等信息。 第二部分 笔记本排列区
显示用户创建的所有笔记本。 第三部分 笔记显示排列区
此处主要显示选中笔记本中的所有笔记,并且可以在此区右击来创建、删除笔记、查看笔记,当然也可以在菜单栏中的“新建”和“删除”菜单中创建和删除笔记。
第四部分 笔记编辑区
此部分为用户设计选择操作和右键操作,可以在笔记中插入图片、更改字体颜色、和插入时间;方便用户进行一系列的编辑操作,增强本记笔记本的用户体验性能。
4 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"));//设置
6 快捷键 "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);
}
3 设为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、笔记本登陆
2 、用户注册
3、菜单栏 a.总菜单
b.新建菜单
8
c.删除菜单
d.显示菜单
e.“菜单”菜单
f.帮助
10 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.程序结构
14 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)
15 {
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<list.length;i++)
deleteFile(path+"/"+list[i].getName());
return (folder.delete()); } }
(2)User.java package common; /**
16 * 处理用户属性
* 为用户创建自己的专有途径
* 如果有了则不创建
*/ 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);
24
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+"");
bw.close();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally{
try {
fw.close();
} catch (IOException e1) {
25
// 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); //
}
}
26
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;
/**************笔记本类型部分声明结束*****************/
27
public LeftPanle(JPanel panel,MainFrame mainFrame) { this.mainFrame=mainFrame; this.panel=panel; //处理第一片11111111111111111111111111 //设置初始界面 显示 所以笔记,排序,回收站的按钮
//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<TOTAL;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);
//处理第二片222222222222222222222 //仅有一个按钮
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中的笔记本,在新建或删除笔记本是需要刷新
并附带刷新右边两个
28 Panel public void update_Left_view() {
book=new File(mainFrame.getUser_path());
book_name=book.list();
if(book.exists())
{
for(int i=0;i<TOTAL;i++)
{
member[i].setText("");
member[i].setIcon(null);
member[i].removeMouseListener(this);
}
for(int i=0;i<book_name.length;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<book_name.length;i++)
{
if(e.getComponent().equals(member[i]))
{
jl=(JLabel)e.getSource();
jl.setForeground(Color.red);
}
else
{
member[i].setForeground(Color.black);
29
// //
// //
}
} //保存当前笔记本的路径 如 ... 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){
30
//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
//存放路径
31 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);
32
} 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; }
33
(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_item.length;i++)//新建笔记
菜单
newNote_menu.add(newNote_item[i]); for(int i=0;i<delete_item.length;i++)//删除笔记 菜单
deliteNote_menu.add(delete_item[i]); for(int i=0;i<show_item.length;i++)//显示菜单
show_menu.add(show_item[i]); for(int i=0;i<help_item.length;i++)//帮助菜单
help_menu.add(help_item[i]); for(int i=0;i<menu_item.length;i++)//菜单 菜单
{
menu_menu.add(menu_item[i]);
if(i==0||i==2)//添加分隔线 将导入和导出框起来
menu_menu.addSeparator(); }
35
//添加事件监听
for(int i=0;i<newNote_item.length;i++)//为新建笔记注册监听
newNote_item[i].addActionListener(this);
for(int i=0;i<delete_item.length;i++)//为删除笔记注册监听
delete_item[i].addActionListener(this);
for(int i=0;i<show_item.length;i++)//为帮助注册监听
show_item[i].addActionListener(this);
for(int i=0;i<help_item.length;i++)//为帮助注册监听
help_item[i].addActionListener(this);
for(int i=0;i<menu_item.length;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;
36
}
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();
//将笔记本路径设为新建笔记本的路径
37 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
38
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 {
39
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;
40
//鼠标右击部分
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<TOTAL;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);
41
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<TOTAL;j++){
items[j].setText("");
items[j].setArmed(false);
items[j].removeMouseListener(this);//避免某个笔记被删除之后还可以被点的情况
}
for(int i=0;i<lists.length;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);
42
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
43
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<lists.length;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<lists.length;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(); //将当前笔记的途径
存到辅助路径中
44
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;
45 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);
46
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();
47
}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);
} } }
48
第五篇:《JAVA语言》课程设计设计
《面向对象程序设计JAVA》课程设计大纲
课程名称:面向对象程序设计JAVA 适用专业:计算机及计算机相关专业
学时数:20(上机实验) 学 分: 1 配套教材:《JAVA语言与面向对象程序设计》印旻 编著 清华大学出版社 大纲编写者:周斌 编写日期:2008.2
一、课程设计目的
1、 课程设计的教学任务是让学生通过动手动脑解决实际问题,是学生学完课程后进行 的一次全面的综合训练,是一个非常重要的教学环节,通过课程设计,使学生经受一次综合动用所学知识,解决实际问题的方法。
2、 使学生掌握使用各种计算机资料和有关参考资料,提高学生的基本设计能力。
3、 培养学生理论联系实际和独立思考的能力,并激发学生的实际开发创造的意识和能力。
二、课程设计要求
1、 利用JAVA进行应用程序的设计。
2、 必须熟悉课程设计的各项内容和要求,明确课程设计的目的、方法和步骤;
3、 设计中必须独立地地完成每一阶段的设计任务,禁止抄袭他人的设计成果;
4、 所设计的程序必须满足实际使用要求,编译出可执行的程序。
5、 要求程序结构简单,功能齐全,使用方便。
三、课程设计内容
课程设计题目:
1、已知银行整存整取存款不同期限的年息利率分别为: 0.63% 期限一年
0.66% 期限二年
年息利率= 0.69% 期限三年 0.75% 期限五年
0.84% 期限八年
要求输入存钱的本金和期限,求到期时能从银行的到的利息与本金的合计。
程序如下:
import java.io.*; public class myWork1 { public static void main(String args[]) { try { int m,n; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.print("请输入金额: "); m=Integer.parseInt(br.readLine()); System.out.print("请输入年限: "); n=Integer.parseInt(br.readLine()); System.out.println(); switch(n) { case 1: System.out.println("得到的总额为 "+m*(1+n*0.0063)); break; case 2: System.out.println("得到的总额为 "+m*(1+0.0066*n)); break; case 3: System.out.println("得到的总额为 "+m*(1+0.0069*n)); break; case 5: System.out.println("得到的总额为 "+m*(1+0.0075*n)); break; case 8: System.out.println("得到的总额为 "+m*(1+0.0084*n)); break; } } catch(IOException e) { System.out.println(e); } } } 截图如下:
2、输入n值,打印边长为n的空心正六边形,其边由“*”组成。
3、编写一个类,这个类同时求出n个学生成绩的最高分、最低分、平均分以及超过平均分的人数,并编写主类完成: (1) 输入n个学生的成绩; (2) 调用此类进行统计; (3) 输出统计结果。
4、编程实现实时动态运行的模拟时钟。 以下题目选做:
5、编程实现约瑟夫问题。8个人站成一圈,从第1个人开始报数,报到5的人出圈,第6个人再从1开始报。依次类推,求出圈的序列。
6、编程实现俄罗斯方块游戏。
说明:可以自行选择其他设计题目
四、编写课程设计报告书
课程设计报告书要求:
1、 文字叙述清楚,结构结构简洁明了,理论正确,程序功能完备。
2、 设计说明书要求文字工整,书写整齐。
3、 附参考资料名称说明。
4、 课程设计报告主要内容: 1) 题目 2) 问题需求分析 3) 总体设计 4) 详细设计
5) 测试数据和调试报告 6) 小结
五、成绩评定方式
根据平时设计完成质量和课程设计报告确定成绩。分优秀、良好、中等、及格、不及格五档。