《 Java 语言程序设计》专业实习任务(二)
一、设计目的:
本次设计是对教材第7章~第17章的总结。涉及到的主要知识点有:GUI设计、事件处理、I/O处理和JDBC。设计的目的在于掌握 Java 的基本原理、设计方法和使用规则;利用Java提供的事务处理机制,合理选择类和类提供的方法,进行应用程序的初步设计。
二、设计题目:
㈠程序 CDInfor.java 完成的功能是: CD 唱片信息管理。
假设有很多唱片,它们的信息都存放在 CDInfor.txt 文件中。文件中每张唱片的信息占一行,信息包括唱片编号、唱片名称、歌手姓名三项内容,信息之间用空格分开。运行界面如下所示。
1. 功能描述
①从文件中读出已有的唱片信息并显示在文本域中;但文本域不能进行输入。
②从文本框中输入需要添加的 CD 唱片的信息。
③当单击“增加”按钮时,将信息以追加 的方式存入到文件中,并且刷新文本域里的内容。
④当单击“取消”按钮时,将正在录入的信息从文本框里清空,不再做任何处理。
2. 题目要求
①完成程序段①~⑤的编写。
②回答问题①~③。
3. 提示信息
① FileWriter 类有一个构造方法如下:
FileWriter ( String filename , Boolean append )
功能:构造一个进行附加的 FileWriter
② FileWriter 类的父类有一个方法如下:
Void write(String str)
功能:写一个字符串
4. 程序清单( Caculate.java )
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;
public class CDInfor extends JFrame implements ActionListener {
// 定义输入输出流对象
// 问题 1: 用 BufferedReader 类定义输入流,是要利用该类的什么功能(方法)?
BufferedReader in;
FileWriter out;
// 定义容器
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel(new GridLayout(4,1));
JPanel jPanel3 = new JPanel();
JPanel jPanel5 = new JPanel();
JPanel jPanel4 = new JPanel();
JPanel jPanel6 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
// 定义组件并初始化
JTextArea jTextArea1 = new JTextArea("",10,25);//10 行, 20 列
GridLayout gridLayout1 = new GridLayout();
JTextField jTextField1 = new JTextField(10); //10 列
JTextField jTextField2 = new JTextField(10); //10 列
JTextField jTextField3 = new JTextField(10); //10 列
JLabel jLabel1 = new JLabel(" 唱片编号: ");
JLabel jLabel2 = new JLabel(" 唱片名称: ");
JLabel jLabel3 = new JLabel(" 歌手姓名: ");
JButton jButton1 = new JButton(" 增加 ");
JButton jButton2 = new JButton(" 取消 ");
String str;
public CDInfor() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}
catch (Exception exception) {
exception.printStackTrace();
}
}
public void jbInit()
{
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
// 加载组件
jButton1.addActionListener(this);
jButton2.addActionListener(this);
// 将文本域放到滚动容器里,当内容多时,可以自动形成滚动条
jTextArea1.setEditable(false);
jScrollPane1.getViewport().add(jTextArea1);
jPanel3.add(jLabel1); jPanel3.add(jTextField1);
jPanel4.add(jLabel2); jPanel4.add(jTextField2);
jPanel5.add(jLabel3); jPanel5.add(jTextField3);
jPanel6.add(jButton1); jPanel6.add(jButton2);
// 加载容器
jPanel1.add(jScrollPane1);
jPanel2.add(jPanel3); jPanel2.add(jPanel4); jPanel2.add(jPanel5); jPanel2.add(jPanel6);
jPanel2.setPreferredSize(new Dimension(10, 150));
cp.add("Center",jPanel1) ; cp.add("South",jPanel2);
// 问题 2 :设置 try_catch 结构的目的是什么?
try
{
// 完成语句①:初始化输入流对象(以 CDInfor.txt 为数据源)
// 完成语句②:初始化输出流对象(参考提示信息)
// 完成语句③:行读文件,将结果写到文本域里
}
catch (IOException ex){};
}
public void actionPerformed(ActionEvent e)
{
// 按下“增加”按忸后的操作:
if(e.getSource()==jButton1)
{
// 完成程序④:提取信息并添加到文本域里
// 完成程序⑤:将记录添加到文件末尾并刷新数据流
// 问题 3 :刷新数据流的作用是什么?
try {
}
catch (Exception ex) {}
}
// 按下“增加”按忸和“取消“按钮都要完成的操作:
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
}
public static void main(String[] args) throws Exception
{
CDInfor kk = new CDInfor();
kk.setSize(350,350);
kk.setTitle("Please caculat:");
kk.setVisible(true);
}
}
㈡ 假设 StudentManager.java 完成的功能是:学生信息管理。
学生信息存放在数据库 Student.mdb 中,信息包括:学号、姓名、性别、年龄、专业。
系统包括查询、添加、删除、更新和退出系统五个功能。主界面运行如下:
1. 功能描述
①单击“查询”按钮,可以查询数据库中的学生信息,并将学生信息显示在 JPanel 中。运行界面如下:
②单击“增加”按钮,可以为数据库表中添加一条学生信息。运行界面如下:
要求:学号必须是数字字符串,长度不能大于 10 ;姓名长度不能大于 10 ,专业长度不能大于 25 。
③单击“删除”按钮,可以删除数据库表中的学生信息。运行界面如下:
⑷单击“更新”按钮,可以更新数据库表中指定学号的学生信息。运行界面如下:
要求:学号必须是数字字符串,长度不能大于 10 ;姓名长度不能大于 10 ,专业长度不能大于 25 。
⑸单击“退出系统”按钮,从整个应用系统中退出。
2. 题目要求
①根据题目要求建立数据库。
②完成程序段⑴~⒃的编写,使其系统各功能模块能够正常运行。
③回答问题①~⑧。
3. 提示信息
① Statement createStatement(int resultSetType,
int resultSetConcurrency)
throws SQLException
resultSetType :结果集类型,它是 ResultSet.TYPE_FORWARD_ONLY 、 ResultSet.TYPE_SCROLL_INSENSITIVE 或 ResultSet.TYPE_SCROLL_SENSITIVE 之一;
resultSetConcurrency :并发类型;它是 ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE 之一;
② update 语句: update 表名 set 字段名 = 值 , 字段名 = 值 , …… where 条件
4. 程序清单
① StudentManager.java
package sms;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class StudentManager extends JFrame{
private JLabel lbl1;
private JButton selBtn,addBtn,delBtn,updBtn;
private JButton exitBtn;
private JPanel panel ;
public StudentManager (){
super(" 学生管理系统 ");
// 定义出现的组件:由上而下,自左致右
lbl1 = new JLabel(" 学生管理系统 ",JLabel.CENTER);
lbl1.setFont(new Font(" 黑体 ",Font.BOLD,35));
selBtn = new JButton(" 查询 ");
addBtn = new JButton(" 添加 ");
delBtn = new JButton(" 删除 ");
updBtn = new JButton(" 更新 ");
exitBtn=new JButton(" 退出系统 ");
// 定义容器
panel = new JPanel();
// 为容器设置布局,并将组件添加到容器中
FlowLayout flow = new FlowLayout();
panel.setLayout(flow);
panel.add(selBtn);
panel.add(addBtn);
panel.add(delBtn);
panel.add(updBtn);
panel.add(exitBtn);
// 为按钮添加监听事件
selBtn.addActionListener(new ButtonEvent());
addBtn.addActionListener(new ButtonEvent());
delBtn.addActionListener(new ButtonEvent());
updBtn.addActionListener(new ButtonEvent());
exitBtn.addActionListener(new ActionListener(){
// 完成语句⑴:退出应用系统的功能
});
// 为 applet 设置布局,并将组件添加到 applet 中
GridLayout grid = new GridLayout(2,1);
this.setLayout(grid);
this.add(lbl1);
this.add(panel);
// 设置 applet 的大小
this.setSize(400,300);
this.setVisible(true);
// 问题 1 : Toolkit 的作用是什么?
Toolkit tool = this.getToolkit();
Dimension dim = tool.getScreenSize();
this.setLocation(dim.width/3,dim.height/3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
validate();
}
public static void main(String[] args){
new StudentManager();
}
}
② DatabaseConnection.java
package sms;
// 完成语句⑵:导入该类中操作数据库的相关类包
public class DatabaseConnection {
public static Connection getConnection(String dataSource , String user , String password){
Connection conn = null;
try {
String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";
// 完成语句⑶:加载数据库驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
// 完成语句⑷:通过 getConnection() 方法的参数获取数据库连接赋给 conn
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
③SelFrame.java
package sms;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
// 完成语句⑸:导入该类中操作数据库的相关类包
import javax.swing.*;
public class SelFrame extends JFrame implements ActionListener,FocusListener {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
private int recordCount=0;
JLabel lbl1 = null;
JLabel lbl2 = null;
JTextField tf1 = null;
JTextField tf2 = null;
JButton selBtn= null;
JPanel p1 = null;
JPanel p2 = null;
JPanel p3 = null;
JPanel resultPanel = null;
JScrollPane scroll = null;
JPanel split = null;
JPanel[] p3_1=null;
JTextField[] tf3_1 = null;
JTextField[] tf4_1 = null;
JTextField[] tf5_1 = null;
JTextField[] tf6_1 = null;
JTextField[] tf7_1 = null;
public static int test=1;
public SelFrame(){
super(" 学生信息查询 ");
// 定义组件:从上到下,从左到右
lbl1 = new JLabel(" 姓名: ",10);
lbl2 = new JLabel(" 专业: ",10);
tf1 = new JTextField(20);
tf2 = new JTextField(20);
selBtn=new JButton(" 查询 ");
selBtn.addActionListener(this);
JLabel lbl3 = new JLabel(" 学号 ",JLabel.CENTER);
JLabel lbl4 = new JLabel(" 姓名 ",JLabel.CENTER);
JLabel lbl5 = new JLabel(" 年龄 ",JLabel.CENTER);
JLabel lbl6 = new JLabel(" 性别 ",JLabel.CENTER);
JLabel lbl7 = new JLabel(" 专业 ",JLabel.CENTER);
p1 = new JPanel (new FlowLayout());
p1.add(lbl1);
p1.add(tf1);
p1.add(lbl2);
p1.add(tf2);
p2 = new JPanel (new GridLayout(2,1));
p2.add(p1);
p1.add(selBtn);
p3 = new JPanel (new GridLayout(1,5));
p3.add(lbl3);
p3.add(lbl4);
p3.add(lbl5);
p3.add(lbl6);
p3.add(lbl7);
BorderLayout border = new BorderLayout();
this.setLayout(border);
this.add(p2,BorderLayout.NORTH);
// 完成语句⑹:当点击窗口的关闭按钮时只销毁该窗口,并不退出应用系统
setSize(750,600);
setLocation(150,50);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
conn = DatabaseConnection.getConnection("jdbc:odbc:StudentDsn", "", "");
try {
String txt1,txt2,condition = "";
txt1=tf1.getText();
txt2=tf2.getText();
if (txt1!=null && !txt1.equals(""))
condition = " where sname like '%"+txt1+"%' ";
if (txt2!=null && !txt2.equals(""))
if (condition.equals(""))
condition = " where major like '%"+txt2+"%' ";
else
condition =condition + " and major like '%"+txt2+"%' ";
String sql = "select * from stu " + condition;
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
// 完成语句⑺:提交 sql 语句,并将返回的记录集放在 rs 中
// 完成语句⑻:获取记录集中的记录条数,放在整形变量 recordCount 中
GridLayout gl=new GridLayout(recordCount,1);
if (resultPanel!=null){
resultPanel.removeAll();// 问题 2 :该语句的功能是什么?
}
else{
resultPanel = new JPanel(gl);// 问题 3 :该条语句什么时候执行?
}
// 问题 2 : test 变量的作用是什么?
if(test==1){
scroll = new JScrollPane(resultPanel);
split = new JPanel(new BorderLayout());
split.add(p3,BorderLayout.NORTH);
split.add(scroll,BorderLayout.CENTER);
this.add(split,BorderLayout.CENTER);
test++;
}
p3_1 = new JPanel[recordCount];
tf3_1 = new JTextField[recordCount];
tf4_1 = new JTextField[recordCount];
tf5_1 = new JTextField[recordCount];
tf6_1 = new JTextField[recordCount];
tf7_1 = new JTextField[recordCount];
rs.beforeFirst();// 问题 4 :该条语句可不可以用 rs.first() 代替?为什么?
int i = 0;
while(rs.next()){
tf3_1[i] = new JTextField(rs.getString(1));
tf4_1[i] = new JTextField(rs.getString(2));
tf5_1[i] = new JTextField(rs.getString(3));
tf6_1[i] = new JTextField((rs.getString(4).equals("M"))?" 男 ":" 女 ");
tf7_1[i] = new JTextField(rs.getString(5));
tf3_1[i].setHorizontalAlignment(JTextField.CENTER);
tf4_1[i].setHorizontalAlignment(JTextField.CENTER);
tf5_1[i].setHorizontalAlignment(JTextField.CENTER);
tf6_1[i].setHorizontalAlignment(JTextField.CENTER);
tf7_1[i].setHorizontalAlignment(JTextField.CENTER);
tf3_1[i].setEditable(false);
tf4_1[i].setEditable(false);
tf5_1[i].setEditable(false);
tf6_1[i].setEditable(false);
tf7_1[i].setEditable(false);
// 完成语句⑼:为文本框们添加监听器
p3_1[i] = new JPanel (new GridLayout(1,5));
p3_1[i].add(tf3_1[i]);
p3_1[i].add(tf4_1[i]);
p3_1[i].add(tf5_1[i]);
p3_1[i].add(tf6_1[i]);
p3_1[i].add(tf7_1[i]);
resultPanel.add(p3_1[i]);
i++;
}
resultPanel.repaint();// 问题 5 :该条语句可不可以取消?为什么?
this.validate();// 问题 6 :该条语句可不可以取消?为什么?
} catch (SQLException e1) {
e1.printStackTrace();
}
finally{
// 完成语句⑽:关闭数据库操作时占用的各种资源
}
public void focusGained(FocusEvent e) {
// 完成语句⑾:当文本框获得焦点时,文本框为红色
}
public void focusLost(FocusEvent e) {
// 完成语句⑿:当文本框失去焦点时,文本框为白色
}
}
④AddFrame.java
package sms;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class AddFrame extends JFrame implements ActionListener{
private Connection conn;
private Statement stmt;
JLabel lbl1 = null;
JLabel lbl2 = null;
JLabel lbl3 = null;
JLabel lbl4 = null;
JLabel lbl5 = null;
JTextField tf1 = null;
JTextField tf2 = null;
JTextField tf4 = null;
JTextField tf5 = null;
JRadioButton man = null;
JRadioButton woman = null;
ButtonGroup sex = null;
JButton addBtn = null;
JPanel p1 = null;
Box baseBox,boxV1,boxV2,boxH1;
public AddFrame(){
super(" 添加学生信息 ");
// 定义组件:从上到下,从左到右
lbl1 = new JLabel(" 学号: ");
lbl2 = new JLabel(" 姓名: ");
lbl3 = new JLabel(" 性别: ");
lbl4 = new JLabel(" 年龄: ");
lbl5 = new JLabel(" 专业: ");
tf1 = new JTextField(20);
tf2 = new JTextField(20);
tf4 = new JTextField(20);
tf5 = new JTextField(20);
man = new JRadioButton(" 男 ",true);
woman = new JRadioButton(" 女 ");
sex = new ButtonGroup();
sex.add(man);
sex.add(woman);
addBtn=new JButton(" 添加 ");
addBtn.addActionListener(this);
boxV1 = Box.createVerticalBox();
boxV1.add(lbl1);
boxV1.add(Box.createVerticalStrut(8));
boxV1.add(lbl2);
boxV1.add(Box.createVerticalStrut(8));
boxV1.add(lbl3);
boxV1.add(Box.createVerticalStrut(8));
boxV1.add(lbl4);
boxV1.add(Box.createVerticalStrut(8));
boxV1.add(lbl5);
boxH1 = Box.createHorizontalBox();
boxH1.add(man);
boxH1.add(Box.createHorizontalStrut(10));
boxH1.add(woman);
boxV2 = Box.createVerticalBox();
boxV2.add(tf1);
boxV2.add(Box.createVerticalStrut(8));
boxV2.add(tf2);
boxV2.add(Box.createVerticalStrut(8));
boxV2.add(boxH1);
boxV2.add(Box.createVerticalStrut(8));
boxV2.add(tf4);
boxV2.add(Box.createVerticalStrut(8));
boxV2.add(tf5);
baseBox = Box.createHorizontalBox();
baseBox.add(boxV1);
baseBox.add(Box.createHorizontalStrut(10));
baseBox.add(boxV2);
p1 = new JPanel (new FlowLayout());
p1.add(baseBox);
p1.add(addBtn);
this.add(p1);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(300,250);
Toolkit tool = this.getToolkit();
Dimension dim = tool.getScreenSize();
this.setLocation(dim.width/3+50,dim.height/3+50);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
// 完成语句⒀:获取数据库连接
try {
String txt1,txt2,txt3,txt4,txt5,sql;
txt1=tf1.getText().trim();
txt2=tf2.getText().trim();
if(man.isSelected())txt3="M";
else txt3="F";
txt4=tf4.getText().trim();
txt5=tf5.getText().trim();
sql = "insert into stu(sno,sname,age,sex,major) values (";
if (txt1.length()<=10 && Util.isNotEmpty(txt1) && Util.isDigits(txt1)){
sql = sql + "'"+txt1+"','";
if (txt2.length()<=10 && Util.isNotEmpty(txt2)){
sql = sql + txt2+"',";
if (txt4.length()<=2 && Util.isNotEmpty(txt4) && Util.isDigits(txt4)){
sql = sql + Integer.parseInt(txt4)+",'";
sql = sql + txt3+"','";
if(txt5.length()<=25 && Util.isNotEmpty(txt5))
sql = sql + txt5+"'";
else{
JOptionPane.showMessageDialog(this, " 专业输入有误: 0< 长度 <=25!");
return ;
}
}
else{
// 完成语句⒁:弹出消息对话框,内容是:年龄输入有误: 0< 长度 <=2 且是数字字符 !
return ;
}
}
else {
JOptionPane.showMessageDialog(this, " 姓名输入有误: 0< 长度 <=10!");
return ;
}
}
else {
JOptionPane.showMessageDialog(this, " 学号输入有误: 0< 长度 <=10 且是数字字符 !");
return ;
}
sql = sql + ")";
int cnt = 0;
// 完成语句⒂:创建提交 sql 语句的对象,并将 sql 语句的执行结果赋给整型变量 cnt 。
if (cnt>0)
JOptionPane.showMessageDialog(this, " 成功添加 "+cnt+" 条学生记录! ");
else
JOptionPane.showMessageDialog(this, " 添加学生记录失败! ");
} catch (SQLException e1) {
e1.printStackTrace();
}
finally{
try{
if(stmt!=null)stmt.close();
if(conn!=null)conn.close();
}
catch(SQLException e1) {
e1.printStackTrace();
}
}
}
}
⑤ DelFrame.java
package sms;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class DelFrame extends JFrame implements ActionListener{
private Connection conn = null;
private Statement stmt = null;
JLabel lbl1 = null;
JLabel lbl2 = null;
JTextField tf1 = null;
JTextField tf2 = null;
JButton delBtn = null;
JPanel p1 = null;
JPanel p2 = null;
public DelFrame(){
super(" 学生信息删除 ");
// 定义组件:从上到下,从左到右
lbl1 = new JLabel(" 学号: ",10);
lbl2 = new JLabel(" 专业: ",10);
tf1 = new JTextField(20);
tf2 = new JTextField(20);
delBtn=new JButton(" 删除 ");
delBtn.addActionListener(this);
p1 = new JPanel (new FlowLayout());
p1.add(lbl1);
p1.add(tf1);
p1.add(lbl2);
p1.add(tf2);
p2 = new JPanel (new FlowLayout());
p2.add(p1);
p2.add(delBtn);
this.setLayout(new GridLayout(3,1));
this.add(p2);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(550,300);
Toolkit tool = this.getToolkit();
Dimension dim = tool.getScreenSize();
this.setLocation(dim.width/3,dim.height/3);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
int result ;
// 完成语句⒃:弹出确认对话框,内容是:确定要删除吗?标题是:确认删除
if (result == JOptionPane.YES_OPTION){
conn = DatabaseConnection.getConnection("jdbc:odbc:StudentDsn", "", "");
try {
String txt1,txt2,condition = "";
txt1=tf1.getText();
txt2=tf2.getText();
if (txt1!=null && !txt1.equals(""))
condition = " where sno like '%"+txt1+"%' ";
if (txt2!=null && !txt2.equals(""))
if (condition.equals(""))
condition = " where major like '%"+txt2+"%' ";
else
condition =condition + " and major like '%"+txt2+"%' ";
String sql = "delete from stu" + condition;
System.out.println(sql);
stmt = conn.createStatement();
int cnt = stmt.executeUpdate(sql);
if (cnt>0)
JOptionPane.showMessageDialog(this, " 成功删除 "+cnt+" 条学生记录! ");
else
JOptionPane.showMessageDialog(this, " 删除学生记录失败! ");
} catch (SQLException e1) {
e1.printStackTrace();
}
finally{
try{
if(stmt!=null)stmt.close();
if(conn!=null)conn.close();
}
catch(SQLException e1) {
e1.printStackTrace();
}
}
}
}
⑥参考 SelFrame.java 、 AddFrame.java 、 DelFrame.java 将 UpdFrame.java 的代码补充完整,完成学生信息的更新功能。
⑦ Util.java
package sms;
public class Util {
// 问题 7 :方法 isNotEmpty() 的功能是什么?
public static boolean isNotEmpty(String str){
if (str!=null && !str.equals(""))
return true;
return false;
}
// 问题 8 :方法 isDigits () 的功能是什么?
public static boolean isDigits(String str){
char[] arr=str.toCharArray();
int i;
for(i=0;i<str.length();i++)
if (!Character.isDigit(arr[i]))
return false;
return true;
}
}
㈢附加题:改善日历记事系统。
三、设计要求:
1 .前两道题必做,第三题选做。
2 .积极查阅相关教材、资料,独立完成。
四、实习报告撰写内容和要求
(一)内容
1. 系统环境(硬件环境、软件环境)
2. 设计内容:
①设计题目
②完成题目要求
③运行结果(根据自己的运行情况复制一幅)
另外:第㈡题需要将CDInfor.txt文件用写字板打开,复制最终的结果画面。
3. 设计难点及解决办法
4. 创新及技巧:根据自己的设计过程进行汇总,如果没有就不用写。
5. 心得体会
(二)要求
1. 统一书写在实习报告上。
2. 认真填写实习报告,程序要写完整,补充程序段要做特殊标记。
3. 实习报告内容:封面、课程设计任务书、设计报告。
五、设计时间:一 周(第18周)。具体时间参考实验室安排表。
六、说明:
①考勤占评分的 20% (提前完成的同学需要找老师登记) ,程序调试占评分的 40% ,设计报告占评分的 40% 。严禁抄袭、复印课程设计报告,否则相同报告均以零分计。
②设计中,要提前编制下次调试的程序,计划好每次上机的内容,积极、高效、独立地完成这次设计任务。对没有准备的同学,禁止上机。
③固定机位,将文件保存在自己的文件夹里,避免误操作或其他同学使用时丢失。