




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
歡迎閱讀本文檔,希望本文檔能對您有所幫助!歡迎閱讀本文檔,希望本文檔能對您有所幫助!歡迎閱讀本文檔,希望本文檔能對您有所幫助!歡迎閱讀本文檔,希望本文檔能對您有所幫助!歡迎閱讀本文檔,希望本文檔能對您有所幫助!歡迎閱讀本文檔,希望本文檔能對您有所幫助!學(xué)校:中南林業(yè)科技大學(xué)組員:趙松,劉彬,張?zhí)烊?,鄺東凡,段建軍,歐陽益湘,彭剛強(qiáng),趙雨亭,巫騰飛組長:趙松副組長:張?zhí)烊鹉昙?2005級指導(dǎo)老師:辛動軍目錄面向?qū)ο蟮姆治鲂枨箨愂鱿到y(tǒng)建摸用戶服務(wù)模塊介紹管理服務(wù)模塊數(shù)據(jù)庫服務(wù)模塊用戶服務(wù)模塊成員管理模塊管理員服務(wù)模塊用戶管理模塊UML系統(tǒng)建摸建立用例角色的確定創(chuàng)建用例建立時序圖協(xié)作圖的建立包圖UIpackageBusinesspackage系統(tǒng)的部署組件圖配置圖源代碼軟件截圖參考文獻(xiàn)組員學(xué)習(xí)心得聊天軟件軟件工程計劃書一:面向?qū)ο蟮姆治?. 需求陳述(全組討論,鄺東凡,段建軍寫討論結(jié)果的文檔)(1)能夠通過網(wǎng)站注冊,申請聊天軟件的號碼跟密碼。注冊成功之后保存注冊用戶的,真實姓名,所在學(xué)校,宿舍,班級,院系,性別,出生年月,入學(xué)年份,個性簽名@,(2)下載一個客戶端軟件,輸入帳號跟密碼,選擇登陸狀態(tài)(上線,隱身)登錄。登錄框消失,顯示主界面。當(dāng)用戶上線時,提示你的好友,你加入的社團(tuán)等。并顯示在線的好友。當(dāng)打開群,社團(tuán),學(xué)院聊天室對話框之后顯示在線用戶。當(dāng)上線的好友離開時,自動將好友變?yōu)殡x線狀態(tài)。當(dāng)班級或群好友給你發(fā)送信息,你又不在的時候,服務(wù)器幫你保存資料,當(dāng)你登陸的時候,將信息發(fā)送給你。(3)主界面包好官方網(wǎng)站的超級鏈接,用軟件的吉祥物顯示。主界面顯示用戶自己的頭像,雙擊進(jìn)入用戶“我的世界”網(wǎng)葉@(4)主界面包含用戶的好友框。每個框包含有什么對我們說組件,雙擊該組件顯示有什么對我們說對話框,可以發(fā)送消息給我們的服務(wù)器雙擊好友框的用戶,顯示好友聊天對話框。聊天對話框,用戶可以輸入信息,接受信息。可以發(fā)送接受文件,支持語音視頻聊天??梢赃x擇日常用語??梢韵螺d該好友的資料。(5)主界面包含社團(tuán)框社團(tuán)框包含該用戶加入的社團(tuán),雙擊一個社團(tuán)將顯示社團(tuán)對話框,可以群聊,可以顯示社團(tuán)通知,可以顯示社團(tuán)所有的成員。如果社團(tuán)是你創(chuàng)的,該用戶可以管理社團(tuán),刪除或增加社團(tuán)成員。(6)主界面包含學(xué)院聊天框。學(xué)院聊天室有若干個學(xué)院。每個學(xué)院有10個聊天室,每個聊天室容納100人。雙擊一個聊天室,顯示聊天室對話窗口??梢园l(fā)送文字和發(fā)送圖片。可以顯示該聊天室正在聊天的成員??梢酝瞥隽奶焓?,聊天室人滿了可選擇其他的聊天室(7)主界面包含班級框班級框包含該用戶所屬的班級雙擊班級將顯示一個班級對話框,可以群聊,可以顯示班級成員,可以下載班級資料,可以發(fā)送日常用語。如果班級由該用戶創(chuàng)建,用戶可以增加刪除班級成員,可以上傳班級資料。(8)主界面包含查找按扭,單擊查找按扭顯示查找對話框。查找對話框隔根據(jù)輸入的號碼搜索相應(yīng)的用戶或群或院系或社團(tuán)。如果對方同意,獲得對方發(fā)的信息,然后在主界面顯示該用戶或該群或者該院系或該社團(tuán)。如果對方同意,則相應(yīng)的刷新主界面。如我家A為好有,他同意,則在好友組增加該好友。(9)娛樂按扭,雙擊娛樂按扭,顯示娛樂對話框,娛樂對話框有游戲組件。暫時不做。(10)主界面包含幫助按扭,雙擊它顯示幫助對話框,告訴你怎么使用這個軟件。主界面有菜單按扭。雙擊菜單按扭,顯示菜單對話框。**菜單對話框有網(wǎng)上集市按鈕,雙擊顯示網(wǎng)上集市對話框。用戶可以通過它買賣物品。用戶可把自己要賣的或者要買的東西發(fā)送到網(wǎng)上,標(biāo)好價格,上傳圖片。**菜單對話框有查詢按鈕,雙擊顯示查詢對話框,查詢對話框包含查詢學(xué)生成績組件和查詢圖書館信息(可以續(xù)借)和四六級成績查詢。輸入你的學(xué)號,即可查詢你的成績,如果有則顯示你的成績,沒有則提示沒有。輸入你四六級的號碼,既可查詢成績。輸入書名選擇要查的書,輸入你的借書證號碼跟借書證密碼可以查你的借書信息,可以續(xù)借。**菜單對話框包含創(chuàng)建按扭,擁護(hù)可以創(chuàng)建社團(tuán),班級這只針對對授權(quán)的用戶。設(shè)置社團(tuán),班級名字跟社團(tuán),班級宣言。**菜單對話框包含設(shè)置按扭。雙擊設(shè)置,顯示設(shè)置框,用戶可以設(shè)置或修改自己的頭像,個性簽名,真實姓名,所在學(xué)校,宿舍,班級,院系,社團(tuán),性別,出生年月,入學(xué)年份,興趣愛好等。**菜單對話框包含信息咨詢按扭。雙擊顯示信息咨詢網(wǎng)葉,包含時尚咨詢,足球籃球信息快遞,人才市場信息,兼職信息,留學(xué)信息。@**菜單對話框含交友天地,雙擊顯示交友天地網(wǎng)葉友天地對話框包含愛情呼叫組建,寢室聯(lián)誼組件,同校約戰(zhàn)組件。@**菜單對話框面包含論壇按扭,雙擊顯示論壇網(wǎng)葉,論壇包含文學(xué)專區(qū),學(xué)校風(fēng)云榜和注水專區(qū)。@**菜單對話框包含我的倉庫。大小為10M.。顯示用戶現(xiàn)在的倉庫資料。用戶可以上傳資料,設(shè)置權(quán)限供其他用戶下載可以刪除資料。**菜單對話框包含考研專區(qū)按扭。**菜單對話框有院系新聞按扭。雙擊顯示院系新聞網(wǎng)葉。@軟件號碼軟件密碼用戶個人資料妮稱真實姓名,所在學(xué)校,宿舍,班級,院,系,性別,出生年月,入學(xué)年份,個性簽名,個人愛好,頭像。信息提示框提示信息登陸狀態(tài)登錄框好友社團(tuán)學(xué)院聊天室對話框服務(wù)器資料主界面官方網(wǎng)站吉祥物我的世界好友框好友組件好友個性簽名好友名字好友資料框有什么對我們說組件有什么對我們說對話框好友聊天對話框信息文件日常用語社團(tuán)框社團(tuán)組件社團(tuán)資料框社團(tuán)名稱社團(tuán)號碼社團(tuán)頭像社團(tuán)對話框社團(tuán)通知社團(tuán)成員學(xué)院聊天框聊天室聊天室對話窗口聊天室成員班級框班級組件班級資料框班級對話框班級成員班級資料查找按扭查找對話框娛樂按扭娛樂對話框幫助按扭幫助對話框幫助信息菜單對話框菜單按扭網(wǎng)上集市按鈕網(wǎng)上集市對話框物品價格圖片查詢按鈕查詢對話框查詢學(xué)生成績組件查詢圖書館信息四六級成績查詢學(xué)號提示四六級的號碼要查的書借書證號碼借書證密碼創(chuàng)建按扭創(chuàng)建對話框群名字群宣言社團(tuán),班級名字社團(tuán)班級宣言設(shè)置按扭設(shè)置框信息咨詢按扭信息咨詢網(wǎng)葉時尚咨詢足球籃球信息快遞,人才市場信息,兼職信息,留學(xué)信息交友天地按扭交友天地對話框愛情呼叫組件寢室聯(lián)誼組件同校約戰(zhàn)組件論壇按扭我的倉庫按扭我的倉庫框倉庫資料權(quán)限考研專區(qū)按扭院系新聞按扭二:系統(tǒng)建摸1:用戶服務(wù)模塊這個模塊提供了用戶登錄,成員管理,用戶聊天,,個人設(shè)置,資料管理。用戶登錄包過用戶登錄和用戶退出。成員管理包過增加成員,刪除成員,退出群,加入群。2:管理員服務(wù)模塊這個模塊提供了用戶登陸,管理用戶,查詢。用戶登錄包含用戶登錄和用戶退出。管理用戶包含增加用戶,刪除用戶,更新用戶資料。查詢用戶信息。3:數(shù)據(jù)庫服務(wù)模塊這個模塊提供了自動更新數(shù)據(jù)庫聊天軟件系統(tǒng)管理員服務(wù)模塊數(shù)據(jù)庫服務(wù)模塊用戶服務(wù)模塊聊天軟件系統(tǒng)管理員服務(wù)模塊數(shù)據(jù)庫服務(wù)模塊用戶服務(wù)模塊2。1用戶服務(wù)模塊用戶服務(wù)模塊資料管理個人設(shè)置用戶聊天成員管理用戶服務(wù)模塊資料管理個人設(shè)置用戶聊天成員管理用戶登錄用戶登錄用戶登錄過程如下:更新數(shù)據(jù)庫發(fā)送到服務(wù)器用戶的號碼跟密碼更新數(shù)據(jù)庫發(fā)送到服務(wù)器用戶的號碼跟密碼(2)管理員模塊:發(fā)送更新信息給服務(wù)器選擇成員管理類型更新數(shù)據(jù)庫發(fā)送更新信息給服務(wù)器選擇成員管理類型更新數(shù)據(jù)庫資料管理模塊更新數(shù)據(jù)庫發(fā)送更新信息給服務(wù)器選擇資料管理類型更新數(shù)據(jù)庫發(fā)送更新信息給服務(wù)器選擇資料管理類型1.2.2成員管理模塊:刪除群退出群加入群刪除成員刪除群退出群加入群刪除成員成員管理增加成員成員管理增加成員(1)增加成員過程:發(fā)送到服務(wù)器,服務(wù)器處理,輸入成員號碼返回信息給用戶。更新數(shù)據(jù)庫發(fā)送到服務(wù)器,服務(wù)器處理,輸入成員號碼返回信息給用戶。更新數(shù)據(jù)庫刪除成員發(fā)送消息給服務(wù)器選擇要刪除的成員更新數(shù)據(jù)庫發(fā)送消息給服務(wù)器選擇要刪除的成員更新數(shù)據(jù)庫其余處理類似,因為趕時間,省略了很多東西。管理員服務(wù)模塊用戶管理查詢管理員服務(wù)模塊管理員登錄用戶管理查詢管理員服務(wù)模塊管理員登錄1.3.1查詢過程:顯示查詢結(jié)果查詢數(shù)據(jù)庫輸入用戶號碼顯示查詢結(jié)果查詢數(shù)據(jù)庫輸入用戶號碼用戶登錄模塊跟上面一樣的1.3.2用戶管理模塊:用戶管理更新用戶資料刪除用戶增加用戶用戶管理更新用戶資料刪除用戶增加用戶增加用戶過程:更新數(shù)據(jù)庫用戶申請?zhí)柎a同意申請更新數(shù)據(jù)庫用戶申請?zhí)柎a同意申請刪除用戶過程刪除該用戶更新數(shù)據(jù)庫輸入用戶號碼刪除該用戶更新數(shù)據(jù)庫輸入用戶號碼三:UML系統(tǒng)建摸1建立用例(張?zhí)烊穑?角色的確定*用戶可以向服務(wù)器申請?zhí)柎a*有些用戶可以擁有自己的資料倉庫所以,有三個角色,一個是普通用戶,一個是VIP用戶,還有管理員2創(chuàng)建用例(如圖所示)2建立時序圖(彭剛強(qiáng))1。用戶登錄的時序圖協(xié)作圖的建立(劉彬)用戶登錄是的協(xié)作圖包圖,分為三個包,UIpackage,Businesspackage,Databasepackage3.1UIpackage(巫騰飛)3.2Businesspackage(趙雨亭)4.系統(tǒng)的部署1組件圖(歐陽益湘)2配置圖(趙松)四:源程序代碼登錄界面的代碼/**類名:LoadPane*描述:登陸框*公司:DoubleZ組合*作者:張?zhí)烊?版本:Double1.0*創(chuàng)建時間:2007.12.6*最后修改時間:2007.12.10*/importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;import.*;importjavax.swing.event.*;importjava.io.*;importjava.util.*;publicclassLoadPaneextendsJFrame{ staticStringloadPass=null; JLabellabel1=newJLabel("********歡迎使用局域網(wǎng)聊天程序********"); JLabellabel2=newJLabel("帳號:"); JTextFieldtf1=newJTextField(15); JLabellabel3=newJLabel("密碼:"); JPasswordFieldtf2=newJPasswordField(15);JLabellabel4=newJLabel("第一次使用請先注冊!"); JButtonJButton1=newJButton("*登陸*"); JButtonJButton2=newJButton("*注冊*"); JButtonJButton3=newJButton("---------關(guān)于----------"); /*publicvoidgetIpNum(){ InetAddressip=InetAddress.getLocalhost(); }*/ //獲得自己的帳號 publicstaticStringgetMyNum(){ Stringip=""; Stringip1=""; Stringip2=""; try { InetAddressaddr=InetAddress.getLocalHost();ip=addr.getHostAddress().toString();//獲得本機(jī)IPip=ip.substring(8,ip.length());ip1=ip.substring(0,ip.indexOf("."));ip2=ip.substring(ip.indexOf(".")+1,ip.length());ip=ip1+ip2;}catch(Exceptione){e.printStackTrace();}returnip; } publicvoidinit(){ Containercp=getContentPane(); Toolkitkit=getToolkit();DimensionwinSize=kit.getScreenSize();setBounds(winSize.width/4+100,winSize.height/4+80,//位置230,200);//大小 cp.setLayout(newFlowLayout()); cp.add(label1); cp.add(label2); cp.add(tf1); cp.add(label3); cp.add(tf2); cp.add(JButton1); cp.add(JButton2); cp.add(JButton3); cp.add(label4); label4.setBorder(BorderFactory.createLoweredBevelBorder()); //登陸 JButton1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ //先從文檔里讀取保存的密碼 try{ FileInputStreamin=newFileInputStream("個人信息.txt"); ObjectInputStreamoos=newObjectInputStream(in); ArrayListar=(ArrayList)oos.readObject(); String[]strInfo=(String[])ar.get(0); loadPass=strInfo[0]; oos.close(); }catch(Exceptionexc1){exc1.printStackTrace();} //判斷帳號與密碼是否匹配 if(tf1.getText().equals(getMyNum()) &&tf2.getText().equals(loadPass)){ MainBarmainBar=newMainBar(); OwerPane.tf3.setText(getMyNum()); StoreInform.loadUserInform();//讀取本機(jī)的用戶信息 FriendList.loadFriendList(); dispose(); } else{ JOptionPane.showOptionDialog(null, "帳號或密碼不正確!\n",null,JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null,null,null); } }});//注冊JButton2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ Filef=newFile("個人信息.txt"); if(f.exists()){ JOptionPane.showOptionDialog(null, "大哥,不能多次注冊!",null,JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null,null,null); }elseif(!f.exists()){ OwerPane.tf3.setText(getMyNum()); OwerPaneopDemo1=newOwerPane(); } }});//關(guān)于JButton3.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ JOptionPane.showOptionDialog(null,"作者:DoubleZ組合\n"+"版本:Double1.0\n"+ "簡介:一個基于局域網(wǎng)的聊天程序.\n",null,JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null,null,null); }}); } publicstaticvoidmain(String[]args){ LoadPanelp=newLoadPane(); lp.setTitle("局域網(wǎng)聊天程序1.0"); lp.pack(); lp.init(); lp.setSize(230,200); lp.setResizable(false); lp.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); lp.setVisible(true); }}主功能實現(xiàn)代碼/**類名:MainBar*描述:搭建一個主框架*公司:DoubleZ組合*作者:張?zhí)烊?版本:Double1.0*創(chuàng)建時間:2007.12.3*最后修改時間:2007.12.10*/importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.event.*;importjavax.swing.tree.*;importjava.io.*;import.*;importjava.util.*;publicclassMainBarextendsJFrame{ ImageIconic=newImageIcon("LoadPane4.jpg"); JButtonshowPic=newJButton(ic); //把主窗口分成三個部分 //定義兩個端口 DatagramSocketdss,dsr;//dss發(fā)送,dsr接受 staticArrayListarrayLs=newArrayList(200); //上部 JPanelp1=newJPanel(); //JLabellabel=newJLabel("當(dāng)前用戶");//為當(dāng)前用戶的頭像 privateImageimage; //中部 JPanelp2=newJPanel(); staticDefaultMutableTreeNoderoot=newDefaultMutableTreeNode("-------我的好友-------"); staticDefaultTreeModeltreeModel=newDefaultTreeModel(root); staticJTreetree=newJTree(treeModel); JButtonbutton3=newJButton("添加與刪除好友"); //下部 JPanelp3=newJPanel(); JButtonbutton1=newJButton("個人設(shè)置"); JButtonbutton2=newJButton("查找"); publicvoidMainBar(ints){} publicvoidpaint(Graphicsg){ g.drawImage(image,0,0,5,5,p1); System.out.println("畫完了!"); } //添加新好友到列表中,name為要添加的好友的名字 publicstaticvoidaddFriend(Stringname) { DefaultMutableTreeNoden=newDefaultMutableTreeNode(name); treeModel.insertNodeInto(n,root,0); //展開子節(jié)點 TreeNode[]root=treeModel.getPathToRoot(n); TreePathpath=newTreePath(root);tree.makeVisible(path); } //刪除好友 /*publicstaticvoiddelFriend(){ root.remove(FriendList.txt1.getText()); }*/ publicMainBar(){ //TODO:Addyourcodehere //初始化外層窗口 super("局域網(wǎng)聊天程序1.0");setSize(200,600);setResizable(false);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);Toolkitkit=getToolkit();DimensionwinSize=kit.getScreenSize(); setBounds(winSize.width/4+500,winSize.height/4-122,//位置200,600);//照片地址image=Toolkit.getDefaultToolkit().getImage("S5001183.JPG");//初始化兩個端口try{ dss=newDatagramSocket(); dsr=newDatagramSocket(6000);}catch(Exceptione){e.printStackTrace();}receMess();//一上線就就打開一個接收線程sendOnlineMess();//一上線就發(fā)送一個上線的信息//-----容器----- Containercp=getContentPane(); cp.setLayout(newBorderLayout()); //在第一層上添加 cp.add(p1,BorderLayout.NORTH); cp.add(p2,BorderLayout.CENTER); cp.add(p3,BorderLayout.SOUTH); //在第二層上添加-----上部 p1.add(showPic); //label.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2));//-----中部 p2.add(newJScrollPane(tree)); p2.add(button3); p2.setBorder(BorderFactory.createLoweredBevelBorder()); //設(shè)定界面風(fēng)格------只有三種 /*try{ UIManager.LookAndFeelInfo[]info=UIManager.getInstalledLookAndFeels(); //StringclassName=info[2].getClassName(); QuaquaLookAndFeelclassName=newQuaquaLookAndFeel(); UIManager.setLookAndFeel(className); //UIManager.setLookAndFeel(newQuaquaLookAndFeel()); }catch(Exceptionexc1){}*/ //try{ //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); //UIManager.setLookAndFeel("org.jvnet.substance.SubstanceLookAndFeel"); //}catch(Exceptione){e.printStackTrace();} //-----下部 p3.add(button1); p3.add(button2); p3.setBorder(BorderFactory.createEtchedBorder()); //事件監(jiān)聽 showPic.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ ShowPicshowPic=newShowPic(); System.out.println("頭像按鈕!");}}); //個人設(shè)置按鈕 button1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ OwerPaneopDemo1=newOwerPane();}});//查找button2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){FindOfChatfoc=newFindOfChat(); }});//添加與刪除好友按鈕button3.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ FriendListfriendList=newFriendList();}});//添加用戶好友事件tree.addTreeSelectionListener( newTreeSelectionListener(){ publicvoidvalueChanged(TreeSelectionEvente){ DefaultMutableTreeNodenode= (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); if(node==root){ System.out.println("選中了根節(jié)點"); return; } else { System.out.println(node); //StringnowName=FriendList.reFriendName(); System.out.println("發(fā)起聊天"); ChatDialogcd=newChatDialog("你正在與"+node+"聊天"); } } }); //添加關(guān)閉窗口時發(fā)送下線信息的時間 this.addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { sendOfflineMess(); } } ); setVisible(true);} publicMainBar(inta){} publicvoidreceMess() {//首先啟動一個線程,用來不斷從指定端口讀取數(shù)據(jù)newThread(newRunnable() {publicvoidrun() { try { byte[]buf=newbyte[1024]; DatagramPacketdp1=newDatagramPacket(buf,buf.length); Stringisadd,numKey; while(true) { System.out.println("數(shù)據(jù)已經(jīng)接受"); dsr.receive(dp1); String[]strArray=newString[20]; isadd=newString(dp1.getData(),0,dp1.getLength()); System.out.println("這里是MainBar的接收線程"+isadd); strArray=divMes(isadd);System.out.println(strArray[0]);System.out.println(strArray[1]);System.out.println(strArray[2]); //判斷有人加你為好友而且判斷自己的號碼是不是那么多//intmyNum=0;//此處獲得自己的號碼//if(Integer.parseInt(numKey)==myNum)//此處暫時不用//判斷自己的號碼是否符合而且判斷是否是添加好友的信息if((!isExit(strArray[1]))&&(Integer.parseInt(strArray[2])==Integer.parseInt(LoadPane.getMyNum()))&&(Integer.parseInt(strArray[0])==Integer.parseInt("1"))){//在電腦右下角顯示某某添加你為好友,調(diào)用主功能界面的提示框方法TipFrametf=newTipFrame();intoption=tf.setTipFrame("好友",strArray[1]);System.out.println("optionis"+option);if(option==0){ try { //在此處調(diào)用一個獲得頭像信息的方法 Stringsg=newString(); buf=("+"+"2"+"+"+LoadPane.getMyNum()+"+"+strArray[1]+"+"+OwerPane.tf1.getText()).getBytes(); DatagramPacketdp2=newDatagramPacket(buf,buf.length,dp1.getAddress(),6000); dss.send(dp2); FriendListfl=newFriendList(4); fl.updateMainFrame(strArray[3],strArray[1]); } catch(Exceptione){e.printStackTrace();} }} //然后將頭像,號碼,個性簽名返回 //判斷是否上線elseif(isExit(strArray[1])&&(Integer.parseInt(strArray[0])==Integer.parseInt("4"))){ //先搜索自己的好友查看是否有該號碼,有則提示 TipFrametf=newTipFrame(); tf.setTipFrame("上線",strArray[1]);} //判斷是否是離線信息elseif(isExit(strArray[1])&&(Integer.parseInt(strArray[0])==Integer.parseInt("5"))) { TipFrametf=newTipFrame(); tf.setTipFrame("離線",strArray[1]);} //判斷是否是聊天消息elseif((Integer.parseInt(strArray[2])==Integer.parseInt(LoadPane.getMyNum()))&&(Integer.parseInt(strArray[0])==Integer.parseInt("3"))){arrayLs.add(isadd); } //判斷是否是頭像信息 elseif((Integer.parseInt(strArray[2])==Integer.parseInt(LoadPane.getMyNum()))&&(Integer.parseInt(strArray[0])==Integer.parseInt("2"))) { //根據(jù)頭像信息刷新主功能界面 FriendListfrl=newFriendList(2); frl.updateMainFrame(strArray[3],strArray[1]); } //------如果加為好友則執(zhí)行如上步驟---------- } } catch(Exceptione){e.printStackTrace();} } }).start();//首先啟動一個線程,用來不斷從指定端口讀取數(shù)據(jù) } publicString[]divMes(Stringsr)//將受到的信息分解 { intk=0; String[]tempStrArray=newString[20]; intindex=0; inth=0; for(inti=0;i<20;i++) { if(sr.indexOf("+")!=0&&sr.indexOf("+")!=-1) { tempStrArray[i]=sr.substring(0,sr.indexOf("+")); index=sr.indexOf("+"); sr=sr.substring(index+1,sr.length()); h=i; } elseif(sr.indexOf("+")==0) { tempStrArray[i]=sr.substring(1,2); sr=sr.substring(3,sr.length()); index=2; } } tempStrArray[h+1]=sr; return tempStrArray; } publicArrayListgetArray() { returnarrayLs; } publicvoidsendOnlineMess() { //廣播回路,端口3001 try { byte[]buf=newbyte[102]; buf=(newString("+"+"4"+"+"+LoadPane.getMyNum()+"+"+"34")).getBytes(); DatagramPacketdps=newDatagramPacket(buf,buf.length,InetAddress.getByName("55"),6000); dsr.send(dps); } catch(Exceptione){e.printStackTrace();} //廣播回路,端口300 } publicvoidsendOfflineMess() { try { byte[]buf=newbyte[1024]; buf=(newString("+"+"5"+"+"+"18"+"+"+"3")).getBytes(); DatagramPacketdps=newDatagramPacket(buf,buf.length,InetAddress.getByName("55"),6000); dsr.send(dps);} catch(Exceptione){e.printStackTrace();} } //-------------------------- publicbooleanisExit(Stringstr) { booleanbl=false; ArrayListary=newArrayList(200); ary=FriendList.aryOfFrie(); System.out.println(ary.size()); String[]strtem=newString[10]; for(inti=0;i<ary.size();i++) { strtem=(String[])ary.get(i); if(Integer.parseInt(strtem[1])==Integer.parseInt(str)) { System.out.println(strtem[1]); bl=true; } } returnbl; } //---------------------------- publicstaticvoidremoveArry(inti) { arrayLs.remove(i); }}//StringstrPhoto=newString("+"+"2"+"+"+"我方號碼"+"+"+"姓名"+"+"+"性別"+"+"+"年齡"+"+"+"個簽"+"+"+"頭像")// StringstrMess=newString("+"+"3"+"我方號碼"+"所發(fā)送的信息"); //StringstrOnline=newString("+"+"4"+"我方號碼");// StringstrOffline=newString("+"+"5"+"我方號碼");//StringstrFrie=newString("+"+"1"+"我方號碼"+"+"+findUser()+"+"+"姓名"+"+"+"性別"+"+"+"年齡"+"+"+"個簽"+"+"+"頭像"+"+"+"要將你加為好友")(注:由于代碼太多,只能貼少部分了。趙雨汀,劉彬整理全部文檔。)六:軟件截圖七:參考文獻(xiàn)《java語言導(dǎo)學(xué)》,MaryCampione網(wǎng)站/blog/cns!7dbdf42ee58f4a79!221.entry網(wǎng)站/www1//八:組員學(xué)習(xí)心得我所遇到的問題。開始時有點不知所措。尤其是建立模型圖的時候。我就不知道為什么要這些模型圖。他們能干什么。后來才明白,建立模型是以人的思維方式去實現(xiàn)一個軟件的開發(fā)。我面對組員交給我的需求。開始迷茫,參考了大量的文獻(xiàn)。然后把軟件分成三個模塊。這就把軟件高度的抽象了。然后遇到什么問題先是崩潰,然后查閱文檔。所以查閱了多少文檔我都忘記了。對于計算機(jī)我是自學(xué)的。從面對計算機(jī)一竅不通,到把第一個畫圖板程序?qū)懗鰜怼;ㄙM了我5個月的時間。這期間我崩潰的次數(shù)已經(jīng)忘記了。因為自學(xué),身邊沒有一個人可以指導(dǎo),一切參考資料一是上網(wǎng)查,二是去圖書館。這個過程如果是自學(xué)軟件的人一定深有感觸。不過大痛過后是大得。我現(xiàn)在一不怕崩潰,受得起打擊。原因很簡單,崩潰成為一種自然,崩潰過后的那種喜悅令我充滿激情,興奮不已。二是有了明確的目標(biāo),現(xiàn)在我知道自己為什么而學(xué)和要學(xué)什么。我大一大二覺得每天上課都去了,作業(yè)完成了,最好能夠拿個獎學(xué)金,這就是好學(xué)生。但是,我現(xiàn)在發(fā)現(xiàn),錯了。一個真正的大學(xué)生是有自己的思想,有自己的獨特路線的。我寫程序的語言是java,但是有多少人知道,我的java的分?jǐn)?shù)只有70多。跟我一起合作的仁兄(也是用java的)他的java竟然掛科了。有多少人知道我只去上了幾節(jié)java課。我看了java成績,那些八九十分的人很多,可是有幾個人能夠?qū)懸粋€超過200行的程序了。讀呀讀,讀的自己都不知道在哪了,都不知道能干什么了。這有必要嗎。所以我堅決不做學(xué)習(xí)的奴隸。學(xué)習(xí)是一種樂趣。我在寫軟件的時候,當(dāng)面對未之領(lǐng)域的時候,我總是很興奮。因為我知道新的崩潰要來臨了。同時新的挑戰(zhàn)要來臨了,挑戰(zhàn)所帶來的氣拔山河的激情要來臨了。我歡迎崩潰,沒有崩潰就沒有進(jìn)步。三是自信與毅力,相信自己能夠完成自己定下的目標(biāo),并且堅定不移的去奮斗。結(jié)果當(dāng)然重要,沒有人不希望自己好的。但是沒有一個好的過程不可能有好的結(jié)果。這個在軟件工程里面就典型地表現(xiàn)出來了。走完這個過程需要的就是一種堅定的自信,堅定的奮斗。對軟件業(yè)的看法我知道我們國內(nèi)現(xiàn)在的軟件業(yè)是落后的。但是我堅信這么大的一個國家,一定存在著很多優(yōu)秀的軟件人材。只是我們國內(nèi)的軟件制度不是很好。首先從大學(xué)說起,就像我剛才說的那樣,許多優(yōu)秀的人材是在課堂上學(xué)計算機(jī)的,而不是在計算機(jī)上學(xué)習(xí)計算機(jī)的。那么這還有什么意義呢?本來很多優(yōu)秀的人開始不討厭計算機(jī),但是學(xué)了一兩年后,天天在課堂上聽課。其實上課在干什么,很多人都知道??荚嚨臅r候,緊一下,及個格就行了。這樣一搞,這些優(yōu)秀人才對計算機(jī)怎樣提地起興趣呢?其實計算機(jī)是最好搞實踐的。一臺電腦,一個網(wǎng)就是一個實習(xí)基地嘛。而且軟件是做容易看到成果的,一有成就感,人就像吸鴉片一樣馬上上癮。所以在大學(xué)就已經(jīng)流失了很多計算機(jī)優(yōu)秀的人材。進(jìn)入社會后,有些人搞計算機(jī),但是很多人都是被生活所迫。有多少人對計算機(jī)是充滿激情的。沒有激情,讓你一直做下去你怎么能夠有所作為。而且公司實行單軌道機(jī)制,重管理。搞的人人都想當(dāng)領(lǐng)導(dǎo)(這也跟中國人的傳統(tǒng)思維有關(guān)了)。結(jié)果搞技術(shù)不搞創(chuàng)新了,都哪去了。都當(dāng)領(lǐng)導(dǎo)去了。所以有激情的優(yōu)秀人才對計算機(jī)就沒有興趣了,吃這碗飯的人顯得激情不夠,你看軟件怎能不差呢。我們國家現(xiàn)在的軟件業(yè)需要的是那些充滿激情的優(yōu)秀人材。能吃苦,能耐勞,有決心,有毅力,不在乎什么功名利祿,說干就干的人。我,把自己的全部精力投入到我喜歡的軟件工作當(dāng)中。無數(shù)個不眠之夜我為自己寫的程序而興奮不已,無數(shù)次崩潰之后我依然堅持,因為滿富激情的奮斗給我?guī)淼氖菬o窮的樂趣,所以我心足矣。最后為中國軟件業(yè)之崛起而貢獻(xiàn)自己的一份力量。-------趙松20054149通過課程設(shè)計,我深刻感受到團(tuán)隊的魅力,大家的共同探討研究,分工合作讓我們的工作進(jìn)展非常順利,同時讓我們各自取長補(bǔ)短,互相學(xué)校共勉,對于這次課程設(shè)計的經(jīng)歷讓我受益非淺。--------趙雨亭20054165通過這次機(jī)會我學(xué)習(xí)到了很多東西,讓我明白了團(tuán)隊合作在軟件開發(fā)中的重要性,只有大家明確分工,團(tuán)結(jié)一致,互相溝通和幫助,才能開發(fā)出優(yōu)質(zhì)的產(chǎn)品,也只有這樣才能使效率更高,在短時間內(nèi)保質(zhì)保量的完成任務(wù).--------張?zhí)烊?0054151最近和兄弟們一起做聊天軟件,增進(jìn)了感情不說,也增長了N多知識,這里要感謝下組長趙松,在他的帶領(lǐng)和幫住下我們才能如此順利的把這事情搞定。曾經(jīng)看過一本書叫《道法自然》,內(nèi)容略記得一二,但我最欣賞的是它的書名。軟件設(shè)計沒什么太神秘有東西,只要用心體會,其實一切都很自然。軟件的設(shè)計之“道”,也不在于設(shè)計有多么的華麗、精巧,而在于其樸實、自然,最終達(dá)到“以無招勝有招”,進(jìn)入一個全新的境界。團(tuán)隊是最重要也是最難的,它是一個項目能否順利成功的關(guān)鍵。它不僅教我們?nèi)绾伟l(fā)現(xiàn)市場,如何分析需求,如何挑選團(tuán)隊,如何制定計劃。。。。。。而且它還教我們?nèi)绾巫鋈耍绾闻c人相處,如何管理團(tuán)隊,如何調(diào)動隊員積極性等等很多東西。其實這一切,不只是用在軟件開發(fā)上,更可以用在做人,做事,成功等任何方面,讓人受益匪淺。在團(tuán)隊管理上,我信任一句話“善用人者為之下”。當(dāng)然我不否認(rèn)在工
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 含稅購貨合同范本
- 運動俱樂部協(xié)議合同范本
- 入股餐廳合同范本
- 化肥產(chǎn)品購銷合同范本
- 吊裝合同范本文庫
- 其他財產(chǎn)分割合同范本
- 信保出口合同范本
- 門窗修理 服務(wù)合同范本
- 廠房消防勞務(wù)承包合同范本
- 廠房出售付款合同范本
- 最全-房屋市政工程安全生產(chǎn)標(biāo)準(zhǔn)化指導(dǎo)圖冊
- 《魅力教師的修煉》讀書心得體會4篇
- 雙壁鋼圍堰施工與管理
- 住院精神疾病患者攻擊行為預(yù)防-2023中華護(hù)理學(xué)會團(tuán)體標(biāo)準(zhǔn)
- 2016年百貨商城商場超市企劃全年活動策劃方案模板
- 民航法規(guī)與實務(wù)PPT全套教學(xué)課件
- 富血小板血漿的臨床應(yīng)用
- 2023年湖南食品藥品職業(yè)學(xué)院高職單招(英語)試題庫含答案解析
- GB/T 39096-2020石油天然氣工業(yè)油氣井油管用鋁合金管
- 爐外精煉說課
- GB/T 18877-2020有機(jī)無機(jī)復(fù)混肥料
評論
0/150
提交評論