精华内容
下载资源
问答
  • Java课程设计
    千次阅读
    2021-03-16 16:50:02

    Java课程设计

    1. 题目及要求

    基于学校的搜索引擎

    负责部分:Java GUI设计

    2.界面调查

    1)调查界面:百度

    781f8664324d08f05bfd4e33c519aaea.png

    338a2f2366f9557792d739cdb81db633.png

    2)思考:

    根据我的调查,我认为我需要完成三个界面的设计:

    第一个是调查主界面,里面有一个集美大学的logo,一个搜索框用文本字段,因为需要在里面写入搜索内容,一个搜索按钮用button,这个按钮完成的功能就是输入搜索内容后,点击搜索按钮,可以跳转到下一个界面,并且返回结果。

    第二个界面是搜索结果界面:需要的是一个再次搜索框,用文本字段;一个再次搜索按钮,用button;一个面板JPanel,用来盛放我搜索到的结果;在界面的最底下还有三个按钮,一个文本框,分别是:上一页,下一页,跳转,和相应页面表示,当数据量过大需要分页时,就是用来实现页面的跳转的。

    第三个就是结果展示界面:一个jLabel,展示标题;一个文本区域展示内容;一个按钮,点击能够跳转到原网页浏览。

    3.我的代码

    1.EsGuiSearch.java

    package edu.net.itsearch.gui;

    import java.io.IOException;

    import java.util.ArrayList;

    import java.util.List;

    import org.elasticsearch.index.query.BoolQueryBuilder;

    import org.elasticsearch.index.query.QueryBuilders;

    import org.elasticsearch.search.builder.SearchSourceBuilder;

    import crawler.SearchResultEntry;

    import edu.net.itsearch.elasticsearch.EsClient;

    import io.searchbox.client.JestClient;

    import io.searchbox.core.Search;

    import io.searchbox.core.SearchResult;

    /**

    *

    * @author xingkyh

    */

    public class EsGuiSearch {

    private JestClient jestClient;

    public EsGuiSearch() {

    this.jestClient=EsClient.getJestClient();

    }

    /**

    * 全文检索

    *

    * @param queryString 搜索字符串

    * @return 检索结果

    */

    public List fullTextSerch(String queryString) {

    // 声明一个搜索请求体

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

    boolQueryBuilder.must(QueryBuilders.queryStringQuery(queryString));

    searchSourceBuilder.query(boolQueryBuilder);

    // 设置分页

    searchSourceBuilder.from(0);

    searchSourceBuilder.size(800);

    // 构建Search对象

    Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(EsClient.indexName)

    .addType(EsClient.typeName).build();

    SearchResult searchResult = null;

    try {

    searchResult = jestClient.execute(search);

    } catch (IOException e) {

    e.printStackTrace();

    }

    List list=new ArrayList();

    List> hits = searchResult.getHits(SearchResultEntry.class);

    for (SearchResult.Hit hit : hits) {

    list.add(hit.source);

    }

    return list;

    }

    public void close() throws IOException {

    EsClient.closeJestClient();

    }

    }

    2.SearchMainPage.java

    /*

    * To change this license header, choose License Headers in Project Properties.

    * To change this template file, choose Tools | Templates

    * and open the template in the editor.

    */

    package edu.net.itsearch.gui;

    import java.util.List;

    import javax.swing.JOptionPane;

    import crawler.SearchResultEntry;

    /**

    *

    * @author 格格

    */

    public class SearchMainPage extends javax.swing.JFrame {

    /**

    * Creates new form searchMainPage

    */

    public SearchMainPage() {

    initComponents();

    esGuiSearch=new EsGuiSearch();

    }

    /**

    * This method is called from within the constructor to initialize the form.

    * WARNING: Do NOT modify this code. The content of this method is always

    * regenerated by the Form Editor.

    */

    @SuppressWarnings("unchecked")

    private void initComponents() {

    searchBox = new javax.swing.JTextField();

    searchButton = new javax.swing.JButton();

    picture = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    searchButton.setText("搜索");

    searchButton.addActionListener(new java.awt.event.ActionListener() {

    @Override

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    searchButtonActionPerformed(evt);

    }

    });

    picture.setIcon(new javax.swing.ImageIcon(getClass().getResource("jmu.png")));

    picture.setText("jLabel2");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

    getContentPane().setLayout(layout);

    layout.setHorizontalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(layout.createSequentialGroup()

    .addGap(68, 68, 68)

    .addComponent(searchBox, javax.swing.GroupLayout.PREFERRED_SIZE, 516, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(18, 18, 18)

    .addComponent(searchButton, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE)

    .addContainerGap())

    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

    .addComponent(picture, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(256, 256, 256))

    );

    layout.setVerticalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

    .addGap(46, 46, 46)

    .addComponent(picture)

    .addGap(36, 36, 36)

    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

    .addComponent(searchBox, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addComponent(searchButton, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE))

    .addContainerGap(140, Short.MAX_VALUE))

    );

    pack();

    }//

    private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {

    String queryString=searchBox.getText();

    List list = esGuiSearch.fullTextSerch(queryString);

    if(list.isEmpty()) {

    JOptionPane.showMessageDialog(null, "未搜索到相关内容!");

    }else {

    SearchResult searchResult = new SearchResult(list);

    searchResult.setVisible(true);

    dispose();

    }

    }

    private EsGuiSearch esGuiSearch;

    private javax.swing.JLabel picture;

    private javax.swing.JTextField searchBox;

    private javax.swing.JButton searchButton;

    // End of variables declaration

    }

    3.SearchResult.java

    /*

    * To change this license header, choose License Headers in Project Properties.

    * To change this template file, choose Tools | Templates

    * and open the template in the editor.

    */

    package edu.net.itsearch.gui;

    import java.awt.GridLayout;

    import java.util.ArrayList;

    import java.util.List;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import crawler.SearchResultEntry;

    /**

    *

    * @author 格格

    */

    public class SearchResult extends javax.swing.JFrame {

    /**

    * Creates new form searchResult

    */

    public SearchResult() {

    initComponents();

    }

    public SearchResult(List list){

    initComponents();

    esGuiSearch=new EsGuiSearch();

    resultList = getJpanelList(list);

    resultNum = list.size();

    pageNum = (resultList.size()+1)/2;

    currentPage = 1;

    displayResult();

    }

    private void displayResult(){

    resultJpanel.removeAll();

    resultJpanel.setLayout(new GridLayout(2, 1));

    resultJpanel.add(resultList.get(currentPage*2-2));

    if(currentPage+currentPage <= resultNum){

    resultJpanel.add(resultList.get(currentPage*2-1));

    }

    resultJpanel.revalidate();

    resultJpanel.repaint();

    page.setText(currentPage+"/"+pageNum);

    }

    /**

    * This method is called from within the constructor to initialize the form.

    * WARNING: Do NOT modify this code. The content of this method is always

    * regenerated by the Form Editor.

    */

    @SuppressWarnings("unchecked")

    private void initComponents() {

    searchAgainButton = new javax.swing.JButton();

    resultJpanel = new javax.swing.JPanel();

    jumpLastPage = new javax.swing.JButton();

    jumpNextPage = new javax.swing.JButton();

    jumpChoosePage = new javax.swing.JButton();

    searchAgainBox = new javax.swing.JTextField();

    page = new javax.swing.JTextField();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    searchAgainButton.setText("搜索");

    searchAgainButton.addActionListener(new java.awt.event.ActionListener() {

    @Override

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    searchAgainButtonPerformed(evt);

    }

    });

    javax.swing.GroupLayout resultJpanelLayout = new javax.swing.GroupLayout(resultJpanel);

    resultJpanel.setLayout(resultJpanelLayout);

    resultJpanelLayout.setHorizontalGroup(

    resultJpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGap(0, 0, Short.MAX_VALUE)

    );

    resultJpanelLayout.setVerticalGroup(

    resultJpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGap(0, 276, Short.MAX_VALUE)

    );

    jumpLastPage.setText("上一页");

    jumpLastPage.addActionListener(new java.awt.event.ActionListener() {

    @Override

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jumpLastPageActionPerformed(evt);

    }

    });

    jumpNextPage.setText("下一页");

    jumpNextPage.addActionListener(new java.awt.event.ActionListener() {

    @Override

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jumpNextPageActionPerformed(evt);

    }

    });

    jumpChoosePage.setText("页数跳转");

    jumpChoosePage.addActionListener(new java.awt.event.ActionListener() {

    @Override

    public void actionPerformed(java.awt.event.ActionEvent evt) {

    jumpChoosePageActionPerformed(evt);

    }

    });

    searchAgainBox.setText("");

    page.setText("1");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

    getContentPane().setLayout(layout);

    layout.setHorizontalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

    .addComponent(page, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(18, 18, 18)

    .addComponent(jumpLastPage)

    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

    .addComponent(jumpNextPage)

    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

    .addComponent(jumpChoosePage)

    .addGap(12, 12, 12))

    .addGroup(layout.createSequentialGroup()

    .addContainerGap()

    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addComponent(resultJpanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

    .addGroup(layout.createSequentialGroup()

    .addComponent(searchAgainBox, javax.swing.GroupLayout.PREFERRED_SIZE, 584, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(18, 18, 18)

    .addComponent(searchAgainButton, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(0, 26, Short.MAX_VALUE)))

    .addContainerGap())

    );

    layout.setVerticalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(layout.createSequentialGroup()

    .addContainerGap()

    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

    .addComponent(searchAgainBox, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addComponent(searchAgainButton, javax.swing.GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE))

    .addGap(27, 27, 27)

    .addComponent(resultJpanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 33, Short.MAX_VALUE)

    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

    .addComponent(jumpLastPage)

    .addComponent(jumpNextPage)

    .addComponent(jumpChoosePage)

    .addComponent(page, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

    .addContainerGap())

    );

    pack();

    }//

    private void searchAgainButtonPerformed(java.awt.event.ActionEvent evt) {

    String queryString=searchAgainBox.getText();

    List list=esGuiSearch.fullTextSerch(queryString);

    if(list.isEmpty()) {

    JOptionPane.showMessageDialog(null, "未搜索到相关内容!");

    }else {

    resultList = getJpanelList(list);

    resultNum = list.size();

    pageNum = (resultList.size()+1)/2;

    currentPage = 1;

    displayResult();

    }

    }

    private void jumpLastPageActionPerformed(java.awt.event.ActionEvent evt) {

    if(currentPage == 1){

    JOptionPane.showMessageDialog(null, "当前已为第一页,无法进入上一页!");

    }else{

    currentPage--;

    displayResult();

    }

    }

    private void jumpNextPageActionPerformed(java.awt.event.ActionEvent evt) {

    if(currentPage == pageNum){

    JOptionPane.showMessageDialog(null, "当前已为最后一页,无法进入下一页!");

    }else{

    currentPage++;

    displayResult();

    }

    }

    private void jumpChoosePageActionPerformed(java.awt.event.ActionEvent evt) {

    int jumpPage = Integer.valueOf(page.getText());

    if(jumpPage >= 1 && jumpPage <= pageNum){

    currentPage = jumpPage;

    displayResult();

    }else{

    JOptionPane.showMessageDialog(null, "输入页数不合法,请输入1-"+pageNum+"中的数字");

    }

    }

    private List getJpanelList(List list) {

    List resultList = new ArrayList<>();

    for(SearchResultEntry e:list){

    JPanel jPanel=new SearchLook(e);

    resultList.add(jPanel);

    }

    return resultList;

    }

    private List resultList;

    private int pageNum;

    private int currentPage;

    private int resultNum;

    private EsGuiSearch esGuiSearch;

    private javax.swing.JButton jumpChoosePage;

    private javax.swing.JButton jumpLastPage;

    private javax.swing.JButton jumpNextPage;

    private javax.swing.JTextField page;

    private javax.swing.JPanel resultJpanel;

    private javax.swing.JTextField searchAgainBox;

    private javax.swing.JButton searchAgainButton;

    // End of variables declaration

    }

    4.SearchLook.java

    /*

    * To change this license header, choose License Headers in Project Properties.

    * To change this template file, choose Tools | Templates

    * and open the template in the editor.

    */

    package edu.net.itsearch.gui;

    import java.awt.Desktop;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.net.URI;

    import crawler.SearchResultEntry;

    /**

    *

    * @author 格格

    */

    public class SearchLook extends javax.swing.JPanel {

    /**

    * Creates new form SearchLook

    */

    public SearchLook() {

    initComponents();

    }

    public SearchLook(SearchResultEntry result) {

    initComponents();

    titleJlabel.setText(result.getTitle());

    textArea.setText(result.getText());

    url = result.getUrl();

    }

    /**

    * This method is called from within the constructor to initialize the form.

    * WARNING: Do NOT modify this code. The content of this method is always

    * regenerated by the Form Editor.

    */

    @SuppressWarnings("unchecked")

    /** */

    private void initComponents() {

    titleJlabel = new javax.swing.JLabel();

    jumpJbutton = new javax.swing.JButton();

    jScrollPane1 = new javax.swing.JScrollPane();

    textArea = new javax.swing.JTextArea();

    titleJlabel.setText("jLabel1");

    jumpJbutton.setText("跳转");

    jumpJbutton.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e) {

    if(Desktop.isDesktopSupported()){

    try {

    URI uri=URI.create(url);

    Desktop dp=Desktop.getDesktop();

    if(dp.isSupported(Desktop.Action.BROWSE)){

    dp.browse(uri);

    }

    } catch (Exception o) {

    o.printStackTrace();

    }

    }

    }

    });

    textArea.setColumns(20);

    textArea.setRows(5);

    textArea.setLineWrap(true);

    textArea.setWrapStyleWord(true);

    jScrollPane1.setViewportView(textArea);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

    this.setLayout(layout);

    layout.setHorizontalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(layout.createSequentialGroup()

    .addContainerGap(36, Short.MAX_VALUE)

    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

    .addComponent(titleJlabel, javax.swing.GroupLayout.PREFERRED_SIZE, 522, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(30, 30, 30)

    .addComponent(jumpJbutton)

    .addContainerGap())

    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 633, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addGap(31, 31, 31))))

    );

    layout.setVerticalGroup(

    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

    .addGroup(layout.createSequentialGroup()

    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

    .addComponent(titleJlabel, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)

    .addComponent(jumpJbutton))

    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)

    .addContainerGap())

    );

    }//

    private String url;

    private javax.swing.JScrollPane jScrollPane1;

    private javax.swing.JButton jumpJbutton;

    private javax.swing.JTextArea textArea;

    private javax.swing.JLabel titleJlabel;

    // End of variables declaration

    }

    关键代码

    4a8156fbde750e46a036a56337a68d05.png

    9e987e2348815bbecf2e992d87c688dc.png

    4.运行结果截图

    1.

    23c28f4f880b1559505341e902e30d6b.png

    2.

    df0e071b50da411ef697438d6e216bef.png

    3.

    b16125736b8a16566fc0cfdcb8dc0b9d.png

    4.

    26f9c6ad4194747a6d642351aa0a2adf.png

    5.

    26fa2b6e039f8753c2b8a6ca42e824f3.png

    5.遇到的问题

    1)在SearchLook.java类中,用来放文本和标题的容器不知道用JLabel还是Jframe,最终经过百度查询资料,选择的JLabel,原因如下:JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类,这个框子可以嵌入几个玻璃窗,就是说Jframe可以将标签文本和按钮安放并处理,而且能实现最小化/最大化、改变大小、移动等功能特性。而JPanel是一个容器类,相当于一大玻璃窗,可以放置文本框按钮等非容器组件。在结果展示中,我只需要一个JLabel和一个文本区域和一个按钮,所以我选择JPanel。

    2)第一次从net beans转到eclipse上编写时发现错误,后来经过检查发现是因为照片文件的问题,获取照片文件的相对路径为当前包,第一开始我单独放在别的包里,移到gui包后就可以正常运行了。

    6.git提交记录

    a8e62b36a15f14ff2ed3afaa5d3ed367.png

    7.我的感想

    我本身的代码基础不是很扎实,所以课设中很多部分都无法完成,只能实现Gui界面的设计与部分代码的编写。通过这次Java课设,从队友的指导,百度的搜索还有书本上的知识等等地方学到了好多关于Gui的知识,从容器插件还有监听器等等。虽然功能简单,但是我也遇到了不少的问题,比如说第一次写监听器是无法运行,原因就是我调用的类不对。还有就是跳转到网页时遇到了很多困难,研究了很久才解决。我设计的Gui界面有一些不足,但是我还是从中学到了很多,这次课设我受益匪浅。

    8.团队博客链接

    更多相关内容
  • JAVA课程设计网吧管理系统
  • Java课程标准

    2018-11-20 15:05:11
    java程序设计课程标准,按照规范编写,请参考,谢谢!
  • java课程设计ATM机.rar

    2019-06-18 00:30:12
    java课程设计,实现了一个简易的ATM机,共新手使用,还有正规的课程设计文档
  • java课程设计(耿祥义版)源代码 java课程设计(耿祥义版)源代码
  • 复习、巩固Java语言的基础知识,进一步加深对Java可视化程序设计的理解和掌握;课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力...
  • Java课程设计,包括文件压缩,聊天软件,下载二进制文件三个课程设计。包含其源码和相应的课程设计文档。
  • java课程.zip
  • 这是java课程设计 银行管理系统 有数据库链接,挺好的,适合初学者
  • Java课程设计 飞机大战 源项目文件及实验报告,本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对JAVA的相关方法与概念的理解,进一步加强了学生的发散思维及动手能力,加强了学生对计算机及软件工程...
  • 包含源码,包含实验报告。java课程设计,计算器应用。附带源码,注解详细。学生课程设计,java的项目,适合大一大二课程学习使用。
  • Java课程设计-音乐播放器,Java课程设计-音乐播放器,Java课程设计-音乐播放器
  • 广工java课程设计(文本编辑器),报告工程文件,jar包和实验报告
  • 关于Java商城项目说明书,画图用的ProcessOn这个网站。
  • java课程设计

    2018-09-16 00:20:13
    java课程设计 java课程设计 java课程设计 java课程设计
  • 仓库管理系统java课程设计仓库管理系统java课程设计仓库管理系统java课程设计仓库管理系统java课程设计仓库管理系统java课程设计仓库管理系统java课程设计
  • java课程设计,模拟ATM机,涵盖十五种应用功能,通过迭代器更新了存款取款汇款等及更改信息的所有数据。是一个很强大的ATM机,代码超过三千行
  • Java课程PPT

    2018-08-28 15:04:19
    全套Java基础课程PPT
  • Java课程设计五子棋

    2017-10-31 21:29:26
    五子棋 大学Java课程设计 eclipse编写和运行 五子棋 大学Java课程设计 eclipse编写和运行
  • Java课程笔记

    2018-12-09 17:17:05
    文档资源,Java课程笔记文档。给需要学习Java的朋友使用
  • java课程体系

    2017-05-08 11:29:38
    java 课程体系 java教学
  • 五子棋JAVA课程设计

    2014-10-22 17:04:08
    java实现的五子棋对局,包含人机对战
  • 关于点餐系统的java课程设计,由于时间原因,就写的比较简单
  • 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 01.Java语言概述(共21页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 02.理解结构化程序设计_理解面向对象(共25页).ppt 推荐优质Java...
  • 基于Java EE技术的Java课程群网络教学平台的设计与实现
  • java课程设计通讯录系统管理,可以用来应对课程设计
  • Java课程设计代码(3)

    2014-05-28 22:50:52
    大学生Java课程设计,题目很多,大家可以自行选择。程序都是经过测试的,可以运行的!极力推荐大家
  • 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 01.Java语言概述(共21页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 02.理解结构化程序设计_理解面向对象(共25页).ppt 推荐优质Java...
  • 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 01.Java语言概述(共21页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 02.理解结构化程序设计_理解面向对象(共25页).ppt 推荐优质Java...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 279,225
精华内容 111,690
关键字:

java课程

java 订阅
友情链接: 多线程控制程序.rar