linux课程设计报告书模版.doc
《linux课程设计报告书模版.doc》由会员分享,可在线阅读,更多相关《linux课程设计报告书模版.doc(22页珍藏版)》请在沃文网上搜索。
1、目录: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功能:注册、登陆、查找好友、聊天功能服务端还需实现配置文件设置、用户管理、日志显示的功能。同时使用到相关的的文件操作以及java编
2、程。通过这次实验来锻炼在Linux下的编程能力,主要是熟悉Linux的编程环境,相关命令的操作、java软件的安装、以及对文件的操作,网络通讯等相关的方面东西。2、实验项目的功能及模块划分本实验是一个Linux下的网络即时通信工具,实现三人间的通讯。这个项目总共分为五个模块客户端,服务器,通讯,文件操作以及文档维护与测试。客户端的在分为登录、从服务器端获取在线人员并显示、选择联系人、向在线人员发送消息。实时显示别人发给你的消息。 服务端主要是为客户端提供相关的信息服务,包括保存登录人员的IP信息、发送给客户端其他登录人员的IP、操作数据库等相关操作。基本上完成了注册、登陆、聊天功能总体来说可以
3、分为几下几个模块: 1)客户端与服务器的界面设计 2)客户端的通信部分 3)服务端的通信部分 4)文件操作 5)文档测试与维护3、实验项目的人员组成及指责划分 xx:组长,系统分析、整体设计和模块划分 xx:通信模块设计和编码。 xx:客户端以及服务器界面设计和编码。 xx:文档维护和测试。 xx:文件操作的设计和编码。4、设计与实现 41 系统结构 客户端1 服务器端 界面 通信 客户端2发送信息1 转发信息2 转发信息1 界面 通信发送信息242 客户端界面421 注册422 登录423 界面设计4. 2. 4 查找好友43服务器的实现431 用户登录: 当客户端填写相关信息后,点击登录,
4、将会通过UDP协议发送信息至服务器端,服务器端将保存客户端的端口信息到文件中。432 用户管理433 转发聊天消息44 文件操作 :通过对文件的操作实现了对用户的管理。通过日志文件来记录客户端的信息。45 通信模块的实现 4.5.1通信方式的选择 :通信主要是通过UDP 协议实现的。服务器端保存客户端的地址信息。客户端与其他客户端通信的时候先请求服务器该客户端的地址信息,让后利用返回的地址信息向该客户端发送信息。信息不通过服务器端的转发。5、测试与调试(1)在用户注册时,当重复输入密码时不能显示错误,后经过改进后实现了这一功能,即提示用户前后输入的密码不同。(2) 当服务器关闭时,客户端会直接
5、关闭。经过改进后客户端会收到提醒,提醒客户与服务器连接有错。6、总结xx:由于平时使用的都是window系统,所以linux系统接触不多虽然经过这学期对linux得系统学习,我对本次课程设计的目的和方法能够有些初步的理解,但在做的过程中却发现了很多问题,首先是linux系统的安装,就花费了我大量的时间。因为考试临近,所以实验也没有做的很成功。作为组长,对于这个实验的整体我把握的还不够好,对于模块的划分还有所欠缺。我在这个实验中主要参与了系统分析、整体设计和模块划分,以及实验过程中部分代码的编写和统筹工作。在实验中我们遇到了很多问题,如java的安装,环境变量的设置,等等。在不断的尝试和错误中,
6、懂得了如何去分析问题,解决问题,再设计程序的过程!终于在大家的合作下,我们通过各种方法努力的去解决这些问题,当然大部分已经解决,有些问题依然没有解决。但我还是有所收获。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系统的知识有了更多的掌握。附录:部分程序代码(包括:客户端主程序类,登录,服务端主程序类,在线用户类)客户端主程序类p
9、ackage 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 Font font = Font.createFont(Font.TR
10、UETYPE_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(错误:+e.getMessage();new LoginPane();登录
11、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.JButton;import javax.swing.JCheckBox;i
12、mport 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.UserState;public class LoginPane extends J
13、Frame implements ActionListenerprivate JLabel lblImg = new JLabel();private JLabel lblJQNum = new JLabel(账号);private JComboBox boxJQNum = new JComboBox();private JLabel lblPassword = new JLabel(密码);private JPasswordField pfPassword = new JPasswordField();private JLabel lblState = new JLabel(状态:);pri
14、vate 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 = new JTextField(127.0.0.1);private JLabel lblS
15、erverPort = 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.getScreenSize().width-getSize().width)/2,(tk.getScreenSize().
16、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 void init()lblImg.setPreferredSize(new Dimension(325,47);boxSta
17、te.addItem(UserState.ONLINESTATE);boxState.addItem(UserState.HIDDENSTATE);boxState.addItem(UserState.DEPARTURESTATE);boxState.addItem(UserState.BUSYSTATE);boxState.setBackground(new Color(240,250,255);boxState.setPreferredSize(new Dimension(60,20);boxAutoLogin.setBackground(new Color(240,250,255);bo
18、xJQNum.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);JPanel pane = new JPanel();pane.setBackground(new Color(240,250,255);pane.s
19、etBorder(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);pane.add(boxJQNum);pane.add(new FillWidth(20,20,new Color(240,250,255);pane.add(ne
20、w 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 TitledBorder(new LineBorder(Color.GRAY),网络设置);JPanel paneSet = new JPanel();paneSet.setPreferredSize(new
21、 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 FlowLayout(FlowLayout.CENTER,5,0);add(lblImg);add(new FillWidth(100,8);add(pane);add(new FillWidth(300,8);ad
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 课程设计 报告书 模版