java大作业1–电话簿


一、题目

Java程序设计实用教程p402 12-13

二、预览





三、题解

一.Friend类
首先明确这个电话簿存入的信息为一个个Friend,每一个Friend需要具有姓名,性别,电话号码,关系这几个属性。之后,写构造方法(我这里只写了一个),以及一系列的get方法。

package 电话簿;//记住要写入对象文件的Friend类必须实现序列化接口
public class Friend implements java.io.Serializable{private String name;private String sex;private String tel;private String friendship;public Friend(String name,String sex,String tel,String friendship){this.name = name;this.sex = sex;this.tel = tel;this.friendship = friendship;}public String getName(){return name;}public String getSex(){return sex;}public String getTel(){return tel;}public String getFriendship(){return friendship;}public static void main(String[] args) {// TODO Auto-generated method stub}}

二.Friends类
为了更为方便地管理从后台(文件)拿到的数据,我写了一个Friends类,它具有姓氏,HashMap map(以姓名作为键值,用于存储一系列相同姓氏不同名字的Friend),为该姓氏的Friend的数目这几个属性。之后,写构造方法(我也只写了一个),添加方法,删除方法,以及一系列get方法。

package 电话簿;import java.util.HashMap;//数据中转站
public class Friends implements java.io.Serializable{private String family_name;// 姓氏private HashMap<String, Friend> map;// 里面存放这一堆这个姓氏的人的数据private int friends_num;// 该姓氏的人数public Friends(String family_name)// 以姓作为本类的关键{this.family_name = family_name;map = new HashMap<String, Friend>();this.friends_num = 0;}public void add(Friend f)//添加方法{//System.out.println(f.getName());if(!map.containsKey(f.getName()))//若Friends中不含有这这个姓名的Friend,则增加Friend数目{//System.out.println(1);this.friends_num++;}this.map.put(f.getName(), f);}public int delete(String name)// 删除方法,对应前端的删除按钮{if(map.containsKey(name)){map.remove(name);this.friends_num--;return 1;//删除成功返回1给前端,由前端作出show区界面改变的反应}return 0;}public int get_friends_num() {return friends_num;}public String get_family_name() {return family_name;}public HashMap<String,Friend> get_map(){return map;}}

三.Home类
Home类写了对前端和后台的操作,代码主要集中在这个部分,其实按理来说我觉得不应该这样集中在这里的,但是懒地管那么多了。该类包含的属性众多,其中有一个用于存放从后台和前端读来的Friends的arraylist链表。
1.前端界面部分
(1)将初始化写在了init方法里了,包含了外框处理,姓氏列表,操作区域,分割设置,数据集初始化。
(2)maketable操作:由于涉及到众多更新前端表格的操作,所以单独将maketable方法写出,以便调用。maketable本质为对JTable的操作,关键在于放入其中的Object二维数组datas生成问题,datas不同使得表中的数据不同。而datas的生成主要靠前端用户输入后更新一次或者后台读入更新一次。
2.后台操作部分(涉及读写对象文件)
(1)操作主要放在相应事件actionPerformed中,有添加,删除,打开(文件),保存(文件),排序,查找,定时保存(线程)。然后几乎都要用到maketable。
(2)openFile操作:由于涉及多次相同的打开文件操作,所以将openfile方法单独写出,以便调用。主要为从文件中读出数据的操作,然后maketable。
(3)涉及到点击姓氏列表框会更新对应表格数据所以写了mousePressed方法,主要还是maketable。

package 电话簿;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;//文件的读入读出用对象字节流,读的是friends对象
public class Home extends JFrame implements ActionListener,MouseListener,Runnable{JButton Add, Delete, Open, Save;// 四大按钮JList<String> familyname_List;// 姓氏列表DefaultListModel<String> family_names;JScrollPane left_jsc;JPanel right_Page, process_Page;JTable show_Page;JTextField name_Field, tel_Field, friendship_Field;// 姓名输入区域,电话输入区域,关系输入区域JRadioButton m, w;// 男女单选栏JCheckBox time_Save;// 定时保存单选栏JComboBox<String> find_Key, order_Key;// 查找关键字,排序关键字设置栏JComboBox<Integer> time_Setting;// 保存时间设置栏Object[][] datas;// 存放得到的数据JScrollPane show_jsc;JSplitPane jsp1,jsp2;ArrayList<Friends> arraylist;// 数据中转站,存放产生的friends对象Friends friends;// 当前所处的姓氏区int friends_num;//该姓氏区拥有的人数JFileChooser fc;// 文件选择器String filename;// 打开的文件名Thread thread;int timekey;//自动保存间隔时间public Home() {// 初始化界面super("电话簿");init();this.setVisible(true);}public static void main(String[] args) {// TODO Auto-generated method stubnew Home();}public void init() {// 外框处理this.setSize(900, 280);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);// 姓氏列表family_names = new DefaultListModel<String>();familyname_List = new JList<String>(family_names);familyname_List.addMouseListener(this);//注意,对象的监听器每new一次就得注册一回监听器left_jsc = new JScrollPane(familyname_List);// 操作区域process_Page = new JPanel(new GridLayout(2, 1));JLabel title = new JLabel(" Friend"); // 标题栏JPanel input_Page = new JPanel(new FlowLayout()); // 输入栏name_Field = new JTextField("姓名", 15);// 姓名输入框m = new JRadioButton("男");// 性别选择栏w = new JRadioButton("女");m.addActionListener(this);w.addActionListener(this);ButtonGroup bg = new ButtonGroup();bg.add(m);bg.add(w);tel_Field = new JTextField("电话号码", 17);// 电话号码输入框friendship_Field = new JTextField("关系", 23);// 关系输入框friendship_Field.setSize(187, 20);input_Page.add(name_Field);input_Page.add(m);input_Page.add(w);input_Page.add(tel_Field);input_Page.add(friendship_Field);JPanel deal_Page = new JPanel(new FlowLayout()); // 操作栏JToolBar tb = new JToolBar();Add = new JButton("添加");// 添加按钮Add.addActionListener(this);Delete = new JButton("删除");// 删除按钮Delete.addActionListener(this);JLabel lb1 = new JLabel("查找关键字");find_Key = new JComboBox<String>();// 设置查找关键字设置栏find_Key.addActionListener(this);String[] findkeys = { "空值","姓名", "性别", "电话", "关系" };for (int i = 0; i < 5; i++) {find_Key.addItem(findkeys[i]);}JLabel lb2 = new JLabel("排序关键字");order_Key = new JComboBox<String>();// 设置排序关键字设置栏order_Key.addActionListener(this);String[] orderkeys = { "空值","姓名" };for (int i = 0; i < 2; i++) {order_Key.addItem(orderkeys[i]);}Open = new JButton("打开");// 打开按钮Open.addActionListener(this);Save = new JButton("保存");// 保存按钮Save.addActionListener(this);time_Save = new JCheckBox("定时保存");time_Save.addActionListener(this);time_Setting = new JComboBox<Integer>();// 设置保存时间设置栏time_Setting.addActionListener(this);for (int i = 1; i <= 10; i++) {time_Setting.addItem(i);}JLabel lb3 = new JLabel("分钟");deal_Page.add(Add);deal_Page.add(Delete);deal_Page.add(lb1);deal_Page.add(find_Key);deal_Page.add(lb2);deal_Page.add(order_Key);deal_Page.add(Open);deal_Page.add(Save);deal_Page.add(time_Save);deal_Page.add(time_Setting);deal_Page.add(lb3);// deal_Page.add(tb);JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);// 小分割 //添加操作区域组件jsp.setTopComponent(title);jsp.setBottomComponent(input_Page);process_Page.add(jsp);process_Page.add(deal_Page);// 分割设置jsp1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);// 第一分割jsp1.setDividerLocation(100);// 设置第一分割线位置jsp1.setLeftComponent(left_jsc);// 设置第一分割左半边内容right_Page = new JPanel();jsp1.setRightComponent(right_Page);// 设置第一分割右半边内容this.add(jsp1);// 添加第一分割// 第二分割由maketable完成//数据集初始化// 显示区域--表格datas = null;makeTable(null);// 初始化arraylist:这里主要是用于用户直接添加数据而未打开原有的文件;并初始化friends_numarraylist = new ArrayList<Friends>();friends_num = 0;this.thread = new Thread(this);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == Add)// 添加,往姓氏列表,show区,中转站添加input区的数据{String name, sex, tel, friendship;name = this.name_Field.getText();// 得到姓名sex = "男";if (m.isSelected())// 得到性别{sex = "男";}if (w.isSelected()) {sex = "女";}tel = this.tel_Field.getText();// 得到电话friendship = this.friendship_Field.getText();// 得到关系// 添加数据到当前姓氏区对应的中转站Friend f = new Friend(name, sex, tel, friendship);// 判断一下输入的人的数据的姓是否已存在,若已存在则添加到对应的姓氏区,反之则创造一个新的姓氏区int findindex = 0;for (Friends F : arraylist) {if (F.get_family_name().equals(f.getName().charAt(0) + "")) {break;}findindex++;}if (findindex < this.friends_num)// 找到了{arraylist.get(findindex).add(f);}else {arraylist.add(new Friends(f.getName().charAt(0) + ""));// 将数据添加到表尾this.friends_num++;// System.out.println(arraylist.get(this.friends_num-1).get_family_name());arraylist.get(friends_num-1).add(f);friends = arraylist.get(0);}// 添加数据到当前姓氏区的show区datas = new Object[friends.get_friends_num()][4];int i = 0;for (String key : friends.get_map().keySet()) {Friend f0 = friends.get_map().get(key);datas[i][0] = f0.getName();datas[i][1] = f0.getSex();datas[i][2] = f0.getTel();datas[i][3] = f0.getFriendship();i++;}makeTable(datas);// 添加数据到姓氏列表family_names = new DefaultListModel<String>();family_names.addElement("全部");for (Friends F : arraylist) {family_names.addElement(F.get_family_name());}familyname_List = new JList<String>(family_names);familyname_List.addMouseListener(this);left_jsc = new JScrollPane(familyname_List);jsp1.setDividerLocation(100);// 设置第一分割线位置jsp1.setLeftComponent(left_jsc);// 设置第一分割左半边内容}if (e.getSource() == Delete)// 删除,将show区,中转站,后台中对应input区的数据删除{int j=0;String keyname = this.name_Field.getText();for(Friends F : arraylist){if(F.delete(keyname)==1){break;}j++;}// 添加数据到当前姓氏区的show区datas = new Object[friends.get_friends_num()][4];int i = 0;for (String key : friends.get_map().keySet()) {Friend f0 = friends.get_map().get(key);datas[i][0] = f0.getName();datas[i][1] = f0.getSex();datas[i][2] = f0.getTel();datas[i][3] = f0.getFriendship();i++;}makeTable(datas);// 添加数据到姓氏列表if(j<this.friends_num){if(arraylist.get(j).get_friends_num()==0){arraylist.remove(j);family_names = new DefaultListModel<String>();family_names.addElement("全部");for (Friends F : arraylist) {family_names.addElement(F.get_family_name());}familyname_List = new JList<String>(family_names);familyname_List.addMouseListener(this);left_jsc = new JScrollPane(familyname_List);jsp1.setDividerLocation(100);// 设置第一分割线位置jsp1.setLeftComponent(left_jsc);// 设置第一分割左半边内容}}}if (e.getSource() == Open)// 打开:打开文件,将文件中的数据读到由friends构成的arraylist中{// 文件操作fc = new JFileChooser(new File("D:\\冬瓜的神秘空间1\\my PROGRAM(java)\\电话簿"));// 设置开始文件夹FileNameExtensionFilter filter = new FileNameExtensionFilter("Java文件(*.java)", "txt");// 设置只出现的文件格式fc.setFileFilter(filter);if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)// 选中文件后操作{File file = fc.getSelectedFile();openFile(file);}}if (e.getSource() == Save)// 保存{if (filename != null)// 若已打开了某文件,后台添加数据后保存{try {OutputStream out = new FileOutputStream(filename);ObjectOutputStream objout = new ObjectOutputStream(out);for (Friends F : arraylist) {objout.writeObject(F);}objout.close();out.close();} catch (IOException ex) {}} else// 反之,创建文件,将数据写入文件中并保存{int i;String inputfilename = "我的电话簿";fc = new JFileChooser(new File("D:\\冬瓜的神秘空间1\\my PROGRAM(java)\\电话簿"));// 设置开始文件夹FileNameExtensionFilter filter = new FileNameExtensionFilter("Java文件(*.java)", "txt");// 设置只出现的文件格式fc.setFileFilter(filter);if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION)// 创建一个文件,由用户输入文件名并保存{inputfilename = fc.getSelectedFile().toString();for (i = inputfilename.length() - 1; i > 0; i--) {if (inputfilename.charAt(i) == '\\') {break;}}inputfilename = inputfilename.substring(i + 1);File file = new File("D:\\冬瓜的神秘空间1\\my PROGRAM(java)\\电话簿", inputfilename);try {file.createNewFile();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}try {OutputStream out = new FileOutputStream(file.toString());ObjectOutputStream objout = new ObjectOutputStream(out);for (Friends F : arraylist) {objout.writeObject(F);}objout.close();out.close();} catch (IOException ex) {}openFile(file);}}}if(e.getSource() instanceof JComboBox)//得到事件源{//          System.out.println(friends);//进行查找操作的时候不要进行排序!!!if(this.friends!=null){String findkey = (String) find_Key.getSelectedItem();//这个方法用于返回用户选择的那个对象
//              System.out.println(findkey);if(findkey.equals("姓名"))//按input框输入的姓名查找{//                  System.out.println(1);String keyname = this.name_Field.getText();for(Friends F : arraylist){if(F.get_map().containsKey(keyname)){datas = new Object[1][4];datas[0][0] = F.get_map().get(keyname).getName();datas[0][1] = F.get_map().get(keyname).getSex();datas[0][2] = F.get_map().get(keyname).getTel();datas[0][3] = F.get_map().get(keyname).getFriendship();makeTable(datas);break;}}}if(findkey.equals("性别"))//按input框输入的性别查找{String keysex="男";if (m.isSelected())// 得到性别{keysex = "男";}if (w.isSelected()) {keysex = "女";}datas = new Object[friends.get_friends_num()][4];int i = 0;for (String key : friends.get_map().keySet()) {if(friends.get_map().get(key).getSex()==keysex){Friend f0 = friends.get_map().get(key);datas[i][0] = f0.getName();datas[i][1] = f0.getSex();datas[i][2] = f0.getTel();datas[i][3] = f0.getFriendship();i++;}}makeTable(datas); }if(findkey.equals("电话"))//按input框输入的电话查找{int sum=0;String keytel = this.tel_Field.getText();for(Friends F : arraylist){for (String key : F.get_map().keySet()) {if(F.get_map().get(key).getTel().equals(keytel)){sum++;}}}datas = new Object[sum][4];int i = 0;int flag = 0;for(Friends F : arraylist){for (String key : F.get_map().keySet()) {if(F.get_map().get(key).getTel().equals(keytel)){Friend f0 = F.get_map().get(key);datas[i][0] = f0.getName();datas[i][1] = f0.getSex();datas[i][2] = f0.getTel();datas[i][3] = f0.getFriendship();i++;}if(i>=sum){flag=1;break;}}if(flag==1){break;}}makeTable(datas);  }if(findkey.equals("关系"))//按input框输入的关系查找{String keyfriendship = this.friendship_Field.getText();datas = new Object[friends.get_friends_num()][4];int i = 0;for (String key : friends.get_map().keySet()) {if(friends.get_map().get(key).getFriendship().contains(keyfriendship)){Friend f0 = friends.get_map().get(key);datas[i][0] = f0.getName();datas[i][1] = f0.getSex();datas[i][2] = f0.getTel();datas[i][3] = f0.getFriendship();i++;}}makeTable(datas);    }String orderKey = (String) order_Key.getSelectedItem();if(orderKey=="姓名")//以姓名做关键之按字典序罗列{Friend[] f = new Friend[100];int i=0;for (String key : friends.get_map().keySet()) {f[i]=friends.get_map().get(key);
//                      System.out.println("1"+f[i]);i++;}MyComparator cmp = new MyComparator();Arrays.sort(f,0,i,cmp);datas = new Object[friends.get_friends_num()][4];for(i=0;i<friends.get_friends_num();i++){datas[i][0] = f[i].getName();datas[i][1] = f[i].getSex();datas[i][2] = f[i].getTel();datas[i][3] = f[i].getFriendship();}makeTable(datas);}}}//自动保存if(e.getSource() instanceof JCheckBox){if(e.getActionCommand().equals("定时保存")){timekey = (Integer) time_Setting.getSelectedItem();System.out.println(timekey);if(this.thread.getState()!=Thread.State.NEW){this.thread = new Thread(this);}this.thread.start();}else{this.thread.interrupt();}}}public void makeTable(Object[][] datas)// 生成表格{if (datas != null) {//System.out.println(datas[0][0]);String[] titles = { "姓名", "性别", "电话号码", "关系" };// 创建表格中的横标题show_Page = new JTable(datas, titles);// 创建初始表格show_Page.setPreferredScrollableViewportSize(new Dimension(750, 70));// 设置表格属性show_jsc = new JScrollPane(show_Page);// 注意,这里不能再new一个jsp2了,要用原来的,不然会一直往下加分割!!!jsp2.setTopComponent(show_jsc);// 设置第二分割上半边内容jsp2.setDividerLocation(100);// 设置第二分割位置jsp2.setBottomComponent(process_Page);// 设置第二分割下半边内容} else {datas = new Object[0][4];String[] titles = { "姓名", "性别", "电话号码", "关系" };// 创建表格中的横标题show_Page = new JTable(datas, titles);// 创建初始表格show_Page.setPreferredScrollableViewportSize(new Dimension(750, 70));// 设置表格属性show_jsc = new JScrollPane(show_Page);jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);// 第二分割jsp2.setTopComponent(show_jsc);// 设置第二分割上半边内容jsp2.setDividerLocation(100);// 设置第二分割位置jsp2.setBottomComponent(process_Page);// 设置第二分割下半边内容right_Page.add(jsp2);// 添加分割}}public void openFile(File file) {filename = file.toString();arraylist = new ArrayList<Friends>();// 初始化arraylist// 从文件中读取数据try {InputStream in = new FileInputStream(filename);ObjectInputStream objin = new ObjectInputStream(in);while (true) {System.out.println(1);try {arraylist.add((Friends) objin.readObject());this.friends_num++;} catch (ClassNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (EOFException eof) {break;}}in.close();objin.close();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}// 将arraylist[0]数据写入show区与姓氏列表// 姓氏列表family_names = new DefaultListModel<String>();family_names.addElement("全部");for (Friends F : arraylist) {family_names.addElement(F.get_family_name());
//          System.out.println(1);}familyname_List = new JList<String>(family_names);familyname_List.addMouseListener(this);left_jsc = new JScrollPane(familyname_List);jsp1.setDividerLocation(100);// 设置第一分割线位置jsp1.setLeftComponent(left_jsc);// 设置第一分割左半边内容// show区
//      System.out.println(arraylist.size());friends = arraylist.get(0);
//      System.out.println(friends);datas = new Object[friends.get_friends_num()][4];int i = 0;for (String key : friends.get_map().keySet()) {Friend f = friends.get_map().get(key);datas[i][0] = f.getName();datas[i][1] = f.getSex();datas[i][2] = f.getTel();datas[i][3] = f.getFriendship();i++;}makeTable(datas);}@Overridepublic void mouseClicked(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent arg0) {// TODO Auto-generated method stub//列表框相应事件int key0 = this.familyname_List.getSelectedIndex();
//      System.out.println(1);if(key0==0)//选择全部{int sum=0;for(Friends F : arraylist){sum+=F.get_friends_num();}datas = new Object[sum][4];int i=0;for(Friends F : arraylist){for (String key : F.get_map().keySet()) {Friend f = F.get_map().get(key);datas[i][0] = f.getName();datas[i][1] = f.getSex();datas[i][2] = f.getTel();datas[i][3] = f.getFriendship();i++;}}makeTable(datas);}else//选择某个姓氏{friends = arraylist.get(key0-1);datas = new Object[friends.get_friends_num()][4];int i = 0;for (String key : friends.get_map().keySet()) {Friend f = friends.get_map().get(key);datas[i][0] = f.getName();datas[i][1] = f.getSex();datas[i][2] = f.getTel();datas[i][3] = f.getFriendship();i++;}makeTable(datas);}}@Overridepublic void mouseReleased(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println(2);if (filename != null)// 若已打开了某文件,后台添加数据后保存{while(true){try{try {OutputStream out = new FileOutputStream(filename);ObjectOutputStream objout = new ObjectOutputStream(out);for (Friends F : arraylist) {objout.writeObject(F);}objout.close();out.close();} catch (IOException ex) {}Thread.sleep(this.timekey*1000*60);//从1ms开始换算}catch(InterruptedException ex){break;}}}}}

四.MyComparator类
用于比较Friend的比较器,按需,所以只写了按名字比较(用于实现字典序排序)

package 电话簿;import java.util.Comparator;//用于比较Friend的比较器类
public class MyComparator implements Comparator<Friend>{@Overridepublic int compare(Friend f1, Friend f2) {// TODO Auto-generated method stub
//      System.out.println(f1);return f1.getName().compareTo(f2.getName());}}

java大作业1--电话簿相关推荐

  1. 用JAVA写一个画图小程序(JAVA 大作业)

    第一次写博客 且是稍微大点的程序 看看就行 重新写的在这,更加清晰明了:点击进入:用JAVA写一个画图小程序(JAVA 大作业)重排版本 设计思路 首先我直接去了Windows自带画图程序去实践模拟, ...

  2. JAVA大作业 | 学生成绩信息管理系统

    > * *JAVA大作业 | 学生成绩管理系统(含有用户界面)*** ----- ps :多个包写在一起---– package test; import java.awt.*; import ...

  3. Java大作业-考试管理系统(GUI)无数据库-Java课程设计

    Java课程设计-Java大作业-考试管理系统(GUI)无数据库 题目要求 开发环境 : 程序总功能模块 程序详细设计 使用情况 第一次写这东西有不少错误的地方,题目要求的功能也没有完全实现,以上内容 ...

  4. JAVA大作业 - 五道三星题

    写在前面: 看了一下我的博客,发现距离上一篇博文的发表已经快一年了,深感自己的颓废,所以打算重新写博客(其实是记录= =),于是从上学期的JAVA大作业开始慢慢整理一下,就是这样! ·问题描述 五道三 ...

  5. JavaFx/Java 大作业 五子棋 实验报告

    Java大作业五子棋实验报告 实验目的 通过此次实验,对这一学期学习的内容尤其是界面开发部分做了一个很好的回顾,看似简单的五子棋程序,设计好也确实费了我一点功夫 功能模块简介和系统结构图 ChessG ...

  6. java大作业国际比赛奖牌榜,java大作业之词频统计

    [实例简介] 开发工具idea,统计方式为java8的stream方式,不是传统的字节流统计方式,内含答辩PPT以及统计单词的文本,配置好后可直接使用 [实例截图] [核心代码] java大作业之词频 ...

  7. java大作业网络聊天室

    这个项目是我大一的java期末大作业,学习了一个学期的成果,编程能力不够,做的并不够好,写在这里记录一下自己的成长,也欢迎大家给出宝贵意见! 第一次写博客哟,请多多支持! 该篇博客写一个基于java的 ...

  8. java大作业设计_Java程序设计_大作业.doc

    Java程序设计_大作业.doc Java程序设计_大作业 专业:计算机科学与技术专业 学号:1245713131 姓名: 2014年12月10日 目录 作业内容:2 1.IPublisherDao接 ...

  9. JAVA大作业-购物车 (持续更新)

    文章目录 前言 前期调查 效果展示 系统功能设计 类的结构 改进方向 前言 团队成员:连剑彬 环境:Eclipse IDE 介绍:这是第一次大作业,主要目标是用JAVA语言实现最基本的购物车系统 前期 ...

最新文章

  1. 【luogu P3378 堆】 模板
  2. Java+大数据开发——Hadoop集群环境搭建(二)
  3. 前端实现炫酷动效_20个网页动效设计的炫酷神器
  4. 【LeetCode笔记】283. 移动零(Java)
  5. oracle没报错 开不了库,oracle 数据库无法启动,报错 terminating the instance due to error 16014...
  6. math.floor实现四舍五入
  7. 剑指Offer - 翻转单词顺序列
  8. 中断(二)—— x86 APIC
  9. c / c++ 整数除法 保留小数及浮点型的比较
  10. 军用计算机通用规范测试试验,军用装备环境可靠性试验项目表
  11. 人工智能自动驾驶的意义,人工智能自动驾驶汽车
  12. 多元函数中的偏导数全导数以及隐函数
  13. SEO入门:网站站内优化流程
  14. 没中奖的花花卡不要扔,还有用!
  15. uni-app watch事件监听三种用法
  16. 自定义seekbar,风格适用于TV版--仿电视猫的seekbar
  17. 后台执行PHP 脚本
  18. mysql通用mapper_通用mapper的介绍和入门使用
  19. 【Android多媒体(重采样与混频)】从playback流程分析AudioResampler,AudioMixer
  20. Python生成2022卡塔尔世界杯赛程日历订阅源代码,生成ics文件,带日历提醒

热门文章

  1. 才发现!华为手机竟隐藏着5个高级功能
  2. JS逆向 2021-8-16 网易云音乐 params、encSecKey参数
  3. 华硕电脑键盘背光灯一直闪的很快,怎么解决?
  4. 大学python考试题及答案_中国大学慕课mooc用Python玩转数据期末考试大全答案
  5. 如何跳出深层递归调用(不使用异常)
  6. ThinkPad 插电时电源指示灯不亮
  7. 阿里云域名https证书(ssl证书)配置
  8. 阿里云域名泛解析教程
  9. 我发现一个地方能免费领取价值198元的手环,具有能量并且有高人加持过的,只要关注微信就可以免费领取
  10. 7-43 查询水果价格