河南工业大学 程序设计实践
河南工业大学高级java实验1
河南工业大学实验报告课程高级Java编程技术实验名称实验一:多线程同步专业班级计科1505 院系信息科学与工程学院姓名李杰学号 201516010118 指导老师孙宜贵日期 2017.9.19一.实验目的通过线程的创建、启动和多线程的同步,掌握线程的使用和多线程之间的数据共享和传递。
二.实验要求1)对界面不做要求。
2)相关操作:创建线程;启动线程;线程操作;多线程同步操作。
3)操作过程截图和代码中应体现个人信息,否则作废!三.实验过程及结果任务一:使用定时器实现每隔一秒打印当前的系统时间。
1)补充说明:连续5秒的运行,结果格式为“{个人姓名}为大家报时:系统时间”2)代码(含适量的注释)package 高级java实验一;import java.util.Date;import java.text.SimpleDateFormat;class mythread extends Thread{public void run(){while(true){try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.out.println("李杰为大家报时:"+df.format(new Date()));// new Date()为获取当前系统时间}}}public class Test1{public static void main(String[] args) throws Exception{mythread thread1=new mythread();thread1.start();}}3)运行结果截图任务二:创建一个多线程应用程序,程序中有两个子线程,一个子线程每隔一秒向集合中添加一个整数数据,另一个线程访问集合中的数据并输出。
河南工业大学高级java实验3
河南工业大学实验报告
课程高级Java编程技术实验名称实验三:可视化Swing图
形界面设计基础
专业班级计科1505 院系信息科学与工程学院
姓名李杰学号 201516010118 指导老师孙宜贵日期 2017.10.10
一.实验目的
理解可视化图形界面设计方法的优势,熟悉可视化图形界面设计插件WindowBuilder
的配置和基本用法。
二.实验要求
1)使用WindowBuilder插件设计布局界面。
2)相关操作:给出界面设计方案(所有控件及其名称);采用拖拽式方法布局界面。
3)操作过程截图和代码应体现个人信息,否则作废!
三.实验过程及结果
任务一:在实验二的基础上,针对客户端程序添加新用户注册窗体,注册用户信息有用户名、
密码、确认密码、性别、Email地址和联系电话;添加登录界面。
1)补充说明:其他自行补充。
2)设计视图的截图(无需运行)
任务二(可选):实现8X8的扫雷游戏界面,包括菜单及扫雷区。
1)补充说明:其他自行补充。
2)设计视图的截图(无需运行)。
河南工业大学实验报告
河南工业大学实验报告课程_ 软件应用技术_____ _实验名称___ 图形、文本和位图_院系__ 信息科学与工程学院 _专业班级___ _计科0701_姓名____ 徐晶_ _ 学号__ _ _ 20074140129_____一.实验内容编写一个应用程序,实现画线的动态定位操作,如下图所示。
当鼠标在视图客户区移动时,会出一个大大的光标(由水平线和垂直线组成),光标的右上角的小窗口显示出当前的鼠标位置,当单击鼠标左键时,在屏幕上出现由小十字点标志,此时再移动鼠标,从当前鼠标位置到前面一个点将绘制一条直线,且该直线随鼠标位置移动而变化,就像一根橡皮条一样,且光标右上角的小窗口显示出这条直线的长度和角度,再单击鼠标左键一条直线被绘制出来,…,直到按ESC键结束,一条折线就绘制出来了。
为了保证在视图需要更新时,这些线条仍然存在,需要将这些点保存下来,然后再重新绘出。
二.实验准备(1)在学习完教材第7章内容后进行本次实验(2)阅读教材中关于本次上机所需要的程序。
三.实验步骤(1),创建工作文件夹,启动VC6.0,创建一个默认的单文档应用程序Ex-A7。
(2),A,光标的生成和实现:在Ex-ATView文件中的类声明添加下列成员变量class CEx_A7View : public CView{public:BOOL m_bCursorFirst; // 光标第一次显示标志CPoint m_ptPrevPos; // 上一个点的坐标CPoint m_ptCurPos; // 当前点的坐标B,在CEx-ATView::OnDraw中添加一些清屏代码,并将m_blurSorFirst设为TRUEvoid CEx_A7View::OnDraw(CDC* pDC){CEx_A7Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);CRect rcClient;GetClientRect( rcClient ); // 获取客户区大小pDC->FillSolidRect( rcClient, RGB( 0,0,0 ) ); // 将客户区清为黑色m_bCursorFirst = TRUE;pDC->SetBkMode( TRANSPARENT ); // 设置透明背景模式}C,为CEx-ATView类添加绘制光标函数的成员函数DrawCurSorvoid CEx_A7View::DrawCursor(CDC *pDC, CPoint pt){CRect rcClip;pDC->GetClipBox( rcClip ); // 当前裁剪区大小CPen pen( PS_SOLID, 1, RGB( 128, 128, 128 ) ); // 灰色画笔CPen *oldPen = pDC->SelectObject( &pen ); // 选入画笔// 设置XOR光栅操作模式int nOldROP = pDC->SetROP2( R2_XORPEN );// 绘制水平线pDC->MoveTo( rcClip.left, pt.y );pDC->LineTo( rcClip.right, pt.y );//绘制垂直线pDC->MoveTo( pt.x, rcClip.top );pDC->LineTo( pt.x, rcClip.bottom );// 恢复原来的光栅模式pDC->SetROP2( nOldROP );// 恢复原来的画笔}D,用MFC classWizard为CEx-ATView类添加WM_MouSEMOVE消息映射,并在映射函数中添加相应代码。
程序设计基础教学改革实践与创新
程序设计基础教学改革实践与创新摘要:本文从如何培养大学生抽象思维能力和创新能力出发,在分析理工科大学生学习程序设计课程中存在的一系列问题的基础上,阐述创新能力培养的多种教学方法改革,结合河南工业大学近五年的教学改革的实践,在程序设计基础课程中取得较满意的效果。
关键词:程序设计;教学改革;创新能力面对世界科技日新月异、信息社会雏形初具、经济全球化浪潮汹涌而至的强有力挑战,中国教育学会会长顾明远先生认为:“教育创新是时代的要求,也是我国实施科教兴国战略的迫切要求。
”在强调“创新能力”和“素质教育”的大前提下,如何在程序设计课程中培养学生的创新能力和科学素养,是我们进行教学改革重点考虑的问题。
打好程序设计基础,对于理工科大学生来讲,是一个“看家本领”,是实实在在的利用计算机分析问题和解决问题的本领。
因此,如何改革“程序设计基础”课程,调动学生学习的积极性,提高学生的抽象思维能力、创新能力和团队合作能力,并按照计算机学科最根本特征——“构造性”和“能行性”的要求,加大抽象思维能力和逻辑思维方法的训练力度,是程序设计基础教学改革研究的重点。
1现行教学中存在的问题1,1程序设计基础课程的定位出现偏差目前,大多数高校的程序设计基础课程是以高级语言c语言为脉络展开的,采用语法教学为主,上机检验程序为辅的教学模式。
但是,理解语法和能够解决实际问题,两者仍旧不能划等号。
过于注重语法,没有突出程序设计的基本概念、思路和方法,忽视学生程序思维能力的培养,难以调动学生学习的积极性,严重影响后继课程c++与面向对象程序设计、数据结构等课程的学习。
1,2传统教学形式与多媒体教学的冲突传统的教学形式采取的是黑板教学,知识点和例题的讲解都在黑板上进行,这可以较好地与学生互动,但存在信息量小、不能动态演示程序的问题;多媒体教学以信息量大、动态演示程序为优势,但也存在教师与学生交互少的问题,学生被动接受大量信息反而难以掌握重点和难点。
《web程序设计1》实验报告河南工业大学
《Web程序设计1》实验报告院系名称:管理学院专业班级:电子商务 11级4班学生姓名: **** 学号: **************2013年12 月实验一:JDK、Tomcat和Eclipse的下载、安装和配置实验一、实验目的1、掌握JDK的下载、安装、配置和测试;2、掌握Tomcat的下载、启动和停止;3、掌握Eclipse的下载、汉化、工作空间配置。
二、实验课时2学时三、实验内容1、下载、安装、配置和测试JDK。
①、jdk软件的下载:在oracle网站上现在jdk7.0版本。
②、jdk软件的安装:按如下步骤安装jdk。
如图1、图2。
图1 图2③、jdk软件的配置:jdk安装成功后,再按如下步骤配置jdk。
(1)、安装完JDK后配置环境变量计算机→属性→高级系统设置→高级→环境变量。
如图3、图4.图3 图4(2)、系统变量→新建 JAVA_HOME 变量。
变量值填写jdk的安装目录(C:\Program Files\Java\jdk1.7.0_15)。
如图5、图6。
图5 图6(3)系统变量→寻找 Path 变量→编辑。
在变量值最后输入 %JAVA_HOME%\bin;%JAV A_HOME%\jre\bin;如图7。
图7(4)系统变量→新建 CLASSPATH 变量。
变量值填写 .%JAVA_HOME%\lib;%JAVA_H OME%\lib\tools.jar。
如图8.图8④、配置jdk。
运行cmd 输入 java –version。
如图9所示。
显示版本信息,则说明安装和配置成功。
图92、下载、启动和停止Tomcat。
①、下载并安装Tomcat。
②、在浏览器中输入http://localhost:8080/,出现下图结果,说明配置成功。
图103、下载和汉化Eclipse,配置Eclipse工作空间。
在浏览器上输入汉化Eclipse找到相关文件下载需要的汉化Eclipse,下载完成后解压到Eclipse文件中,用语言包中的文件覆盖eclipse中的同名文件即可。
汇编程序_河南工业大学_实验一
河南工业大学汇编实验一一、实验目的:掌握汇编程序基本设计方法分支和循环。
二、实验内容:设数组array由一些字量构成,其中第一个元素是数组元素个数。
利用逐次比较方法。
设置两个变量maxay和minay存放最大和最小值。
要求能找到这两个存储单元并看到最大和最小值。
三.实验原理:DATAS SEGMENT;此处输入数据段代码array dw 10;假设一个数组,其中头个数据10表示元素个数dw-3,0,20,900,587,-632,777,234,-34,-56;这是一个有符号字量元素组成的数组maxay dw?;存放最大值minay dw?;存放最小值DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码lea si,arraymov cx,[si] ;取得元素个数dec cx ;减1后是循环次数add si,2mov ax,[si];取出第一个元素给AX,AX用于暂存最大值mov bx,ax;取出第一个元素给BX,BX用于暂存最小值maxck: add si,2cmp [si],ax ;与下一个数据比较jle minckmov ax,[si] ;AX取得更大的数据jmp nextminck: cmp [si],bxjge nextmov bx,[si] ;BX取得更小的数据next: loop maxck ;计数循环mov maxay,ax ;保存最大值mov minay,bx ;保存最小值MOV AH,4CHINT 21HCODES ENDSEND START四.实验流程图:六、实验体会实验基本完成,但是有很多问题,汇编语言的用法还不是太熟练,课下还得努力练习,多看书了解。
河南工大DSP实验报告
实验一数据存储实验一实验目的1.掌握TMS320F2812程序空间的分配。
2.掌握TMS320F2812数据空间的分配。
3.能够熟练运用TMS320F2812数据空间的指令。
二实验步骤与内容1.在进行DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示。
2.F2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON;其余OFF。
3.E300底板的开关SW4的第2位置ON,其余位置OFF。
其余开关设置为OFF。
4.上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的指示灯应点亮,否则DSP开发系统与计算机连接存在问题。
5.运行CCS程序1)待计算机启动成功后,实验箱220V电源置“ON”,实验箱上电2)启动CCS5.5,工作环境的路径选择:E:\E300Program\E300 TechV-2812\normal6.成功运行CCS5.5程序后,出现如下图所示界面。
7.点菜单栏Project/Build All命令编译整个工程,编译完成后点击按钮:8. 用“View”下拉菜单中的“Memory/Browser”查看内存单元,初始参数如下图:此时可以观测到以0x003F9020为起始地址的存储单元内的数据。
9.单击按钮,开始运行程序,一段时间后,单击按钮,停止程序运行,查看0x003F9020H~ 0x3F902FH单元的数据的变化。
10. 关闭Memory Browser窗口,点击按钮,退出仿真模式。
右键点击Project Explorer窗口下的工程文件“e300_01_mem”,选择Close Project命令关闭该工程,然后关闭CCS软件,本实验完毕。
三程序框图四实验总结通过这次实验,基本熟悉了CCS用户界面的使用,掌握了TMS320F2812程序空间的分配和数据空间的分配,能够熟练运用数据空间的指令。
程序设计实践实验报告
程序设计实践实验报告《程序设计实践实验报告》在程序设计课程中,学生们经常需要完成各种实践实验,以加深对编程语言和算法的理解,并提高实际编程能力。
本次实验报告将介绍我们在程序设计实践中所进行的实验内容和实验结果。
实验一:基本语法和数据类型在这个实验中,我们学习了编程语言的基本语法和数据类型,包括变量的声明和赋值、条件语句、循环语句以及各种数据类型的使用。
通过编写简单的程序,我们掌握了如何正确地使用这些语法和数据类型,并且能够编写出简单的程序来解决实际问题。
实验二:数组和函数在这个实验中,我们学习了数组的定义和使用,以及函数的声明和调用。
我们通过编写程序来实现对数组的各种操作,比如查找最大值、最小值、求和等。
同时,我们也学会了如何编写函数来实现特定的功能,并且能够正确地调用这些函数。
实验三:面向对象编程在这个实验中,我们学习了面向对象编程的基本概念和语法,包括类的定义和对象的创建。
我们通过编写程序来实现面向对象的思想,比如定义一个学生类,然后创建多个学生对象,并对这些对象进行各种操作。
实验四:算法设计与实现在这个实验中,我们学习了一些常用的算法,比如排序算法、搜索算法等。
我们通过编写程序来实现这些算法,并且对它们进行测试和分析,以便更好地理解这些算法的原理和性能。
通过这些实验,我们不仅加深了对编程语言和算法的理解,还提高了实际编程能力。
我们相信,在今后的学习和工作中,这些实验经验将会对我们产生积极的影响。
希望通过这份实验报告,能够让更多的人了解到程序设计实践的重要性,以及它对我们的学习和成长所带来的益处。
河南工业大学实验报告
河南工业大学实验报告(2014~2015学年-第1学期)一、实验目的:1. 了解结构化程序设计的基本思想;2. 掌握使用工程组织多个程序文件的方法。
3. 掌握函数嵌套的使用方法。
4.掌握递归函数的编程方法。
二.编程环境Windows8.1Codeblock三.实验要求及内容:1.编写一个函数,利用参数传入一个3位数number,找出101~number 之间所有满足下列两个条件的数:它是完全平方数,又有两位数字相同,如144、676等,函数返回找出这样的数据的个数,并编写主函数。
输入输出示例:Enter a number :150 count = 2①源代码②测试用例Enter a number :150Count = 2;③实验结果2. 用递归函数计算x n的值。
输入输出示例:Enter x:2Enter n:3Root = 8.00①源代码②测试用例Enter x:2Enter n:3Root = 8.00③实验结果3. 用递归方法编写求斐波那契数列项的函数,返回值为整型,并写出相应的主函数。
斐波那契数列的定义为:f(0)= 0,f(1)=1)+ f(n-1)(n>1)①源代码②实验用例输入10输出55③实验结果如下图4. 输入两个整数m和n(m≥0且n≥0),输出函数Ack(m,n)的值。
Ack(0,n)= n+1Ack(m,0)= Ack(m-1,1)Ack(m,n)= Ack(m-1,Ack(m,n-1))(m>0且n>0)输入输出示例:Enter x:2Enter y:3Ackerman(2,3)= 9①源代码如下图②测试用例输入x : 2输入y: 3输出Ackerman (2,3) = 9③实验结果如下图5*(选做):输入一个正整数n,将其转换为二进制后输出。
要求定义并调用函数dectobin(n),它的功能是输出n的二进制。
例如,调用dectobin(10),①源代码②测试用例输入20输出10100③实验结果如下图6. 输入n(n<10)个整数,统计其中素数的个数。
河南工业大学高级java实验
河南工业大学实验报告
课程高级Java编程技术实验名称实验四:Swing中的事件
处理
专业班级计科1505 院系信息科学与工程学院
姓名李杰学号 201516010118 指导老师孙宜贵日期 2017.10.17
一.实验目的
通过使用Swing中的事件监听和处理机制,建立GUI应用程序,响应鼠标和键盘操作,
理解事件处理机制,掌握事件处理方法。
二.实验要求
1)在实验三的基础上,完成界面的主要事件的处理。
2)相关操作:针对重要的事件添加事件处理代码。
3)操作过程截图和代码应体现个人信息,否则作废!
三.实验过程及结果
任务一:给用户注册界面添加主要的事件处理代码,包括用户长度验证,密码、确认密码的
一致性验证,在点击注册按钮时要验证每个必填项,验证通过后用消息对话框显示用户的各
项信息。
1)补充说明:具体JDBC代码暂不实现。
2)代码(含适量的注释)
见压缩包.java文件
3)运行结果截图
用户名验证
验证E-mail地址
验证电话号码
重置成功
任务二:在客户端必须先登录,验证通过后进入聊天主模块(如果没有账户,则先注册)。
1)补充说明:登录验证具体JDBC代码暂不实现,只是验证用户名和密码必填。
2)代码(含适量的注释)
见压缩包.java文件
3)运行结果截图
用户名为空时的错误提示
密码为空时的错误提示
登录成功界面
用户名或密码错误。
实验四 循环结构程序设计
。 #include<stdio.h>
int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='z') letters++; else if(c==' ') space++; else other++; } printf("字母数:%d\n空格数:%d\n其它字符 数:%d\n",letters,space,digit,other); return 0; }
河南工业大学 C语言实验报告
实验题目:循环结构程序设计 实验目的:熟练掌握while,do—while及for语句的格式、执行过程及循 环嵌套的使用 实验内容:P140-141 习题3,4,6,8 实验步骤:(具体程序及运行结果) #include<stdio.h> int main() { int p,r,n,m,temp; printf("请输入两个正整数 n,m:"); scanf("%d,%d,",&n,&m); if(n<m) { temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; } printf("它们的最大公约当数为: %d\n",n); printf("它们的最小公倍当数为: %d\n",p/n); return 0; }
面向对象程序设计c++上机实验指导书
选择默认参数的值。请分析本题中默认参数的值应该在什么范围。 (3) 输入两个整数,将它们按由大到小的顺序输出(本题是 C++面向对象程
河南工业大学信息科学与工程学院教案
面向对象程序设计(C++) 实验指导书
主讲教师:
王贵财
所在单位:
计科系
课程代码:
51610025
课程性质:
选修课
课程学时:
36
授课对象: 数学 F1401-03,信计 F1401-1402
开课时间:
2016.5.5
使用教材: 《C++面向对象程序设计题解与上机指导》
序设计》第 1 章习题第 12 题)。 ① 使用指针方法。 ② 使用变量的引用。 比较这两种方法的特点和使用方法。 (4) 对 3 个变量按由小到大的顺序排列,要求使用变量的引用(本题是 C++
面向对象程序设计》第 1 章习题第 13 题)。 ① 使用指针方法。 ② 使用变量的引用。 请总结使用引用时要注意什么问题。 (5) 有 5 个字符串,要求对它们按由小到大的顺序排列,用 string 方法(本
#include <iostream> using namespace std; int main() { int a,b; c=add(a,b); cout<<" a+b="<<c<<endl; return 0; } int add(int x,int y); { z=x+y; return(z); }
【实验指导书】实验3:分支结构程序设计
实验三:分支结构程序设计一、实验目的:1. 熟练掌握关系表达式和逻辑表达式的使用;2. 熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计;3. 熟练掌握switch语句中break语句的作用;4. 掌握简单的调试程序方法,包括:单步调试和运行到光标。
二、实验要求:1.编写程序,计算分支函数。
要求:输入为任意实数,输出结果保留小数点后2位。
输入输出示例:Enter x:227.00提示:实现x n可以标准库函数pow(x,n),此数学函数已在头文件math.h中说明。
2.编写程序。
根据一个年份,判断是否是闰年。
要求:输入为一个整数,表示一个年份;输出:如果是闰年,输出"Y es",否则输出"No"。
输出单独占一行。
输入输出示例:Enter year:2012Yes3. 编写程序。
给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。
要求:输入为三个正整数,中间有一个空格隔开;输出:如果能构成三角形,输出"Yes",否则输出"No"。
提示:在一个三角形中,任意两边之和大于第三边。
输入输出示例:3 4 5Yes4.输入五级制成绩(A~E),输出相应的百分制(0~100)区间。
要求用switch语句。
五级制对应的百分制成绩区间为:A(90~100)、B(80~89)、C(70~79)、D((60~69))、E(0~59)。
输入输出示例:Input Grade:BB对应的百分制成绩区间是80~895.编写程序,输入月薪salary,输出应交的个人所得税tax(保留2位小数)。
按照2011年开始实行的新的个人所得税法,计算公式为:tax=rate*(salary - 3500)- deduction当salary ≤3500时,rate = 0、deduction = 0;当3500 <salary ≤5000时,rate = 3%、deduction = 0;当5000 <salary ≤8000时,rate = 10%、deduction = 105;当8000 <salary ≤12500时,rate = 20%、deduction = 555;当12500 <salary ≤38500时,rate = 25%、deduction = 1005;当38500 <salary ≤58500时,rate = 30%、deduction = 2755;当58500 <salary ≤83500时,rate = 35%、deduction = 5505;当83500 <salary时,rate = 45%、deduction = 13505。
程序设计教学中基于案例实践的教学模式初探
程序设计教学中基于案例实践的教学模式初探作者:许伟涛,张闻强来源:《教育教学论坛》 2014年第38期许伟涛,张闻强(河南工业大学信息科学与工程学院,河南郑州450001)摘要:本文针对传统的教学模式,在语言程序设计类课程的教学过程中,提出基于案例实践的教学模式,在课堂教学和实践中不断选择、优化、更新案例,让学生在实践中发现问题、解决问题,激发学生的自主学习能力和学习兴趣,形成案例实践教学的良性循环,取得较好的教学效果。
关键词:程序设计;案例;工程实践中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2014)38-0281-02面向21世纪科技进步和我国现代化建设需要,我们要培养德、智、体全面发展,培养具备知识应用能力、创新发展能力等复合型、应用型人才。
《中华人民共和国高等教育法》对本科教育的学业标准有明确的规定:“应当使学生比较系统地掌握本专业必需的基础理论、基础知识,掌握本专业必要的基本技能、方法及相关知识,具有从事本专业实际工作和研究工作的初步能力。
”高等教育应以专业技术知识为基础,以实践为核心,理论与实践相融合,开拓创新思维,加强学生的知识转化能力,切实培养出一批与时代、社会需要相适应、具备综合能力和全面素质的应用型人才。
在实际教学过程中,部分教师要考虑教学和科研方面的均衡,往往会造成理论和实践相脱节,学生的学习可能仅停留在粗浅的认识水平,对某一问题认识得不够深入,从而缺乏综合的应用能力和创新能力。
随着现代科学技术的日益发展,在传统教学模式下,将会阻碍学生对新鲜事物和前沿技术的认知,再加上部分教师缺乏工程实践经验,可能会导致纸上谈兵、纯理论化的教学效果。
如何培养学生学习程序设计语言的兴趣和激情,掌握扎实的基础理论知识和基本技能,加强学生的设计和工程实践能力,开拓学生的创新能力,这都是在教学内容和教学方法上的一个值得研究的问题。
传统的教学过程,强调以教师为中心,注重教师在知识本身的传授,而忽略了学生自身能力的培养;课堂上强调在“学中做”,忽略了学生自主学习能力和理解能力的培养;实验课上多以固定的题目让学生练习,从而不能充分发挥学生的积极性和主动性,进而影响课堂教学质量和教学效果。
河南工业大学 实验二 进程的创建
学号 201216010506 班级:计科1201班姓名:实验二进程的创建一、实验目的1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质二、实验内容1、编写一段程序,使用系统调用fork( )创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。
试观察记录屏幕上的显示结果,并分析原因。
对于输出结果,abc,acb等都有可能,从进程并发执行来看,各种情况都有可能,所以父进程与紫金城的输出内容会叠加在一起,输出次序带有随机性。
2、修改上述程序,每一个进程循环显示一句话。
子进程显示'daughter …'及'son ……',父进程显示'parent ……',观察结果,分析原因。
由于函数printf() 在输出字符串时不会被中断,因此,字符串内部字符顺序输出不变。
但由于进程并发执行的调度顺序和父子进程抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化,这与打印单字符的结果相同。
三、实验准备(1)阅读LINUX的fork.c源码文件,分析进程的创建过程。
(2)阅读LINUX的sched.c源码文件,加深对进程管理概念的认识。
四、思考(1) 系统是怎样创建进程?linux 系统创建进程都是用 fork()系统调用创建子进程由 fork()系统调用创建的新进程被称为子进程。
该函数被调用一次,但返回两次。
如果 fork()进程调用成功,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程号(2) 可执行文件加载时进行了哪些处理?当操作系统装载一个可执行文件的时候,首先操作系统判断该文件是否是一个合法的可执行文件。
如果是,操作系统将按照段表中的指示为可执行程序分配地址空间。
f-12可编程控制器(PLC)实验
传统机械按键设计要 点:
键
A
1.合理的选择按键的
开关 键
类型,尽量选择平头 类的按键,以防按键 下陷。
2.开关按键和塑胶按
键设计间隙建议留
四. 实验任务与步骤
采用PLC控制可用来自动打开和关闭 宾馆及办公大楼中的大门。大门处安放 两个传感器:超声开关检测是否有人接 近,光电开关检测人是否完全进入或离 开。大门采用电机的正反转来控制它的 开关。当门拉开到位时,上限检测开关 动作;闭合到位时,下限检测开关动作。
3
三. 实验设备与器材
• S7—200 Micro PLC系统 • 计算机一台(键盘、鼠标、串口通信线) • STEP7—Micro/WIN32编程软件
4
1.什么是传统机械按键
设传计统?的机械按键设计是需要手动按压按键
触动PCBA上的开关按键来实现功能的一种
设传计统方机式械。按键结
构层图:
按
PCB
6
四. 实验任务与步骤
PLC的I/O分配:
输入 超声开关:I0.0 光电开关:I0.1 上限开关:I0.2 下限开关:I0.3
输出 门的打开动作:Q0.0 门的闭合动作:Q0.1
7
四. 实验任务与步骤
当超声开关I0.0检测到有人接近大门时,Q0.0 输出使大门打开。当打开到位时,上限开关 动作,打开动作停止,此时人可以通过。当 人经过大门时,光电开关I0.1动作。但是注意, I0.1接通的是一个下沿微分指令DIFD,也就是 说 , 当 人 通 过 大 门 的 过 程 中 , I0.1 由 “ 0” 变 “1”, DIFD指令不起作用,只有当人完全通 过,I0.1由“1”变“0”有一个下降沿时,DIFD 才使I0.0接通一个扫描周期,从而使Q0.1输出, 大门闭合。大门完全关好后,闭合开关I0.3动 作,闭合停止。
0308软件体系结构实验报告
河南工业大学实验报告(2015~2016学年-第2学期)课程名称:软件体系结构课程编号:51610192 地点:6313/6316/6308/6320一、实验目的:验证C/S风格的工作机制。
二、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构风格。
熟悉C/S风格的工作机制,对所考察的系统进行C/S风格客户端软件体系结构设计的验证。
(针对不同的特定应用系统具体表述)。
三.编程环境Windows 7Visual Studio | Dev-C++Eclipse四.实验代码1.画棋盘// 画横线for (int i = 0; i <= ROWS; i++) {g.drawLine(MARGIN, MARGIN + i * GRID_SPAN, MARGIN + COLS *GRID_SPAN, MARGIN + i * GRID_SPAN);}for (int i = 0; i <= COLS; i++) {// 画竖线g.drawLine(MARGIN + i * GRID_SPAN, MARGIN, MARGIN + i *GRID_SPAN, MARGIN + ROWS * GRID_SPAN);}2.将鼠标点击转为网格索引public void mouseMoved(MouseEvent e) {int x1 = (e.getX() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;// 将鼠标点击的坐标位置转成网格索引int y1 = (e.getY() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;if (x1 < 0 || x1 > ROWS || y1 < 0 || y1 > COLS || gameOver || findChess(x1, y1))setCursor(new Cursor(Cursor.DEFAULT_CURSOR));// 设置成默认状态elsesetCursor(new Cursor(Cursor.HAND_CURSOR));}3.增加棋子// ********************** 增加黑色棋子public Point[] BlackAddChess(int x, int y) {if (!isBlack) {String msg = String.format("黑子已经落子,轮到白子");JOptionPane.showMessageDialog(this, msg);return null;} elsereturn addChess(x, y);}// ********************** 增加白色棋子public Point[] WhiteAddChess(int x, int y) {if (isBlack) {String msg = String.format("白子已经落子,轮到黑子");JOptionPane.showMessageDialog(this, msg);return null;} elsereturn addChess(x, y);}4.悔棋public void goback() {if (chessCount == 0)return;chessList[chessCount - 1] = null;chessCount--;if (chessCount > 0) {xIndex = chessList[chessCount - 1].getX();yIndex = chessList[chessCount - 1].getY();}isBlack = !isBlack;repaint();}5.判断输赢(提供横向向西判断,其余方向类似)private boolean isWin() {int continueCount = 1;// 连续棋子的个数// --------------横向寻找-----> 横向向西寻找for (int x = xIndex - 1; x >= 0; x--) {Color c = isBlack ? Color.black : Color.white;if (getChess(x, yIndex, c) != null) {continueCount++;} elsebreak;}}五.实验结果悔棋前:悔棋后:赢棋:河南工业大学实验报告(2015~2016学年-第2学期)课程名称:软件体系结构课程编号:51610192 地点:6313/6316/6308/6320一、实验目的:验证C/S风格的工作机制。
【程序设计实践实验指导书】实验3:文件
【程序设计实践实验指导书】实验3:文件河南工业大学信息学院《程序设计实践》课程组实验指导河南工业大学实验报告课程名称:程序设计实践开课实验室:专业班级学号姓名实验日期实验项目名称实验2:文件成绩评定教师签名:日期:一、实验目的:1. 掌握文件的基本概念;2. 掌握文本文件的打开和关闭操作。
3. 掌握文本文件的顺序读、写方法。
二、实验环境:1. 运行Window XP/Windows 7/Windows 8等的操作系统的PC机;2. VC++6.0,CodeBlocks,或Dev C++等编译环境。
三、实验内容:1.编写程序,从键盘输入若干实数(以特殊数值-1结束),分别写到一个文本文件中。
要求:数据写入文件时,各数据独自占一行。
输入示例:输出示例:2021.3.制第1页河南工业大学信息学院《程序设计实践》课程组实验指导【源程序】【运行结果】2. 从键盘输入以下5个学生的学号、姓名,以及数学、语文和英语成绩,写到文本文件f2.txt中,再从文件中取出数据,计算每个学生的总成绩和平均分,并将结果显示在屏幕上。
提示:在文件读写的整个过程中,每一次成功的操作都将改变文件指针的位置。
当多次打开文件,并需要将读写位置指针定位在文件的首地址时,可使用重定位文件首函数rewind()。
调用格式为:rewind(FIFL *fp);建议:可将学生信息定义变量如下形式:输入输出示例:2021.3.制第2页河南工业大学信息学院《程序设计实践》课程组实验指导【源程序】【运行结果】3. 在第2题的基础上,改进要求:从键盘输入学生信息的个数不做限制,当对应学号信息输入为“-1”时,结束学生信息录入。
【源程序】【运行结果】四、实验结果&总结:(列出实验过程中的收获和遇到的困难)2021.3.制第3页感谢您的阅读,祝您生活愉快。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程报告课程名称:程序设计实践专业班级: *****学生姓名:小家伙哪里跑学号: *****任课教师: *****学期:2013-2014学年第二学期课程报告任务书(1)图书信息录入功能(图书信息用文件保存)--输入成绩评定教师:目录1 需求分析 (1)1.1图书管理员登录端的主要功能 (1)1.2学生登录端的主要功能 (1)2概要设计 (2)2.1整体设计 (2)2.1.1结构体 (2)2.1.2函数模块 (2)2.2系统层次结构图 (4)3 详细设计 (5)4 调试分析 (17)4.1总体分析 (17)4.2调试体会 (17)5测试结果 (18)6 课程心得总结 (23)参考文献 (24)1 需求分析本图书馆管理系统主要实现对图书馆图书信息的管理,主要有图书管理员登录端和学生登录端。
其具体描述如下:1.1图书管理员登录端的主要功能1)新图书信息入库:建立图书入库信息,以便读者进行查询和借阅。
2)修改图书信息:在图书信息入库的时候可能由于管理员的疏忽或操作错误造成图书信息输入错误,修改图书信息功能就是为了修改这些错误。
3)删除图书信息:图书因使用过久不再使用,或读者借阅期间丢失时,都需要在书库中删除图书信息。
4)查询图书信息:能根据管理员提供的有关信息跟书库中的图书进行匹配,反馈给管理员准确的信息。
5)浏览图书借阅情况:能够显示图书借阅的信息(包括借阅图书学生的学号、姓名、图书名以及图书借阅的时间等)。
1.2学生登录端的主要功能1)浏览图书信息:浏览图书馆中图书的信息情况(包括图书的入库时间、是否可借阅等信息)。
2)查询图书信息:能够根据学生提供的有关信息在书库中查找相关书籍并反馈给学生。
3)借阅图书:如果有学生可借阅的图书,提供借阅功能并记录下学生的相关信息(学号、姓名等)。
4)查询当前借阅的图书:学生通过提供学号就可以查询当前所借阅的图书的有关信息。
5)退还图书:学生向系统提供学号就可以完成退书功能。
2概要设计2.1整体设计经过需求分析,此图书馆管理系统主要分为两大功能,图书管理员登录功能和学生登录功能。
各部分功能和结构定义如下:2.1.1结构体根据分析,图书馆管理系统共定义了二个结构体。
1)保存图书信息的结构体:typedef struct xinxi{int bianhao;char shuming[20];char zuozhe[15];char chubanshe[20];char leibie[10];char shijian[10];double jiage;int jieyueliang,zongshu;} shu;2)记录图书借阅信息的结构体:typedef struct jilu{char name[20];int number;char shuname[20];char shijian[10];} record;2.1.2函数模块此图书馆管理系统主要包含了一下几个主要函数:void liulanxinxi()//浏览图书信息void luruxinxi()//录入图书信息void xiugaixinxi()//修改图书信息void shanchuxinxi()//删除图书信息void chaxunxinxi()//查询图书信息void jieyuexinxi()//所有已借阅图书信息void jieyuetushu()//借阅图书void guihuantushu()//归还图书int main()//主函数(菜单控制函数)全部采用文件来保存数据,所以各个函数都没有返回值。
由主函数开始调用和触发各个函数2.2系统层次结构图3 详细设计本系统的主要功能实如下:1)主函数:a.功能:实现对主菜单的控制和各个函数的调用。
b.实现方法:通过while(1)实现无限循环,用n=0来结束整个程序。
c.程序清单:int main(){int n;printf("********************欢迎使用图书管理系统********************\n");while(1){ printf("\t\t***************************\n");printf("\t\t* 1.管理员登录*\n");printf("\t\t* 2.学生登录*\n");printf("\t\t***************************\n");printf("-------------------------------------------------\n");printf("请输入你的选着:");scanf("%d",&n);switch(n){case 1:guanliyuan();break;case 2:xuesheng_();break;case 0:printf("\n谢谢使用本系统,再见!\n");printf("按任意键结束\n");getchar();exit(0);}}}2)录入图书信息:a.功能:输入图书的相关信息。
b.实现方法:首先定义文件,用文件的形式来保存图书的信息,图书信息录入完毕后关闭文件。
c.程序清单:void luruxinxi()//录入图书信息{FILE *fp1;//定义文件指针int count=0;if((fp1=fopen("book.txt","a+"))==NULL){printf("文件打开失败!\n");exit(0);}count++;printf("请输入图书编号:");scanf("%d",&tushu[count].bianhao);printf("请输入图书名:");scanf("%s",tushu[count].shuming);printf("请输入图书作者:");scanf("%s",tushu[count].zuozhe);printf("请输入图书出版社:");scanf("%s",tushu[count].chubanshe);printf("请输入图书类别:");scanf("%s",tushu[count].leibie);printf("请输入图书时间(年.月.日):");scanf("%s",tushu[count].shijian);printf("请输入图书价格:");scanf("%lf",&tushu[count].jiage);printf("请输入图书数量:");scanf("%d",&tushu[count].zongshu);tushu[count].jieyueliang=0;xianshidangexinxi(tushu[count]);fwrite(&tushu[count],sizeof(shu),1,fp1);fclose(fp1);printf("按任意键继续\n");getch();}3)修改图书信息:a.功能:实现对录入错误的图书信息进行修改。
b.实现方法:定义两个文件,一个文件用于打开存放图书信息的book.txt,另一个文件指向临时文件book1.txt。
从头到尾把存放的图书信息都扫描一遍,如果某本图书不需要修改,直接把这本书的信息写到另一个临时文件中,如果图书信息需要修改,则把修改后的信息写到临时文件中;所有的图书信息都扫描完后,把临时文件中的信息重新写入到book.txt中,清空临时文件。
c.程序清单:void xiugaixinxi()//修改图书信息{FILE *fp1,*fp2;char name[20];int i,n,count=0;printf("请输入你要修改的图书名:");scanf("%s",name);if(((fp1=fopen("book.txt","r"))==NULL)||((fp2=fopen("book1.txt","w"))==NULL )){printf("文件打开失败!\n");exit(0);}for(i=1;fread(&tushu[i],sizeof(shu),1,fp1);i++){if(strcmp(name,tushu[i].shuming)==0){count=1;printf("请输入你要修改的内容:\n");printf("1.修改图书编号\n");printf("2.修改书名\n");printf("3.修改作者\n");printf("4.修改出版社\n");printf("5.修改类别\n");printf("6.修改日期\n");printf("7.修改价格\n");printf("8.修改图书总数\n");printf("0.返回上一级\n");scanf("%d",&n);switch(n){case 1:printf("请输入新的编号:");scanf("%d",&tushu[i].bianhao);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 2:printf("请输入新的书名:");scanf("%s",tushu[i].shuming);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 3:printf("请输入新的图书作者:");scanf("%s",tushu[i].zuozhe);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 4:printf("请输入新的图书出版社:");scanf("%s",tushu[i].chubanshe);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 5:printf("请输入新的图书类别:");scanf("%s",tushu[i].leibie);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 6:printf("请输入新的图书日期:");scanf("%s",tushu[i].shijian);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 7:printf("请输入新的图是价格:");scanf("%s",tushu[i].jiage);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 8:printf("请输入新的图书总数:");scanf("%d",&tushu[i].zongshu);fwrite(&tushu[i],sizeof(shu),1,fp2);break;case 0:return;default :printf("输入错误\n");break;}}elsefwrite(&tushu[i],sizeof(shu),1,fp2);}fclose(fp1);fclose(fp2);fp1=fopen("book.txt","w");fp2=fopen("book1.txt","r");for(i=1;fread(&tushu[i],sizeof(shu),1,fp2);i++)fwrite(&tushu[i],sizeof(shu),1,fp1);fclose(fp1);fclose(fp2);fp2=fopen("book1.txt","w");//清空临时文件fclose(fp2);if(count==1){printf("修改成功\n");getch();}else{printf("未找到改图书信息\n");getch();}}4)删除图书信息:a.功能:从书库中删除图书信息。