已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
惠州学院计算机科学系课程设计指导书课程名称:网络通信程序设计课程设计题目: 标准化学生评课系统 学生姓名: X X X 学号: XXXXXXX 班级: XXXXXXXXXXX 指导教师: X X 时 间: 2011年X月X日 标准化学生评课系统软件报告学号: 姓名: 班级: 1、 引言软件的开发背景及应用价值1.1 开发背景大学校园又有新鲜事,学生通过学校的网上评课系统给教授评分,“炒”掉了一些老师。“网上评课”制度明晰了学生为本的观念,将教学质量的判断权放在学生手中,这无疑是有积极意义的。1.2 应用价值价值之一是,弄清了“谁为本”的问题。在教学活动中,“谁为本”似乎不难理解,但在实践中往往背道而驰。理论上,学生作为教育服务的购买者,有权利对教育的质量作出要求。价值之二是, “网上评课”有机制上的保障,有比较合理的制度安排。制度的力量来源于人们对游戏规则的尊重,来源于制度安排的公平性。“网上评课”制度给了培育学生民主素养很好的实践机会。2、 正文软件开发设计内容2.1 需求分析(1) 用户单击选项卡中的“学生登陆”将出现登陆界面。用户在登陆界面输入学号、姓名以及服务器的IP,并请求服务器建立套接字连接。用户登录的目的是为了将自己的基本信息放到服务器上,以便服务器记录用户的评价结果。因此,用户和服务器建立连接后,服务器将创建一个和用户相关的一个文件,文件的名字由用户的学号和姓名组成。(2) 单击选项卡中的“选择老师”将出现选择老师界面。如果用户成功登录了,即和服务器建立连接并在服务器端创建了和其相关的文件,那么,用户在该界面可以将服务器上需被评课老师的名字存放到客户端界面中的下拉式列表中,然后再在下拉列表中选择一个文件的名字提交给服务器。(3) 单击选项卡中的“开始评价”将出现评价界面。如果用户成功登录,并且用户通过“选择老师”界面选择了老师,那么用户在评价界面可以从服务器读入所选老师文件的评价内容,而且在该界面可以提交自己的评价结果给服务器、服务器将用户提交的结果存入用户登录时服务器所创建的和该用户相关的文件中。提交评价结果后,在该界面也可以查询自己已经评价的结果。2.2 总体设计在设计学生评课系统时,编写了8个java源文件:Server.java,ReadTeacherFile.java,ServerThread.java,ClientWindow.java,ClientLogin.java,GetTeacherFile.java,ClientTestArea.java,JDesktop.java。其中Server.java,ReadTeacherFile.java和ServerThread.java为服务器端java程序编译产生所需要的类;其他的是客户端java程序编译产生所需要的类。除了以上8个java源文件所编译产生的类外,还需要java系统提供的一些重要的类,如ServerSocket,Socket,和JTabbedPane等类。所用到的一些重要类以及之间的组合关系如下图a和图b所示:ClientWindowClientLoginJTabbedPaneClientTestAreaGetTeacherFile图a客户端类之间的组合关系ServerReadTestqustionServerSocketServerThreadLinkedListSocket图b服务器端类之间的组合关系2.2.1 被评价老师文件(服务器端)标准化学生评课系统使用文本文件来管理评价内容。即每个被评价老师为一个文本文件。文件和服务器端java程序存放在同一目录中。文件的编辑格式有特殊的要求,详见2.3.1节。2.2.2 Server.java(服务器端主类)Server类创建的对象负责响应客户请求,该类含有main方法,服务器从该类开始执行。Server类的成员变量中有4种重要类型的对象:ServerSocket、LinkedList、Socket和ServerThread对象。Server类运行效果如图c所示:图cServer类运行效果2.2.3 ServerThread.java(服务器端)ServerThread类是Thread类的子类,在Server类中负责为请求连接的用户启动一个线程对象。2.2.4 ReadTeacherFile.java(服务器端)ReadTeacherFile类是ServerThread类的重要成员之一,负责创建读取被评课老师的对象。2.2.5 ClientWindow.java(客户端主类)ClientWindow类负责创建标准化评课系统客户端的主窗口,该类含有main方法,客户端java程序从该类开始执行。ClientWindow类的成员变量中有4种重要类型对象:ClientLogin、GetTeacherFile、ClientTestArea、JTabbedPane对象。ClientWindow类的主要成员的作用将在后面的详细设计中阐述,ClientWindow类创建的窗口以及其中的主要成员对象如图d所示:图dClientWindow窗口及主要的成员对象2.2.6 ClientLogin.java(客户端)ClientLogin类创建的对象是ClientWindow类的重要成员之一,负责提供登陆界面。2.2.7 GetTeacherFile.java(客户端)GetTeacherFile类创建的对象是ClientWindow类的重要成员之一,负责提供选择老师界面。2.2.8 ClientTestArea.java(客户端)ClientTestArea类创建的对象是ClientWindow类的重要成员之一,负责提供评价老师界面。2.2.9 JDesktop.java(客户端)JDesktop类创建的对象是ClientTestArea类的重要成员之一,负责提供学生打开相关记事本,即记录学生评价的文本文件。2.3 详细设计2.3.1 老师文件的编写该评课系统没有使用数据库,而是使用文件来处理。本评课系统需按特殊的简单格式编写老师文件。具体要求如下:(1) 老师文件的第一行是n(取决于评价内容数目)个“优秀”,“优秀”之间要有空格。(2) 每条评价内容之后必须有“此处标志”四个字。例如,“肖东.txt”被评老师文件的部分内容:优秀 优秀 优秀 优秀 优秀1.上课用普通话,谈吐优秀!此处标志2.上课幽默大方,有味道!此处标志3.对学生负责任!此处标志4.合理安排上课时间。此处标志5.抛砖引玉此处标志2.3.2 Server类1. 效果图2. 主要成员变量与方法(1) 成员变量 server 是ServerSocket对象,负责等待接收客户的套接请求,当客户请求套接字连接时,server将接收用户的请求,并调用accept()方法返回服务器端所建立的Socket对象 you,即建立服务器套接字和客户端套接字的连接。 you是Socket对象,该对象是驻留在服务器的套接字对象,由server调用accept()方法所返回。 loginStudent是LinkedList链表对象,负责存储用户登录的基本信息。 yourAdress是InetAddress对象,负责存放客户端的IP。(2) 方法 Server()是构造方法。 Server对象调用StartServer(int port)方法相应客户的请求。 main方法是程序运行的入口方法3.代码(Server.java)import .*;import java.util.*;import java.io.*;public class Server ServerSocket server; Socket you; LinkedList loginStudent;/链表对象,负责存储用户登录的基本信息 InetAddress yourAddress; public Server() System.out.println(我是服务器端程序,负责处理用户的连接请求); loginStudent=new LinkedList(); public void startServer(int port)/该方法相应客户的请求 while(true) try server=new ServerSocket(port); catch(IOException e1) System.out.println(正在监听:); try System.out.println(等待用户呼叫.); you=server.accept(); /等待客户连接:接上后才能继续执行下面语句 yourAddress=you.getInetAddress(); System.out.println(客户的IP:+yourAddress); catch (IOException e) if(you!=null) new ServerThread(you,yourAddress,loginStudent).start(); else continue; public static void main(String args) Server server=new Server(); server.startServer(6666); 2.3.3 ServerThread类1. 效果图ServerThread类驻留在服务器端,没有可显示的效果图。2. 主要成员变量与方法(1) 成员变量 loginStudent是LinkedList链表对象,该链表每个节点存放一个用户登录的基本信息,即负责存储verifyMess对象。 verifyMess是String字符串,由用户登录时提交的学号、姓名和客户端IP组成。 socket是Socket对象。 readTest是ReadTeacherFile对象,负责读取老师文件。 yourAddress是InetAddress对象,负责存放客户端的IP。(2) 方法 ServerThread(Socket,InetAddress,LinkedListlist)是构造方法,当使用该方法创建线程时,通过该方法的参数将Server类中的you、yourAddress和loginStudent对象传递给ServerThread类中的响应对象。 Run()方法是ServerThread类重写父类Thread的方法,给出了怎样响应用户请求的具体内容。3. 代码import java.io.*;import .*;import java.util.*;import javax.swing.JOptionPane;public class ServerThread extends Thread LinkedList loginStudent; String verifyMess; /由用户登录时提交的学号、姓名和IP组成 InetAddress yourAddress; Socket socket=null; DataOutputStream out=null; DataInputStream in=null; ReadTeacherFile readTest=null; File currentDir,dirStudent; boolean isLogin=false; ServerThread(Socket t,InetAddress s,LinkedList list) socket=t; yourAddress=s; loginStudent=list; currentDir=new File(System.getProperty(user.dir); dirStudent=new File(currentDir,Student); dirStudent.mkdir(); try in=new DataInputStream(socket.getInputStream(); out=new DataOutputStream(socket.getOutputStream(); catch (IOException e) readTest=new ReadTeacherFile(); public void run() String s=; while(true) try s=in.readUTF(); if(s.startsWith(学生) verifyMess=s+ +yourAddress; String s0 = s.substring(2); File file=new File(dirStudent,s0+.txt);/存储学生信息的文件 file.delete(); /删除旧的文件 byte bb=verifyMess.getBytes(); if(!(file.exists() RandomAccessFile outNumber=new RandomAccessFile(file,rw); outNumber.write(bb); outNumber.close(); if(loginStudent.contains(verifyMess) out.writeUTF(已经成功登录了); break; /如果已经登录过,就消灭因重新登录而创建的当前线程 else loginStudent.add(verifyMess); out.writeUTF(成功登录!+verifyMess); /保留首次登录时的线程,当用户突然离线时,该线程将触发IOException else if(s.startsWith(列出文件:) verifyMess=s.substring(s.lastIndexOf(:)+1); System.out.println(verifyMess); isLogin=loginStudent.contains(verifyMess); if(isLogin) String fileName=currentDir.list(new FilenameFilter() public boolean accept(File dir,String name) return name.endsWith(.txt); ); for(int i=0;i0&name.length()0) IP=inputServerIP.getText().trim(); try LoginThread thread=new LoginThread(hintMess); if(!(thread.isAlive() thread=new LoginThread(hintMess); thread.makeConnection(number,name,IP); thread.start(); catch (Exception ee) hintMess.setText(登录失败,请查证ip是否正确或者服务端是否已开启!); else JOptionPane.showMessageDialog(this,必须输入学号和姓名,警告, JOptionPane.WARNING_MESSAGE); class LoginThread extends Thread Socket socket; InetSocketAddress socketAddress; DataInputStream in; DataOutputStream out; JLabel hintMess; LoginThread(JLabel hint) hintMess=hint; public void makeConnection(String number,String name,String IP) throws IOException InetAddress address=InetAddress.getByName(IP); socketAddress=new InetSocketAddress(address,6666); socket=new Socket(); socket.connect(socketAddress); in=new DataInputStream(socket.getInputStream(); out=new DataOutputStream(socket.getOutputStream(); out.writeUTF(学生 +number+_+name); public void run() String s=null; while(true) try s=in.readUTF(); if(s.startsWith(成功登录!) String verifyMess=s.substring(s.indexOf(!)+1); GetTeacherFile.setVerifyMess(verifyMess); ClientTestArea.setVerifyMess(verifyMess); GetTeacherFile.setSocketAddress(socketAddress); ClientTestArea.setSocketAddress(socketAddress); hintMess.setText(s); String tishi=成功登录,请单击选择老师界面; JOptionPane.showMessageDialog(null,tishi,操作提示, JOptionPane.PLAIN_MESSAGE); if(socket.isClosed() return; if(s.startsWith(已经成功登录了) hintMess.setText(s); String tishi=已经成功登录了,请单击选择老师界面; JOptionPane.showMessageDialog(null,tishi,操作提示, JOptionPane.PLAIN_MESSAGE); if(socket.isClosed() return; catch (Exception ee) hintMess.setText(服务器暂时关闭了,稍后再请求连接); return; 2.3.7 GetTeacherFile类1. 效果图2. 主要成员变量与方法(1) 成员变量 list是JComboBox创建的下拉列表,用于显示从服务器得到的老师文件名字。 getTeacherFile和jb_submit是JButton创建的对象,这两个按钮都将当前容器注册为自己的ActionEvent时间监视器。(2) 方法 GetTestFile()是构造方法。 actionPerformed()方法是GetTeacherFile类实现的ActionLisstener借口中的方法。GetTeacherFile创建的容器时getTeacherFile和jb_submit按钮的ActionEvent时间监视器,当用户单击getTea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题01 Units 1-3 教材核心知识串讲(期中复习课件)
- it工程外包合同
- 上市前签外包合同
- 业务推销外包合同
- 中学课程外包合同
- 产品售后外包合同
- 仓库业务外包合同
- 海装外包合同
- 企业策划外包合同
- 保洁外围外包合同
- 2026年移动源污染治理项目可行性研究报告
- 航空公司兼职客服合同
- 医疗AI在肿瘤诊断中的应用
- DB15∕T 4212-2025 密集流动沙丘治理技术规程
- 自然保护区巡护监测员安全技术规程
- 福建省福州市2026届高三第一次质量检测数学试题(解析版)
- 人教版七下英语不规则动词表及时态填空练习
- 2025年湖北会考地理真题及答案
- 水文地质调查员风险评估竞赛考核试卷含答案
- 水利工程施工环境保护监理规范
- 垃圾中转站安全操作培训课件
评论
0/150
提交评论