互联网程序设计实验二
《Android应用程序设计》实验报告 (2)

实验1 搭建开发环境与第1个Android程序【实验目的】1.熟悉Android开发环境的搭建2.掌握用Eclipse开发Android程序的流程【实验内容】一、搭建Android开发环境按照下面的步骤,完成Android环境的搭建。
1.1 JDK的安装及配置1.根据电脑的系统位数安装软件包里的JDK,安装目录设置为d:\jdk1.x。
(d为你的安装盘,可以设为任意盘;x为你安装的jdk版本)2. WIN7系统环境变量设置(1)环境变量设置一(2)环境变量设置二(3)环境变量设置三(4)环境变量设置四1)创建新的环境变量。
名:JA V A_HOME,值:x:\jdk1.72)修改系统变量Path,在path变量值前添加这段:%JA V A_HOME%\bin;3)修改系统变量classpath,值为:.;%JA V A_HOME%\lib\dt.jar;%JA V A_HOME%\lib\tools.jar;(5)环境变量设置五1)测试开发环境。
在开始->搜索程序和文件里输入cmd.exe,打开cmd。
输入cd c:\ 命令进入c盘根目录。
2)在c盘根目录下使用记事本编写源文件,并存为java文件。
public class MyApp {public static void main (String[] args) {System.out.println(“我能学好Java语言!”);} }3)使用javac命令编译程序,在cmd命令行输入:javac MyApp.java生成class类型文件。
4)使用java命令运行程序,在cmd命令行输入:java MyApp如果在命令行显示结果“我能学好Java语言!”,则JDK环境配置成功。
1.2 Android SDK的安装及配置1. 解压adt-bundle-windows-x86_64-20131030.zip文件,里面的SDK是免安装版。
Python程序设计实验报告二顺序结构程序设计

Python程序设计实验报告二顺序结构程序设计Python程序设计实验报告二:顺序结构程序设计一、实验目的本实验旨在通过编写Python程序,熟悉和掌握顺序结构程序设计的基本方法和技巧,加深对变量、表达式、数据类型以及基本输入输出的理解。
二、实验内容本次实验要求编写一个Python程序,实现以下功能:1. 提示用户输入一个年份,并将其存储到一个变量中。
2. 根据给定年份,计算该年份是否为闰年,并将计算结果存储到一个变量中。
3. 提示用户输入一个月份,并将其存储到一个变量中。
4. 根据给定月份,计算该月份有多少天,并将计算结果存储到一个变量中。
5. 输出计算结果,告诉用户给定年份是否为闰年,以及给定月份有多少天。
三、实验步骤下面是程序的详细步骤:1. 使用input函数提示用户输入一个年份,并将用户输入的值存储到一个名为year的变量中。
2. 根据闰年的定义,判断年份是否为闰年。
判断的条件是:年份能够被4整除但不能被100整除,或者能够被400整除。
如果年份是闰年,则将一个名为is_leap_year的变量设为True,否则设为False。
3. 使用input函数提示用户输入一个月份,并将用户输入的值存储到一个名为month的变量中。
4. 使用if语句判断月份,根据月份的不同,设置一个名为days的变量,表示给定月份的天数。
根据不同的情况,设置不同的值。
5. 使用print函数输出计算结果,告诉用户给定年份是否为闰年以及给定月份有多少天。
输出的格式为:“给定的年份XX是闰年/不是闰年,给定的月份XX有XX天。
”四、实验代码下面是按照顺序结构程序设计的要求,编写的Python程序:```# 提示用户输入年份year = int(input("请输入一个年份:"))# 判断年份是否为闰年if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:is_leap_year = Trueelse:is_leap_year = False# 提示用户输入月份month = int(input("请输入一个月份:"))# 根据月份计算天数if month in [1, 3, 5, 7, 8, 10, 12]:days = 31elif month == 2:if is_leap_year:days = 29else:days = 28else:days = 30# 输出计算结果print("给定的年份", year, "是闰年" if is_leap_year else "不是闰年", ",给定的月份", month, "有", days, "天。
WEB程序设计实验二

WEB程序设计实验二WEB程序设计实验二武汉工程大学计算机科学与工程学院《Web系统与技术》实验报告专业班级学生学号学生姓名实验项目实验类别设计性实验时间实验地点指导教师实验二服务器控件实验学时4实验目的:熟悉标准控件、HTML控件、有效性验证控件的使用,学习用C#编写CodeBehind代码,以实现相应的功能。
实验内容和要求:1.参考实验指导书的实验步骤,完成实验4、实验5。
2.在1的基础上完成以下3项设计,并将实验主要代码、运行结果、收获和总结写入实验报告:1)计算器(改进功能)2)简单的考试(5题,自动评分,题目和答案存放在数组中)3)用户注册(仿照常见网站的注册页面)报告应在2周内完成,并以学号+姓名+实验二为名交电子文档。
实验目的及要求类别上机表现报告质量说明:成绩评定表评分标准按时出勤、遵守纪律认真完成各项实验内容填写内容完整、体现设计过程和结果,实验总结能体现问题和收获分值30分得分70分合计评阅教师:陈艳日期:年月日实验内容1.设计并实现一个简易的计算器,代码和WEB运行结果如下图所示:代码:WEB运行结果:《Web系统与技术》实验报告2.简单的考试(5题,自动评分,题目和答案存放在数组中),代码和WEB运行结果如下图所示:代码:《Web系统与技术》实验报告WEB运行结果:《Web系统与技术》实验报告3.设计并实现一个带验证控件的用户注册页面,代码和WEB运行结果如下图所示:代码:《Web系统与技术》实验报告WEB运行结果:实验总结通过本次实验,让我学会了如何去做一个简单地计算器、如何去实现一个单选题的测试页面和如何去设计一个用户注册页面,让我熟悉了标准控件、HTML 控件、有效性验证控件的使用。
在实验中遇到不少问题,有些代码不会写,也不知道如何去写,通过和同学们一起讨论,最后终于将代码运行成功了,在WEB界面实现了各种页面效果,与此同时,我学会如何去很好的使用C#编写CodeBehind代码,以实现相应的功能。
西交大web程序设计第2次上机实验报告

《Web程序设计》第2次上机作业1、创建网页,要求在浏览器中显示下面的结果:代码:<html><head><title>2-1</title><meta charset="utf-8" /></head><body><h1>   2-1 标记<font>的使用</h1><font size="5">该标记设置颜色的格式如下,<br><font color=颜色>文本</font><br>例如:<br><font color=red>红色文本</font>的结果如下:<br><font color="red" size="5">红色文本</font></font></body></html>运行结果:2、创建网页,网页中的内容如下,可以粘贴到记事本上:第二章HTML 基础2.1 HTML 文档的结构HTML标签告诉浏览器HTML文件的开始和结束,HTML文档中所有的内容都在这两个标签之间。
头部标签放置页面的标题以及文件信息等内容,这两个标签之间的内容统称作HTML的头部,位于头部的内容都不会在网页上直接显示。
主体标签放置绝大多数HTML的内容。
要求设置的网页格式如下:(1)章为标题h1,居中,黑体,红色(2)节为标题h2,居左,楷体,绿色(3)正文有三段,设置为宋体,蓝色代码:<html><head><title>2-2</title><meta charset="utf-8" /></head><body><h1 align="center"><font color="green" face="楷体">2.1 HTML 文档的结构</font></h1><h2 align="left"><font color="red" face="黑体">第二章HTML 基础</font></h2><font color="蓝色" face="宋体">  HTML标签告诉浏览器HTML文件的开始和结束,HTML文档中所有的内容都在这两个标签之间。
互联网程序设计实验指导书

互联网程序设计上机实验指导书(2011版)软件学院·DOT NET教研室2011.8目录实验一C#循环结构程序设计、数组和函数编程应用 (3)实验二HTML综合实验 (3)实验三各种主要控件的使用、控件事件的使用 (5)实验四状态管理对象的应用 (7)实验五验证控件的使用 (9)实验六母版页的使用 (11)实验七数据库基本操作 (12)实验八使用DATASET进行数据库操作 (13)实验九WEB技术综合应用 (15)实验一C#循环结构程序设计、数组和函数编程应用【实验目的】1、通过上机操作掌握结构化设计的基本方法2、理解顺序结构、选择结构和循环结构的基本概念3、For、foreach语句的使用方法4、通过本实验进一步理解使用C# 2005创建项目的一般步骤和常用编程技巧【实验内容】本试验中,将使用C#编写三个程序:1、一个控制台应用程序,计算100以内奇数和与偶数和,主要考察对循环语句的使用。
2、一个windows程序,填充100个元素的数组(使用随机数)然后使用MessageBox显示出来这100个数。
3、一个控制台应用程序,编程比较string和StringBuilder处理字符串操作的差别【实验步骤】1、打开VS2008,注意根据需要新建相应的项目类型。
2、第一个程序需要变量的定义,循环要注意起始界限。
3、第二个程序需要用到Random类的对象产生随机数填充数组4、第三个程序需要使用DateTime.Now.Ticks来比较操作前后的时间差。
5、代码中使用的变量要规范命名。
实验二HTML综合实验【实验目的】1、通过本实验了解HTML标记语言的基本语法格式2、了解使用HTML语言制作静态网页的基本技术3、掌握HTML表格的设计方法4、设计一个学生成绩查询的网站【实验内容】1、使用HTML语言,在Windows“记事本”程序中编写HTML代码,制作学生成绩登记表,要求能在浏览器中正确显示字体、字型、字号等格式。
实验二-网络应用程序开发

实验二网络应用程序开发一、实验目的1.进一步理解应用层协议,并设计一个应用层协议;2。
熟悉在Windows下进行网络编程的基本方法,并实现所设计的协议。
二、实验内容1. 掌握传输层对应用层服务的支持;2。
掌握通过套接字进行网络编程的方法。
3. 设计一个网络聊天协议,定义应用层连接建立的过程,协议通信格式及其各个控制字段的作用。
具体内容如下:(1)说明服务器工作端口和客户机工作端口.(2)定义连接建立的过程。
(3)定义客户机和服务器之间的通信格式及各个控制字段的作用。
(4)服务端支持登录、退出、给客户端发送信息等功能.三、实验原理以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套microsoft Windows下网络编程接口。
它不仅包含了人们所熟悉的Berkeley Socket 风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。
Windows Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守.此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。
因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义.遵守这套Windows Sockets规范的网络软件,我们称之为Windows Sockets兼容的,而Windows Sockets兼容实现的提供者,我们称之为Windows Sockets提供者。
一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到Windows Sockets兼容。
任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为是具有Windows Sockets接口.我们称这种应用程序为Windows Sockets应用程序.Windows Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Sockets实现都支持流套接口和数据报套接口.应用程序调用Windows Sockets的API实现相互之间的通讯。
2024年秋季江苏开放大学《Python程序设计》实验报告二

(截图)
实验小结
掌握了Python中的基本运算
2024年秋季江苏开放大学《Python程序设计》实验报告
任务名称
Python基本运算
姓名
学号
实验时间
2024年09月12
实验环境
Windows、Python 3.6.1
目的
掌握Python中的基本运算
内容
键盘输入两个整数(都不为0),求这两个整数的和、差、积、商并输出设Fra bibliotek思路与关键技术描述
了解Python程序的基本构成要素和书写风格,掌握必要的Python语法基础、Python数据类型和基本运算符、Python基本运算、Python中的函数和模块。
实验步骤
(关键代码)
a=int(input("请输入一个整数(不为0):"))
b=int(input("请输入另一个整数(不为0):"))
add=a+b
minus=a-b
divide=a/b
print("这两个整数的和为:",add)
print("这两个整数的差为:",minus)
print("这两个整数的商为:",divide)
互联网络程序设计实验-实验

实验5定时器【实验原理】timerfd是Linux为用户程序提供的一个定时器接口。
这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景。
timerfd是linux 内核2.6.25版本中加入的接口。
timerfd、eventfd、signalfd配合epoll使用,可以构造出一个零轮询的程序,但程序没有处理的事件时,程序是被阻塞的。
这样的话在某些移动设备上程序更省电。
clock_gettime函数可以获取系统时钟,精确到纳秒。
需要在编译时指定库:-lrt。
可以获取两种类型事件:CLOCK_REALTIME:相对时间,从1970.1.1到目前的时间。
更改系统时间会更改获取的值。
也就是,它以系统时间为坐标。
CLOCK_MONOTONIC:与CLOCK_REALTIME相反,它是以绝对时间为准,获取的时间为系统重启到现在的时间,更改系统时间对齐没有影响。
timerfd_create:生成一个定时器对象,返回与之关联的文件描述符。
接收两个入参,一个是clockid,填写CLOCK_REALTIME或者CLOCK_MONOTONIC,参数意义同上。
第二个可以传递控制标志:TFD_NONBLOCK(非阻塞),TFD_CLOEXEC(同O_CLOEXEC)注:timerfd的进度要比usleep要高。
timerfd_settime:能够启动和停止定时器;可以设置第二个参数:flags,0表示是相对定时器,TFD_TIMER_ABSTIME表示是绝对定时器。
第三个参数设置超时时间,如果为0则表示停止定时器。
定时器设置超时方法:1、设置超时时间是需要调用clock_gettime获取当前时间,如果是绝对定时器,那么需要获取CLOCK_REALTIME,在加上要超时的时间。
如果是相对定时器,要获取CLOCK_MONOTONIC时间。
2、数据结构:struct timespec {time_t tv_sec; /* Seconds */long tv_nsec; /* Nanoseconds */};struct itimerspec {struct timespec it_interval; /* Interval for periodic timer */struct timespec it_value; /* Initial expiration */};it_value是首次超时时间,需要填写从clock_gettime获取的时间,并加上要超时的时间。
《Web程序设计(二)课程设计》实验报告

《Web程序设计(二)课程设计》实验报告院系名称:管理学院专业班级:电子商务级班学生姓名:学号:注册功能登录功能发布留言查看留言留言修改留言删除合计20分15分15分20分15分15分100分2014年07 月一、实验目的本实验属于设计性实验,目的是使学生在学完《Web程序设计(二)》课程的基本知识之后,通过使用Struts2和Hibernate等框架设计并开发一个简单的在线留言系统,进一步熟悉和领悟JSP、Struts2、Hibernate和Java语言的语法结构和使用方法,通过实验学习Java Web系统的MVC开发步骤与方法,任务是设计一个简单的在线留言系统。
二、实验步骤1.下载并安装配置JDK、eclipse、tomcat软件,使计算机有一个程序开发设计的软件支持。
2.用access建立一个数据库,在数据库中按要求建立表,包括用户注册基本信息表、年龄信息表、收入信息表、文化程度表、娱乐方式信息表、体育运动信息表、电影类型表。
3.在JDK中新建一个工程,建立一个包,名为beans,其下建立一个java文件,名为conndb,其中写入数据库调用信息。
4.用代码编写出html页面和相应的jsp文件,包括导航页面、注册页面、register.jsp、登录页面、login.jsp、问卷调查页面、diaochasend.jsp、问卷结果显示页面。
5.在控制面板中用sql.server接数据库。
6.配置并打开tomcat服务器,在服务器上运行项目,正确就完成,错误则进行修正。
7.在其他pc端进行检验,确保程序能够正常运行三、系统设计1、界面设计2、功能设计本系统具有注册功能、登录功能、发布留言功能、查看留言功能、留言修改功能、留言删除功能。
3、数据库设计本留言板程序采用的是sql server 2005进行数据库的设计与实现,数据库命名为dbs。
建表如下:① User表:② Tip表:四、系统的核心代码1、Index.jsp<body><div id="box"><div id="bottom1"><a href="regist.jsp">注册</a><a href="index.jsp">登录</a><a href="message_list.jsp">留言管理</a></div><div id="login"><div>用户登陆</div></div><div id="bottom"><s:form method="post" name="login" action="Login" theme="simple"validate="true"><p>用户名:<s:textfield name="erName" maxlength="20"cssClass="input-border"></s:textfield></p><p> 密码:<s:password name="user.passWord" maxlength="20"cssClass="input-border"></s:password> <label for="password"></label></p><p> <s:submit value="登陆" onmouseover="this.className='login-b2'" onmousedown="this.className='login-b3'" onmouseout="this.className='login-b'" cssClass="login-b" ></s:submit> <s:reset value="重置" ></s:reset></p></s:form>没有帐号? <a href="regist.jsp">点击注册</a></div><s:property value="#er"/></div>2、Regist.jsp<body><div id="box"><div id="bottom1"><a href="regist.jsp">注册</a><a href="index.jsp">登录</a><a href="message_list.jsp">留言管理</a></div><div id="login"><div>用户注册</div></div><div id="bottom"><s:form action="UserRegist" name="regist" method="post" validate="true" theme="simple"><p>用户姓名:<s:textfield label="用户名 " name="ername" maxlength="20" cssClass="input-border"></s:textfield></p><p>用户密码:<s:password label="密码 " name="regist.password" maxlength="20" cssClass="input-border"></s:password></p><p>密码确认:<s:password label="确认密码 " name="regist.repassword" maxlength="20" cssClass="input-border"></s:password></p><p>真实姓名:<s:textfield label="真实姓名 " name="" maxlength="20" cssClass="input-border"></s:textfield></p><p>性 别:<s:radio label="性别" list="#{'男':'男','女':'女'}" name="ex" value="'男'"></s:radio></p><p> <s:submit value="注册" ></s:submit> <s:reset value="重置" ></s:reset></p></s:form>已有帐号?<a href="index.jsp">点击登陆</a></div></div></body>3、AddMes.jsp<body><div id="box"><div id="bottom1"><a href="regist.jsp">注册</a><a href="index.jsp">登录</a><a href="addmes.jsp">留言</a><a href="message_list.jsp">留言管理</a></div><div id="login"><div>请您留言</div></div><div id="bottom"><form action="MessageServlet" method="post" name="form"><p>留言标题:<input name="title" type="text" size="50" /></p><p> 留言内容:<textarea name="content" cols="38" rows="5"></textarea> <label for="password"></label></p><p> <input type="submit" name="button" id="button" value="提交留言" /> <input type="reset" name="button2" id="button2" value="重新填写" /> </p></form></div></div></body>4、MessageList.jsp<body><div id="box"><div id="bottom1"><a href="regist.jsp">注册</a><a href="index.jsp">登录</a><a href="addmes.jsp">留言</a><a href="message_list.jsp">留言管理</a></div><div id="login"><div>留言内容及管理</div></div><div id="bottom"><table width="90%" border="1" id="table"><c:choose><c:when test="${empty pageModel.list}"><tr><td height="68" colspan="3">没有留言内容!</td></tr></c:when><c:otherwise><!-- 循环输出留言信息 --><c:forEach items="${pageModel.list}" var="m"><tr><td rowspan="2">用户名:${ername}<br />用户ID:${erId}</td><td height="43">留言标题:${m.title}</td><td rowspan="2" align="center"><c:if test="${!empty user}"><a href="ManagerServlet?method=delete&id=${m.id}">删除</a><a href="ManagerServlet?method=update&id=${m.id}">更改</a></c:if></td></tr><tr><td height="76">留言内容:${m.content}</td></tr></c:forEach></c:otherwise></c:choose></table></div></div></body>5、DBConnect.javapackage com.kuan.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet; //导入数据库操作的类import java.sql.SQLException;import java.sql.Statement;public class DBConnect {private static Connection conn = null; //连接对象private static Statement stmt = null;private static String user="sa";//数据库的用户名private static String password=""; //数据库的密码//语句对象private static ResultSet rs = null; //结果集对象private static StringAccessDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//保存Mssql驱动程序private static StringAccessURL="jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName =dbs";//保存Mssql连接字符串public DBConnect() {conn = null;}public static Connection getConnection() {try{Class.forName(AccessDriver).newInstance();conn=DriverManager.getConnection(AccessURL,user,password);}catch(Exception e){e.printStackTrace();}return conn;}//加载驱动,连接数据库public static Statement getStmt() {try{Class.forName(AccessDriver).newInstance();conn=DriverManager.getConnection(AccessURL,user,password);stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_ UPDATABLE);}catch(Exception e){e.printStackTrace();}return stmt;}public static ResultSet getRS(String sql) throws SQLException {//查询ResultSet rs ;Statement stmt = DBConnect.getStmt();rs = stmt.executeQuery(sql);return rs;}public static int Update(String sql) throws SQLException {//插入int ret = 0 ;Statement stmt = DBConnect.getStmt();ret = stmt.executeUpdate(sql);return ret;}public static void close(){if(rs!=null)try {rs.close();} catch (SQLException e) { } if(stmt!=null)try {stmt.close();} catch (SQLException e) { } if(conn!=null)try {conn.close();} catch (SQLException e) { } }}6、User.javapackage com.kuan.model;public class User {private Integer id; //ID编号private String username; //用户名private String password; //密码private String name; //姓名private String sex; //性别public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) { ername = username;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}public String getName() {return name;}public void setName(String name) { = name;}}7、Message.javapackage com.kuan.model;public class Message {private Integer id; //ID编号private String title; //标题private String content; //内容private Integer userId; //用户IDpublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) { this.content = content;}public Integer getUserId() {return userId;}public void setUserId(Integer userId) { erId = userId;}}UserDao.javapackage com.kuan.dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import er;public class UserDao {public void saveUser(User user){Session session = null; //Session对象try {//获取Sessionsession.beginTransaction(); //开启事物session.save(user); //持久化usersession.getTransaction().commit(); //提交事物} catch (Exception e) {e.printStackTrace(); //打印异常信息}finally{}}/*** 查询所有用户信息* @return List集合*/public List<User> findAllUser(){Session session = null; //Session对象List<User> list = null; //List集合try {//获取Sessionsession.beginTransaction(); //开启事物String hql = "from user1";list = session.createQuery(hql) //创建Query对象 .list(); //获取结果集session.getTransaction().commit(); //提交事物} catch (Exception e) {e.printStackTrace(); //打印异常信息session.getTransaction().rollback();//回滚事物}finally{//关闭Session}return list;}/*** 通过用户名和密码查询用户* 用于登录* @param username 用户名* @param password 密码* @return User对象*/public User findUser(String username, String password){Session session = null; //Session对象User user = null; //用户try {//获取Sessionsession.beginTransaction(); //开启事物//HQL查询语句String hql = "from user1 u where ername=? and u.password=?";Query query = session.createQuery(hql) //创建Query对象.setParameter(0, username)//动态赋值.setParameter(1, password);//动态赋值user = (User)query.uniqueResult(); //返回User对象session.getTransaction().commit(); //提交事物} catch (Exception e) {e.printStackTrace(); //打印异常信息}finally{}return user;}/*** 判断指定用户名的用户是否存在* @param username 用户名* @return*/public boolean findUserByName(String username){Session session = null; //Session对象boolean exist = false;try {//获取Sessionsession.beginTransaction(); //开启事物//HQL查询语句String hql = "from user1 u where ername=?";Query query = session.createQuery(hql) //创建Query对象.setParameter(0, username);//动态赋值Object user = query.uniqueResult(); //返回User对象//如果用户存在exist为trueif(user != null){exist = true;}session.getTransaction().commit(); //提交事物} catch (Exception e) {e.printStackTrace(); //打印异常信息}finally{}return exist;}}8、UserLogin.javapackage com.kuan.action;import java.sql.ResultSet;import java.util.Map;import com._52run.struts_task.dao.DBConnect;import er;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class UserLogin extends ActionSupport {private static final long serialVersionUID = 1L;private User user ;private String msg ;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public User getUser() {return user;}public void setUser(User user) {er = user;}public String execute() throws Exception {String sql = "select * from user1 where userName = '"+user.getUsername()+"' and uPwd = '"+user.getPassword()+"'";ResultSet rs = DBConnect.getRS(sql);if(!rs.next()) {msg = "用户名或密码错误,请重新输入!";DBConnect.close();return INPUT;} else {ActionContext actionContext = ActionContext.getContext();Map<String, String> session = actionContext.getSession();session.put("user", user.getUsername());//ActionContext.getContext().getSession().put("user",user.getuserName());DBConnect.close();return SUCCESS;}}/* public void validate() {String sql = "select * from regist where userName = '"+user.getuserName()+"' and uPwd = '"+user.getpassWord()+"'";try {ResultSet rs = DBConnect.getRS(sql);if(!rs.next()) {this.addFieldError("msg", "用户名或密码错误,请重新输入");}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.print("出现异常");}}*/}9、UserRegist.javapackage com.kuan.action;import java.sql.ResultSet;import java.util.Map;import com._52run.struts_task.dao.DBConnect;import er;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class UserLogin extends ActionSupport {private static final long serialVersionUID = 1L;private User user ;private String msg ;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public User getUser() {return user;}public void setUser(User user) {er = user;}public String execute() throws Exception {String sql = "select * from user1 where userName = '"+user.getUsername()+"' and uPwd = '"+user.getPassword()+"'";ResultSet rs = DBConnect.getRS(sql);if(!rs.next()) {msg = "用户名或密码错误,请重新输入!";DBConnect.close();return INPUT;} else {ActionContext actionContext = ActionContext.getContext();Map<String, String> session = actionContext.getSession();session.put("user", user.getUsername());//ActionContext.getContext().getSession().put("user",user.getuserName());DBConnect.close();return SUCCESS;}}/* public void validate() {String sql = "select * from regist where userName = '"+user.getuserName()+"' and uPwd = '"+user.getpassWord()+"'";try {ResultSet rs = DBConnect.getRS(sql);if(!rs.next()) {this.addFieldError("msg", "用户名或密码错误,请重新输入");}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.print("出现异常");}}*/}五、实验总结通过这次Web程序设计实验,我把Web程序设计课程的知识框架重新梳理清楚,对Struts2和Hibernate等框架更加熟悉,对JSP、Struts2、Hibernate和Java语言的语法结构和使用方法更加灵活和得心应手。
Python程序设计实验二

学院信息工程学院班级软件工程专升本S181 课程名称Python程序设计学号1803120006 姓名郭航日期2018.11.15 实验成绩指导教师刘寒冰实验二Python基本数据类型一、实验目的(1)掌握3种数字类型的使用;(2)掌握字符串类型的使用;(3)能运行Python的标准数学库math进行数值计算。
二、实验内容1、将下列数学表达式用Python程序写出来,并运算结果。
1.1 x=30-3**2+8//3**2*101.2 x=(2.5+1.25j)*4j/21.3 x=(1+32)×(16mod7)/72、利用math库编程实现天天向上的力量的计算。
2.1 以交互方式练习运行天天向上的实例代码3.2,观察运行结果,理解代码含义。
结果:2.2 以文件方式练习运行天天向上的实例代码3.4,观察运行结果,理解代码含义。
结果:2.3 在理解实例代码3.4的基础上解决问题:一年365天,初始水平为1.0,每工作一天水平增加1%,不工作时水平不下降,一周连续工作6天。
编写程序计算,一年后能力值是多少?2.4 天天向上续。
假设能力增长符合如下带有平台期的模型:以7天为周期,连续学习3天能力值不变,从第4天开始至第7天每天能力增长为前一天的1%。
如果7天中有1天间断学习,则周期从头计算。
编写程序计算,如果初始值为1,连续学习365天后能力值是多少?3、以交互方式按要求输出结果。
3.1 将字符串“这是一个很长的字符串”以宽度25位居中,并用“*”号填充输出。
3.2 格式化输出和389的二进制、八进制、十进制、十六进制的表达式,以及对应的Unicode字符。
3.3 格式化输出0.002178对应的科学表示法形式,保留4位有效位的标准浮点形式以及百分形式。
4、编程实现文本进度条。
4.1 以文件方式练习运行带刷新文本进度条的实例代码4.3,观察运行结果,理解代码含义。
4.2 文本进度条续。
仿照实例4.3,打印如下形式的进度条。
Java程序设计实验报告_2

Java程序设计实验报告姓名:学号:班级:课题名称(附程序名):JAVA计算器(Calculator.java)一、实验目的通过JAVA图形接口的应用,编写出一图形界面的科学计算器;熟悉JAVA程序开发的一般步骤,掌握事件驱动,并能掌握一定的Java 编程能力,在实践中能感受Java的奥秘!同时检验自己的学习成果。
二、实验任务具有加减乘除的计算器,可以延伸到开方等其他的一些计算。
三、开发工具与平台Microsoft Visual Studio 2005四、设计思路:1)界面设计2)逻辑设计首先明确该实验设计的要求实现的基本功能,其次设计布局,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可以不同,尽量将相同属性的按钮放在一个区域,方便操作。
3)软件调试与测试经过调试之后,能实现基本的四则运算,并能实现开方和消除错误的数。
4)软件设计优化该软件的界面应该更加流畅,同时我相信随着自己只是的日益丰富,开发软件的速度更快,效率更高,功能更加全面!5)实验总结不足:没有实现Mc,MR,MS,M+以及菜单栏几个功能,有待进一步完善。
这样才能够完成自己的第一个应用软件设计!优点:通过本次实验设计,大体了解了Java图形接口的应用,并在过程中增强了对程序的调试能力。
对JAVA有了更深一步的理解,学会如何解决问题,如何坚持对程序的调试,同时也增强了自己学习Java的信心。
五、附录源程序如下:import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JPanel;import javax.swing.JTextField;public class Calculator extends JFrame implements ActionListener { boolean init = true;boolean isMath = false;boolean clear = true;boolean clickable = true;double qian;String fuhao;int all = 0;JTextField text = new JTextField(25);JButton bM = new JButton();JButton bMC = new JButton("MC");JButton bMR = new JButton("MR");JButton bMS = new JButton("MS");JButton bMADD = new JButton("M+");JButton b0 = new JButton("0");JButton b1 = new JButton("1");JButton b2 = new JButton("2");JButton b3 = new JButton("3");JButton b4 = new JButton("4");JButton b5 = new JButton("5");JButton b6 = new JButton("6");JButton b7 = new JButton("7");JButton b8 = new JButton("8");JButton b9 = new JButton("9");JButton bNOP = new JButton("+/-");JButton bDot = new JButton(".");JButton bDiv = new JButton("/");JButton bMul = new JButton("*");JButton bSub = new JButton("-");JButton bAdd = new JButton("+");JButton bSprt = new JButton("sprt");JButton bMod = new JButton("%");JButton bDao = new JButton("1/x");JButton bEqual = new JButton("=");JButton bBackspace = new JButton("Backspace"); JButton bCE = new JButton("CE");JButton bC = new JButton("C");public Calculator() {this.setTitle("计算器");JMenuBar mainMenu = new JMenuBar();setJMenuBar(mainMenu);JMenu editMenu = new JMenu("编辑");JMenu viewMenu = new JMenu("查看");JMenu helpMenu = new JMenu("帮助");mainMenu.add(editMenu);mainMenu.add(viewMenu);mainMenu.add(helpMenu);JPanel jpDisplay = new JPanel();JPanel jpInput = new JPanel();JPanel jpLeft = new JPanel();JPanel jpRight = new JPanel();text.setText("0.");text.setHorizontalAlignment(JTextField.RIGHT); jpDisplay.add(text);bM.addActionListener(this);bMC.addActionListener(this);bMS.addActionListener(this);bMR.addActionListener(this);bMADD.addActionListener(this);jpLeft.setLayout(new GridLayout(5, 1)); jpLeft.add(bM);jpLeft.add(bMC);jpLeft.add(bMR);jpLeft.add(bMS);jpLeft.add(bMADD);JPanel jpInnerN = new JPanel();JPanel jpInnerS = new JPanel();bBackspace.addActionListener(this);bCE.addActionListener(this);bC.addActionListener(this);jpInnerN.setLayout(new GridLayout(1, 3)); jpInnerN.add(bBackspace);jpInnerN.add(bCE);jpInnerN.add(bC);b0.addActionListener(this);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);bNOP.addActionListener(this);bDot.addActionListener(this);bDiv.addActionListener(this);bMul.addActionListener(this);bSub.addActionListener(this);bAdd.addActionListener(this);bSprt.addActionListener(this);bMod.addActionListener(this);bDao.addActionListener(this);bEqual.addActionListener(this);jpInnerS.setLayout(new GridLayout(4, 5));jpInnerS.add(b7);jpInnerS.add(b8);jpInnerS.add(b9);jpInnerS.add(bDiv);jpInnerS.add(bSprt);jpInnerS.add(b4);jpInnerS.add(b5);jpInnerS.add(b6);jpInnerS.add(bMul);jpInnerS.add(bMod);jpInnerS.add(b1);jpInnerS.add(b2);jpInnerS.add(b3);jpInnerS.add(bSub);jpInnerS.add(bDao);jpInnerS.add(b0);jpInnerS.add(bNOP);jpInnerS.add(bDot);jpInnerS.add(bAdd);jpInnerS.add(bEqual);jpRight.setLayout(new BorderLayout());jpRight.add(jpInnerN, BorderLayout.NORTH);jpRight.add(jpInnerS, BorderLayout.CENTER);jpInput.setLayout(new BorderLayout());jpInput.add(jpLeft, BorderLayout.WEST);jpInput.add(jpRight, BorderLayout.CENTER);Container pane = this.getContentPane();pane.setSize(333, 208);this.setLocation(300, 200);this.setLayout(new BorderLayout());pane.add(jpDisplay, BorderLayout.CENTER);pane.add(jpInput, BorderLayout.SOUTH);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.pack();this.setVisible(true);}public void actionPerformed(ActionEvent e) {if (init)this.text.setText("0.");init = false;Object source = e.getSource();if (source == bBackspace) {String s = text.getText();text.setText("");for (int i = 0; i < s.length() - 1; i++) { char a = s.charAt(i);text.setText(text.getText() + a);}System.out.println("backspace");}if (source == bCE) {text.setText("0.");clear = true;init = true;System.out.println("CE");}if (source == bC) {text.setText("0.");clear = true;init = true;System.out.println("C");}if (source == bM) {System.out.println("M");}if (source == bMC) {System.out.println("MC,功能末实现");}if (source == bMR) {System.out.println("MR,功能末实现");}if (source == bMS) {System.out.println("MS,功能末实现");}if (source == bMADD) {System.out.println("M+,功能末实现");}if (source == b0) {System.out.println("0");if (clear == false)// 判断是否点击了符号位text.setText("");text.setText(text.getText() + "0");}if (source == b1) {if (clear == false)text.setText("");text.setText(text.getText() + "1");clear = true;// 第二次不在清空(前二句)}if (source == b2) {System.out.println("2");if (clear == false)text.setText("");text.setText(text.getText() + "2");clear = true;}if (source == b3) {System.out.println("3");if (clear == false)text.setText("");text.setText(text.getText() + "3");clear = true;}if (source == b4) {System.out.println("4");if (clear == false)text.setText("");text.setText(text.getText() + "4");clear = true;}if (source == b5) {System.out.println("5");if (clear == false)text.setText("");text.setText(text.getText() + "5");clear = true;}if (source == b6) {System.out.println("6");if (clear == false)text.setText("");text.setText(text.getText() + "6");clear = true;}if (source == b7) {System.out.println("7");if (clear == false)text.setText("");text.setText(text.getText() + "7");clear = true;}if (source == b8) {System.out.println("8");if (clear == false)text.setText("");text.setText(text.getText() + "8");clear = true;}if (source == b9) {System.out.println("9");if (clear == false)text.setText("");text.setText(text.getText() + "9");clear = true;}try{if (source == bNOP) {System.out.println("+/-");boolean isNumber = true;String s = text.getText();for (int i = 0; i < s.length(); i++)if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9'|| s.charAt(i) == '.' || s.charAt(i) == '-')) {isNumber = false;break;}if (isNumber == true) {// 如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-') {text.setText("");for (int i = 1; i < s.length(); i++) {char a = s.charAt(i);text.setText(text.getText() + a);}}// 如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetext.setText('-' + s);}}if (source == bDot) {System.out.println(".");clickable = true;for (int i = 0; i < text.getText().length(); i++)if ('.' == text.getText().charAt(i)) {clickable = false;break;} // 第一层判断是否里面含有小数点;if (clickable == true)// 第二层判断text.setText(text.getText() + ".");}if (source == bDiv) {System.out.println("/");qian = Double.parseDouble(text.getText());fuhao = "/";clear = false;}if (source == bMul) {System.out.println("*");qian = Double.parseDouble(text.getText());fuhao = "*";clear = false;}if (source == bSub) {System.out.println("-");qian = Double.parseDouble(text.getText());fuhao = "-";clear = false;}if (source == bAdd) {System.out.println("+");qian = Double.parseDouble(text.getText());fuhao = "+";clear = false;}if (source == bSprt) {System.out.println("sprt");String s = text.getText();if (s.charAt(0) == '-') {text.setText("负数不能开根号");} elsetext.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(text.getText()))));clear = false;}if (source == bMod) {System.out.println("%,功能末实现");}if (source == bDao) {System.out.println("1/x");if (text.getText().charAt(0) == '0'&& text.getText().length() == 1) {text.setText("除数不能为零");} else {boolean isDec = true;int i, j, k;String s= Double.toString(1 / Double.parseDouble(text.getText()));for (i = 0; i < s.length(); i++)if (s.charAt(i) == '.')break;for (j = i + 1; j < s.length(); j++)if (s.charAt(j) != '0') {isDec = false;break;}if (isDec == true) {String stemp = "";for (k = 0; k < i; k++)stemp += s.charAt(k);text.setText(stemp);} elsetext.setText(s);}clear = false;}if (source == bEqual) {System.out.println("=");Double ss=Double.parseDouble(text.getText());text.setText("");if (fuhao == "+")text.setText(qian + ss + "");if (fuhao == "-")text.setText(qian - ss + "");if (fuhao == "*")text.setText(qian * ss + "");if (fuhao == "/")text.setText(qian / ss + "");clear = false;// 要清空前一次的数据;}}catch (Exception ee) {System.out.println("请正确输入");text.setText("运算出错,给您带来不便,sorry");clear = false;}}public static void main(String[] args) {new Calculator();}}11。
互联网络程序设计实验-实验2

实验2 socket封装1.实验目标以C++类封装socket2.实验原理类继承体系:3.实验内容(1)socket表现为文件描述符将int socket作为类的成员,类向外暴露各种socket操作编写如下:class Socket{private:int sin_size;int sockfd,new_fd;unsigned short port;struct sockaddr_in my_addr,their_addr,get_addr;public:Socket();virtual ~Socket();virtual int Socket();void SetPort(unsigned short in_port);bool Bind();void SetRemotePort(unsigned short in_port);unsigned short GetRemotePort();// void GetRemoteAddrees(char *addrees);bool Connect();void Listen();void Accept();int Send(const char *buf,int len);int Sendto(const char *buf,int len);int Recv(char *buf,int len);int Recvfrom(char *buf,int len);void Close();};class TCP:public Socket{public:int Socket();bool Connect();};class UDP:public Socket{public:int Socket();};class SCTP:public Socket{public:int Socket();bool Connect();};#endifsocket的类型很多以一种统一的形式封装各种不同类型的socket处理如下://定义class TCP:public Socket{public:int Socket();bool Connect();};class UDP:public Socket{public:int Socket();};class SCTP:public Socket{public:int Socket();bool Connect();};//函数int UDP::Socket(){sockfd = socket(AF_INET ,SOCK_DGRAM, 0);return sockfd;}int TCP::Socket(){sockfd = socket(AF_INET,SOCK_STREAM, 0);return sockfd;}int SCTP::Socket(){sockfd = socket(AF_INET,SOCK_SEQPAKET, 0);return sockfd;}(2)考察socket的连接函数socket的地址族不一样,导致sockaddr结构是不一样的,虽然tcp/sctp 这样的面向连接的协议可能都会有connect这样的函数,并且连接的动作都差不多,但是connect函数的servaddr参数是不一样的。
2017《网络程序设计》实验指导书-学

实验一ASP编程环境设置及HTML网页开发一、实验目的及要求1.了解并掌握Windows xp (或win7 或win10)服务器上IIS(Internet服务管理器)的安装与配置;win10系统的IIS配置请自行百度。
2.了解并掌握虚拟目录的设置方法;3.了解并掌握ASP文件上传、下载和运行方法;4.简单HTML网页开发。
本实验需写实验报告(电子版,格式参考学校纸质实验报告格式)每个同学建立一个文件夹:班级学号实验一、×××××实验二、×××××。
实验报告为word版,正文中的截图为jpg 或png格式,单个实验报告不超过2M。
二、实验容1.按教材所介绍的方法,在自己的个人计算机上安装配置IIS;2.运行课程附带光盘程序chapter1\1-1.asp,确保运行结果正确。
3.编写一个简单的ASP网页程序,实现在浏览器IE中输出“这是我的第一个ASP 程序!”。
4.利用文本文件编辑器或Editplus软件编写简单HTML文件。
3.1)请开发一个网页,3秒后自动转到新浪,并且在页面上显示文字“3秒后将转到新浪……”。
3.2)请在2.4.2节框架网页示例的基础上制作自己的个人主页,并且要满足如下要求:A. 在“个人简介”页面上方给出一段自我介绍的文字和一照片。
B. 在“个人简介”页面下方利用表格说明自己的教育经历。
C. 在“我的照片”页面中添加一些照片的缩略图,点击缩略图自动打开原始照片。
D. 在“我的文章”页面中用排序列表的方式添加一些自己撰写或下载的文章标题,并为标题添加超,单击超在新窗口中打开对应的文章页面。
E. 在左侧框架中添加一个“给我留言”的超,然后在对应的页面中添加一个留言表单,其中应该包括留言主题、留言容、留言人、留言人E-mail等容。
单击“提交”按钮后,将留言发送到自己的信箱。
三、实验步骤(一)IIS的安装与配置ASP必须运行在服务器上,因此实验的第一项工作是构建服务器运行环境。
武汉纺织大学《.Net程序设计》实验报告2

武汉纺织大学《.Net程序设计》实验报告专业班姓名:实验时间: 2015 年 6月 12日一、实验目的:掌握.net程序设计的用户界面设计方法掌握.net程序设计的数据库处理方法二、实验内容:完成P153页3编程题完成P245页4编程题三、操作步骤:P153页3编程题:相关代码:private void listBox1_SelectedIndexChanged(object sender, EventArgs e){ textBox1.Text = listBox1.SelectedItem.ToString(); }private void button1_Click(object sender, EventArgs e){{if (comboBox1.SelectedItem == "联想")textBox1.Text += comboBox1.Text + "\r\n";if (comboBox1.SelectedItem == "方正")textBox1.Text += comboBox1.Text + "\r\n";if (comboBox1.SelectedItem == "Dell")textBox1.Text += comboBox1.Text + "\r\n";if (comboBox1.SelectedItem == "兼容机")textBox1.Text += comboBox1.Text + "\r\n";if (radioButton1.Checked == true)textBox1.Text += radioButton1.Text + "\r\n";if (radioButton2.Checked == true)textBox1.Text += radioButton2.Text + "\r\n";if (radioButton3.Checked == true)textBox1.Text += radioButton3.Text + "\r\n";}{if (radioButton4.Checked == true)textBox1.Text += radioButton4.Text + "\r\n";if (radioButton5.Checked == true)textBox1.Text += radioButton5.Text + "\r\n";}{if (checkBox1.Checked == true)textBox1.Text += checkBox1.Text + "\r\n";if (checkBox2.Checked == true)textBox1.Text += checkBox2.Text + "\r\n";if (checkBox3.Checked == true)textBox1.Text += checkBox3.Text + "\r\n"; }}程序运行截图:(2)相关代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication6{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e) {timer1.Interval = 1000;}private void button1_Click(object sender, EventArgs e){if (textBox1.Text == ""){textBox1.Text = "请设置时间";}else{int min;min = int.Parse(textBox1.Text);int t = min * 60;textBox1.Text = t.ToString();}}private void button2_Click(object sender, EventArgs e){if (textBox1.Text == ""){textBox1.Text = "请设置时间";}else{int t = int.Parse(textBox1.Text);progressBar1.Maximum = t;progressBar1.Minimum = 0;timer1.Enabled = true;}}private void textBox1_TextChanged(object sender, EventArgs e) {}private void timer1_Tick(object sender, EventArgs e){int t = int.Parse(textBox1.Text);t--;textBox1.Text = t.ToString();if (t <= 0){timer1.Enabled = false;t = 0;}progressBar1.Value = t;}}}程序运行截图:(3)相关代码:namespace WindowsFormsApplication7{public partial class Form1 : Form{ public Form1(){ InitializeComponent();}private void Form1_Load(object sender, EventArgs e){richTextBox1.Text = " ";}private void清除ToolStripMenuItem_Click(object sender, EventArgs e) { richTextBox1.Text = "";}private void结束ToolStripMenuItem_Click(object sender, EventArgs e){this.Close();}private void 8号字体ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.Font = new Font("宋体", 8);}private void 12号字体ToolStripMenuItem1_Click(object sender, EventArgs e){richTextBox1.Font = new Font("宋体", 12);}private void粗体ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.Font = new Font(richTextBox1.Font.FontFamily,richTextBox1.Font.Size, FontStyle.Bold | richTextBox1.Font.Style);}private void斜体ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.Font = new Font(richTextBox1.Font.FontFamily,richTextBox1.Font.Size, FontStyle.Italic | richTextBox1.Font.Style);}private void richTextBox1_TextChanged(object sender, EventArgs e){richTextBox1.ContextMenuStrip = contextMenuStrip1;}private void打开文件ToolStripMenuItem1_Click(object sender, EventArgs e){openFileDialog1.InitialDirectory = "C:\\";openFileDialog1.Filter = "文本文件t|*.txt";if (openFileDialog1.ShowDialog(this) ==System.Windows.Forms.DialogResult.OK){string file = openFileDialog1.FileName;richTextBox1.Text = System.IO.File.ReadAllText(file, Encoding.Default); }}private void 8号字体oolStripMenuItem1_Click(object sender, EventArgs e){richTextBox1.Font = new Font("宋体", 8);}private void 12号字体ToolStripMenuItem_Click(object sender, EventArgs e){ richTextBox1.Font = new Font("宋?体¬?", 12);}private void粗体ToolStripMenuItem1_Click(object sender, EventArgs e){richTextBox1.Font = new Font(richTextBox1.Font.FontFamily,richTextBox1.Font.Size, FontStyle.Bold | richTextBox1.Font.Style);}private void斜体ToolStripMenuItem1_Click(object sender, EventArgs e) {richTextBox1.Font = new Font(richTextBox1.Font.FontFamily, richTextBox1.Font.Size, FontStyle.Italic | richTextBox1.Font.Style);}}}程序运行截图:打开txt文件:调整文字格式:P245页4编程题:相关代码:using System.Data.OleDb;namespace _10_16{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){erinfoTableAdapter.Fill(erinfo);}private void button1_Click(object sender, EventArgs e){if (username.Text == "" || password.Text == ""){MessageBox.Show("密码或用户名为空", "信息提示",, MessageBoxButtons.OK, rmation);}else{string mypath = Application.StartupPath + "\\users.accdb";string constr = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + mypath;OleDbConnection mycon = new OleDbConnection(constr);mycon.Open();string mysql = "select * from userinfo where username='" + username.Text + "'and password='" + password.Text + "'";OleDbDataAdapter myada = new OleDbDataAdapter(mysql, mycon);DataTable mydt = new DataTable();myada.Fill(mydt);int i = mydt.Rows.Count;if (i > 0){MessageBox.Show("登录成功", "信息提示", MessageBoxButtons.OK, rmation);}else{MessageBox.Show("用户名或密码错误", "信息提示",MessageBoxButtons.OK, rmation);}}}private void button2_Click(object sender, EventArgs e){username.Text = "" ; password.Text = "";}}}程序运行截图:数据库表的建立:输入正确的用户名密码输入错误的用户名密码:四、实验收获和建议:通过这次实验,掌握了.net程序设计的用户界面设计方法,通过设计用户界面,实现窗体相应的功能,熟练不同控件的使用方法及属性,以及掌握.net程序设计的数据库处理方法,通过相关的代码实现ACCESS数据库的连接,实现用户登录的功能。
项目二 互联网操作

项目二互联网操作实验5 申请邮箱与邮件收发一、实验目的1.了解什么是电子邮件,电子邮件的作用以及在网络应用中的重要性。
2.掌握电子邮件收发的两种方式,常用的免费信箱申请网站。
3.学会申请免费信箱。
4.学会用免费信箱收发邮件。
5.了解目前电子邮件使用中所面临的一些安全问题,掌握一些基本的保护信箱的方法。
二、实验内容与步骤1、电子邮件的意义收发电子邮件是因特网中使用最多的一项功能,使用电子邮件传递信息时速度快、成本低,在技术上电子邮件有普通函件无法比拟的优势,它不仅可以传递普通文本信息,也可以传递计算机程序文件、图像以及声音等形式的信息。
电子邮件收发有两种方式,即使用浏览器在电子邮局网站上在线收发邮件和使用专门的电子邮件客户端软件(如Foxmail、Outlook Express等)进行收发。
2、免费信箱的申请z免费电子信箱网站比较多,常用的免费邮局有、、、等,其服务质量较好,信箱容量也较大,能满足绝大多数应用。
z电子邮件的格式E-mail即电子信函,也叫电子邮件,它是通过Internet发出和接收电子邮件。
电子邮件地址的格式:用户名@计算机主机名其中“用户名”是自己随意取的,但要便于自己记忆,也可以叫信箱名称;“@”是at 的意思,是E-mail地址的专用标示符号,不可多也不可少;计算机主机名实际标示的是你存放和收发邮件的电脑(服务器),不过它是在网络上。
3、申请的步骤① 进入“新浪网”:/或者/② 点击导航栏中的”免费邮箱“,进入下一页;③ 点击”注册免费邮箱“按钮,进入下一页;④ 输入“邮箱名”,自己给一个邮箱名并点击下面的“检测邮箱名是否被占用”按钮。
看弹出的窗口,如果被占用请点击”关闭“按钮,再重输再检测,直到“可以用此用户名”。
最后点击”下一步“按钮。
⑤ 按照要求填入相应的内容,点击”提交“按钮,进入下一页。
注意自己输的用户名和密码要记住。
⑥ 点击”登录新浪免费邮箱“,就进入了你申请的邮箱。
互联网络程序设计实验-实验2

线程与线程池封装为了充分利用多核的优势,我们利用多线程来进行任务处理,但线程也同样不能滥用,会带来一下几个问题:1.线程本身存在开销,系统必须为每个线程分配如栈,TLS(线程局部存储),寄存器等。
2.线程管理会给系统带来开销,context切换同样会给系统带来成本。
3.线程本身是可以重用的资源,不需要每次都进行初始化。
所以往往在使用中,我们无需把线程与task任务进行一对一对应,只需要预先初始化有限的线程个数来处理无限的task任务即可,线程池应运而生,原理也就是如此。
一下主要基于c++11标准,以及配套的thread, mutex, condition_variable配套标准库设施实现ThreadPool类的封装。
1 ThreadPool类的设计ThreadPool主要封装了一个线程队列workers和一个任务队列tasks, 以及相应的互斥信号量mutex和条件变量condition。
在该类的设计中大量采用了c++11新标准中的设施,如future模块,以及vector中的emplace方法。
ThreadPool源代码如下:ThreadPool.h#ifndef THREAD_POOL_H#define THREAD_POOL_H#include <vector>#include <queue>#include <memory>#include <thread>#include <mutex>#include <condition_variable>#include <future>#include <functional>#include <stdexcept>class ThreadPool {public:ThreadPool(size_t);template<class F, class... Args>auto enqueue(F&& f, Args&&... args)-> std::future<typename std::result_of<F(Args...)>::type>;~ThreadPool();private:// need to keep track of threads so we can join themstd::vector< std::thread > workers;// the task queuestd::queue< std::function<void()> > tasks;// synchronizationstd::mutex queue_mutex;std::condition_variable condition;bool stop;};// the constructor just launches some amount of workersinline ThreadPool::ThreadPool(size_t threads): stop(false){for(size_t i = 0;i<threads;++i)workers.emplace_back([this]{for(;;){std::function<void()> task;{std::unique_lock<std::mutex>lock(this->queue_mutex);this->condition.wait(lock,[this]{ return this->stop || !this->tasks.empty(); });if(this->stop && this->tasks.empty())return;task = std::move(this->tasks.front());this->tasks.pop();}task();}});}// add new work item to the pooltemplate<class F, class... Args>auto ThreadPool::enqueue(F&& f, Args&&... args)-> std::future<typename std::result_of<F(Args...)>::type>{using return_type = typename std::result_of<F(Args...)>::type;auto task = std::make_shared< std::packaged_task<return_type()> >( std::bind(std::forward<F>(f), std::forward<Args>(args)...) );std::future<return_type> res = task->get_future();{std::unique_lock<std::mutex> lock(queue_mutex);// don't allow enqueueing after stopping the poolif(stop)throw std::runtime_error("enqueue on stopped ThreadPool");tasks.emplace([task](){ (*task)(); });}condition.notify_one();return res;}// the destructor joins all threadsinline ThreadPool::~ThreadPool(){{std::unique_lock<std::mutex> lock(queue_mutex);stop = true;}condition.notify_all();for(std::thread &worker: workers)worker.join();}#endif。
实验二 网络基础编程实验

《计算机网络》实验报告信息安全2015年4月1日实验二网络基础编程实验一、实验目的通过本实验,学习采用Socket(套接字)设计简单的网络数据收发程序,理解应用数据包是如何通过传输层进行传送的。
二、实验内容2.1、编写TCP进行数据发送的简单程序(java)TCPClient.java TCPServer.java2.2、编写UDP进行数据发送的简单程序(java)UDPServer.java UDPClient.java2.3多线程\线程池对比TCPEchoClient.javaTCPEchoServer.java TCPEchoServerThread.java TCPEchoServerPool.java2.4写一个简单的chat程序,编程语言不限。
三、实验程序(1)TCP客户端TcpClient.javaimport java.io.*;import .*;public class TcpClient{public static void main(String argv[]) throws Exception {String sentence;//定义客户消息String modifiedSentence;//定义服务器消息InetAddress address = InetAddress.getLocalHost();//获取本机端口BufferedReader inFromUser = new BufferedReader( new InputStreamReader(Syst em.in)); //创建客户输入流//创建一个Scoket实例:构造函数向指定的远程主机和端口建立一个TCP连接。
add ress.getHostName()为本机IP地址;6789为TCP服务器端口Socket clientSocket = new Socket(address.getHostName(),6789); //客户套接字 //通过套接字的输入输出流(I/O streams)进行通信DataOutputStream outToServer = new DataOutputStream( clientSocket.getOutput Stream()); //创建客户端到服务器的输出流BufferedReader inFromServer = new BufferedReader( new InputStreamReader(cli entSocket.getInputStream())); //创建服务端输入流sentence = inFromUser.readLine();//客户端读取客户输入消息outToServer.writeBytes(sentence+'\n'); //客户端发送消息到服务器端modifiedSentence =inFromServer.readLine();//客户端接收来自服务器的消息System.out.println("client receive from TCP server:" + modifiedSentence);/ /客户端显示服务器发送过来的消息clientSocket.close(); //客户端关闭套接字}}(2)TCP服务器端TcpServer.javaimport java.io.*;import .*;public class TcpServer {public static void main(String argV[]) throws Exception {String clientSentence;//定义接收的消息String capitalizedSentence;//定义发送的消息ServerSocket welcomeSocket= new ServerSocket(6789);//创建一个ServerSocket实例,并指定本地端口,侦听该指定端口收到的连接while(true){Socket connectionSocket = welcomeSocket.accept();//调用ServerSocket的accept()方法以获取下一个客户端连接,基于新建立的客户端连接,创建一个Socket实例,并由accept()方法返回。
互联网程序设计试验二

实验报告(二)姓名:学号:班级:实验名称:实验二 用SwingWorker 教师评语(成绩): 改写线程(2学时) 一、实验目的及要求(1)理解并掌握效劳器一客户一线程通用技术框架.(2)理解并掌握SwingWorker<T,V>后台线程技术.二、实验环境多媒体计算机Windows7操作系统JDK 8 Netbeans IDE8.2 (开发语言Java)三、实验内容(1)重温本章完成的Echo 一客户一线程效劳器设计.(2)学习和理解SwingWorker<T,V> 这个类的用法.四、实验步骤(或记录)及相关代码(1)实验步骤:重新修改页面设计:修改局部代码:原代码:课程名称:互联网程序设计年级:2022级实验日期:i7|仙号।酎原州an 机w冏Bjn 泊口向板 *■・■・幽髓缙I 那小,笈材0号・ .•5 J -I U 宫核〃发送out.println(outStr);txtInput.setText("");修改后代码:〃获取要发送的消息条数String outStr_Num = txtInputNum.getText(); int outStrNum = Integer.parseInt(outStr_Num); //发送while (outStrNum > 0) { new Thread() { @Override public void run() { //发送 out.println(outStr); txtInput.setText("");} }.start(); //休眠10ms try {Thread.sleep(10);} catch (InterruptedException ex) {Logger.getLogger(ClientUI.class.getName()).log(Level.SEVERE, null, ex); } outStrNum--;}实验结果:(2)用 SwingWorker<TV> 替代 Thread 类定义 ClientThread 类程序2.3 (修改主要片段):public class ServerUI extends javax.swing.JFrame {private ServerSocket listenSocket=null; //侦听套接字private Socket toClientSocket=null; // 与客户机对话的套接字 public static int clientCounts=0; // 客户数量编号public ServerUI() {initComponents();}〃启动效劳器private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {〃GEN-由巴心淮3>也今 也金 鱼*%“心啾*■善■& 191AL 卫比 惮亭a ■■尤・■张■收到一齐, 加 札..1 :JM43 KPILiE^ir.^o. > ?M *327. «. fi. L.2M43 含PCUiH苑 *L**tM*i 再.VUfiGIT.I L 1 :3tt*3宣产弧1工437T G. ; l*h :| A b p|W4 r?.flLin. i-7»n 客户就总4 H.叽也l ;HT|占户UJE, ?r.A o i耨*,! E 户「修片 *r, ■_*.iz2wi 喜产队「£ jr, - o, : :*TIahUJL'S 效tTt 品户型加"I. *l| 出科3ML :. 信崎■/不 ■ G3f 小a 尻/的■»泊旧中 BlKlkbeinHdl* ■ L.II F 自户忸M 号«工二内里工MH 学4隼FIRST:event_btnStartActionPerformedtry {btnStart.setEnabled(false); // 禁用按钮,防止重复启动String hostName=txtHostName.getText();〃主机名int hostPort=Integer.parseInt(txtHostPort.getText());// 端口〃构建效劳器的SocketAddress格式地址SocketAddress serverAddr=newInetSocketAddress(InetAddress.getByName(hostName),hostPort);listenSocket=new ServerSocket(); // 创立侦听会接字listenSocket.bind(serverAddr); // 绑定到工作地址txtArea.append("效劳器开始等待客户机连接…\n");} catch (IOException ex) {}〃创立一个匿名线程,用于侦听和接受客户机连接,并创立响应容户机的会话线程new Thread(new Runnable() {public void run() {try {while (true) { //处理客户机连接toClientSocket=listenSocket.accept();//侦听并接受客户机连接clientCounts++;//客户机数量加1txtArea.append(toClientSocket.getRemoteSocketAddress()+ "客户机编号:"+clientCounts+ "会话开始…\n");〃创立客户线程clientThread ,实现一客户一线程SwingWorker<List<String>,String> worker=new ClientThread(toClientSocket,clientCounts);worker.execute();} //end while} catch (IOException ex){ JOptionPane.showMessageDialog(null, ex.getMessage(),错"误提示", JOptionPane.ERROR_MESSAGE);}}//end run()}).start();}//GEN-LAST:event_btnStartActionPerformed〃关闭效劳器之前private void formWindowClosing(java.awt.event.WindowEvent evt){〃GEN-FIRST:event_formWindowClosing〃关闭效劳器之前释放套接字if (listenSocket!=null) listenSocket=null;if (toClientSocket!=null) toClientSocket=null;}//GEN-LAST:event_formWindowClosing程序2.4 (修改主要片段):public class ClientThread extends Thread {private Socket toClientSocket=null;// 会话套接字private BufferedReader in; // 网络输入流private PrintWriter out; // 网络输出流private int clientCounts=0;// 在线客户机总数public ClientThread(Socket toClientSocket,int clientCounts) { // 构造函数this.toClientSocket=toClientSocket;this.clientCounts=clientCounts;}@Overridepublic void run(){try {//创立绑定到套接字toClientSocket上的网络输入流与输出流in=new BufferedReader(newInputStreamReader(toClientSocket.getInputStream(),"UTF-8"));out=new PrintWriter(newOutputStreamWriter(toClientSocket.getOutputStream(),"UTF-8"),true);//5.根据效劳器协议,在网络流上进行读写操作String recvStr;while ((recvStr=in.readLine())!=null){ //只要客户机不关闭,那么反复等待和接收客户机消息Date date=new Date();DateFormat format=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");String time=format.format(date);ServerUI.txtArea.append(toClientSocket.getRemoteSocketAddress()+ " 客户机编号: "+clientCounts+"消息:"+recvStr+" : "+time+"\n"); // 解析并显示收到的消息//根据echo协议原封不动回送消息SwingWorker<List<String>,String> worker=newClientThread(toClientSocket,clientCounts);worker.execute();out.println(toClientSocket.getLocalSocketAddress()+ " 客户机编号:"+clientCounts+" Echo 消息:"+recvStr+" : "+time);}//end whileServerUl.clientCounts--; // 客户机总数减 1〃远程客户机断开连接,线程释放资源if (in!=null) in.close();if (out!=null) out.close();if (toClientSocket!=null) toClientSocket.close(); }catch (IOException ex) {} } //end run } //end class五、总结本次实验稳固了一客户一线程的主要内容,对客户机和效劳器之间的消息传递有了更深的理解.对SwingWorker<T,V> 类也有了初步的学习.但是还不是非常熟练,另外,对SwingWorker的使用通过上网查询,也有了初步的了解.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告(二)
课程名称:互联网程序设计年级:2017级实验日期:
姓名:学号:班级:
教师评语(成绩):
实验名称:实验二用SwingWorker
改写线程(2学时)
一、实验目的及要求
(1)理解并掌握服务器一客户一线程通用技术框架。
(2)理解并掌握SwingWorker<T,V>后台线程技术。
二、实验环境
多媒体计算机Windows7操作系统JDK 8 Netbeans IDE8.2(开发语言Java)
三、实验内容
(1)重温本章完成的Echo 一客户一线程服务器设计。
(2)学习和理解SwingWorker<T,V>这个类的用法。
四、实验步骤(或记录)及相关代码
(1)实验步骤:
重新修改页面设计:
修改部分代码:
原代码:
//发送
out.println(outStr);
txtInput.setText("");
修改后代码:
//获取要发送的消息条数
String outStr_Num = txtInputNum.getText();
int outStrNum = Integer.parseInt(outStr_Num);
//发送
while (outStrNum > 0) {
new Thread() {
@Override
public void run() {
//发送
out.println(outStr);
txtInput.setText("");
}
}.start();
//休眠10ms
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
Logger.getLogger(ClientUI.class.getName()).log(Level.SEVERE, null, ex);
}
outStrNum--;
}
实验结果:
(2)用SwingWorker<TV>替代Thread 类定义ClientThread类
程序2.3(修改主要片段):
public class ServerUI extends javax.swing.JFrame {
private ServerSocket listenSocket=null; //侦听套接字
private Socket toClientSocket=null; //与客户机对话的套接字
public static int clientCounts=0; //客户数量编号
public ServerUI() {
initComponents();
}
//启动服务器
private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStartActionPerformed
try {
btnStart.setEnabled(false); //禁用按钮,避免重复启动
String hostName=txtHostName.getText();//主机名
int hostPort=Integer.parseInt(txtHostPort.getText());//端口
//构建服务器的SocketAddress格式地址
SocketAddress serverAddr=new
InetSocketAddress(InetAddress.getByName(hostName),hostPort);
listenSocket=new ServerSocket(); //创建侦听套接字
listenSocket.bind(serverAddr); //绑定到工作地址
txtArea.append("服务器开始等待客户机连接...\n");
} catch (IOException ex) { }
//创建一个匿名线程,用于侦听和接受客户机连接,并创建响应客户机的会话线程
new Thread(new Runnable() {
public void run() {
try {
while (true) { //处理客户机连接
toClientSocket=listenSocket.accept();//侦听并接受客户机连接
clientCounts++;//客户机数量加1
txtArea.append(toClientSocket.getRemoteSocketAddress()+ " 客户机编号:
"+clientCounts+ " 会话开始...\n");
//创建客户线程clientThread,实现一客户一线程
SwingWorker<List<String>,String> worker=new ClientThread(toClientSocket,clientCounts);
worker.execute();
} //end while
} catch (IOException ex) {
JOptionPane.showMessageDialog(null,
ex.getMessage(), "错误提示", JOptionPane.ERROR_MESSAGE);
}
}//end run()
}).start();
}//GEN-LAST:event_btnStartActionPerformed
//关闭服务器之前
private void formWindowClosing(java.awt.event.WindowEvent evt)
{//GEN-FIRST:event_formWindowClosing
//关闭服务器之前释放套接字
if (listenSocket!=null) listenSocket=null;
if (toClientSocket!=null) toClientSocket=null;
}//GEN-LAST:event_formWindowClosing
程序2.4(修改主要片段):
public class ClientThread extends Thread {
private Socket toClientSocket=null;//会话套接字
private BufferedReader in; //网络输入流
private PrintWriter out; //网络输出流
private int clientCounts=0;//在线客户机总数
public ClientThread(Socket toClientSocket,int clientCounts) { //构造函数this.toClientSocket=toClientSocket;
this.clientCounts=clientCounts;
}
@Override
public void run(){
try {
// 创建绑定到套接字toClientSocket上的网络输入流与输出流
in=new BufferedReader(new
InputStreamReader(toClientSocket.getInputStream(),"UTF-8"));
out=new PrintWriter(new
OutputStreamWriter(toClientSocket.getOutputStream(),"UTF-8"),true);
//5. 根据服务器协议,在网络流上进行读写操作
String recvStr;
while ((recvStr=in.readLine())!=null){ //只要客户机不关闭,则反复等待和接收客户机消息
Date date=new Date();
DateFormat format=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
String time=format.format(date);
ServerUI.txtArea.append(toClientSocket.getRemoteSocketAddress()+ " 客户机编号: "+clientCounts+" 消息:"+recvStr+" :"+time+"\n"); //解析并显示收到的消息
//按照echo协议原封不动回送消息
SwingWorker<List<String>,String> worker=new
ClientThread(toClientSocket,clientCounts);
worker.execute();
out.println(toClientSocket.getLocalSocketAddress()+ " 客户机编号: "+clientCounts+" Echo消息:"+recvStr+" : "+time);。