网络编程课设报告
web网络编程课程设计

web网络编程课程设计一、课程目标知识目标:1. 学生能理解Web网络编程的基本概念,掌握HTML、CSS和JavaScript的基础知识。
2. 学生能运用所学知识构建简单的网页,实现页面布局和样式设计。
3. 学生了解浏览器与服务器之间的通信原理,掌握基本的HTTP协议知识。
技能目标:1. 学生能运用HTML和CSS编写结构清晰、样式美观的网页。
2. 学生能运用JavaScript实现简单的交互效果,如表单验证、动态内容加载等。
3. 学生能运用网络编程知识,实现客户端与服务器端的简单数据交互。
情感态度价值观目标:1. 学生培养对Web网络编程的兴趣,激发学习编程的热情。
2. 学生养成合作、探究的学习习惯,勇于面对编程过程中遇到的困难和挑战。
3. 学生认识到编程对于未来社会发展的重要性,增强对信息技术的责任感。
课程性质分析:本课程为信息技术课程,旨在培养学生掌握Web网络编程的基本知识和技能,提高学生的编程素养。
学生特点分析:本年级学生具有一定的计算机操作能力,对新鲜事物充满好奇心,但编程基础薄弱,需要从基础开始逐步引导。
教学要求:1. 结合教材内容,注重理论与实践相结合,让学生在实际操作中掌握知识。
2. 注重启发式教学,引导学生主动探究,提高学生的编程思维。
3. 关注个体差异,实施分层教学,使每个学生都能在原有基础上得到提高。
二、教学内容1. Web网络编程基础- HTML:学习HTML的基本结构,掌握常用的标签及其属性,理解文档类型定义。
- CSS:学习CSS的基本语法,掌握选择器、盒模型、布局、样式优先级等概念,实现页面样式设计。
- JavaScript:了解JavaScript的基本语法,掌握变量、数据类型、运算符、控制结构等基础知识,实现简单的交互功能。
2. 网页设计与布局- 学习页面布局的基本原则,掌握常见的布局方式,如浮动布局、Flex布局等。
- 掌握CSS预处理器(如Sass、Less)的基本使用,提高样式编写效率。
北京工业大学 网络编程基础课设 报告

计算机学院实验报告课程名称:网络程序设计实验人学号:110703xx 姓名:xxx 实验完成日期:2014年5月31日报告完成日期:2014年5月31日目录一、需求说明 (3)1、基本需求 (3)2、辅助需求 (3)3、数据分析 (3)二、应用程序详细设计 (4)1、实现技术 (4)2、页面转移关系设计 (4)3、人机界面设计 (5)3.1、index.jsp (5)3.2、Directory.jsp (5)3.3、Cart.jsp (6)3.4 Order.jsp (6)4、对象模型设计 (7)4.1、界面对象 (7)4.2、控制器 (7)4.3、业务模型 (7)5、数据设计 (7)5.1、图书信息(数据库表、查询结果) (7)5.2、购物车信息 (7)5.3、共享数据 (8)6、动态模型: (8)7、EJB接口设计: (8)7.1、BookinfoFacade管理图书信息(封装数据库) (8)7.2、CartBean管理购物车信息(本次会话有效) (9)8、控制器(CtrlServlet)的输入信息: (10)8.1、来自查询页 (10)8.2、来自图书目录页 (10)8.3、来自购物车页 (10)9、控制器算法概要: (10)9.1、模糊查询search (10)9.2、查看购物车 (11)9.3、结算 (11)9.4、继续选书 (12)9.4、再次查询 (12)10、异常控制及处理 (12)10.1、index.jsp->Directory.jsp查无此书的处理 (12)10.2、Directory.jsp页面未勾选任何商品的处理 (13)10.3、Cart.jsp->Order.jsp页面商品数量输入不是int的处理 (14)10.4、Cart.jsp页面address未填写的处理 (14)10.5、Cart.jsp页面商品数量未输入或输入为0的处理 (15)10.6、Directory.jsp->Cart.jsp多次添加同一件商品的处理 (16)三、用户使用说明 (17)1、使用步骤: (17)一、需求说明1、基本需求a)提供基于关键字的查询功能,关键字可以包含在书名、作者或出版社的任意一条内;b)提供购物车,保存选中的图书信息以及提供数量输入;c)提供图书订单,包含选购的图书信息、总价以及配送地址;2、辅助需求a)支持反复查询、图书选择和订单浏览;b)提供浏览器界面;3、数据分析a)图书信息->数据库;b)购物车->本次会话有效,置于session中。
网络编程课程设计报告

网络编程课程设计飞鸽传书专业:软件工程班级:123302班完成日期:2014-12-20指导教师:目录目录第1章引言 (1)1.1课程设计的目的和意义 (1)1.2课程设计的总体要求 (1)第2章需求分析 (2)2.1功能分析 (2)2.2业务流程图 (3)第3章详细设计 (5)3.1服务器的设计 (5)3.2客户端设计 (8)第4章实验心得与体会 (12)参考文献 (13)附录程序清单 (14)第1章引言第1章引言1.1课程设计的目的和意义在互联网高度发达的二十一世纪,网络之间的通信技术也日益发达,许多客户端之间的聊天工具也相应诞生,如腾讯 QQ,微软的 MSN、飞鸽等聊天软件也是在这个前提下诞生的。
计算机网络通信是以计算机为信息接收终端,融合了计算机网络技术的通信方式。
计算机网络通信顺畅的重要保障就是网络建设。
同时,网络建设也是计算机应用普及的基本条件,是推动经济社会发展的根本。
因此,了解计算机网络知识及网络编程技巧对于IT技术人员是必备技术之一。
1.2课程设计的总体要求本次课题要求设计实现设计与实现一个类似于“飞鸽传书”的CCUT文件传输软件,软件具有界面,利用TCP/IP协议提供的编程接口——Socket(套接字)可以开发出TCP/IP应用程序。
正确的使用WindowsSocket,就可使得不同地址下的进程得以在Windows环境下顺利进行各种网络通信,因此研究WinSock更有意义。
而基于TCP/IP协议网络环境下的应用程序是通过客户机/服务器(C/S)作用方式模式在网络(应用)编程界面实现的。
本次课程设计采用Java语言设计一个基于C/S模式的TCP网络通讯程序。
实现客户端与服务器端之间的数据传输。
具体要求:本次课题要求设计实现设计与实现一个类似于“飞鸽传书”的CCUT文件传输软件,软件具有界面。
(1)具有文件传输的主界面(2)实现IP信息设定,同局域网ccut文件传输软件登陆的IP搜索。
网络编程实验报告

网络编程实验报告网络编程实验报告引言网络编程是计算机科学领域中的一个重要分支,它涉及到计算机网络的通信原理、网络协议以及数据传输等方面的知识。
本次实验旨在通过实际操作,加深对网络编程的理解,并掌握基本的网络编程技巧。
一、实验目的本次实验的主要目的是通过使用Python语言进行网络编程,实现一个简单的客户端和服务器端的通信。
通过这个实验,我们可以了解到网络编程的基本原理和技术,以及如何利用网络编程实现不同计算机之间的数据传输。
二、实验环境本次实验使用的是Python 3.9版本,并且需要安装socket模块。
在实验开始之前,我们需要确保计算机上已经正确安装了Python环境,并且能够正常运行Python程序。
三、实验过程1. 创建服务器端首先,我们需要创建一个服务器端的程序,用于接收来自客户端的请求并进行处理。
在Python中,可以使用socket模块来实现服务器端的功能。
具体的代码如下:```pythonimport socket# 创建一个socket对象s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP地址和端口号s.bind(('127.0.0.1', 8888))# 监听端口s.listen(5)# 等待客户端连接while True:# 接受一个新连接client_socket, addr = s.accept()# 接收客户端发送的数据data = client_socket.recv(1024)# 处理数据response = "Hello, " + data.decode()# 发送响应数据给客户端client_socket.send(response.encode())# 关闭连接client_socket.close()```2. 创建客户端接下来,我们需要创建一个客户端的程序,用于向服务器端发送请求并接收响应。
计算机网络课程设计报告

计算机网络课程设计报告一、设计背景。
计算机网络课程设计是计算机专业学生的重要课程之一,通过该课程的学习,学生可以系统地了解计算机网络的基本原理、技术和应用,培养学生的计算机网络设计和应用能力。
本次课程设计旨在通过实际操作,帮助学生深入理解计算机网络的知识,提高他们的实际动手能力和解决问题的能力。
二、设计目标。
1. 理论与实践相结合,通过设计,使学生能够将所学的理论知识应用到实际的网络设计中,提高他们的实际操作能力。
2. 提高解决问题的能力,设计中设置一些难点和问题,引导学生思考和解决,提高他们的问题解决能力。
3. 培养团队协作精神,设计中设置一些需要团队合作的任务,培养学生的团队协作意识和能力。
三、设计内容。
1. 网络拓扑设计,要求学生设计一个小型局域网的网络拓扑结构,包括主机、交换机、路由器等设备的连接方式和布局。
2. IP地址规划,要求学生为局域网中的每台主机和设备规划合理的IP地址,要求考虑到网络的扩展性和管理的便利性。
3. 网络服务配置,要求学生配置局域网中的基本网络服务,如DHCP服务、DNS服务等,使局域网内的主机能够正常通信和访问互联网。
4. 网络安全设置,要求学生设置基本的网络安全策略,包括防火墙配置、访问控制策略等,保障局域网的安全和稳定运行。
5. 网络故障排除,设计一些故障场景,要求学生能够快速定位和解决网络故障,提高他们的故障排除能力。
四、设计要求。
1. 设计报告,学生需要提交完整的设计报告,包括设计思路、实施步骤、配置截图等内容。
2. 实际操作,学生需要在实际的网络设备上进行配置和实验,完成设计要求。
3. 问题解答,学生需要对设计中遇到的问题进行解答和总结,形成经验和教训。
五、设计评价。
1. 设计报告评价,评价学生的设计报告是否完整、清晰、符合要求。
2. 实际操作评价,评价学生的实际操作能力和解决问题的能力。
3. 问题解答评价,评价学生对设计中遇到的问题的解答和总结是否合理、深入。
网络程序设计实验报告

网络程序设计实验报告实验报告:网络程序设计一、实验目的本实验主要目的是通过网络程序设计的实践,提升学生对网络编程的理解和能力。
通过完成实验,学生需要掌握以下知识和能力:1.了解网络编程的基本概念和原理;2.熟悉TCP/IP协议栈中的各个协议;3.掌握Socket编程的基本方法和使用;4.学会利用网络进行进程间通信;5.了解常用的网络编程框架和库。
二、实验环境和工具1.计算机操作系统:Windows/Linux/MacOS;2.编程语言:C/C++/Java/Python等;3.开发工具:Visual Studio/Eclipse/PyCharm等。
三、实验过程与结果1.实验过程本次实验我们选择使用C语言进行网络程序设计,采用Socket编程进行实践。
首先,我们需要了解Socket编程的基本原理和方法。
Socket编程是一种应用程序设计接口(API),用于在网络上实现进程间的通信。
我们需要创建一个套接字(Socket),并使用Socket函数进行通信的建立和数据的传输。
在实际的网络程序设计中,先创建一个Socket,然后通过bind函数将Socket绑定到一个本地的端口上。
接着,使用listen函数将Socket设为监听状态,等待客户端的连接请求。
一旦有客户端请求连接,使用accept函数接受连接请求,并获得一个新的Socket,通过新的Socket进行数据的传输。
接下来,我们可以使用send和recv函数进行数据的传输。
send函数用于将数据发送给连接的另一方,而recv函数则用于从连接的另一方接收数据。
使用send函数发送数据时,需要指定数据的大小和发送的目标地址;而接收数据时,需要指定接收数据的大小和接收数据的缓冲区。
最后,通过close函数关闭Socket,释放资源,并结束网络连接。
2.实验结果经过实验,我们成功实现了一个简单的网络通信程序。
在服务器端,我们通过创建一个Socket,并将其绑定到本地的一个端口上;然后使用listen函数将Socket设为监听状态,并等待客户端的连接请求。
网络编程_实验报告

一、实验目的1. 理解网络编程的基本原理和概念。
2. 掌握TCP/IP协议的基本工作原理。
3. 学会使用Socket编程实现网络通信。
4. 增强实际操作能力,提高网络编程水平。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm4. 网络环境:校园局域网三、实验内容本次实验主要实现一个基于TCP协议的简单网络通信程序,包括客户端和服务器端。
1. 服务器端服务器端负责监听客户端的连接请求,接收客户端发送的数据,并回显给客户端。
```pythonimport socket# 创建socket对象server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 获取本地主机名host = socket.gethostname()port = 12345# 绑定端口server_socket.bind((host, port))# 设置最大连接数,超过后排队server_socket.listen(5)print("等待客户端连接...")while True:# 建立客户端连接client_socket, addr = server_socket.accept()print("连接地址:", addr)while True:# 接收客户端数据data = client_socket.recv(1024)if not data:break# 发送数据回客户端client_socket.send(data)# 关闭连接client_socket.close()```2. 客户端客户端负责向服务器端发送数据,并接收服务器端回显的数据。
```pythonimport socket# 创建socket对象client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 获取本地主机名host = socket.gethostname()port = 12345# 连接服务器client_socket.connect((host, port))# 发送数据client_socket.send("Hello, Server!")# 接收数据data = client_socket.recv(1024)print("从服务器接收到的数据:", data)# 关闭连接client_socket.close()```四、实验步骤1. 编写服务器端代码,并运行程序。
Java网络编程实践课程设计报告书

J a v a网络编程实践课程设计说明书课程名称:Java网络编程课程设计题目:基于C/S的学生信息管理:学号:教学班号:指导教师:王小刚交通大学软件科学与工程系二○ 13 年 12 月 27 日任务书实现应用,可以通过网络在客户端对存放在服务器端的学生信息表(至少包含学号、、性别、年龄、籍贯等字段)学生纪录增、删、改、查,并返回结果。
要能通过菜单选择功能。
基于Socket,多客户端使用多线程,以能同时从多个客户端执行功能。
必须提供友好直观、布局合理的图形界面选择功能、显示信息和填写修改信息。
成员及分工列表图形界面设计者:数据库设计者: Socket设计者:多线程设计者:项目简述和目的熟悉JAVA 语法,掌握图形化界面、多线程、网络、数据库等综合编程,掌握用编程语言开发由若干功能组成的小型项目的基本流程,增强动手实践能力,巩固和加强书本知识的学习,体会JAVA编程的特点。
解题基本思路设计的信息管理系统中的窗体部分,没有使用菜单,而是按钮。
菜单虽然简单,方便,但我认为在窗体里运用按钮是有必要的,这样可以方便添加、删除,修改等动作,通过一步步地做,慢慢的集合,比较的清晰,还显得比较的有层次感. 利用Swing设计图形界面利用Access表设计数据库,利用socket设计网络信息管理模块分析和设计学生管理系统要实现查询,添加,删除,显示,修改等功能。
查询不存在要报错,添加相同也要报错,删除不存在的号也要报错,修改不成功也要报错。
如果成功的话也要提示。
而且每一步都要密码才能进行操作,否则报错提醒!主要程序源代码Client源代码package socket;import java.io.*;import .*;import java.awt.*;import javax.swing.*;import java.awt.event.*;class Client extends JFrame implements ActionListener//登入界面功能是输入正确的账号和密码才能进入,错误的话返回错误提示!{private JLabel usernameLabel;//帐号private JLabel a;//标题private JTextField usernameTextField;//帐号文本框private JLabel passwordLabel;//密码private JPasswordField passwordField;//密码文本框private JButton button1;//确定按钮private JButton button2;//取消按钮public Client(){super.setTitle("登录界面");Container c=getContentPane();c.setLayout(null);a=new JLabel("欢迎进入学生登入系统!");a.setBounds(50,30,300,30);a.setFont(new Font("黑色",Font.BOLD,25));usernameLabel=new JLabel("账号");usernameLabel.setBounds(50,90,170,30);usernameLabel.setFont(new Font("黑色",Font.BOLD,30)); usernameTextField=new JTextField();usernameTextField.setBounds(150,90,170,30); usernameTextField.setFont(new Font("宋体",Font.BOLD,20)); passwordLabel=new JLabel("密码:");passwordLabel.setBounds(50,120,170,30);passwordLabel.setFont(new Font("黑色",Font.BOLD,30)); passwordField=new JPasswordField();passwordField.setBounds(150,120,170,30);passwordField.setFont(new Font("黑色",Font.BOLD,30)); passwordField.setEchoChar('*');button1=new JButton();button1.setText("进入");button1.setFont(new Font("黑色",Font.BOLD,20));button1.setBounds(50,160,100,30);button2=new JButton();button2.setText("退出");button2.setFont(new Font("黑色",Font.BOLD,20));button2.setBounds(220,160,100,30);button1.addActionListener(this);//按钮监听button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.exit(0);}});c.add(passwordLabel);c.add(passwordField);c.add(usernameLabel);c.add(button1);c.add(button2);c.add(usernameTextField);c.add(a);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(400,300);setLocation(322,30);setVisible(true);}private void showText()//登入失败消息框{String xie;xie=usernameTextField.getText();JOptionPane.showMessageDialog(this.getParent(),"登入失败!"+xie);}private void showText1()//登入成功消息框{String xie;xie=usernameTextField.getText();JOptionPane.showMessageDialog(this.getParent(),"登入成功!"+xie);}public void actionPerformed(ActionEvent e)//按钮监听事件{Socket ssocket = null;String st1,st2,st3;final PrintWriter writer1;st1=usernameTextField.getText();st2=passwordField.getText();st3="进入"+","+st1+","+st2;//把帐号和密码打包成字符串try{ssocket=new Socket("localHost",10000);//创建socketwriter1=new PrintWriter(ssocket.getOutputStream());//发送给服务器!if(!(st1.equals(null)) && !(st2.equals(null)))//判断是否为空{writer1.println(st3);writer1.flush();}else if(st1.equals(null) || st2.equals(null))//判断是否为空{writer1.println("error1");writer1.flush();}BufferedReader read=new BufferedReader(new InputStreamReader(ssocket.getInputStream()));String s_red=null;System.out.println("please wait.......");while(true){s_red=read.readLine();if(s_red!=null)break;}if(s_red.equals("yes"))//读取服务端的容,如果是yes执行Client1的类{showText1();dispose();new Client1();}else//读取服务端的容,如果不是yes执行showText()报错提醒!{showText();usernameTextField.setText(null);passwordField.setText(null);}}catch (Exception e1){e1.printStackTrace();}}public static void main(String[] args)throws IOException{Client s=new Client();}}class Client1 extends JFrame //登录界面的类包含查询,删除,增添,修改,返回等按钮!共4个按钮监听对象!{private JButton button1,button2,button3,button4,button5,button6;public Client1(){super.setTitle("登录界面");Container c=getContentPane();setLayout(null);button1=new JButton();button1.setText("查询");button1.setFont(new Font("黑色",Font.BOLD,20));button1.setBounds(50,50,120,50);button2=new JButton();button2.setText("删除");button2.setFont(new Font("黑色",Font.BOLD,20));button2.setBounds(220,50,120,50);button3=new JButton();button3.setText("增添");button3.setFont(new Font("黑色",Font.BOLD,20));button3.setBounds(50,150,120,50);button4=new JButton();button4.setText("修改");button4.setFont(new Font("黑色",Font.BOLD,20));button4.setBounds(220,150,120,50);button5=new JButton();button5.setText("显示");button5.setFont(new Font("黑色",Font.BOLD,20));button5.setBounds(50,250,120,50);button6=new JButton();button6.setText("返回");button6.setFont(new Font("黑色",Font.BOLD,20));button6.setBounds(220,250,120,50);button1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client2();}});button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client4();}});button3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client3();}});button4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client5();}});button5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client6();}});button6.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client();}});c.add(button1);c.add(button2);c.add(button3);c.add(button4);c.add(button5);c.add(button6);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(400,450);setLocation(322,30);setVisible(true);}public static void main(String[] args)//throws IOException{new Client1();}}class Client2 extends JFrame implements ActionListener//查询类的功能是输入学号和密码,如果正确则返回成功的提醒,如果失败则返回失败的提醒,如果该学好存在,则返回存在的提醒!{private JLabel usernameLabel1;private JLabel usernameLabel2;private JLabel usernameLabel3;private JLabel usernameLabel4;private JLabel usernameLabel5;private JLabel usernameLabel6;private JLabel usernameLabel7;private JLabel usernameLabel8;private JTextField usernameTextField1;private JTextField usernameTextField2;private JTextField usernameTextField3;private JTextField usernameTextField4;private JTextField usernameTextField5;private JTextField usernameTextField6;private JTextField usernameTextField7;private JTextField usernameTextField8;private JButton button1;private JButton button2;private JLabel label1;public Client2(){super.setTitle("学生操作界面");Container c=getContentPane();c.setLayout(null);label1=new JLabel("欢迎进入学生查询系统!");label1.setBounds(40,20,400,30);label1.setFont(new Font("黑色",Font.BOLD,35));usernameLabel1=new JLabel("查询号");usernameLabel1.setBounds(70,110,200,30);usernameLabel1.setFont(new Font("黑色",Font.BOLD,30));usernameTextField1=new JTextField();usernameTextField1.setBounds(170,110,200,30);usernameTextField1.setFont(new Font("宋体",Font.BOLD,30));usernameLabel2=new JLabel("密码:");usernameLabel2.setBounds(70,150,200,30);usernameLabel2.setFont(new Font("黑色",Font.BOLD,32));usernameTextField2=new JTextField();usernameTextField2.setBounds(170,150,200,30);usernameTextField2.setFont(new Font("黑色",Font.BOLD,30));usernameLabel3=new JLabel("性别:");usernameLabel3.setFont(new Font("黑色",Font.BOLD,32));usernameLabel3.setBounds(70,190,200,30);usernameTextField3=new JTextField();usernameTextField3.setBounds(170,190,200,30);usernameTextField3.setFont(new Font("黑色",Font.BOLD,30));usernameLabel4=new JLabel("籍贯:");usernameLabel4.setBounds(70,230,200,30);usernameLabel4.setFont(new Font("黑色",Font.BOLD,30));usernameTextField4=new JTextField();usernameTextField4.setBounds(170,230,200,30);usernameTextField4.setFont(new Font("黑色",Font.BOLD,30));usernameLabel5=new JLabel("专业:");usernameLabel5.setBounds(70,270,200,30);usernameLabel5.setFont(new Font("黑色",Font.BOLD,30));usernameTextField5=new JTextField();usernameTextField5.setBounds(170,270,200,30);usernameTextField5.setFont(new Font("黑色",Font.BOLD,30));usernameLabel6=new JLabel(" :");usernameLabel6.setBounds(70,310,200,30);usernameLabel6.setFont(new Font("黑色",Font.BOLD,30));usernameTextField6=new JTextField();usernameTextField6.setBounds(170,310,200,30); usernameTextField6.setFont(new Font("黑色",Font.BOLD,30)); usernameLabel7=new JLabel(":");usernameLabel7.setBounds(70,350,200,30);usernameLabel7.setFont(new Font("黑色",Font.BOLD,30)); usernameTextField7=new JTextField();usernameTextField7.setBounds(170,350,200,30); usernameTextField7.setFont(new Font("宋体",Font.BOLD,30)); usernameLabel8=new JLabel("QQ:");usernameLabel8.setBounds(70,390,200,30);usernameLabel8.setFont(new Font("黑色",Font.BOLD,30)); usernameTextField8=new JTextField();usernameTextField8.setBounds(170,390,200,30); usernameTextField8.setFont(new Font("宋体",Font.BOLD,30));button1=new JButton();button1.setText("查询");button1.setFont(new Font("黑色",Font.BOLD,30));button1.setBounds(60,470,130,40);button2=new JButton();button2.setText("返回");button2.setFont(new Font("黑色",Font.BOLD,30));button2.setBounds(270,470,130,40);c.add(usernameLabel1);c.add(usernameLabel2);c.add(usernameLabel3);c.add(usernameLabel4);c.add(usernameLabel5);c.add(usernameLabel6);c.add(usernameLabel7);c.add(usernameLabel8);c.add(button1);c.add(button2);c.add(usernameTextField1);c.add(usernameTextField2);c.add(usernameTextField3);c.add(usernameTextField4);c.add(usernameTextField5);c.add(usernameTextField6);c.add(usernameTextField7);c.add(usernameTextField8);c.add(label1);button1.addActionListener(this);button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();new Client1();}});setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(470,580);setLocation(322,30);setVisible(true);}public static void main(String[] args){Client2 s=new Client2();}private void showText(){String xie;xie=usernameTextField1.getText();JOptionPane.showMessageDialog(this.getParent(),"查询成功!"+xie); }private void showText2(){String xie;xie=usernameTextField1.getText();JOptionPane.showMessageDialog(this.getParent(),"该号不存在!"+xie);}public void actionPerformed(ActionEvent e){Socket ssocket = null;String str, st1,st2;final PrintWriter writer1;st1=usernameTextField1.getText();st2=usernameTextField2.getText();str="查询"+","+st1+","+st2;try{ssocket=new Socket("localHost",10000);writer1=new PrintWriter(ssocket.getOutputStream());if(!(st1.equals(null)) && !(st2.equals(null))){writer1.println(str);writer1.flush();}else if(st1.equals(null) || st2.equals(null)){writer1.println("error1");writer1.flush();}BufferedReader read=new BufferedReader(new InputStreamReader(ssocket.getInputStream()));String line=null;System.out.println("please wait.......");line=read.readLine();if(line.equals("Not1")){showText2();usernameTextField1.setText(null);usernameTextField2.setText(null);usernameTextField3.setText(null);usernameTextField4.setText(null);usernameTextField5.setText(null);usernameTextField6.setText(null);usernameTextField7.setText(null);usernameTextField8.setText(null);}else{String sarry[]=line.split(","); //usernameTextField1.setText(sarry[1]);usernameTextField2.setText(sarry[2]);usernameTextField3.setText(sarry[3]);usernameTextField4.setText(sarry[4]);usernameTextField5.setText(sarry[5]);usernameTextField6.setText(sarry[6]);usernameTextField7.setText(sarry[7]);usernameTextField8.setText(sarry[8]);showText();}}catch (Exception e1){e1.printStackTrace();}}}Server的源代码package socket;import java.io.*;import .*;import java.sql.*;public class Server //Server类通过引用来实现多线程{public static void main(String args[]){Thread1 s=new Thread1();s.start();}}class Thread1 extends Thread//多线程类{static ServerSocket server;static Socket ssocket;static BufferedReader reader1;static BufferedReader reader2;static String sql, databack;static Stringid,password,address,myname,class1,QQ,phone,sex,school;static ResultSet rs; static Statement stmt; staticConnection conn;public void run()//多线程的run()方法{try{final Stringdb_driver="sun.jdbc.odbc.JdbcOdbcDriver"; //连接多线程!final String db_url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=d:/my1.mdb";try{}catch(Exception e){e.printStackTrace();}try{server=new ServerSocket(10000);//建立端口System.out.println("服务器已经创建!等待客户机的.......");int flag=0;int flag1=0;while(true){ssocket=server.accept();//连接客户端System.out.println("完成!");reader1=new BufferedReader(newInputStreamReader(ssocket.getInputStream()));PrintWriter writer2=newPrintWriter(ssocket.getOutputStream());String s1=reader1.readLine();String sarry[]=s1.split(",");sql="select*from one";//连接数据库中的表名Class.forName(db_driver);conn=DriverManager.getConnection (db_url,"","");if(conn!=null){System.out.println("数据库已连接.....");}else{System.out.println("连接失败!");}stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(sarry[0].equals("进入"))//获取客户端的进入功能{while(rs.next()){id=rs.getString("ID"); password=rs.getString("password");if(sarry[1].equals(id) && sarry[2].equals(password)){intnumber1=Integer.parseInt(id);intnumber2=Integer.parseInt(password);if(number1==201211016 && number2==16){flag=1;break;}}}if(flag==1){writer2.println("yes");writer2.flush();flag=0;}else{writer2.println ("no");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("查询"))//获取客户端的查询功能{while(rs.next()){school=rs.getString ("school");id=rs.getString("ID");password=rs.getString("password");sex=rs.getString("sex");address=rs.getString("address");class1=rs.getString("class");myname=rs.getString("myname");phone=rs.getString("phone");QQ=rs.getString("QQ");if(sarry[1].equals(id) && sarry[2].equals(password)){flag1=1;break;}}if(flag1==1){rs.next();String A[]={school,id,password,sex,address,class1,myname,phone,QQ};databack="";for(int i=0;i<=A.length-1;i++){databack+=A[i];if(i!=A.length-1)databack+=",";}writer2.println (databack);writer2.flush();flag1=0;}else{writer2.println("Not1");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("添加"))//获取客户端的添加功能{int boolean1=0;while(rs.next()){id=rs.getString("ID");if(sarry[1].equals(id)){boolean1=0;break;}else{String s="insert intoone(ID,password,sex,address,class,myname,phone,QQ) values (?,?,?,?,?,?,?,?)";PreparedStatement stat1=conn.prepareStatement(s);stat1.setString(1,sarry[1]);stat1.setString(2,sarry[2]);stat1.setString(3,sarry[3]);stat1.setString(4,sarry[4]);stat1.setString(5,sarry[5]);stat1.setString(6,sarry[6]);stat1.setString(7,sarry[7]);stat1.setString(8,sarry[8]);stat1.executeUpdate();boolean1=1;break;}}if(boolean1==1){writer2.println("Y");writer2.flush();boolean1=0;}else{writer2.println("No11");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("删除"))//获取客户端的删除功能{while(rs.next()){id=rs.getString("ID");if(sarry[1].equals(id)){Strings="delete from one where ID=?"; PreparedStatement stat1=conn.prepareStatement(s); stat1.setString(1,sarry[1]);stat1.executeUpdate();flag=1;}}if(flag==1){writer2.println("Y");writer2.flush();flag=0;}else{writer2.println("N");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("修改")){sex=sarry[3];address=sarry[4];class1=sarry[5];myname=sarry[6];phone=sarry[7];QQ=sarry[8];while(rs.next()){Stringid1=rs.getString("ID"); String password1=rs.getString("password");if(sarry[9].equals(id1) && sarry[10].equals(password1)){flag=1;break;}}if(flag==1){String id2=sarry[9];id=sarry[1];password=sarry[2];String s="update one setpassword=?,sex=?,address=?,class=?,myname=?,phone=?,QQ=?,ID=? where ID=?";PreparedStatement stat1=conn.prepareStatement(s);stat1.setString(1,password);stat1.setString(2,sex);stat1.setString(3,address);stat1.setString(4,class1); stat1.setString(5,myname); stat1.setString(6,phone);stat1.setString(7,QQ);stat1.setString(8,id);stat1.setString(9,id2);stat1.executeUpdate();writer2.println("Y2");writer2.flush();flag=0;}else{ writer2.println("N2");writer2.flush();}stmt.close();conn.close();}else if(sarry[0].equals("显示")){Statement stmt1 =conn.createStatement();ResultSet rs1 =stmt1.executeQuery("select * from one");databack="";while(rs1.next()){Stringid=rs1.getString("ID");Stringpassword=rs1.getString("password");Stringsex=rs1.getString("sex");Stringaddress=rs1.getString("address");Stringclass1=rs1.getString("class");Stringmyname=rs1.getString("myname");Stringphone=rs1.getString("phone");StringQQ=rs1.getString("QQ");String xie=id+","+password+","+sex+","+address+","+class1+","+myname+","+phone+","+QQ+",";databack+=xie;flag1=1;}if(flag1==1){writer2.println (databack);writer2.flush();flag1=0;}else{writer2.println ("Not1");writer2.flush();}stmt.close();conn.close();}}}catch(Exception e){}finally{System.out.println("发生错误,请重试!");}try{if(reader1!=null){reader1.close();}if(ssocket!=null){ssocket.close();}}catch(Exception e1){}}catch(Exception e){System.out.println("false");}}}运行截图总结和体会经过本人的努力,学生管理系统终于做完了,经过这次课程设计,自己总结了这个学生信息管理系统的一些问题,不过收获还是颇为丰富的,再有理论知识上结合实践,使我学到了更多。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络编程(论文)说明书题目:基于c#的FTP客户端设计与实现系别:计算机科学与工程学院专业:网络工程姓名:学号:指导教师:2015年月日目录摘要.................................................................................................................... 错误!未定义书签。
引言...................................................................................................................... 错误!未定义书签。
1 绪论.................................................................................................................... 错误!未定义书签。
1.1背景 ............................................................................................................ 错误!未定义书签。
1.2主要工作 .................................................................................................... 错误!未定义书签。
2 相关知识介绍 .................................................................................................... 错误!未定义书签。
技术简介............................................................................................ 错误!未定义书签。
2.2V ISUAL S 简介............................................................................... 错误!未定义书签。
2.3开发语言选择 ............................................................................................. 错误!未定义书签。
2.4FTP工作原理............................................................................................. 错误!未定义书签。
2.5FTP工作模式.............................................................................................. 错误!未定义书签。
2.6FTP传输模式............................................................................................. 错误!未定义书签。
2.6.1 ASCII传输方式................................................................................. 错误!未定义书签。
2.6.2 二进制传输方式................................................................................ 错误!未定义书签。
3FTP软件需求分析........................................................................................ 错误!未定义书签。
3.1需要完成目标 ............................................................................................. 错误!未定义书签。
3.2功能需求 ..................................................................................................... 错误!未定义书签。
3.3环境需求 ..................................................................................................... 错误!未定义书签。
4FTP软件详细设计与实现............................................................................ 错误!未定义书签。
4.1软件总体分析与设计 ........................................................................... 错误!未定义书签。
4.2各模块具体设计 ................................................................................... 错误!未定义书签。
4.2.1连接管理设计..................................................................................... 错误!未定义书签。
4.3各个模块的实现 ............................................................................................. 错误!未定义书签。
4.3.1连接管理的程序实现......................................................................... 错误!未定义书签。
4.3.2上传模块............................................................................................. 错误!未定义书签。
4.3.3下载模块............................................................................................. 错误!未定义书签。
4.3.4删除模块............................................................................................. 错误!未定义书签。
5软件测试............................................................................................................. 错误!未定义书签。
5.1登陆测试 ............................................................................................... 错误!未定义书签。
5.2上传测试 ............................................................................................... 错误!未定义书签。
5.2删除测试 ............................................................................................... 错误!未定义书签。
5.4重命名测试 ........................................................................................... 错误!未定义书签。
结论................................................................................................................ 错误!未定义书签。
参考文献................................................................................................................ 错误!未定义书签。
摘要FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。
用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application)。
用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。
用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。
客户机程序代表用户接收到这个文件,将其存放在用户目录中。
在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和“上载”(Upload)。