ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:207.48KB ,
资源ID:10803528      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10803528.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux课程设计报告书模版.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux课程设计报告书模版.docx

1、Linux课程设计报告书模版Linux系统与程序设计课程设计报告书 报告人: 目录:1、实验项目目的 22、实验项目的功能及模块划分 23、实验项目的人员组成及指责划分 24、设计与实现 341 系统结构 342 客户端界面 3421 注册 3422 登录 4423 界面设计 4424 查找好友 443服务器的实现 5431 用户登录 5432 用户管理 5433 转发聊天消息 544 文件操作 645 通信模块的实现 6451 通信方式的选择 65、测试与调试 66、总结 77、附录:程序代码 91、实验目的 在Linux下利用java编程实现类似于QQ的通信功能。实现简单的qq功能:注册、

2、登陆、查找好友、聊天功能服务端还需实现配置文件设置、用户管理、日志显示的功能。同时使用到相关的的文件操作以及java编程。通过这次实验来锻炼在Linux下的编程能力,主要是熟悉Linux的编程环境,相关命令的操作、java软件的安装、以及对文件的操作,网络通讯等相关的方面东西。2、实验项目的功能及模块划分本实验是一个Linux下的网络即时通信工具,实现三人间的通讯。这个项目总共分为五个模块客户端,服务器,通讯,文件操作以及文档维护与测试。客户端的在分为登录、从服务器端获取在线人员并显示、选择联系人、向在线人员发送消息。实时显示别人发给你的消息。 服务端主要是为客户端提供相关的信息服务,包括保存

3、登录人员的IP信息、发送给客户端其他登录人员的IP、操作数据库等相关操作。基本上完成了注册、登陆、聊天功能总体来说可以分为几下几个模块: 1)客户端与服务器的界面设计 2)客户端的通信部分 3)服务端的通信部分 4)文件操作 5)文档测试与维护3、实验项目的人员组成及指责划分 xx:组长,系统分析、整体设计和模块划分 xx:通信模块设计和编码。 xx:客户端以及服务器界面设计和编码。 xx:文档维护和测试。 xx:文件操作的设计和编码。4、设计与实现 41 系统结构发送信息1 转发信息2 转发信息1 发送信息242 客户端界面421 注册422 登录423 界面设计4. 2. 4 查找好友43

4、服务器的实现431 用户登录: 当客户端填写相关信息后,点击登录,将会通过UDP协议发送信息至服务器端,服务器端将保存客户端的端口信息到文件中。432 用户管理433 转发聊天消息44 文件操作 :通过对文件的操作实现了对用户的管理。通过日志文件来记录客户端的信息。45 通信模块的实现 4.5.1通信方式的选择 :通信主要是通过UDP 协议实现的。服务器端保存客户端的地址信息。客户端与其他客户端通信的时候先请求服务器该客户端的地址信息,让后利用返回的地址信息向该客户端发送信息。信息不通过服务器端的转发。5、测试与调试(1)在用户注册时,当重复输入密码时不能显示错误,后经过改进后实现了这一功能,

5、即提示用户前后输入的密码不同。(2)当服务器关闭时,客户端会直接关闭。经过改进后客户端会收到提醒,提醒客户与服务器连接有错。6、总结xx:由于平时使用的都是window系统,所以linux系统接触不多虽然经过这学期对linux得系统学习,我对本次课程设计的目的和方法能够有些初步的理解,但在做的过程中却发现了很多问题,首先是linux系统的安装,就花费了我大量的时间。因为考试临近,所以实验也没有做的很成功。作为组长,对于这个实验的整体我把握的还不够好,对于模块的划分还有所欠缺。我在这个实验中主要参与了系统分析、整体设计和模块划分,以及实验过程中部分代码的编写和统筹工作。在实验中我们遇到了很多问题

6、,如java的安装,环境变量的设置,等等。在不断的尝试和错误中,懂得了如何去分析问题,解决问题,再设计程序的过程!终于在大家的合作下,我们通过各种方法努力的去解决这些问题,当然大部分已经解决,有些问题依然没有解决。但我还是有所收获。xx:在文件操作中有很多函数比如说fputs,fgets,因为对这些函数参数的格式顺序以及函数的用法上了解的不够深刻,所以在调试程序时经常会遇到这样那样的问题,后来把书自习看了一遍又在网上查阅的相关资料后才对这块内容能够做到得心应手。还有就是在进程间通信方式的选择上我们用的是套接字通信方式,吸取了在做文件操作上的教训这次我提前把套接字的属性和用法做了详细的了解。在这

7、次课程设计中我主要做了文件操作与以及图形界面方面的一些建议等,在调试和修改程序时也和其他组员交流了意见和方法。xx:在做这个qq软件的时候还是有点吃力,但是在团队合作的精神下,我们还是顺利的完成了任务,本qq系统是在linux环境下用java编写出来的。 本人在做这个qq应用软件时,参与了客户端以及服务器界面设计和编码聊天部分代码的修改。通过查找QQ图片来完成。通过本次试验增加了我对linux系统的理解并且对linux系统的知识有了更多的掌握。xx:程序采用的是UDP协议的非连接通讯,在本地网络环境下能良好的工作,通常客户应用程序比服务器应用程序简单的多因为大多数客户端不必要明显处理并发并且不

8、需要考虑其它异常,而服务器端则要复杂的多,需要考虑并发、执行效率、网络状况、客户状态和服务器崩溃等等诸多方面问题;linux系统下的多线程遵循POSIX线程接口,称为pthread。编写linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。xx:本人在做这个qq应用软件时,参与了调试和修改程序以及文档的编写。在测试时,针对于用户的注册,登陆方面我考虑了很多细节,努力的查找漏洞并考虑其它异常。在组长和队员的帮助下,同时上网查询信息,终于攻克了难关。通过本次试验增加了我对测试的理解并且对linux系统的知识有了更多的掌握。附录:部分程序代码(包括:客

9、户端主程序类,登录,服务端主程序类,在线用户类)客户端主程序类package client;import java.awt.Font;import java.awt.FontFormatException;import java.io.BufferedInputStream;import java.io.File;import java.io.IOException;import tools.SetFont;import client.frm.LoginPane;public class JQClient public static void main(String args) try Fon

10、t font = Font.createFont(Font.TRUETYPE_FONT, new BufferedInputStream(JQClient.class.getResourceAsStream(/tools/simsun.ttc); font = font.deriveFont(Font.PLAIN, 12); SetFont.setFont(font); catch (FontFormatException e) System.out.println(错误:+e.getMessage(); catch (IOException e) System.out.println(错误:

11、+e.getMessage(); new LoginPane(); 登录package client.frm;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JB

12、utton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import javax.swing.border.LineBorder;import javax.swing.border.TitledBorder;import data.UserSt

13、ate;public class LoginPane extends JFrame implements ActionListener private JLabel lblImg = new JLabel(); private JLabel lblJQNum = new JLabel(账号); private JComboBox boxJQNum = new JComboBox(); private JLabel lblPassword = new JLabel(密码); private JPasswordField pfPassword = new JPasswordField(); pri

14、vate JLabel lblState = new JLabel(状态:); private JComboBox boxState = new JComboBox(); private JButton btnRegister = new JButton(申请账号); private JButton btnSet = new JButton(设置); private JButton btnLogin = new JButton(登录); private JLabel lblServerIP = new JLabel(服务器IP:); private JTextField txtServerIP

15、 = new JTextField(127.0.0.1); private JLabel lblServerPort = new JLabel(端口:); private JTextField txtServerPort = new JTextField(3608); private boolean isSet = false; public LoginPane() setTitle(用户登录); setSize(324,235); setResizable(false); Toolkit tk=Toolkit.getDefaultToolkit(); setLocation(tk.getSc

16、reenSize().width-getSize().width)/2,(tk.getScreenSize().height-getSize().height)/2); setBackground(new Color(224,244,251); init(); btnLogin.addActionListener(this); btnRegister.addActionListener(this); btnSet.addActionListener(this); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); private

17、 void init() lblImg.setPreferredSize(new Dimension(325,47); boxState.addItem(UserState.ONLINESTATE); boxState.addItem(UserState.HIDDENSTATE); boxState.addItem(UserState.DEPARTURESTATE); boxState.addItem(UserState.BUSYSTATE); boxState.setBackground(new Color(240,250,255); boxState.setPreferredSize(ne

18、w Dimension(60,20); boxAutoLogin.setBackground(new Color(240,250,255); boxJQNum.setEditable(true); boxJQNum.setPreferredSize(new Dimension(140,20); pfPassword.setPreferredSize(new Dimension(140,20); txtServerIP.setPreferredSize(new Dimension(80,20); txtServerPort.setPreferredSize(new Dimension(50,20

19、); JPanel pane = new JPanel(); pane.setBackground(new Color(240,250,255); pane.setBorder(new LineBorder(new Color(144,185,215); pane.setLayout(new FlowLayout(FlowLayout.CENTER,15,12); pane.setPreferredSize(new Dimension(300,110); pane.add(new FillWidth(20,20,new Color(240,250,255); pane.add(lblJQNum

20、); pane.add(boxJQNum); pane.add(new FillWidth(20,20,new Color(240,250,255); pane.add(new FillWidth(20,20,new Color(240,250,255); pane.add(lblPassword); pane.add(pfPassword); pane.add(new FillWidth(20,20,new Color(240,250,255); pane.add(lblState); pane.add(boxState); TitledBorder tb = new TitledBorde

21、r(new LineBorder(Color.GRAY),网络设置); JPanel paneSet = new JPanel(); paneSet.setPreferredSize(new Dimension(300,60); paneSet.setBorder(tb); paneSet.add(lblServerIP); paneSet.add(txtServerIP); paneSet.add(new FillWidth(30,20); paneSet.add(lblServerPort); paneSet.add(txtServerPort); setLayout(new FlowLa

22、yout(FlowLayout.CENTER,5,0); add(lblImg); add(new FillWidth(100,8); add(pane); add(new FillWidth(300,8); add(btnRegister); add(btnSet); add(new FillWidth(65,20); add(new FillWidth(300,8); add(paneSet); public void actionPerformed(ActionEvent e) if(e.getSource()=btnSet) if(isSet) isSet = false; setSi

23、ze(getWidth(),getHeight()-65); btnSet.setText(设置); else isSet = true; setSize(getWidth(),getHeight()+65); btnSet.setText(设置); if(e.getSource()=btnLogin) dispose(); new MainPane(txtServerIP.getText(),Integer.parseInt(txtServerPort.getText(),Integer.parseInt(boxJQNum.getSelectedItem().toString(),new S

24、tring(pfPassword.getPassword(),(UserState)boxState.getSelectedItem().getState(); if(e.getSource()=btnRegister) dispose(); new RegisterPane(); 服务端主程序类package server;import java.awt.Font;import java.awt.FontFormatException;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInput

25、Stream;import java.io.IOException;import .URISyntaxException;import dao.UserDAOByFile;import server.frm.Server;import tools.JQCreater;import tools.SetFont;public class JQServer public final static int manager = 10000; public static void main(String args) try Font font = Font.createFont(Font.TRUETYPE

26、_FONT,new BufferedInputStream(JQServer.class.getResourceAsStream(/tools/simsun.ttc); font = font.deriveFont(Font.PLAIN, 12); SetFont.setFont(font); catch (FontFormatException e) System.out.println(错误:+e.getMessage(); catch (IOException e) System.out.println(错误:+e.getMessage(); new Server(); new Thre

27、ad() public void run() try new UserDAOByFile().addSysUser(manager); new JQCreater().saveIDJQ(1, manager); catch (IOException e) System.out.println(错误:+e.getMessage(); .start(); 在线用户类package server.frm.panes;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java

28、.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowFocusListener;import java.util.Enumeration;import java.util.Vector;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;impo

29、rt javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumn;import javax.swing.table.TableRowSorter;import server.frm.Server;import tools.DateDeal;import dao.UserDAOByFile;import data.User;import data.UserSex;import data.UserState;public class OnlinePane extends JPanel implements ActionListener,Runnable /* 查询JQ用户 */ private JLabel lblQuery = new

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1