商丘师范学院2015届本科毕业论文(设计)
图4- 1系统功能模块图
4.2 数据库设计
通过用户的注册,聊天等形成初步的数据需求;对数据需求进行概念上的设计,得到对应的E-R图;其次选择合适的方法,将E-R图转化为关系模型;然后对关系模型进行物理设计[4]。
1. E-R图设计:分析确定各个数据表的字段、数据类型、关系等,画出E-R图。
图4- 2用户属性
3
商丘师范学院2015届本科毕业论文(设计)
图4- 3好友属性
图4- 4历史记录属性
2. 物理设计:根据系统的数据类型,我们可以选择为数据库表中字段最合适的数据类型,字段大小,索引结构等[5]。
表4- 1用户信息表
序列号 1 2 3 4 5 6 7 字段 id name zhanghao password sex birthday address 描述 用户编号 用户名 用户帐号 用户密码 性别 出生年月 地址 类型 int(11) varchar(16) varchar(11) varchar(32) varchar(2) varchar(32) varchar(32) 空 否 否 否 否 否 否 否 额外 主键(自增) 唯一 表4- 2好友信息表
序列号 1 2 3 4
字段 id zhanghao friendId blackname 描述 编号 用户帐号 好友帐号 黑名单 类型 int(11) varchar(11) varchar(255) varchar(255) 空 否 否 额外 主键(自增) 外键 表4- 3历史记录表
序列号 1 2 字段 id zhanghao 描述 编号 用户帐号 4
类型 int(11) varchar(32) 空 否 否 额外 主键(自增)
商丘师范学院2015届本科毕业论文(设计)
3 4 5 6 7
who sendtime font record pic 属于者 发送时间 字体类型 发送类容 表情 varchar(11) varchar(32) varchar(64) varchar(255) varchar(255) 否 否 否 否 外键 5 系统详细设计与实现
编码阶段是将软件设计阶段的各种描述转变成程序代码,在编码阶段应该注意编程语言的选择,在本次课题中,我们使用的是Java语言。
5.1 界面设计
软件界面的设计是非常重要的,对于各个模块采用不同的组件进行设计。下面简单的介绍下如何设计软件的界面。 5.1.1 登录界面
本即时聊天系统的登录界面(图:3-5),采用JFram容器,使用默认布局,通过setBounds()方法自定义位置。上部是一个JPanel,内置一个JLabel;中间是根据需要放置JLabel、JTExtField、JPasswordField;最下方放置一个JButton。具体代码如下:
Sjp1_jbl=new JLabel(new ImageIcon(\Sjbl1=new JLabel(\Sjtf=new JTextField();Sjtf.setBounds(110, 163, 130, 30); Sjbl2=new JLabel(\Sjbl3=new JLabel(\Sjpf=new JPasswordField();Sjpf.setBounds(110, 200, 130, 30); Sjbl4=new JLabel(\Sjp3_jb1=new JButton(new ImageIcon(\ Sjp3_jb1.setBounds(85, 270, 195, 30);
图5- 1登录界面
5.1.2 注册界面 在注册界面(3-6)中同样采用默认布局自定义位置。对于JLabel、JTExtField、JPasswordField如何放置就不讲太多了,在这里主要讲下新引入的知识点HashMap集合和Graphics绘画技术。
HashMap是集合类,我们可以通过put、get方法向其中添值、取值,其最重要的一点
5
商丘师范学院2015届本科毕业论文(设计)
是它是键值对形式的,通过一个键就能取出相应的值,对于本界面的全国省市联动,正好可以用到地址的灵活变动。通过For循环创建每个省份按钮,并添加addActionListener监听器,获取其对应省份代号,再通过get方法向HashMap索要其对应的ID值。代码如下: 添加:
HashMap
FOR(INT i=0;i if(hm.containsKey(s)){RegisterAddress Address=(RegisterAddress) hm.get(s); System.arraycopy(Address.getCity(), 0, City, 0, Address.getCity().length); for(int i=0;i } } Graphics可以对其进行重写,调用其方法进行绘画,对于本界面中的验证码,正是运用到此类,可以根据自己想要的样式进行绘制。代码如下: StringBuffer randomRecv = new StringBuffer(); FOR (INT i = 0; i String stm = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]); red = random.nextInt(255);green = random.nextInt(255); blue = random.nextInt(255);g.drawString(stm, (i + 1) * X, CodeY); } code= randomRecv.toString(); 图5- 2注册界面 5.1.3 修改密码界面 密码修改界面(图3-7)是一个重要的组成部分,用户在此能够进行密码修改、重置密码;在本界面中同样的运用到以上界面的基本布局界面的组件,同样的引入了新的组件JTabbedPane。 6 商丘师范学院2015届本科毕业论文(设计) JTabbedpane提供add方法允许设计者向其中添加标题,通过添加addChangeListener监视器,当触发时候进行页面的跳转。从密码修改界面能够开出它拥有两个界面提供用户使用。代码如下: Sjp0=new JPanel();Sjp0.setLayout(null); Sjp1=new JPanel();Sjp1.setLayout(null); Sjtp=new JTabbedPane();Sjtp.add(\修改密码\忘记密码\ 图5- 3密码修改界面 5.1.4 好友列表界面 在好友列表界面(图3-8)中,引入一个新的组件JTree。JTree是树形组件,能够添加删除子节点,子节点同样能够添加子节点。JTree是许多初学者在做类似系统软件的首选,对于Java默认的Tree节点、把柄的图标是不美观的,我们需要对其进行重写。代码如下: tree.setCellRenderer(new DefaultTreeCellRenderer() { public getStreeRendererComponent(JTree stree,string val,boolean bool, int cow, boolean havefoc) { if (leaf) {this.setIcon(title); this.setClosedIcon(close) }return this; }}); 7 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Java技术的即时聊天系统实现(2)在线全文阅读。
相关推荐: