第一篇:实验八 综合程序设计
实验八综合程序设计
一、实验目的1.掌握文件以及缓冲文件系统、文件指针的概念。
2.学会使用文件打开、关闭、读、写等文件操作函数。
3.通过一个综合程序,使学生对综合运用C语言程序设计语言有初步的认识。
二、实验内容
1.运行下面程序,给出执行结果。
#include
#include
voidmain(void)
{FILE *fp;
char ch,filename[10];
scanf(“%s”,filename);
if((fp=fopen(filename,“w”))==NULL){
printf(“cannot open filen”);
exit(0);/*终止程序*/}
ch=getchar();/*接收执行scanf语句时最后输入的回车符 */
ch=getchar();/* 接收输入的第一个字符 */
while(ch!='#‘)
{fputc(ch,fp);putchar(ch);
ch=getchar();}
fclose(fp);
}
2.请编写程序:从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,输出到磁盘文件“upper.txt”中保存。输入的字符串以“!”结束。然后再将文件upper.txt中的内容读出显示在屏幕上。
3.教材P349上机实验题16的1、2。
注:本次实验报告内容为实验内容的3.
第二篇:《Web应用程序设计实验》实验指导书-实验八
实验八
Servlet技术的应用
一、实验目的
(1)、掌握怎样编写和使用Servlet。(2)、掌握编写和配置和Servlet有关的web.xml文件。(3)、掌握在Servlet中使用session的方法;熟悉把用户对某JSP页面或Servlet的请求转发给另一个JSP页面或Servlet的方法。
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载(2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003(3)Tomcat服务器,也可以从网上免费下载(4)Netbeans 4.1或Jcreator
三、实验原理与内容
(1)、有些Web应用可能需要JSP+JavaBean+Servlet来完成,需要服务器再创建一些Servlet对象,配合JSP页面来完成整个Web应用程序的工作。本小节实验将介绍怎样编写创建Servlet对象的类,怎样在Tomcat服务器上保存编译后的字节码、编写部署文件,怎样请求Tomcat服务器创建一个Servlet对象。
① 复制需要的jar文件:为了编译Servlet源文件,需要HttpServlet、HttpServletRequest等类,JDK内置包中并不包含这些类文件,用户需要将Tomcat服务器中commonlib目录下的servlet-api.jar文件复制到JDK安装目录的jrelibext子目录中。
② 添加Servlet类的字节码文件:编写如下的Servlet类:Computer.java,保存在D:盘根目录下,编译该类,形成starmoonComputer.class,将此文件夹保存到Tomcat当前Web目录(如:ROOT目录)下的WEB-INFclasses子目录中,重新启动Tomcat。Computer.java:
package star.moon;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class Computer extends HttpServlet { public void init(ServletConfig config)throws ServletException
{ super.init(config);
}
public void service(HttpServletRequest request,HttpServletResponse response)
throws IOException
{ response.setContentType(“text/html;charset=GB2312”);
PrintWriter out=response.getWriter();
out.println(“
”);String number=request.getParameter(“number”);
//获取客户提交的信息。
double n=0;
try{ n=Double.parseDouble(number);
out.print(“
”+number+“的平方根是:”);
out.print(“
”+Math.sqrt(n));
}
catch(NumberFormatException e)
{ out.print(“
请输入数字字符!
”);}
out.println("
第三篇:《Java面向对象程序设计》实验-实验八(输入输出流)
广西科技大学
计通学院
《Java面向对象程序设计》实验
实验八
输入输出流
学生姓名:×××
学
号:×××
班
级:×××
指导老师:×××
专
业:计算机科学与技术
提交日期:×××年×× 月××日
实验报告内容
1. 实验目的
掌握字符输入、输出流用法; 掌握使用Scanner类解析文件; 掌握Console流的使用。
2. 实验内容
实验教材-第12章实验1、2、3 字符输入输出流;Scanner类和Console类。
要求: 完善程序,给出实验结果截图;
完成试验后练习。
3. 程序代码及运行结果:
实验1 举重成绩单
// AnalysisResult.java import java.io.*;import java.util.*;public class AnalysisResult { public static void main(String[] args){ File fRead=new File(“score.txt”);File fWrite=new File(“scoreAnalysis.txt”);try{ Writer out=new FileWriter(fWrite);BufferedWriter bufferWrite=new BufferedWriter(out);Reader in=new FileReader(fRead);BufferedReader bufferRead=new BufferedReader(in);String str=null;
while((str=bufferRead.readLine())!=null){
double totalScore=Fenxi.getTotalScore(str);str=str+“总成绩:”+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();} bufferRead.close();bufferWrite.close();} catch(IOException e){ System.out.println(e.toString());} } }
// Fenxi.java
import java.util.*;public class Fenxi { public static double getTotalScore(String s){ String regex = “[^0123456789.]”;String digitMess = s.replaceAll(regex,“*”);StringTokenizer fenxi = new StringTokenizer(digitMess,“*”);double totalScore=0;while(fenxi.hasMoreTokens()){ double score=Double.parseDouble(fenxi.nextToken());totalScore=totalScore+score;} return totalScore;
} }
// score.txt
姓名:张三,抓举成绩 106kg,挺举 189kg。姓名:李四,抓举成绩 108kg,挺举 186kg。姓名:周五,抓举成绩 112kg,挺举 190kg。
运行结果如图1所示
图1
实验2 统计英文单词 // WordStatistic.java import java.io.*;import java.util.*;public class WordStatistic { Vector
} catch(IOException exp){ System.out.println(exp.toString());} } void setFileName(String name){ file=new File(name);try{ sc=new Scanner(file);sc.useDelimiter(regex);} catch(IOException exp){ System.out.println(exp.toString());} } void WordStatistic(){ try{ while(sc.hasNext()){ String word=sc.next();allWord.add(word);if(!noSameWord.contains(word))noSameWord.add(word);} } catch(Exception e){} } public Vector
} }
// OutputWordMess.java import java.util.*;public class OutputWordMess { public static void main(String[] args){ Vector if(count[n]>count[m]){ String temp=noSameWord.elementAt(m); noSameWord.setElementAt(noSameWord.elementAt(n), m);noSameWord.setElementAt(temp, n);int t=count[m];count[m]=count[n];count[n]=t;} } } for(int m=0;m 运行结果如图2所示 图2 实验3 密码流 // PassWord.java import java.io.*;public class PassWord { public static void main(String[] args){ boolean success=false;int count=0;Console cons;char[] passwd;cons=System.console();while(true){ System.out.print(“输入密码:”); passwd=cons.readPassword(); count++; String password= new String(passwd); if(password.equals(“tiger123”)){ success=true; System.out.println(“您第”+count+“次输入的密码正确!”); break; }else{ System.out.println(“您第”+count+“次输入的密码”+password+“不正确!”); }if(count==3){ System.out.println(“您”+count+“次输入的密码都不正确!”); System.exit(0); } } if(success){ File file=new File(“score1.txt”); try{ FileReader inOne=new FileReader(file); BufferedReader inTow=new BufferedReader(inOne); String s=null; while((s=inTow.readLine())!=null){ System.out.println(s); } inOne.close(); inTow.close(); }catch(IOException ioe){} } } } // score.txt 姓名:张三,抓举成绩 106kg,挺举 189kg。姓名:李四,抓举成绩 108kg,挺举 186kg。姓名:周五,抓举成绩 112kg,挺举 190kg。 运行结果如图3所示 图3 4. 实验后的练习: 实验1 有如下格式的成绩单(文本格式)score.txt。姓名:张三,数学72分,物理67分,英语70分。姓名:李四,数学92分,物理98分,英语88分。 姓名:周五,数学68分,物理80分,英语77分。要求按行读入取成绩单,并在该行的后面尾加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。// AnalysisResult.java import java.io.*;import java.util.*;public class AnalysisResult { public static void main(String[] args){ File fRead=new File(“score.txt”);File fWrite=new File(“scoreAnalysis.txt”);try{ Writer out=new FileWriter(fWrite,true);BufferedWriter bufferWrite=new BufferedWriter(out);Reader in=new FileReader(fRead);BufferedReader bufferRead=new BufferedReader(in);String str=null; while((str=bufferRead.readLine())!=null){ double totalScore=Fenxi.getTotalScore(str);str=str+“总分:”+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();} bufferRead.close();bufferWrite.close(); } catch(IOException e){ System.out.println(e.toString());} } } // Fenxi.java import java.util.*;public class Fenxi { public static double getTotalScore(String s){ Scanner scanner=new Scanner(s);scanner.useDelimiter(“[^0123456789.]+”);double totalScore=0;while(scanner.hasNext()){ try{ double score=scanner.nextDouble();totalScore=totalScore+score;} catch(InputMismatchException exp){ String t=scanner.next();} } return totalScore;} } // score.txt 姓名:张三,数学72分,物理67分,英语70分。姓名:李四,数学92分,物理98分,英语88分。姓名:周五,数学68分,物理80分,英语77分。 运行结果如图4所示 图4 实验2 按字典序输出全部不相同的单词。// Dictionary.java import java.util.*;public class Dictionary { public static void main(String args[]){ Vector WordStatistic statistic=new WordStatistic(); statistic.setFileName(“hello.txt”); statistic.WordStatistic();//statistic调用WordStatistic()方法 allWord=statistic.getAllWord(); noSameWord=statistic.getNoSameWord(); System.out.println(“共有”+allWord.size()+“个英文单词”); System.out.println(“有”+noSameWord.size()+“个互不相同英文单词”); System.out.println(“按字典顺序排列:”); String s[]=new String [noSameWord.size()]; for(int i=0;i s[i]=noSameWord.elementAt(i); } Arrays.sort(s); for(int i=0;i System.out.println(s[i]+“ ”); } } } 运行结果如图5所示 图5 实验3 编写一个程序,程序运行时,要求用户输入的密码是:hello。如果用户输入了正确的密码。程序将输出“你好,欢迎你!”。程序允许用户2次输入的密码不正确,一旦超过2次,程序将立刻退出。// PassWord.java import java.io.*;import java.util.Scanner;public class PassWord{ public static void main(String args[]){ int count=0;Console cons;String passwd;Scanner sc=new Scanner(System.in);//cons=System.console(); while(true){ System.out.print(“输入密码:”); passwd=sc.next();// count++; String password=new String(passwd); if(password.equals(“hello”)){ System.out.println(“你好,欢迎你!”); break; } else{ System.out.println(“您第”+count+“次输入的密”+password+“不正确”); } if(count==3){ System.out.println(“您”+count+“次输入的密码都不正确”); System.exit(0); } } } } 运行结果如图6所示 图6 5. 实验心得和体会 这次实验中,我感觉比较难理解和掌握的就是Console类 了,在实验3 密码流的代码在eclipse中运行出错如下图所示: 就是输入不了密码,后来通过找寻解决方法,才知道了在JDK 6中java.io.Console类专用来访问基于字符的控制台设备,然后使用cmd命令提示符来运行就可以输入密码和显示结果了。 通过这次实验,大概了解了字符输入、输出流用法,如何去使用Scanner类解析文件,对Console类的使用有个大概的认知。总而言之,这次实验收获蛮大的,敲代码的效率比以往提高了,出错率也少了。 实 验 报 告 课程名称: SQL Server 数据库基础 任课教师: 池宗琳 实验名称: 存储过程 年级、专业: 2018级电子信息工程 学 号: 20181060093 姓 名: 马 信 日期: 2019 年 月 日 云南大学 信息学院 一、实验目的1、掌握使用SELECT语句实现对数据库的简单查询 2、掌握使用SELECT语句实现对数据库的多表链接查询和子查询 二、实验内容、方法、步骤、结果与分析 完成以下各题功能,保存或记录实现各题功能的Transact-SQL语句。 1.在数据库HrSystem中创建存储过程avg._wage,用于求所有员工的平均工资,并通过输出参数返回该平均工资。要求在创建存储过程之前要首先判断该存储过程是否已经存在,如果存在,则将其删除。 USE Hrsystem GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'avg_wage') DROP PROC avg_wage GO CREATE PROC avg_wage @AVWAGE AS FLOAT AS SELECT @AVWAGE = AVG(Wage) FROM Employees PRINT @AVWAGE GO 2.执行第1题创建的存储过程avg_ wage,打印员工平均工资。 USE Hrsystem GO DECLARE @avg AS FLOAT EXEC avg_wage @avg 3.在数据库HrSystem中创建存储过程max_ wage,根据指定的部门名称(输人参数)返回该部门的最高工资(输出参数)。要求在创建存储过程之前要首先判断该存储过程是否已经存在,如果存在,则将其删除。 USE Hrsystem GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'max_wage') DROP PROC avg_wage GO CREATE PROC max_wage @Dename varchar(20),@MAX_wage FLOAT OUTPUT AS SELECT @MAX_wage = MAX(Wage) FROM Employees WHERE Dep_id IN(SELECT Dep_id FROM Departments WHERE Dep_name = @Dename) GROUP BY Dep_id 4.执行第3题创建的存储过程max wage,指定部门为“财务部”,打印该类部门的最高工资。 USE Hrsystem GO DECLARE @MAX_wage FLOAT EXEC max_wage '财务部',@MAX_wage OUTPUT PRINT @MAX_wage 5.删除存储过程avg_ wage和I max_ wage。 USE Hrsystem GO DROP PROCEDURE max_wage GO DROP PROCEDURE avg_wage (二)触发器 创建一个“学生信息”数据库,包含“学生基本信息”表、“专业”表和“系”表,各表包含的字段如下。 “学生基本信息”表:学号;姓名;性别;班级;出生日期;专业编号。 “专业”表:专业编号;专业名称;系编号。 “系” 表:系编号;系名称;系简介。 各字段类型按其实际含义自行定义,输人- -些数据,要求数据要有代表性。 以下操作要求全部在SQL Server Management Studio 中完成,保存或记录实现各题功能的Transcat-SQL语句(包括测试相应触发器是否生效的相关语句及测试结果)。 1.在“专业”表上创建一个INSERT触发器“TRG1”。当发生插入专业表操作时,将显示插入的记录。 USE 学生信息 GO CREATE TRIGGER TRG1 ON 专业 FOR INSERT AS DECLARE @depid INT DECLARE @depname varchar(50) DECLARE @number INT SELECT @depid = 专业编号 FROM inserted SELECT @number = 系编号 FROM inserted SELECT @depname = 专业名称 FROM inserted PRINT('系名:'+STR(@depid)+'专业名:'+STR(@depname)+'系的编号:'+str(@number)) INSERT INTO 专业 (专业编号,专业名称,系编号) VALUES(@depid,@depname,@number) 2.在“专业”表上创建一个DELETE触发器“TRG2”,当发生删除操作时,将给出警告、列出删除的记录并撤销删除。 USE 学生信息 GO CREATE TRIGGER TRG2 ON 专业 FOR DELETE AS PRINT('警告!禁止删除') ROLLBACK TRANSACTION 3.在“专业”表上创建一个UPDTAE触发器“TRG3”,当发生更新“专业名称”字段的操作时,给出警告并撤销更新 USE 学生信息 GO CREATE TRIGGER TRG3 ON 专业 FOR UPDATE AS DECLARE @temp_proid INT DECLARE @temp_xiid INT DECLARE @temp_porna varchar(50) SELECT @temp_porna = 专业名称 FROM inserted IF @temp_porna IS not NULL BEGIN PRINT('禁止修改专业名称') ROLLBACK TRANSACTION END ELSE BEGIN SELECT @temp_porna = 专业名称 FROM deleted SELECT @temp_xiid = 系编号 FROM deleted SELECT @temp_proid = 专业编号 FROM deleted UPDATE 专业 SET 专业编号 = @temp_proid,系编号 = @temp_xiid WHERE 专业名称 = @temp_porna END 4.在“学生基本信息”表上创建一 一个更新触发器“TRG4“,当发生更新“学号”或“姓名”字段的操作时给出警告,并撤销更新。 USE 学生信息 GO CREATE TRIGGER TRG4 ON 学生基本信息 FOR UPDATE AS DECLARE @temp_stunum char(11) DECLARE @temp_name char(10) DECLARE @temp_gender BIT DECLARE @temp_class varchar(10) DECLARE @temp_date DATETIME DECLARE @temp_proID INT SELECT @temp_name = 姓名 FROM inserted SELECT @temp_stunum = 学号 FROM inserted IF @temp_name IS NOT NULL OR @temp_stunum IS NOT NULL BEGIN PRINT('禁止修改学号或者姓名') ROLLBACK TRANSACTION END ELSE BEGIN SELECT @temp_stunum = 学号 FROM deleted SELECT @temp_name = 姓名 FROM deleted SELECT @temp_gender = 性别 FROM inserted SELECT @temp_class = 班级 FROM inserted SELECT @temp_date = 出生日期 FROM inserted SELECT @temp_proID = 专业编号 FROM inserted UPDATE 学生基本信息 SET 性别 = @temp_gender,班级 = @temp_class,出生日期 = @temp_date,专业编号 = @temp_proID WHERE 学号 = @temp_stunum END 5.删除以 上各题创建的所有触发器。做好“学生信息”数据库的备份,以备第10章、第章上机操作时使用。 USE 学生信息 GO DROP TRIGGER TRG1 DROP TRIGGER TRG2 DROP TRIGGER TRG3 DROP TRIGGER TRG4 三、实验小结【对自己而言,通过实验学到的关键技术方法】 掌握了触发器的一些基本方法: 1.创建触发器 2.分清了触发器的种类,但是还是需要深入了解dml触发器中三个种类触发器的不同。 3.了解了触发器在我们实际操作中的作用 4. 一、实验目的学会使用单片机定时器产生定时中断,并利用定时中断产生更长时间延时。 二、实验设备及器件 IBM PC机 一台 DP-51PRO.NET单片机仿真器、编程器、实验仪三合一综合开发平台 三、实验内容 1.实验二 定时器程序设计 2.编写程序,使P10端口来控制LED闪烁 3.C语言程序 //1ms定时中断实现100ms发光管闪烁 #include“REG51.h” sbit LED=P1^0;void main(void){ TMOD = 0x01;//设置定时器模式 16位定时器 TL0 = 0x18;//设置定时初值 TH0 = 0xFC;//设置定时初值 TR0 = 1;//定时器T0开始计时 ET0=1;//开定时器中断 EA=1; //开总中断 while(1);} //******************** //1ms void pit0(void)interrupt 1(中断程序){ static unsigned char ms_cnt=0;//16 ffff TL0 = 0x18;//设置定时初值 TH0 = 0xFC;//设置定时初值 if(++ms_cnt==100){ ms_cnt=0; LED=!LED;} } 定时器的由程序 直接汇编语言 ORG 0 AJMP MAIN ORG 0BH AJMP PIT0 MAIN: MOV TMOD,#01H MOV TH0,#18H MOV TL0,#0FCH SETB TR0 SETB ET0 SETB EA SJMP $ 生成;********************************** PIT0: MOV TH0,#18H MOV TL0,#0FCH INC R7 CJNE R7,#100,PIT0_R MOV R7,#0 CPL P1.0 PIT0_R: RETI END 四 实验要求 学会使用并掌握单片机定时器中断来实现LED100ms闪烁。 五 实验步骤 1.调试运行本节实验程序。若程序无错误,编译并进行二进制转换,下载程序。 2.连接线路,将A2区的P10端口连接到D1区的任意LED接口。3.观察LED灯闪烁情况第四篇:实验八
第五篇:实验二 定时器程序设计121