聊天室系统课程设计任务书
Java聊天室的设计与实现毕业设计任务书
4.毕业设计工作进度计划:
起迄日期
工作内容
2017年
2月21日~2月25日
2月25日~3月1日
3月15日~4月15日
4月15日~5月20日
5月25日~6月15日
6月20日~6月25日
查找资料,分析题目
完成开题报告
完成详细设计,提交中期检查相关资料
系统测试、功能修改与完善
完善论文、答辩ppt
论文答辩
学生所在系审查意见:
同意
系主任:
年月日
(三)综合运用所学专业知识,完成系统的总体设计和详细设计。
(四)围绕设计课题展开调研,了解网络聊天室系统的主要功能和实现方法。
(五)研究网络聊天室系统的关键技术,根据课题要求,确定系统的开发方案和技术路线。
(六)掌握软件开发各个阶段中主要文档的编写规范,制定开发计划,按时完成各阶段的软件开发任务和文档编写工作。
2.毕业设计的具体工作内容:
(1)查阅与课题相关的参考文献,分析需求,写出开题报告。
(2)熟悉开发环境与编程语言。
(3)进行系统功能设计和界面设计。
(4)编程实现java聊天室系统。
(5)对系统进行调试,投入使用,进行实践检验。
(6)提交论文、使用说明书及完整程序。
毕业设计任务书
3.对毕业设计成果的要求:
毕业设计任务书
发任务书日期:2017年3月1日
毕业设计任务书
1.毕业设计的任务和要求:
(一)熟悉程序设计的基本知识,深入掌握基于JAVA的网络应用程序开发技术,能够完成基于JAVA的网络即时文本通信系统的设计与开发,掌握数据库的查询、更新、处理。
(二)学习和掌握JAVA技术、网络技术、数据库应用开发技术,为实现网络即时文本通信系统的设计与开发做好技术准备。
聊天室文档
湖南人文科技学院计算机系课程设计说明书课程名称:网站设计课程设计课程代码:题目:聊天室系统年级/专业/班:08级网络工程2班学生姓名:刘凯、凌佩、汪胜任、何广、梁启洪学号: 08420223、08420213、08420222、08420232、08420234指导老师:彭东海开题时间:2010年12月20日完成时间:2010年12月31日课程设计任务书及成绩评定课程名称:聊天室的设计完成者:刘凯、凌佩、汪胜任、何广、梁启洪1、设计的目的与要求(1)用ASP编程,实现一个网络聊天室。
(2)根据这个程序,实现多人上网聊天。
(3)熟悉ASP编程的应用。
2、设计进度及完成情况日期内容09-06-08 需求说明09-06-10 概要设计09-06-12 详细设计09-06-18 程序运行09-06-19 总结3、成绩评定设计成绩:(教师填写)指导老师:(签字)二○○七年月目录摘要 (4)一、需求说明 (5)1.1开发背景 (5)1.2设计目的 (5)1.3项目功能特点 (5)1.4功能需求与性能需求 (5)1.4.1功能需求 (5)1.4.2性能需求 (5)二、概要设计 (6)2.1设计原理 (6)2.2设计模型 (6)2.2.1.功能模块图 (6)2.2.2.系统总体结构图 (6)2.3 模块功能分析 (7)2.3.1用户注册登陆模块 (7)2.3.2用户密码修改模块 (7)2.3.3用户发言模块 (7)2.3.4聊天内容显示模块 (7)2.3.5在线用户列表显示模块 (7)2.3.6在线用户信息的查询模块 (7)三、详细设计 (8)3.1主要代码 (8)四、程序运行 (14)4.1用户登录界面如图 (14)4.2用户注册 (15)4.3聊天室界面如图 (15)4.4在线用户列表如图 (16)4.5数据库用户资料如图 (16)五、总结 (17)5.1开发总结 (17)5.2参考文献 (17)5.3致谢 (17)摘要随着计算机网络技术和信息技术的飞速发展,数据库技术在Internet中的应用越来越广泛,并且起到了举足轻重的作用。
局域网聊天室 JAVA课程设计
《面向对象程序设计》课程设计报告题目:局域网聊天室程序设计院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号:20121183011指导教师:吴奕2014年12月29日至2015年1月9日华中科技大学武昌分校制面向对象程序设计课程设计任务书一、设计(调查报告/论文)题目局域网聊天室程序设计二、设计(调查报告/论文)主要内容内容:用来提供局域网中用户之间的交互通讯,使用Eclipse与JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。
运用套接字Socket连接技术,实现客户端的套接字对象和服务器端的套接字对象之间的输入输出流的连接,达到数据报通信的目的基本功能与要求:实现聊天室服务器端的要求:①设计实现在特定端口上进行侦听,等待客户端的连接。
②用户确定服务器的侦听端口。
③系统能向已经连接到服务器端的用户发送系统消息。
④系统能统计在线人数。
⑤当系统停止服务时,设计程序应能断开所有的用户连接。
实现聊天室客户端的要求:①系统能连接已经开启聊天服务的服务端。
②用户确定要连接服务器端的IP地址与端口号,连接后系统应能提供显示的用户名。
③当服务器端开启的话,实现用户的登录与注销。
④用户可以通过设计的系统向所有人或者某一个人发送消息。
三、原始资料1.《面向对象程序设计课程设计》指导书2.耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料[1]张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2011.[2]耿祥义.Java课程设计(第二版).北京:清华大学出版社,2008.[3]耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.[4]邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2010.[5]邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.指导教师(签名):20年月日目录1需求与总体设计 (1)1.1需求与系统功能图 (1)1.2系统类图 (2)1.2.1服务端系统 (2)1.2.2客户端服务系统 (3)2详细设计 (4)2.1聊天室服务器端的设计 (4)2.1.1ChatServer类 (4)2.1.2ServerListen类 (5)2.1.3ServerReceive类 (5)2.1.4PortConf类 (6)2.1.5Help类 (6)2.1.6UserLinkList类 (7)2.1.7Node类 (7)2.2聊天室客户端设计 (8)2.2.1ChatClient类 (8)2.2.2ConnectConf类 (9)2.2.3UserConf类 (9)2.2.4Help类 (10)2.2.5ClientReceive类 (10)3编码实现 (11)3.1服务器编码实现 (11)3.1.1ChatServer类 (11)3.1.2ServerListen类 (21)3.1.3ServerReceive类 (23)3.1.4PortConf类 (27)3.1.5UserLinkList类 (30)3.1.6Node类 (31)3.1.7Help类 (32)3.2客户端编码实现 (34)3.2.1ChatClient类 (34)3.2.2ClientReceive类 (46)3.2.3ConnectConf类 (48)3.2.4UserConf类 (51)3.2.5Hlep类 (54)4系统测试 (56)总结 (57)1需求与总体设计1.1需求与系统功能图本系统所要实现的主要功能是为广大用户提供一个借助网络进行人际交往的平台。
JavaEE课程设计(电子档)简易聊天室,网上购物
枣庄学院信息科学与工程学院课程设计任务书题目: 简易聊天室,网上购物学号:姓名:专业:计算机应用技术课程:J2EE应用开发指导教师:职称:导师完成时间:2012 年11月----2012 年12 月枣庄学院信息科学与工程学院制课程设计任务书及成绩评定实验原理(算法流程)如果用户输入了错误的用户名或者密码则会响应登陆失败:out.println("<title>登录失败</title>");out.println("<h1>登录失败,请重新登陆</h1>");3、登陆成功进入聊天室:创建会话监听:public class counterListener implements HttpSessionListener 创建会话时调用HttpSessionListener的方法。
销毁会话(使其无效)时调用HttpSessionListener的方法。
在此处添加您的代码:sessionDestroyed(HttpSessionEvent evt);定义一个日期格式:SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd hh:mm") 把字符串按照约定的格式转换成一个日期类型:Date contentTime=new Date();String dateString =timeformat.format(contentTime);4、主函数:定义主函数的扩展:Main extends HttpServlet编码转换:response.setContentType("text ml;charset=GB2312")定义用户名和密码:String userID=request.getParameter("userID");写入小组成员的姓名和学号如:if(userID.equals("孙少伟")&&password.equals("09066062")){request.getSession().setAttribute("userID",userID);RequestDispatcher dispatcher=request.getRequestDispatcher("webchat");若果输入错误则重新设置。
java网络聊天室课程设计报告(内附代码)
课程设计之马矢奏春创作网络聊天室院(系) 别信电学院班级计算102学号姓名指导教师时间418—510课程设计任务书题目网络聊天室课程设计系 (部) 信电学院专业计算机科学与技术班级计算102 学生姓名学号4月 18 日至 5 月 10 日共 4 周指导教师(签字)系主任(签字)年月日成绩评定表目录课程设计概述2222学生信息管理系统软件总体设计223学生信息管理软件详细设计446参考文献37摘要私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に2週間手配して、私達にVisual C++の課程の設計の実習を行わせます.このファイルの詳しい説明はVisual C++6.0環境の下で、1つのソフトウェアの過程を設計して、このソフトウェアは各種のデータの個数を統計したのです.このソフトウェアの機能は、ユーザーは1段の文字を入力して、ソフトウェアは文字の中の各類のデータの数を記録して、英文のデータの数、数字のデータの数、空欄のデータの数とそれのタイプのデータの数を含んで、そしてそれらを明らかに示します.以下、課程を通して説明を設計して、データはソフトウェアの説明を統計して、プログラムは説明を調整して、総括などの方面を開発して、詳しくこのプログラムの製作の過程を説明して、作用、各種の実行することができる把持.关键字:データの統計,VC++6.0, ヘッドファイル课程设计概述`随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、德律风等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为现今社会人们主流的联系方式.因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为肯定潮水.因此呈现了QQ等聊天工具,然而QQ等聊天工具虽然方便、实用,可是,娱乐功能太多,有很多吸引人的娱乐功能,从一定水平上来说,是一种娱乐工具,不能作为用于即时通讯、文件共享的专用工具.目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中年夜部份都是绝对的C/S模式,对远程服务器有非常年夜的依赖性,没有完全实现点对点的交流.为此,我决定开发一个专用于实现两台计算机之间即时通讯、文件共享的软件,以方便两台计算机之间信息的交流.防止了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接.因此,这个软件是极具适应性和实用性的即时通讯软件.实现网络聊天的功能,采纳Windows Socket(或Java Socket)编程,服务器与客户端采纳了TCP/IP连接方式,在设计聊天方案时,可将所有信息发往服务器端,再由服务器进行处置,服务器端是所有信息的中心.服务器端要保管用户信息,可利用数据库来实现这一功能,需要建立用户信息数据库.在客户端可采纳文件系统保管聊天纪录和用户号码.可通过闪动托盘图标和播放分歧的音乐提示信息到来及好友上线等信息.可通过建立消息链表来保管用户接收的各种消息.运行环境:Windows 9x、2000、XP、Windows 7需要环境:JDK 1.6以上、eclipse开发环境硬件环境:CPU 400MHz以上,内存512MB以上学生信息管理系统软件总体设计该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求.当多个用户同时连接到服务器时,经由服务器的接收与转发即可以实现客户之间的通信.对整体系统的流程,也是分为两部份,即客户真个发起请求,服务器响应请求.首先是客户真个登岸,客户端在登岸时,必需设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求.而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给以后的发起端分配一个服务线程,用于处置它的各种请求.对客户真个各种请求,实际上都是通过在客户发往服务器的各种字符流区分的,具体的方法就是在消息的头部以及尾部添加特殊字符串,从而实现服务器抵消息请求的识别.比如对登岸信息,消息的头部就是“PEOPLO”,而对私聊中的消息,头部就是“SEC”,其他的同理都添加了头部.固然,对客户端来说,这些都是透明的,用户的把持并没有受就任何影响.在服务器端,消息被检测分析后,变回根据具体的目的进行处置,比如是私聊消息,服务器便会根据其尾部的目的信息,向目标端转发该条消息.这里额外要说的是,该系统特另外对用户发来的消息进行了加密处置,即用户的各种具体信息,不单能够防止向第三方的泄漏,而且即使服务器端呈现异常,信息也不会泄漏.对私聊的方式,该系统所采纳的方法类似于QQ的通信方式,由发起方主动连接,当目的方接收到连接请求后,会主动建立一个私聊窗口,从而实现私聊.学生信息管理软件详细设计由于这里界面设计源代码比力简单,这里不再列出.3.1.1 服务器界面设计服务器界面登岸界面注册界面聊天室界面列举部份实现通信功能的主要代码publicclass AppServer extends Thread {private ServerSocket serverSocket;private ServerFrame sFrame; privatestaticVectoruserOnline = newVector(1, 1); privatestaticVectorv = newVector(1, 1);/*** 创立服务器启动服务监听1001端口**/public AppServer() {sFrame = new ServerFrame();try {serverSocket = new ServerSocket(1001);// 获取服务器的主机名和IP地址InetAddress address = InetAddress.getLocalHost(); sFrame.txtServerName.setText(address.getHostName());sFrame.txtIP.setText(address.getHostAddress());sFrame.txtPort.setText("1001");} catch (IOException e) {fail(e, "不能启动服务!");}sFrame.txtStatus.setText("已启动...");this.start(); // 启动线程}/*** 退出服务器** @param e* 异常* @param str* 退出信息*/publicstaticvoid fail(Exception e, String str) {System.out.println(str + " ." + e);}/*** 监听客户的请求,当有用户请求时创立 Connection线程*/publicvoid run() {try {while (true) {// 监听并接受客户的请求Socket client = serverSocket.accept(); new Connection(sFrame, client, userOnline, v); // 支持多线程// System.out.println("userLength:"+userLength);}} catch (IOException e) {System.out.println("不能监听");}}/*** 启动服务器*/publicstaticvoid main(String args[]) {new AppServer();}}publicclass ServerFrame extends JFrame implements ActionListener {publicJListlist;/****/privatestaticfinallongserialVersionUID = 8936397327038098620L;// 服务器信息面板JPanel pnlServer, pnlServerInfo;JLabel lblStatus, lblNumber, lblMax, lblServerName, lblProtocol, lblIP, lblPort, lblLog;public JTextField txtStatus, txtNumber, txtMax, txtServerName, txtProtocol, txtIP, txtPort;JButton btnStop, btnSaveLog;public TextArea taLog;JTabbedPane tpServer;public TextArea taMessage;// 用户信息面板JPanel pnlUser;public JLabel lblMessage, lblUser, lblNotice, lblUserCount;JListlstUser;JScrollPane spUser;JTextField txtNotice;JButton btnSend, btnKick;public String ti = "";public String serverMessage ="";public ServerFrame() {// 服务器窗口super("[HappyChat]聊天服务器");setSize(550, 500);setDefaultClo搜索引擎优化peration(JFrame.EXIT_ON_CLOSE);setResizable(false);Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();// 在屏幕居中显示Dimension fra = this.getSize();if (fra.width > scr.width) {fra.width = scr.width;}if (fra.height > scr.height) {fra.height = scr.height;}this.setLocation((scr.width fra.width) / 2,(scr.height fra.height) / 2);// ==========服务器信息面板=========================pnlServer = new JPanel();pnlServer.setLayout(null);pnlServerInfo = new JPanel(new GridLayout(14, 1));pnlServerInfo.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(""), BorderFactory.createEmptyBorder(1, 1, 1, 1)));lblStatus = new JLabel("以后状态:");txtStatus = new JTextField(10);txtStatus.setEditable(false);lblNumber = new JLabel("以后在线人数:"); txtNumber = new JTextField("0 人", 10); txtNumber.setEditable(false);lblMax = new JLabel("最多在线人数:");txtMax = new JTextField("50 人", 10);txtMax.setEditable(false);lblServerName = new JLabel("服务器名称:"); txtServerName = new JTextField(10); txtServerName.setEditable(false);lblProtocol = new JLabel("访问协议:"); txtProtocol = new JTextField("HTTP", 10); txtProtocol.setEditable(false);lblIP = new JLabel("服务器IP:");txtIP = new JTextField(10);txtIP.setEditable(false);lblPort = new JLabel("服务器端口:");txtPort = new JTextField("8000", 10);txtPort.setEditable(false);btnStop = new JButton("关闭服务器(C)"); btnStop.addActionListener(new ActionListener() { publicvoid actionPerformed(ActionEvent arg0) {closeServer();}});lblLog = new JLabel("[服务器日志]");taLog = new TextArea(20, 50);btnSaveLog = new JButton("保管日志(S)"); btnSaveLog.addActionListener(new ActionListener() { publicvoid actionPerformed(ActionEvent arg0) {saveLog();}});pnlServerInfo.add(lblStatus);pnlServerInfo.add(txtStatus);pnlServerInfo.add(lblNumber);pnlServerInfo.add(txtNumber);pnlServerInfo.add(lblMax);pnlServerInfo.add(txtMax);pnlServerInfo.add(lblServerName); pnlServerInfo.add(txtServerName); pnlServerInfo.add(lblProtocol);pnlServerInfo.add(txtProtocol);pnlServerInfo.add(lblIP);pnlServerInfo.add(txtIP);pnlServerInfo.add(lblPort);pnlServerInfo.add(txtPort);pnlServerInfo.setBounds(5, 5, 100, 400);lblLog.setBounds(110, 5, 100, 30);taLog.setBounds(110, 35, 400, 370);btnStop.setBounds(200, 410, 120, 30); btnSaveLog.setBounds(320, 410, 120, 30); pnlServer.add(pnlServerInfo);pnlServer.add(lblLog);pnlServer.add(taLog);pnlServer.add(btnStop);pnlServer.add(btnSaveLog);// ===========在线用户面板==================== pnlUser = new JPanel();pnlUser.setLayout(null);lblMessage = new JLabel("[用户消息]");taMessage = new TextArea(20, 20);lblNotice = new JLabel("通知:");txtNotice = new JTextField(20);btnSend = new JButton("发送(S)");btnSend.setEnabled(true);btnSend.addActionListener(new ActionListener() { publicvoid actionPerformed(ActionEvent arg0) {serverMessage();}});lblUserCount = new JLabel("在线总人数 0 人"); btnKick = new JButton("踢人(K)");btnKick.addActionListener(new ActionListener() { publicvoid actionPerformed(ActionEvent arg0) {tiRen();}});lblUser = new JLabel("[在线用户列表]");lstUser = newJList();lstUser.setVisibleRowCount(17);lstUser.setFixedCellWidth(180);//指定的固订单位格宽度值,而不是从列表元素计算而来的宽度值lstUser.setFixedCellHeight(18);spUser = new JScrollPane();spUser.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);spUser.getViewport().setView(lstUser);lblMessage.setBounds(5, 5, 100, 25);taMessage.setBounds(5, 35, 300, 360);lblUser.setBounds(310, 5, 100, 25);spUser.setBounds(310, 35, 220, 360);lblNotice.setBounds(5, 410, 40, 25);txtNotice.setBounds(50, 410, 160, 25);btnSend.setBounds(210, 410, 80, 25);lblUserCount.setBounds(320, 410, 100, 25);btnKick.setBounds(440, 410, 80, 25);pnlUser.add(lblMessage);pnlUser.add(taMessage);pnlUser.add(lblUser);pnlUser.add(spUser);list = newJList();list.setListData(new String[] { "" });spUser.setViewportView(list);pnlUser.add(lblNotice);pnlUser.add(txtNotice);pnlUser.add(btnSend);pnlUser.add(lblUserCount);pnlUser.add(btnKick);// ============主标签面板======================== tpServer = new JTabbedPane(JTabbedPane.TOP); tpServer.add("服务器管理", pnlServer);tpServer.add("用户信息管理", pnlUser);this.getContentPane().add(tpServer);setVisible(true);}protectedvoid serverMessage() {// TODO 自动生成方法存根this.serverMessage = txtNotice.getText();txtNotice.setText("");}protectedvoid closeServer() {// TODO 自动生成方法存根this.dispose();}protectedvoid saveLog() {// TODO 自动生成方法存根try {FileOutputStream fileoutput = new FileOutputStream("log.txt", true);String temp = taMessage.getText();fileoutput.write(temp.getBytes());fileoutput.close();JOptionPane.showMessageDialog(null, "记录保管在log.txt");} catch (Exception e) {System.out.println(e);}}protectedvoid tiRen() {// TODO 自动生成方法存根ti = list.getSelectedValue().toString();log("Ti:"+ti);}privatevoid log(String string) {// TODO 自动生成方法存根String newta = taMessage.getText();newta += ("\n"+string);taMessage.setText(newta);}publicvoid actionPerformed(ActionEvent evt) {publicstaticvoid main(String args[]) { new ServerFrame();}}publicclass Connection extends Thread { /*** 与客户端通讯Socket*/private Socket netClient;/*** 在线用户列表*/private Vector<Customer> userOnline; /*** 聊天信息*/private Vector<Chat> userChat;/*** 从客户到服务器输入流*/private ObjectInputStream fromClient; /*** 传到客户端打印流private PrintStream toClient;/*** 注册用户列表*/privatestaticVectorvList = newVector();/*** 临时对象*/private Object obj;/*** 服务器日志窗体*/private ServerFrame sFrame;@SuppressWarnings("unchecked")/*** 创立与客户端通讯*/public Connection(ServerFrame frame, Socket client, Vector u, Vector c) { netClient = client;userOnline = u;userChat = c;sFrame = frame;try {// 发生双向通信// 检索客户输入fromClient = new ObjectInputStream(netClient.getInputStream());// 服务器写到客户toClient = new PrintStream(netClient.getOutputStream());} catch (IOException e) {try {netClient.close();} catch (IOException e1) {System.out.println("不能建立流" + e1); return;}}this.start();}/*** 处置与客户真个通讯线程*/publicvoid run() {try {// obj是Object类的对象obj = (Object) fromClient.readObject();if (obj.getClass().getName().equals("Customer")) {// serverLogin();serverLoginDB();}if (obj.getClass().getName().equals("Register_Customer")) {// serverRegiste();serverRegisteDB();}if (obj.getClass().getName().equals("Message")) {serverMessage();}if (obj.getClass().getName().equals("Chat")) {serverChat();}if (obj.getClass().getName().equals("Exit")) {serverExit();}} catch (IOException e) {System.out.println(e);} catch (ClassNotFoundException e1) {System.out.println("读对象发生毛病!" + e1);} finally {try {netClient.close();} catch (IOException e) {System.out.println(e);}}}/*** 登录处置*/@SuppressWarnings("deprecation")publicvoid serverLogin() {try {Customer clientMessage2 = (Customer) obj;// 读文件FileInputStream file3 = new FileInputStream("user.txt");ObjectInputStream objInput1 = new ObjectInputStream(file3);vList = (Vector) objInput1.readObject();int find = 0; // 查找判断标识表记标帜// System.out.println(find);for (int i = 0; i < vList.size(); i++) {Register_Customer reg = (Register_Customer) vList.elementAt(i);if (reg.custName.equals(clientMessage2.custName)) {find = 1;if (!reg.custPassword.equals(clientMessage2.custPassword)) {toClient.println("密码不正确");break;} else {// 判断是否已经登录int login_flag = 0;for (int a = 0; a < userOnline.size(); a++) {String _custName = ((Customer) userOnline.elementAt(a)).custName;if (clientMessage2.custName.equals(_custName)) {login_flag = 1;break;}}if (userOnline.size() >= 50) {toClient.println("登录人数过多,请稍候再试");break;}if (login_flag == 0) {clientMessage2.custHead = reg.head;// getUserHeadByName(clientMessage2.custName);userOnline.addElement(clientMessage2);toClient.println("登录胜利");Date t = new Date();log("用户" +clientMessage2.custName + "登录胜利,"+ "登录时间:" + t.toLocaleString() + "\n");freshServerUserList();break;} else {toClient.println("该用户已登录");}}} else { continue;}}if (find == 0) {toClient.println("没有这个用户,请先注册");}file3.close();objInput1.close(); fromClient.close();} catch (ClassNotFoundException e) {System.out.println(e);} catch (IOException e) {System.out.println(e);}}/**** 登录处置** @throws Exception*/@SuppressWarnings("deprecation")publicvoid serverLoginDB() {try {Customer clientMessage2 = (Customer) obj;String name = clientMessage2.custName;String pass = clientMessage2.custPassword;String sql = "select * from yonghu where custName='" + name + "'";ResultSet rs = DB.executeQuery(sql);System.out.println("sql:" + sql);boolean login = false;String head="";while (rs.next()) {String ps=rs.getString("custPassword").toString();System.out.println("ps:["+ps+"]");System.out.println("pass:["+pass+"]");if (ps.equals(pass.toString())) {login = true;System.out.println("logined:");}System.out.println("compareTo:"+pareTo(pass));head=rs.getString("head");System.out.println("head:"+rs.getString("head"));}System.out.println("login:"+login);if (!login) {toClient.println("密码不正确");return;}// 判断是否已经登录int login_flag = 0;for (int a = 0; a < userOnline.size(); a++) {String _custName = ((Customer)userOnline.elementAt(a)).custName;if (clientMessage2.custName.equals(_custName)) {login_flag = 1;break;}}if (userOnline.size() >= 50) {toClient.println("登录人数过多,请稍候再试");return;}if (login_flag == 0) {System.out.println("head:"+head);clientMessage2.custHead =head;// getUserHeadByName(clientMessage2.custName);userOnline.addElement(clientMessage2);toClient.println("登录胜利");Date t = new Date();log("用户" + clientMessage2.custName + "登录胜利," + "登录时间:"+ t.toLocaleString() + "\n");freshServerUserList();return;} else {toClient.println("该用户已登录");}fromClient.close();} catch (Exception e) {e.printStackTrace();}}/*** 刷新服务器日志窗体在线列表**/privatevoid freshServerUserList() {String[] userList = new String[50];Customer cus = null;for (int j = 0; j < userOnline.size(); j++) {cus = (Customer) userOnline.get(j);userList[j] = cus.custName;}sFrame.list.setListData(userList);sFrame.txtNumber.setText("" + userOnline.size());sFrame.lblUserCount.setText("以后在线人数:" + userOnline.size());// System.out.println("fresh ok");}/*** 注册处置*/@SuppressWarnings( { "unchecked", "deprecation" })publicvoid serverRegiste() {try {int flag = 0; // 是否重名判断标识表记标帜Register_Customer clientMessage = (Register_Customer) obj;File fList = new File("user.txt");if (fList.length() != 0)// 判断是否是第一个注册用户{ObjectInputStream objInput = new ObjectInputStream( new FileInputStream(fList));vList = (Vector) objInput.readObject();// 判断是否有重名for (int i = 0; i < vList.size(); i++) {Register_Customer reg = (Register_Customer) vList.elementAt(i);if (reg.custName.equals(clientMessage.custName)) {toClient.println("注册名重复,请另外选择");flag = 1;break;} elseif (reg.custName.equals("所有人")) {toClient.println("禁止使用此注册名,请另外选择");flag = 1;break;}}}if (flag == 0) {// 添加新注册用户vList.addElement(clientMessage);// 将向量中的类写回文件FileOutputStream file = new FileOutputStream(fList);ObjectOutputStream objout = new ObjectOutputStream(file);objout.writeObject(vList);// 发送注册胜利信息toClient.println(clientMessage.custName + "注册胜利");Date t = new Date();log("用户" + clientMessage.custName + "注册胜利, " + "注册时间:"+ t.toLocaleString() + "\n");file.close();objout.close();fromClient.close();}} catch (ClassNotFoundException e) {System.out.println(e);} catch (IOException e) {System.out.println(e);}}/*** 注册处置*/@SuppressWarnings( { "unchecked", "deprecation" })publicvoid serverRegisteDB() {try {intflag = 0; // 是否重名判断标识表记标帜Register_Customer clientMessage = (Register_Customer) obj;String sql = "select * from yonghu where custName='"+ clientMessage.custName + "'";ResultSet rs = DB.executeQuery(sql);System.out.println("sql:" + sql);boolean reg = false;while (rs.next()) {reg = true;ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumns = rsmd.getColumnCount();for(int i=1;i<=numberOfColumns;i++){String me=rsmd.getColumnName(i);String v=rs.getString(i);System.out.println(me+":"+v);}System.out.println();}System.out.println("reg:"+reg);if (reg) {toClient.println("注册名重复,请另外选择");return;}if (clientMessage.custName.equals("所有人")) {toClient.println("禁止使用此注册名,请另外选择");return;}sql = "insert intoyonghu(custName,custPassword,age,sex,email,head) values('"+ "','"+ "','"+ "','"+ "','"+ "','" + clientMessage.head + "')";System.out.println("c:"+sql);DB.executeUpdate(sql);toClient.println(clientMessage.custName + "注册胜利");Date t = new Date();log("用户" + clientMessage.custName + "注册胜利, " + "注册时间:"+ t.toLocaleString() + "\n");fromClient.close();} catch (Exception e) {e.printStackTrace();System.out.println(e);}}/*** 发送信息处置*/publicvoid serverMessage() {try {Message mess = new Message();erOnLine = userOnline;mess.chat = userChat;mess.ti = sFrame.ti;mess.serverMessage = "" + sFrame.serverMessage;ObjectOutputStream outputstream = new ObjectOutputStream(netClient.getOutputStream());outputstream.writeObject((Message) mess);netClient.close();outputstream.close();} catch (IOException e) {}}/*** 增加信息处置*/publicvoid serverChat() {// 将接收到的对象值赋给聊天信息的序列化对象Chat cObj = new Chat();cObj = (Chat) obj;// chenmincObj.chatMessage = WordFilter.filter(cObj.chatMessage);chatLog(cObj);// 将聊天信息的序列化对象填加到保管聊天信息的矢量中userChat.addElement((Chat) cObj);return;}/*** 用户退出处置*/@SuppressWarnings("deprecation")publicvoid serverExit() {Exit exit = new Exit();exit = (Exit) obj;removeUser(exit);// chenminif (sFrame.ti.equals(exit.exitname)) {sFrame.ti = "";}Date t = new Date();log("用户" + exit.exitname + "已经退出, " + "退出时间:" + t.toLocaleString());freshServerUserList();}/*** 在线用户中删除退出用户** @param exit* 退出用户名对象*/privatevoid removeUser(Exit exit) {// TODO 自动生成方法存根Vector<Customer> vec = new Vector<Customer>();Customer _cus = null;for (int j = 0; j < userOnline.size(); j++) {_cus = (Customer) userOnline.get(j);if (!exit.exitname.equals(_cus.custName)) {vec.add(_cus);}// System.out.println("list:"+_cus.custName);}userOnline.removeAllElements();for (int j = 0; j < vec.size(); j++) {_cus = (Customer) vec.get(j); userOnline.add(_cus);}}/*** 日志服务器窗体写信息** @param log* 日志信息*/publicvoid log(String log) {String newlog = sFrame.taLog.getText() + "\n" + log; sFrame.taLog.setText(newlog);}/**** 日志服务器窗体写聊天信息*** 聊天信息对象*/@SuppressWarnings("deprecation")publicvoid chatLog(Chat obj) {String newlog = sFrame.taMessage.getText();Date date = new Date();if (!obj.whisper) {newlog += "\n";newlog += ("[" + date.toLocaleString() + "]");newlog += obj.chatUser;newlog += ">";newlog += obj.chatToUser;newlog += ":";newlog += obj.chatMessage;}String text = "";text += obj.chatUser;text += ">";text += obj.chatToUser;text += ":";text += obj.chatMessage;String sql ="insert into logs(text,shijian)values('"+text+"','"+date.toLocaleString()+"')";try {System.out.println(sql);DB.executeUpdate(sql);} catch (Exception e) {// TODO Autogenerated catch blocke.printStackTrace(); }sFrame.taMessage.setText(newlog);}}创作时间:二零二一年六月三十日设计体会及今后的改进意见为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再缔造,学校特安插我们进行为期二周的Visual C++课程设计实习,并安插了指导老师帮手辅导,让我们在规范化、严谨化、实用化上面有了很年夜进展.在此次字符统计法式开发过程中,有很多工具值得我们思考并总结.开发过程年夜体可分为以下几个步伐:(1)思考总体设计方案:总体结构和模块外部设计,功能分配.思考要实现整个法式年夜体需要的几个模块和其中用到的Visual C++语言基本把持符、语句等.(2)画出总体设计方案流程图:用流程图的形式展现你的基本编程思想.(3)流程图具体化:即将流程图中的几年夜模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码.(4)编纂法式代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不竭改进.如何实现各函数功能,到达预期效果也将是一项繁复的工作.(5)代码的调试:在Visual C++6.0环境下输入代码并进行调试和正确运行.在调试过程中会遇到很多需要精化的处所,需要十足的耐心与细心,不竭改进完善法式.(6)最后修饰:法式可以正确运行之后,再不影响法式功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,把持更人性化.增强法式的新意与可行性.通过这次课程设计,使我们更加熟悉的掌握了Visual C++语言的运用.帮手我们熟悉了更多Visual C++语言的功能,提高了我们的入手能力,学到了许多解决实际问题的贵重经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣.我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于立异.参考文献1)电子工业出书社《JSP实用教程》,郑阿奇编著2)电子工业出书社《JAVA法式设计实用教程》,叶核亚编著考资料创作时间:二零二一年六月三十日。
网络聊天室毕业设计任务书
一、课题背景、目的、意义课题背景互联网技术的广泛应用,对整个世界政治、经济、文化等各方面产生了十分广泛和深远的影响。
它奇迹般地崛起、爆炸般地扩容,令全世界瞩目。
如今,大大小小的网络已遍布全球,并通过Internet实现了互联。
据估计,Internet的规模大约每年要翻一番,网络的应用领域也从做出的科技和教育领域,很快进入到文化、产业、政治、经济、新闻、体育、娱乐、商业以及服务行业。
课题目的完成一个基于浏览器/服务器方式的多功能的网络聊天应用系统,客户通过浏览器可以发送信息,然后其他所有用户接收到该信息并将其显示在界面中,服务器对信息进行有关处理并向适当的用户发送,同时在服务器端还将显示所有的在线用户。
每个用户能通过Internet和其他用户用文本和声音进行聊天。
课题意义由于网络有以下几个特点使得开发网络聊天室变得很必要:(1)便捷性:只要有浏览器和网络,你就可以任何时间任何地点登陆聊天室;(2)广泛性:聊天室系统具有开放性,许多非互联网络上的用户可以通过网与互联网络上的用户相互沟通。
(3)即时性:它可以做到即使发送即使接受的效果,相比于电子邮件在时间上更加优势;(4)廉价性: 网络的空间几乎是无限的,但价格相对于所获的得信息而收取的费用却是如此的低廉。
相对手机收费而言,聊天室更让人接受。
二、课题的主要内容及要求(要求详实、具体、准确)该课题要求在充分了解计算机课程教学的前提下,使用开发语言,通过B/S技术来设计与实现系统的相关功能,同时界面要友好简单,对于数据的处理要合理与完善。
总体设计思路,把总的系统主要分成以下三个模块。
1.登陆模块:为普通用户服务,主要包括:a)注册:普通用户可在登陆界面注册新用户。
b)登陆:注册好的用户可以通过输入用户名和密码进行登陆聊天模块进行聊天。
2.聊天模块:为已注册的用户服务,主要包括:a)公共聊天:用户可以在公共房间进行讨论聊天。
b)私人聊天:用户可以选择与指定的用户悄悄话聊天,别人是看不到的。
课程设计任务书--即时聊天系统
《JAVA程序设计》课程设计任务书--即时聊天系统一、课程设计任务与目的本课程设计要求学生对《即时聊天系统》进行分析、设计及编程实现。
要求该系统实现服务器端和客户端功能,可以在企业内部网络和互联网上运行。
可以和好友进行交流,信息即时发送,即时回复,传输文件等功能。
界面友好。
本课程设计对课程设计项目已经作了较为详细的分析及相关知识讲解,通过课程设计,促使学生专业技能得到综合训练,让学生了解软件开发基本技术和工作过程。
同时,本课程设计中将会让学生了解JAVA程序设计中一些高级技术。
通过本系统的开发,同学门要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养同学们从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。
二、系统开发步骤软件开发一般有以下步骤:1. 问题定义2. 可行性研究3. 需求分析4. 总体设计5. 详细设计6. 编码及单元测试7. 综合测试8. 软件维护其中1、2、3步可以整合为调研分析阶段,4、5、6、7步可以整合为项目实施阶段。
根据本次课程设计的实际情况,我们着重进行系统设计和编码实施。
该阶段主要工作有:1.系统结构的总体设计决定系统的总体结构,包括整个系统分哪些部分,各部分之间有什么联系以及已确定的需求对这些组成部分如何分配等方面。
2.数据结构定义定义软件处理的对象——类,定义数据处理流程。
3.详细设计对各功能模块的功能定义,说明模块之间的调用关系与接口(参数)。
4.编码及调试根据详细设计的要求,按照统一的要求和编码规范,用JAVA语言编码实现,同时负责每个模块的独立调试。
5.综合测试软件开发的后期是软件装配和综合测试。
软件测试一般有专业的测试人员,同时通过发布使用试用版(体验版)等方式让用户体验、测试。
在多次测试改进后,才正式发布。
三、系统功能需求描述1.客户端注册新用户功能。
2.客户登录功能。
3.添加/删除好友功能。
4.消息收发功能。
5.好友上下线提示。
6.用户基本信息管理。
聊天室课程设计
聊天室课程设计一、课程目标知识目标:1. 学生能理解并掌握网络聊天室的基本概念,了解其功能和用途;2. 学生能够运用所学的词汇和语法知识,进行流畅的网络交流;3. 学生能够识别并使用网络聊天室中的常用表达方式和礼貌用语。
技能目标:1. 学生能够熟练操作网络聊天室软件,包括发送消息、接收消息和表情使用等;2. 学生能够运用所学的交际技巧,与他人进行有效的网络对话;3. 学生能够通过聊天室进行信息搜索和问题解答,提高信息获取和处理能力。
情感态度价值观目标:1. 学生能够树立正确的网络交流意识,尊重他人,保持友善和礼貌的态度;2. 学生能够意识到网络聊天室的积极作用,如增进友谊、拓展知识等;3. 学生能够认识到网络聊天室的潜在风险,学会保护个人隐私,遵守网络道德规范。
课程性质:本课程为信息技术与英语学科的融合课程,旨在提高学生的网络交流能力和英语实际应用能力。
学生特点:六年级学生已具备一定的英语基础和计算机操作技能,对网络聊天室充满好奇,但可能缺乏安全意识和正确使用网络的能力。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,通过互动交流、案例分析等方式,培养学生的网络沟通能力和信息安全意识。
将课程目标分解为具体学习成果,便于教学设计和评估。
二、教学内容1. 网络聊天室基本概念:介绍网络聊天室的定义、功能、分类及其在日常生活和学习中的应用场景。
教材章节:《信息技术》第五章第三节“网络交流工具”2. 网络聊天室操作技巧:教授如何注册、登录聊天室,发送消息、接收消息、使用表情和图片等功能。
教材章节:《信息技术》第五章第四节“网络聊天工具的使用”3. 网络聊天室交际礼仪:讲解网络聊天室中的礼貌用语、表达方式以及尊重他人、保护隐私等原则。
教材章节:《英语》第六单元“Social Etiquette”4. 网络安全与道德:引导学生了解网络聊天室的安全风险,教育学生保护个人信息,遵守网络道德规范。
教材章节:《信息技术》第五章第五节“网络安全与道德”5. 实践活动:组织学生进行网络聊天室模拟对话,提高实际应用能力和网络沟通技巧。
Java聊天系统设计课程设计说明书
Java聊天系统详细设计1 引言1.1编写目的聊天系统详细设计是设计的第三个阶段,这个阶段的主要任务是在聊天概要设计的基础上,对概要设计中产生的功能模块进行过程描述,设计功能模块的内部细节,包括数据结构和算法,为编写源代码提供必要的说明。
概要设计解决了软件系统总体设计问题,包括整体软件系统的结构,功能模块的划分,模块功能和模块间的联系等,详细设计则是要解决如何实现各个模块的内部功能,及模块设计,具体的说,模块设计就是为已经产生的聊天系统各个子系统设计详细的算法,但这并不等同于系统实现阶段用具体语言编码,它只是对实现细节做精确的描述,这样编码阶段就可以将详细中对功能实现的描述,直接翻译,转化为用某种程序设计语言写的程序。
1.2 背景根据山东科技大学教学要求,实现理论与实践相结合的办学理念,培养21世纪高素质人才,校方安排了与操作系统课程相关的课程设计。
1.3 定义1. 项目名称:Java聊天系统2. 项目提出者:山东科技大学3. 项目开发者:三个臭皮匠小组4. 用户:聊天群5. 运行环境:XP, win7,win8 unix操作平台6. 开发平台:Eclipse 、Java7.Eclipse:软件开发工具,J2EE可视化开发平台。
8.Java :面向对象开发语言。
1.4 参考资料[1]《软件工程实验指导书》清华大学出版社2003[2]王珊,萨师煊编著《数据库系统概论》高等教育出版社2006[3]钱乐秋编著《软件工程》清华大学出版社2007[4]张海藩编著《软件工程导论》清华大学出版社2008[5]汤子瀛编著《计算机操作系统》第三版西安电子科技大学出版社2007 2.总体设计2.1 需求概要(1)用户注册模块:对于有意使用本产品的用户首先要登陆我官网并打开相关的账户注册链接,进入账户注册页面。
根据相关提示操作:输入账户名,密码,确认密码,注册邮箱等(详细内容请到官网查询),在填写完相关信息后点击“注册”,会提示用户注册成功,并会给启用注册邮箱发送注册成功激活链接,用户只有通过打开邮箱激活成功以后才能登陆并使用本聊天软件(sisi)。
Java课程设计聊天室(含代码)
Java程序课程设计任务书JAVA聊天室的系统的设计与开发1.主要容:用JAVA实现基于C/S模式的聊天室系统。
聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。
2.具体要求(包括技术要求等):系统的功能要求:A.服务器端主要功能如下:1.在特定端口上进行侦听,等待客户端连接。
2.用户可以配置服务器端的侦听端口,默认端口为8888。
3.向已经连接到服务器端的用户发送系统消息。
4.统计在线人数。
5.当停止服务时,断开所有的用户连接。
B.客户端的主要功能如下:1.连接到已经开启聊天服务的服务器端。
2.用户可以配置要连接的服务器端的IP地址和端口号。
3.用户可以配置连接后显示的用户名。
4.当服务器端开启的话,用户可以随时登录和注销。
5.用户可以向所有人或某一个人发送消息。
学习并掌握一下技术:Java JavaBean 等熟练使用一下开发工具:Eclipse,JCreator 等实现系统上诉的功能。
3.进度安排:12月28日~ 12月29日:课程设计选题,查找参考资料12月30日~ 1月1日:完成系统设计1月2日~ 1月5日:完成程序代码的编写1月6日:系统测试与完善1月7日:完成课程设计报告,准备答辩4.主要参考文献:[1].广彬孟红蕊永宝.Java课程设计(案例精编)[M].清华大学.2007年版摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国腾讯公司开发的OICQ。
基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。
一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC-ODBC桥访问数据库。
网络聊天室课程设计说明书含源程序
操作系统课程设计报告目录一.设计要求和目的 (3)二.背景知识 (4)三.客户端设计 (5)四.客户端主要代码 (6)五.设计体会 (9)摘要随着网络信息时代的来临,Internet人们越来越习惯于在网上获取和交流信息。
据调查显示,80%以上的人上网都会打开聊天工具来聊天,而几乎每一个年轻人都会去聊天。
使用网上聊天已经成为现代年轻人一种新的交往方式。
聊天室更适合于陌生人之自由的聊天世界。
因此我们联系所学的操作系统、数据库和MFC知识决定做一个简易的聊天系统。
一、设计要求和目的此课题是实现一个即时通信系统完成1:进程间通信、并发(同步/互斥)、文件读写2:内存管理、Dll、Windows消息机制、IO。
课题任务分工:客户端子系统:在客户端系统的功能实现上,可以分为以下几个部分:[1]进程信息的输入系统把用户进程要求发送的信息由键盘输入从文件读取。
这部分功能是客户端子系统的基本部分,这个功能是以后各个部分的基础。
系统要求做到即能够从其它子系统中共享一部分信息[2]进程信息的存储:将进程的信息存储到客户端系统中,以及将发送的信息保存在文件中,以备以后进程之间通信确认以及查询。
[3]通信数据的传递及接收:将客户所发送的信息由客户端由网络传到服务器端上,并且接受航服务器返回的接收方发送的信息,然后存储起来。
用户客户端服务器端用户设置连接设置用户发送信息通信内容用户得到的信息处理用户退出服务器日志数据通信信息连接保存保存处理监控二.背景知识 SOCKETSocket 可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket 在应用程序中创建,通过绑定与网络驱动建立关系。
此后,应用程序送给Socket 的数据,由Socket 交网络驱动程序向网络上发送出去。
计算机从网络上收到与该Socket 绑定IP 地址和端口号相关的数据后,由网络驱动程序交给Socket ,应用程序便可从该Socket中提取接收到得数据,网络应用程序就是这样通过Socket进行数据的发送与接收的(1)创建Socket;(2)打开连接到Socket的输入/出流;(3)按照一定的协议对Socket进行读/写操作;(4)关闭Socket.IO技术阻塞模式可能造成阻塞的函数有:connect()、accept()、读写函数C/S两端通过Socket机制进行连接(1) 客户端的编程流程:a创建Socket对象,向Server的监听端口请求;b通过向新Socket中读写数据与Server端通信;c关闭Socket,结束与Server端;(2)服务器端的编程流程:1打开Server Socket,创建一个服务器型套接字和一个普通套接字,服务器型套接字在指定端口为客户端请求的Socket 服务;2 等待来自客户端的Client端的请求;3接收Client端的请求,用返回的Socket建立连接;4通过向Socket中读写数据来与Client端通信;5关闭Socket,结束与当前Client端的通信;6关闭SerketSocket对象结束监听服务。
java网络聊天室课程设计报告(内附代码)
课程设计网络聊天室院(系) 别信电学院班级计算102学号姓名指导教师时间2013-4-18—2013-5-10 课程设计任务书题目网络聊天室课程设计系(部) 信电学院专业计算机科学与技术班级计算102学生姓名学号4 月18 日至5 月10 日共 4 周指导教师(签字)系主任(签字)年月日成绩评定表目录课程设计概述 (3)1.1问题描述 (3)1.2功能需求分析 (3)1.3环境需求分析 (3)学生信息管理系统软件总体设计 (4)2.1整体思路 (4)2.2总体设计流程图 (5)学生信息管理软件详细设计 (6)3.1.界面设计 (6)3.2通信功能实现方法 (8)参考文献 (44)摘要私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に2週間手配して、私達にVisual C++の課程の設計の実習を行わせます.このファイルの詳しい説明はVisual C++6.0環境の下で、1つのソフトウェアの過程を設計して、このソフトウェアは各種のデータの個数を統計したのです。
このソフトウェアの機能は、ユーザーは1段の文字を入力して、ソフトウェアは文字の中の各類のデータの数を記録して、英文のデータの数、数字のデータの数、空欄のデータの数とそれのタイプのデータの数を含んで、そしてそれらを明らかに示します.以下、課程を通して説明を設計して、データはソフトウェアの説明を統計して、プログラムは説明を調整して、総括などの方面を開発して、詳しくこのプログラムの製作の過程を説明して、作用、各種の実行することができる操作.关键字:データの統計,VC++6.0, ヘッドファイル课程设计概述1.1问题描述`随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。
因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。
多人聊天系统的设计与实现课程设计说明书
摘要本课程设计主要是设计并实现一个简单的多人聊天程序,该聊天程序能够支持多人聊天,聊天的内容可以仅仅支持文本信息,聊天程序包括服务器程序和客户端程序。
在课程设计中系统的开发平台为Eclipse程序运行平台为Windows XP。
关键词:聊天程序;服务器;客户端;Eclipse目录1 课题描述 ................................................................................... 错误!未定义书签。
2 设计过程 (2)2.1服务器模块 (3)2.2客户端模块 (3)2.3信息处理模块 (4)2.4源代码 (4)3 测试 (11)总结 (13)参考文献 (14)1 课题描述随着社会发展,Internent的迅速普及,人们对实时通信的要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这样的经历。
客户客户端/服务器模式是一种能够在基于网络环境的分布处理过程中,使用基于连接的网络通信模型。
该通信模型首先在客户机和服务器之间定义一套通信协议,并创建一个Socket类,利用这个类来建立一条可靠的链接;然后,客户端/服务器再在这条连接上可靠地传输数据。
客户端发出请求,服务器发出请求,服务器监听来自客户机的请求,并为客户端提供相应服务。
客户/服务模式可靠性高、采用模块化设计所以它的优势很明显。
是现代通信不可或缺的一部分。
本课题主要是通过对简单聊天程序的设计及QQ原理的分析,了解聊天程序的功能需求及工作原理;熟悉TCP/IP协议以及套节字编程原理;熟悉Eclipse 编程环境及Socket/ServerSocket编程方法。
开发工具:Eclipse2 设计过程聊天室的总体设计过程比较简单主要是构建设计框图。
就是当客户端发出信息时,我们将数据写到socket ,当对方有数据到达时,我们从socket 读出来并显示给客户。
《Java程序设计》课程设计报告-简易聊天室系统
华北科技学院课程设计说明书班级: 信息与计算科学B091学号:姓名:设计题目: 简易聊天室系统设计时间: 2011.12.26 至2011.12.30 指导教师:评语:________________________________ ________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____目录1 引言 (1)1.1课程设计选题 (1)1.2课程设计的目的 (1)1.3本选题的设计背景 (1)2.1 功能需求 (1)2.2 系统的开发运行环境 (2)2 总体设计 (2)3.1 系统体系结构设计 (2)3 详细设计与实现 (3)4.1 登录模块 (3)4.2 客户端注册界面模块 (5)4.3 客户端聊天模块 (8)4.4 服务器端模块 (10)4 小结和展望 (13)参考文献 (14)附录 (15)使用说明书 (15)源程序清单 (18)1引言1.1课程设计选题《简易聊天室系统》1.2课程设计的目的使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。
1.3本选题的设计背景聊天是是网络中广泛应用的服务之一,特别是现在信息社会对聊天的依赖也越累越大,我们品是在生活中很多人都在用的QQ就是一种很好的聊天工具,它不仅只是聊天那么简单,其它的功能也非常强大。
基于Java语言在网络编程中的广泛应用与我们基本每时每刻都在接触的聊天系统。
我选择尝试对一简单的聊天系统进行开发。
聊天系统报告书 课程设计
Java网络编程课程设计报告书设计题目: mini聊天室院系:信息工程学院班级:软件0902 组别:第十三组学号:姓名: 张路路起止日期: 2012年5月29日-2012年6月11日指导教师: 黄素萍目录...................................................................................................................................一、研究意义 (1)1.1课程设计意义及背景 (1)1.2 研究内容 (1)二、概要及结构设计 (3)2.1 功能模块图 (3)2.2功能模块设计 (4)2.3 技术设计 (4)三、详细设计 (5)3.1 服务器端监听功能的实现 (5)3.2服务器启动服务功能的业务逻辑 (7)3.3服务器收发功能的业务逻辑 (7)3.4服务器消息显示的业务逻辑 (9)四、测试过程与运行结果 (10)五、参考文献 (13)一、研究意义1.1课程设计意义及背景在网络越来越发达的今天,人们对网络的依赖越来越多,各种网络应用层出不穷,网络编程越来越受大广大程序员的重视。
Java语言创建之初的目的之一就是为了能够很好地进行网络通信。
简单的说,网络编程就是与其他计算机进行信息交换。
网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。
网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。
在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。
而TCP 层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
目前较为流行的网络编程模型是客户机/服务器(C/S)结构。
即通信双方一方作为服务器等待客户提出请求并予以响应。
聊天室
合肥学院计算机科学与技术系课程设计任务书2016~2017学年第二学期课程Web应用系统开发课程设计名称聊天室专业班级指导教师2016年12月1课程设计目的通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《Web应用系统开发》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用Web应用技术编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)熟练掌握HTML、XML、CSS、JavaScript、JSP、JDBC等相关技术。
2课程设计名称及内容课程设计名称:聊天室设计内容:设计一个在线聊天室,实现用户之间实时地文字聊天。
3任务和要求系统内用户分为管理员和普通用户两类,普通用户可以在线聊天,管理员负责维护聊天室和用户。
3.1系统功能和界面参考QQ聊天室。
3.2提供注册功能,系统的访问者可以注册成为普通用户。
3.3普通用户登陆后首先显示聊天大厅,在大厅中有多个聊天室,选择其中一个进入后可进行聊天。
3.4用户在聊天室中可以看到本聊天室的其他用户,可以对所有人发言,也可以只对某一个用户发言。
发言可以选择公开和秘密两种,如果公开则所有人都能看到该发言内容;如果是秘密,则只有接受者才能看到。
聊天室的发言面板采用滚屏方式实时显示所有用户的发言3.5用户可以退出聊天室,到大厅后再选择进入其他聊天室,也可以从大厅退出系统。
3.6管理员登陆后可以维护聊天室和用户。
管理员可以增加、修改和删除聊天室,可以删除注册的普通用户。
4设计方案提示4.1系统中的所有数据都应存储在关系数据库中,建议采用MS SQLServer或者MySQL。
4.2滚屏可以通过定时刷新来实现5其它开发环境要求:Eclipse/MyEclipse + Tomcat 8/7/6 3人题6参考资料[1] 邹建.深入浅出--SQL SERVER 2005开发、管理与应用实例.人民邮电出版社,2008.[2] 樊月华.Web技术应用基础.清华大学出版社, 2006.[3] 飞思科技产品研发著:JSP应用开发详解(第二版),电子工业出版社, 2004年.[4] 张洪伟著:Tomcat Web开发及整合应用,清华大学出版社, 2006年.[5] 陈刚著:Eclipse从入门到精通(第2版),清华大学出版社, 2007年.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥学院计算机科学与技术系课程设计报告2011~2012学年第二学期课程WEB课程设计课程设计名称聊天室学生姓名高文泉学号1001014008专业班级软件服务外包10级计本(4)班指导教师许强檀明屠菁张艳明2012年6月12日课程设计任务书................................................................. 错误!未定义书签。
目录..................................................................................... 错误!未定义书签。
第一章、绪论 (3)1.1题目简要描述 (3)1.2团队分工安排 (3)第二章、系统需求分析 (3)2.1问题描述 (3)2.2系统功能 (3)第三章、系统设计 (4)3.1逻辑以及物理结构 (4)3.2系统的开发环境选择........................................... 错误!未定义书签。
3.3系统的数据库设计............................................... 错误!未定义书签。
3.4系统的界面设计 (6)第四章、系统实现及测试 (8)4.1主要模块的实现 (8)4.2系统实现过程中遇到的主要疑难问题和解决方案 (8)4.3系统实现的特色之处 (13)4.4系统的测试开展 (13)第五章、总结 (13)第六章、参考文献 (14)一、绪论1.1课程设计名称:聊天室设计内容:设计一个在线聊天室,实现用户之间实时地文字聊天。
任务和要求系统内用户分为管理员和普通用户两类,普通用户可以在线聊天,管理员负责维护聊天室和用户。
1 系统功能和界面参考QQ聊天室。
2 提供注册功能,系统的访问者可以注册成为普通用户。
3 普通用户登陆后首先显示聊天大厅,在大厅中有多个聊天室,选择其中一个进入后可进行聊天。
4 用户在聊天室中可以看到本聊天室的其他用户,可以对所有人发言,也可以只对某一个用户发言。
发言可以选择公开和秘密两种,如果公开则所有人都能看到该发言内容;如果是秘密,则只有接受者才能看到。
聊天室的发言面板采用滚屏方式实时显示所有用户的发言5 用户可以退出聊天室,到大厅后再选择进入其他聊天室,也可以从大厅退出系统。
6 管理员登陆后可以维护聊天室和用户。
管理员可以增加、修改和删除聊天室,可以删除注册的普通用户。
1.2团队分工:1、注册、登录部分选择聊天室部分:黄彭2、聊天发言部分:高文泉(本人)3、管理员维护添加修改删除部分:秦红旭二、系统需求分析2.1问题描述题目要求的是做一个聊天室软件,能够实现多人同时在线聊天,客户能够登录系统注册并且选择房间进入房间,在相应的房间类可以对其它人私聊或者公共聊天而管理员能够对相关房间进行添加删除修改的操作。
2.2系统功能依据题目,首要问题是如何实时进行聊天并且分情况显示。
因此系统需要将用户发的信息的内容存入数据库并对其进行依据用户名分情况依序显示。
为了实现这个目标,首先用户发送消息,系统将消息保存到数据库,根据用户发言房间决定显示房间,如果在这个房间,如果用户选择私聊则分辨是不是对所有人说话,是则对所有人显示消息否则只是对发送者和被发送者显示,如果用户选择公开,则将结果显示给房间的所有人。
流程图如下:聊天流程图三、系统设计3.1系统采用的逻辑以及物理结构普通用户进入网页进行登录或者注册,完成后选择房间,进入房间进行聊天,用户可以退出房间进入房间选择页面,可以在房间选择页面选择退出系统。
管理员直接后台登录地房间、用户进行查询、增加、修改、删除等操作,从而实现数据库更新。
整体流程图3.2 系统的开发环境选择tomcat6.5+SQL server2005 + Java JDK 6.0+Myeclipse6.53.3 系统的数据库设计,各表展示以及表与表之间的E-R关系图Chat数据库:表汇总表名功能说明用户信息表(userbiao) 存放用户信息房间表(room) 存放房间相关信息聊天信息表(msgs) 存放用户聊天信息表1 用户信息表userbiao序号字段名类型是否为空是否主键描述1 userId int 否是记录标志2 userName nvarchar 是否用户名称3 userpwd nvarchar 否否用户密码4 5 userxbroomidnvarcharint是是否否性别房间号表2 房间信息表room序号字段名类型是否为空是否主键描述1 userid int 否是记录标志2 roomname nvarchar 是否房间名3 roomnumber Int 是否房间人数4 5 roomfullnumberroomplaceIntnvarchar是是否否房间最大人数房间地区表3 聊天信息表msgs序号字段名类型是否为空是否主键描述1 NO int 否是记录标志2 username nvarchar 是否发言者3 who nvarchar 是否发言对象4 5 6 7kindmsgtimeroomidnvarcharnvarchartimeint是是是是否否否否发言形式发言信息发言时间发言房间位置E-R图3.4 系统的界面设计方案一:用框架设置方案设计1图方案二:DIV方案设计2图方案三:最终版本方案设计3图四、系统实现及测试4.1主要模块的实现本人承担的是聊天部分的实现,所有内容存放在2/文件夹内,其中由index.jsp, Ace.html ,top.jsp,chat1.jsp,chat2.jsp,Send.jsp,Save.jsp,Exit.jsp,Dante.jsp.Luccifer.jsp组成,styles.css作为CSS布局。
Index.jsp 是作为和登陆界面后的房间选择界面的一个接口,将用户名和房间号存入session并且跳转到框架中去。
并且通过对数据库操作,对数据库room进行更新。
将房间内人数加一"update room set roomnumber=roomnumber+1 where roomid='"+room+"'";当其他文件需要使用session中的房间号和用户名是需要使用以下语句:String username=(String)session.getAttribute("username");int room=Integer.parseInt((String)session.getAttribute("roomid"));Ace.html是一个frame框架,将聊天室中的其它模块整合在一起,其中包括top.jsp,chat1.jsp,chat2.jsp,Send.jsp,Save.jsp, Dante.jsp多个jsp文件聊天界面top.jsp是顶部图片以及房间名显示,以及后台音乐的播放,通过对数据库的房间表的查询,用id来查询房间并将房间名显示出来。
顶部界面Chat1.jsp是作为公共聊天部分,只要是没设为私聊的房间内容都会在此显示,为了让数据库中语句按顺序将前60个房间内对话显示,本部分使用了select * from msgs where (kind='1' or who='所有人')and NO in(select top 60 NO from msgs where roomid='"+room+"'order by time DESC)order by time的数据库操作,先将数据库中的信息所有和房间名匹配的60个信息选择出来,再对其中kind(种类,即代表发言人选择的聊天类型公开/私聊)=1(公开)的或者是对所有人说的话的信息进行选取,选取后处理结果对其中信息显示通过if(!((rs.getString("who")).equals("所有人") )){ out.print("对"+rs.getString("who")+"说:");}语句来将对所有的的公开信息中去掉对***这条信息。
公共聊天部分Chat0.jsp中对数据库进行查询:select * from msgs where kind='0' and((userName='"+username+"')or(who='"+username+"')) and NOT (who ='所有人') and NO in(select top 60 NO from msgs where roomid='"+room+"'order by time DESC)order by time先选取60个本房间的信息,再对其中不是对所有人并且用户名是发言者或者用户名是接受者的信息进行选取。
在对其中信息逐个显示。
用<meta http-equiv="Refresh" content="2">来对其中页面进行自动刷新从而更新显示。
私聊部分Send.jsp作为发送部分将表单信息发送到Sava。
Jsp进行存储。
其中Send.jsp 显示用户名、并在下拉列表显示所有房间其他成员,能够选择公开或者私聊的单选按钮组,以及发言信息和发送按钮、退出链接。
发送信息部分Save.jsp接受来自Send.jsp中的信息并将其中信息存储到数据库之中,其中使用SQL语句Getdate()读取当前时间并存入数据库。
其中的数据库操作语句如下:"Insert into msgs ( userName,who,kind,msg,time,roomid ) values('"+username+"','"+whom+"','"+kind+"','"+msg+"',Getdate(),'"+room+"')";Dante.jsp主要将房间中所有用户进行显示,并且通过2/Luccifer.jsp的链接可以选择是否查看房间内所有用户的信息。
Luccifer.jsp中显示当前房间所有用户信息。