程序设计技术实验(2014)
- 格式:doc
- 大小:185.60 KB
- 文档页数:19
《C语⾔程序设计》实验报告(实验1-12)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。
⼆、预习内容:教材《C语⾔程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。
#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。
2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。
成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。
实验报告(2013 / 2014 学年第二学期)课程名称Java 语言程序设计实验名称综合图形界面程序设计实验时间2014年 5月 5日指导单位计算机学院软件教学中心指导教师薛景学生姓名臧玉付班级学号12001037计算机科学与技术学院(系)计算机学院专业(计算机通信)实验名称综合图形界面程序设计指导教师薛景实验类型上机实验学时2实验时间2014-5-5一、实验目的1.学习使用 Java Swing 设计 GUI界面2.学习 Java 的事件监听机制的基本原理3.学习监听器处理 Java 中的事件二、实验环境1.每位同学配备实验计算机一台2.安装 JDK和 Eclipse三、实验内容1、编写一个算数测试小软件,用来训练小学生的算数能力。
程序有 3 个类组成,其中 Teacher 对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame 对象负责为算数题目提供视图,比如用户可以通过ComputerFrame对象提供的 GUI界面看到题目,并通过该 GUI 界面给出题目的答案; MainClass 是软件的主类。
(请在下方空白处填写本程序的全部程序代码及..软件界面截图)import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame{JMenuBar menubar;JMenu choiceGrade;JMenuItem grade1,grade2;JTextField textOne,textTwo,textResult;JButton getProblem,giveAnwser;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame(){teacherZhang = new Teacher();teacherZhang.setMaxInteger(20);setLayout(new FlowLayout());menubar = new JMenuBar();choiceGrade = new JMenu("选择级别");grade1 = new JMenuItem("幼儿级别");grade2 = new JMenuItem("儿童级别");grade1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(10);}});grade2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(50);}});choiceGrade.add(grade1);choiceGrade.add(grade2);menubar.add(choiceGrade);setJMenuBar(menubar);textOne=new JTextField(5);textTwo = new JTextField(5);textResult = new JTextField(5);operatorLabel = new JLabel("+");operatorLabel.setFont(new Font("Arial",Font.BOLD,20)); message = new JLabel("你还没有回答呢"); getProblem= new JButton("获取题目"); giveAnwser = new JButton("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new JLabel("="));add(textResult);add(giveAnwser);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand("getProblem"); textResult.setActionCommand("answer"); giveAnwser.setActionCommand("answer"); teacherZhang.setJTextField(textOne,textTwo,textResult); teacherZhang.setJLabel(operatorLabel,message); getProblem.addActionListener(teacherZhang); giveAnwser.addActionListener(teacherZhang);textResult.addActionListener(teacherZhang);setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}import java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListener {int numberOne,numberTwo;String operator="";boolean isRinght;Random random;//用于给出随机数int maxInteger;//题目中最大的整数JTextField textOne,textTwo,textResult;JLabel operatorLabel,message;Teacher() {random=new Random();}public void setMaxInteger(int n) {maxInteger=n;}public void actionPerformed(ActionEvent e) {String str=e.getActionCommand();if(str.equals("getProblem")) {numberOne=random.nextInt(maxInteger)+1;//1至 maxInteger 之间的随机数numberTwo=random.nextInt(maxInteger)+1;double d=Math.random();//获取(0,1)之间的随机数if(d>=0.5)operator="+";elseoperator="-";textOne.setText(""+numberOne);textTwo.setText(""+numberTwo);operatorLabel.setText(operator);message.setText("请回答 ");textResult.setText(null);}else if(str.equals("answer")){String answer=textResult.getText();try{ int result=Integer.parseInt(answer);if(operator.equals("+")){if(result==numberOne+numberTwo)message.setText("你回答正确 ");elsemessage.setText("你回答错误 ");}else if(operator.equals("-")){if(result==numberOne-numberTwo)message.setText("你回答正确 ");elsemessage.setText("你回答错误 ");}}catch(NumberFormatException ex){message.setText("请输入数字符号 ");}}}public void setJTextField(JTextField ...t){textOne=t[0];textTwo=t[1];textResult=t[2];}public void setJLabel(JLabel bel){operatorLabel=label[0];message=label[1];}}public class MainClass{public static void main(String args[]){ComputerFrame frame ;frame = new ComputerFrame();frame.setTitle("算数测试 ");frame.setBounds(100,100,650,180);}}2、编写一个简单的计算器软件,实现简单的四则运算。
实验报告实验课程: Java面向程序设计实验实验内容:类与对象院(系):计算机学院专业:计算机科学与技术(软件工程方向)班级:学生姓名:学号:指导教师:2014年 3 月 26 日一、实验目的:1、掌握用类来封装对象的属性和行为的方法;2、掌握对象的组合和参数传递;3、掌握类变量与实例变量、类方法与实例方法的区别。
二、实验内容(-)实验题目一:编写一个java应用程序,该程序中有两个类:Tank和Fight 具体要求如下:1、Tank类有一个double类型变量speed,用于刻画坦克的速度;一个int型变量bulletAmount,用于刻画坦克的炮弹数量。
定义了speedUp()和speedDown()方法,体现坦克有加速、减速行为;定义了setBulletAmount(int p)方法,用于设置坦克炮弹的数量;定义了fire()方法,体现坦克有开炮行为。
1.程序源代码:package p1;public class Tank {double speed;int bulletAmount;void speedUp(int s){speed=s+speed;}void speedDown(int d){if(speed-d>=0)speed=speed-d;elsespeed=0;}void setBulletAmount(int m){bulletAmount=m;}int getBulletAmount(){return bulletAmount;}double getSpeed(){return speed;}void fire(){if(bulletAmount>=1){bulletAmount=bulletAmount-1;System.out.println("打出一发炮弹");}else{System.out.println("没有炮弹了,无法开火");}}}package p1;public class Fight {public static void main(String args[]){Tank tank1,tank2;tank1=new Tank();tank2=new Tank();tank1.setBulletAmount(10);tank2.setBulletAmount(10);System.out.println("tank1的炮弹数量:"+tank1.getBulletAmount());System.out.println("tank2的炮弹数量:"+tank2.getBulletAmount());tank1.speedUp(80);tank2.speedUp(90);System.out.println("tank1目前的速度:"+tank1.getSpeed());System.out.println("tank2目前的速度:"+tank2.getSpeed());tank1.speedDown(15);tank2.speedDown(30);System.out.println("tank1目前的速度:"+tank1.getSpeed());System.out.println("tank2目前的速度:"+tank2.getSpeed());System.out.println("tank1开火:");tank1.fire();System.out.println("tank2开火:");tank2.fire();tank2.fire();System.out.println("tank1的炮弹数量:"+tank1.getBulletAmount());System.out.println("tank2的炮弹数量:"+tank2.getBulletAmount());}}2.实验结果:图13、实验课后练习:(1)改进speedUp方法,使得Tank类的对象调用它能将Speed值超过220;答:只需加入如下代码,其实验结果如图2:void speedUp(int s){if(s+speed<=200)//加入判断语句即可speed=s+speed;}图2:tank2加速200,超过220,所以tank2数值保持不变(2)增加一个刹车方法:void brake(),Tank类的对象调用它将speed的值变为0.答:只需增加如下代码:其结果如图3所示:void brake(){speed=0;}System.out.println("tank2加速200:");tank2.speedUp(200);System.out.println("tank2调用brake后:");tank2.brake();图3:可看出tank2被清零实验2:计算机与光盘1、程序源代码:package p1;public class CD {int size;int content[];public void setSize(int size){this.size=size;content=new int[size];}public int getSize(){return size;}public int []getContent(){return content;}public void setContent(int [] b){int min=Math.min(content.length,b.length);for(int i=0;i<min;i++)content[i]=b[i];}}package p1;public class Computer {int data[];CD includeCD;public void putCD(CD cd){includeCD=cd;int size=includeCD.getSize();data=new int[size];}void copyToComputer(){int []b=includeCD.getContent();int min=Math.min(data.length,b.length);for(int i=0;i<min;i++)data[i]=b[i];}public void addData(int m){for(int i=0;i<data.length;i++){data[i]=data[i]+m;}}void copyToCD(){includeCD.setContent(data);}void showData(){for(int i=0;i<data.length;i++){System.out.printf("%3d",data[i]);}}}package p1;public class User {public static void main(String args[]){ CD dataCD=new CD();int b[]={1,2,3,4,5,6,7,8};dataCD.setSize(b.length);dataCD.setContent(b);int a[]=dataCD.getContent();System.out.println("dataCD上的内容:");for(int i=0;i<a.length;i++)System.out.printf("%3d",a[i]);Computer computerIMB=new Computer();computerIMB.putCD(dataCD);System.out.println("\n将dataCD的数据复制到计算机:computerIMB");computerIMB.copyToComputer();System.out.println("\ncomputerIMB上的内容:");computerIMB.showData();int m=12;System.out.println("\ncomputerIMB将每个数据增加"+m);computerIMB.addData(m);System.out.println("computerIMB将增值后的数据复制到CD:dataCD");computerIMB.copyToCD();System.out.println("dataCD上的内容:");a=dataCD.getContent();for(int i=0;i<a.length;i++)System.out.printf("%3d",a[i]);}}2、实验结果:图42、实验课后练习:主类中再添加一个CD的对象,然后将计算机中的数据(data数组)复制到CD对象中。
游戏课程设计报告题目:超级黑白棋班级:11数媒姓名:徐继涛学号:1108040352014年 1 月6日目录一、目的与要求……………………………………………………………………….二、游戏设计方案……………………………………………………………………三、游戏开发平台构建……………………………………………………四、项目设计……………………………………………………………………….五、游戏创新描述……………………………………………………………………六、调试运行与分析…………………………………………………………七、程序清单………………………………………………………………………. 参考文献…………………………………………………………………………...一、游戏设计目的及要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C++语言中所学的知识,合理的运用资料,实现理论与实际相结合。
黑白棋,又叫反棋、奥赛罗棋、苹果棋或翻转棋。
黑白棋在西方和日本很流行。
游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。
它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。
有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩(5).黑白棋的棋盘是一个有8*8方格的棋盘。
下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。
开始时在棋盘正中有两白两黑四个棋子交叉放置。
游戏结束时输出得分。
画出模块枝干图与每个模块的程序流程图。
修改某些代码,改变其外观及功能。
(6).游戏操作应尽量简单。
界面美观,让人看了觉得舒服。
二、游戏设计方案2.1、算法设计:玩游戏过程采用递归算法,控制循环过程,可使游戏重复玩,判断迷宫游戏结束的算法是通过判断人有没有到达终点。
《Python程序设计实验》教学大纲课程名称(中文):Python程序设计实验课程名称(英文):Experiments of Programming in Python课程编号:ZX36317课程性质:独立设课课程属性:专业学时学分:17学时,0.5学分适用专业:计算机科学与技术、软件工程、网络工程先修课程:无教学方式:教师讲解示范、学生实际操作、个别辅导一、课程简介、教学目的与要求《Python程序设计实验》课程是计算机科学与技术学院各专业的专业选修课程。
Python 是一门开源的高级动态编程语言,支持命令式编程、函数式编程、面向对象程序设计,语法简洁清晰,并且拥有大量功能丰富而强大的标准库和扩展库。
本课程通过上机实验,使得学生能够理解Python的编程模式,验证、理解直至熟练运用课堂所学知识。
本实验课程的目的是:通过本课程的学习,使得学生能够熟练使用IDLE或其他Python 开发环境,熟练运用Python列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用正则表达式处理字符串,熟练使用Python读写文本文件与二进制文件,了解Python程序的调试方法,熟练运用Python编写面向对象程序,同时使学生了解不同领域的Python扩展模块基本用法。
二、实验方式与基本要求通过本课程的实验训练,要求学生能运用所学理论知识进行Python程序设计,培养其规范的编程习惯,掌握基本的操作技能和编程思想。
同时,要注意培养学生实事求是的科学态度,为学习后续课程,参加实际工作和开展科学研究打下良好的基础。
1.任课教师需向学生讲清实验的性质、任务、要求、课程安排和进度、平时考核内容、实验守则及实验室安全制度等;2.本课程主要设置下列类型的实验:(1)课堂内的基础性实验;(2)课堂内外结合的设计性的制作。
整个实验过程包括课前准备、实验操作、实验报告等环节。
实验报告课程名称数据结构程序设计实验项目数据结构中栈和队列的应用系别___ _计算机学院 _ ______专业___ 网络工程 ___班级/学号_网工1202/2012011411___学生姓名 _______王宇涵__________实验日期_2014年6月2日成绩_______________________指导教师黄改娟田英爱实验题目:表达式的运算一、程序功能分析(1)程序整体功能流程分析如下。
第一步,用户输入表达式。
第二步,对用户输入的表达式进行过滤,如果有错,请用户重新输入正确表达式;否则,返回正确的表达式。
第三步,对表达式进行处理,将运算数和运算符按照“计算器算法”分别压入栈中,并在此过程中记录顶元素的变化情况。
第四步,最后,返回结果,打印输出。
二、设计方案(1)数据结构设计任何一个表达式都是由操作符,运算符和界限符组成的。
我们分别用顺序栈来寄存表达式的操作数和运算符。
栈是限定于紧仅在表尾进行插入或删除操作的线性表。
顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置,base为栈底指针,在顺序栈中,它始终指向栈底,即top=base 可作为栈空的标记,每当插入新的栈顶元素时,指针top增1,删除栈顶元素时,指针top 减1。
为了实现算符优先算法。
可以使用两个工作栈。
一个称为OPTR,用以寄存运算符,另一个称做OPND,用以寄存操作数或运算结果。
1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;2.依次读入表达式,若是操作符即进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为”#”)。
(2)数据存储结构因为表达式是由操作符,运算符和界限符组成的。
如果只用一个char类型栈,不能满足2位以上的整数,所以还需要定义一个int类型的栈用来寄存操作数。
Windows程序设计实验报告实验一:绘图和绘钟实验二:简易扫雷程序班级:姓名:学号:班内序号:时间:2014. 5. 4实验一:绘图和绘钟一、实验要求:利用MFC类编写windows程序,实现基本绘图功能,并在课堂所讲绘图功能上新加入自己其他的绘图功能。
二、实验概述:①由于前期一直坚持听课,所以实现基本绘图功能的代码是按照老师的架构来做的,后来新加的功能是参阅孙鑫所著的《VC++深入详解》一书,在理解的基础上添加到之前的程序框架中的。
做实验时先从课堂上讲的建立单文档开始,在熟悉了MFC单文档的程序框架后,按照老师给的画简单图形的代码,并对应自己借的书籍,了解了画图代码的编写。
之后又逐步进行了改进,增加了更多其他的功能。
②利用MFC编写绘图和绘钟的程序是在Visual Studio 2013的环境下编写的;③绘钟程序采取的是简洁风格,先绘制了表盘,之后用数学方法绘制钟表盘小格。
利用Invalidate函数刷新钟表区域,利用SetTimer函数来对指针进行刷新。
点击显示后再次点击即可关闭时钟。
④线型线宽的设置中,增加了单选框和示例框,线型的选择中由于线型定义中对应0~8,所以就按照顺序排列线型,从而减去了switch/case语句。
点击单选框后利用Invalidate函数让窗口无效,在下一次WM_PAINT时重绘窗口,示例框线条在OnPaint函数中绘制。
⑤绘图所能实现的功能有:1.能够实现图片文件和位图文件的打开;2.可以将所绘制图形以位图形式保存;3.以对话框形式实现对线型线宽的设置;4.设置八种线型,增加示例框,能在选择时预览;5.增加画图面板滚动条,能上下左右拉动绘图区域;6.实现图形重绘功能,在拉动或最小化图形窗口以及滚动区域后图形不消失,实现了对所绘矩形,椭圆,线条和扇形的重绘;7.以系统自带对话框形式实现对颜色及字体的修改;8.画图功能:直线,曲线,椭圆,扇形,带边界的扇形,位图填充的矩形,可遮挡的空心矩形;⑥绘钟所能实现的功能有:1.实现闹钟功能,以对话框形式设置响铃时间;2.能够绘制出模拟时钟,并获取正确的系统时间;3.能够实现秒针每一秒移动一下的动画效果;4.时钟下边以数字时钟的方式显示当前系统时间;三、代码分析1.整体代码分为三部分:①窗口绘图:用于绘制各种图形(包括直线,曲线,扇形等);②绘图设置:用于颜色,字体和线型线宽的设置等;③绘制时钟:绘制与系统时间同步的模拟时钟。