文档库 最新最全的文档下载
当前位置:文档库 › qt实验报告

qt实验报告

qt实验报告
qt实验报告

嵌入式系统界面设计实验

实验题目:基于Qt的图片表格转换

学院: **学院

专业:电子信息工程

班级:

学号:

姓名:

小组成员:

编写日期: 2019.10

目录

1. 实验设计背景 (1)

2. 实验设计目的 (1)

3. 实验设计环境 (1)

4. 实验系统需求分析 (1)

4.1 系统调查 (1)

4.2 用户需求 (2)

4.3 可行性分析 (2)

4.4 系统业务流程图 (3)

5. 实验具体操作步骤及方法 (3)

5.1 程序运行开始主界面 (3)

5.2 用户修改界面 (4)

5.3 最终生成表格 (4)

6. 实验结果分析 (5)

7. 实验效果图 (6)

8. 实验设计具体任务分工 (6)

9. 实验设计心得体会 (6)

1.实验设计背景

当今办公室中有不少的表格是基于图片的这给后期人员的校对处理带来了不少的麻烦,特别是列数较多行数较多的表格。在将表通过人工的方法转换为Excel 表格时容易出现差错,表格行列错位、数据抄错等等问题。长时间的工作还容易损害校对人员的健康。

2.实验设计目的

1.将表格分解成小片,以便于人工填写

2.尽可能的通过软件将图片数字转换为文字

3.Excel表格导出

3.实验设计环境

Visual Studio Code

Python 3.7

Python包:Pytesseract、openpyxl、numpy、cv2

Qt Creater

Tesseract-OCR

4.实验系统需求分析

4.1系统调查

在许多小公司的办公中,由于大多业务系统都是使用的通用的模板,没有对具体情形进行优化,以及以前未使用办公系统的历史遗留问题,在实际的办公中经常会出现大量图像表格,需要人为地输入到EXCEL表格中以用于后续公司的各项统计工作

4.2用户需求

将PNG、JPG、BMP等格式的图片表格转化为EXCEL 的数字表格方便后续的统计工作

4.3可行性分析

Python中中存在大量的用于图像处理的库opencv等可以方便地对图像表格进行处理分割成小块。Tesseract(识别引擎),一款由HP实验室开发由Google 维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。软件自带的数据可以很好地识别英文字母、数字和常见地英文标点。表格中为最为繁重的是数字地输入,Tesseract在纯数字识别时相比带文字、标点表现效果更好。

4.4系统业务流程图

图1 系统业务流程图

5.实验具体操作步骤及方法

5.1程序运行开始主界面

图2 主界面1

图3 主界面2 5.2用户修改界面

图4 用户修改界面5.3最终生成表格

表1 数据

6.实验结果分析

优点:

1.程序数字识别效果较好识别率能达到80%以上

2.图像表格只要是正矩形有明显边框、软件就可以较好地分割图片

缺点:

1.软件中去除了对英文、中文的识别支持,当要识别文字时效果较差文字的

识别效果不佳需要根据软禁实际使用环境加入字典才能令文字检测效果在可令人接受的范围内

2.对倾斜的表格无法分割并识别其中的内容

3.无法处理倾斜扭曲地表格

走过的弯路:在进行txt文件的打开与保存过程中,一开始由于txt文件的编码问题,错误的以二进制文件的形式进行了保存,这种方式如果只在本程序中对文档进行操作,则不会发现问题,而当实际打开保存的txt文件时则会发现,保存的全是乱码。这是由于txt文件为文本文件,解码方式为ASCII码,所以以二进制形式存储时将会出现乱码。

在进行交叉编程的时候由于百度资料较少只用用python 官方原文档作为参考资料进行编程。其中库路径的添加对我造成了很大的干扰。Python中c存在一个HONEPATH 的环境变量用于储存python程序中需要引用的库文件。由于前期不知道这个变量如何设置,在后续的编程中出现了许多莫名奇妙的错误。给出PATH 即可解决。

7.实验效果图

表2 原图片表格

表3 导出表格

8.实验设计具体任务分工

陈***:项目总体规划,界面设计,混合编程。

卢***:界面调试,材料整理、报告编写。

张***:报告修改、界面美化。

9.实验设计心得体会

通过这次Qt Widgets的程序设计,我们能熟练地掌握Qt语言,通过每章每节的学习让我知道了Qt的重要性,学习Qt能让我们深刻的知道在以后的工作中能用到,还有让我知道学习的重要意义,通过对Qt的学习能让我们解决很多的实际东西,QT能让我们锻炼自己的编程能力,还能处理许多别的语言处理不了的东西,我知道了学习Qt不仅能提高自己的认识,还巩固了对原来学过的其他语言的学习。这对我们自身的提升都是很重要的,将所学的知识进行运用,这是学习的乐

趣之一。

QtWidgets的程序设计,我体会到很多,完成一个程序的设计必须要有同伴的支持和合作,必须要跟同伴讨论商量,共同努力才有可能设计出一个好的程序,遇到困难不能轻易放弃,在编这个程序的时候遇到了很多难题,后来在老师和同学的帮助解答下终于将遇到的问题一个个解决,我深刻体会到遇到难题不要轻易言弃,还有要多借鉴别人的经验,多阅读一些书籍,编写程序的时候要细心,一点点错误程序就可能编译失败,所以要做到一丝不苟。

以及此次是我们第一次进行嵌入式系统界面设计,鉴于自身学疏才浅,能力有限,竭尽所能,却只能设计这样平平无奇的小程序,使得我们全员深感惭愧,由此,专业知识的重要性可见一斑。路漫漫其修远兮,吾将上下而求索,身处电信行业的我们脚下的学途还很长呐。

参考文献

[1]谢希仁.计算机网络[M].5版.北京:电子工业出版社,2008.

[2]Al Sweigart Python编程快速上手化[M].北京:人民邮电出版社,2016:238-247.

[3]独自听涛.轻松把Excel表格转换为图片[J].家庭电脑世界,2004,000(11X):42.

[4]张海鹏,宁占彬,于仲华.嵌入式系统通用输入界面框架设计与实现[J].电脑编程技巧与维护,2012,(22):84-86,92. DOI:10.3969/j.issn.1006-4052.2012.22.039.

[5]王珊,萨师煊.数据库系统概论[M].4版.北京:高等教育出版社,2006.

[6]施莱尔.OpenGL编程指南[M].王锐,译.8版.北京:机械工业出版社,2004.

附录

1.ui_sec.h

#ifndef UI_SEC_H

#define UI_SEC_H

#include

#include

#include

#include

#include

#include

#include

#include

#include

QT_BEGIN_NAMESPACE

class Ui_sec {

public:

QLabel * label;

QLineEdit *lineEdit;

QPushButton *pushButton;

QPushButton *pushButton_2;

QPushButton *pushButton_3;

QLabel *label_2;

QLabel *label_3;

QPushButton *pushButton_4;

void setupUi(QDialog *sec) {

if (sec->objectName().isEmpty())

sec->setObjectName(QStringLiteral("sec"));

sec->resize(376, 282);

label = new QLabel(sec);

label->setObjectName(QStringLiteral("label"));

label->setGeometry(QRect(80, 40, 191, 121));

lineEdit = new QLineEdit(sec);

lineEdit->setObjectName(QStringLiteral("lineEdit"));

lineEdit->setGeometry(QRect(20, 190, 113, 21));

pushButton = new QPushButton(sec);

pushButton->setObjectName(QStringLiteral("pushButton"));

pushButton->setGeometry(QRect(20, 60, 31, 101));

pushButton_2 = new QPushButton(sec);

pushButton_2->setObjectName(QStringLiteral("pushButton_2")); pushButton_2->setGeometry(QRect(310, 60, 31, 101));

pushButton_3 = new QPushButton(sec);

pushButton_3-> setObjectName(QStringLiteral("pushButton_3")); pushButton_3->setGeometry(QRect(30, 230, 93, 28));

label_2 = new QLabel(sec);

label_2->setObjectName(QStringLiteral("label_2"));

label_2->setGeometry(QRect(70, 10, 72, 15));

label_3 = new QLabel(sec);

label_3->setObjectName(QStringLiteral("label_3"));

label_3->setGeometry(QRect(20, 10, 72, 15));

pushButton_4 = new QPushButton(sec);

pushButton_4->setObjectName(QStringLiteral("pushButton_4"));

pushButton_4->setGeometry(QRect(210, 220, 121, 31));

QWidget::setTabOrder(lineEdit, pushButton);

QWidget::setTabOrder(pushButton, pushButton_3);

QWidget::setTabOrder(pushButton_3, pushButton_4);

QWidget::setTabOrder(pushButton_4, pushButton_2);

retranslateUi(sec);

QMetaObject::connectSlotsByName(sec);

} // setupUi

void retranslateUi(QDialog *sec) {

sec->setWindowTitle(QApplication::translate("sec", "Dialog", 0));

label->setText(QApplication::translate("sec", "TextLabel", 0));

pushButton->setText(QApplication::translate("sec", "<", 0));

pushButton_2->setText(QApplication::translate("sec", ">", 0));

pushButton_3->setText(QApplication::translate("sec", "\344\277\256\346\255\243(&C)", 0)); label_2->setText(QApplication::translate("sec", "TextLabel", 0));

label_3->setText(QApplication::translate("sec", "\345\272\217\345\217\267:", 0));

pushButton_4->setText(QApplication::translate("sec", "GenerateExcel", 0));

} // retranslateUi

};

namespace Ui {

class sec: public Ui_sec {};

} // namespace Ui

QT_END_NAMESPACE

#endif // UI_SEC_H

2.ui_widget.h

#ifndef UI_WIDGET_H

#define UI_WIDGET_H

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

QT_BEGIN_NAMESPACE

class Ui_Widget {

public:

QPushButton *pushButton_2;

QWidget *horizontalLayoutWidget;

QHBoxLayout *horizontalLayout;

QLabel *label;

QLineEdit *lineEdit;

QPushButton *pushButton;

QPushButton *pushButton_3;

void setupUi(QWidget *Widget)

{

if (Widget->objectName().isEmpty())

Widget->setObjectName(QStringLiteral("Widget"));

Widget->resize(444, 191);

pushButton_2 = new QPushButton(Widget);

pushButton_2->setObjectName(QStringLiteral("pushButton_2"));

pushButton_2->setGeometry(QRect(170, 140, 93, 28));

horizontalLayoutWidget = new QWidget(Widget);

horizontalLayoutWidget->setObjectName(QStringLiteral("horizontalLayoutWidget")); horizontalLayoutWidget->setGeometry(QRect(30, 30, 391, 61));

horizontalLayout = new QHBoxLayout(horizontalLayoutWidget);

horizontalLayout->setSpacing(6);

horizontalLayout->setContentsMargins(11, 11, 11, 11);

horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));

horizontalLayout->setContentsMargins(0, 0, 0, 0);

label = new QLabel(horizontalLayoutWidget);

label->setObjectName(QStringLiteral("label"));

horizontalLayout->addWidget(label);

lineEdit = new QLineEdit(horizontalLayoutWidget);

lineEdit->setObjectName(QStringLiteral("lineEdit"));

horizontalLayout->addWidget(lineEdit);

pushButton = new QPushButton(horizontalLayoutWidget);

pushButton->setObjectName(QStringLiteral("pushButton"));

horizontalLayout->addWidget(pushButton);

pushButton_3 = new QPushButton(Widget);

pushButton_3->setObjectName(QStringLiteral("pushButton_3"));

pushButton_3->setGeometry(QRect(30, 140, 71, 31));

retranslateUi(Widget);

QMetaObject::connectSlotsByName(Widget);

} // setupUi

void retranslateUi(QWidget *Widget) {

Widget->setWindowTitle(QApplication::translate("Widget", "Widget", 0));

pushButton_2->setText(QApplication::translate("Widget", "\345\210\206\346\236\220", 0));

label->setText(QApplication::translate("Widget", "\346\211\223\345\274\200\346\226\207\344\273\266 ", 0));

pushButton->setText(QApplication::translate("Widget", "\351\200\211\346\213\251\346\226\207\344\2 73\266", 0));

pushButton_3->setText(QApplication::translate("Widget", "pathset", 0));

} // retranslateUi

};

namespace Ui {

class Widget: public Ui_Widget {};

} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H

3.Sec.h

#ifndef SEC_H

#define SEC_H

#include

#define PY_SSIZE_T_CLEAN

#include

class QErrorMessage;

namespace Ui {

class sec;

}

class sec : public QDialog {

Q_OBJECT

public:

explicit sec(QWidget *parent , PyObject *NumList1);

~sec();

private slots:

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

void on_pushButton_4_clicked();

private:

Ui::sec *ui;

int NowSrcNum;

int MaxSrcNum;

PyObject *NumList;

QErrorMessage * errordlg;

void ShowNum();

void SetNum();

void FlashSrc(int FileName);

protected:

void keyPressEvent(QKeyEvent* event);

void keyReleaseEvent(QKeyEvent* event); };

#endif // SEC_H

4.Widget.cpp

#ifndef WIDGET_H

#define WIDGET_H

#include

#include

#define PY_SSIZE_T_CLEAN

#include

using namespace std;

class QErrorMessage;

namespace Ui {

class Widget;

}

class Widget : public QWidget {

Q_OBJECT

public:

explicit Widget(QWidget *parent = 0);

~Widget();

string ScrFilePath;

private slots:

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

private:

Ui::Widget *ui;

QErrorMessage * errordlg;

PyObject* tex(string cpp_string); protected:

void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event);

};

#endif // WIDGET_H

5.Main.cpp

#include "widget.h"

#include "sec.h"

#include

#include

#define PY_SSIZE_T_CLEAN

#include

//#define home

int main(int argc, char *argv[]) {

QApplication a(argc, argv);

QString NowPath= a.applicationDirPath();

QString pathZ= NowPath+"/vene/Scripts/"; //环境目录

QString VenPath ="D:/Master/Documents/Qt5/EmorgousWork/vene/Scripts;";

VenPath += "D:/Master/Documents/Qt5/EmorgousWork/vene;";

VenPath += "D:/Master/Documents/Qt5/EmorgousWork/vene/Lib/site-packages;";

VenPath += "D:/Master/Documents/Qt5/EmorgousWork/vene/Lib;";

VenPath += "D:/Master/Documents/Qt5/EmorgousWork/vene/DLLs;";

VenPath += "D:/Master/Documents/Qt5/EmorgousWork/vene/libs;";

VenPath += "D:/Master/Documents/Qt5/EmorgousWork/build-EmorgousWork-Desktop_Qt_5_6_1_MinGW _32bit-Debug/debug;";

VenPath += "D:/Master/Documents/Qt5/EmorgousWork/vene/Scripts/python37.zip;";

string OKPath2 = "D:/Master/Documents/Qt5/EmorgousWork/vene"; //虚拟环境主目录

string OKPath = "E:/Program/MiniConda/"; //源可用目录

QString CPath1 = QCoreApplication::applicationDirPath()+"/Lib/;";

CPath1 = CPath1+ QCoreApplication::applicationDirPath()+"/Lib/site-packages";

string CPath = CPath1.toStdString();

qDebug()<

VenPath = VenPath+ ";D:/Master/Documents/Qt5/EmorgousWork";

wchar_t *program = Py_DecodeLocale(OKPath.c_str(), NULL);

#ifdef home

Py_SetPath(Py_DecodeLocale(CPath.c_str(), NULL));

#endif

Py_SetPythonHome(program);

//( const wchar_t *)(L"E:/Program/MiniConda"));

Py_Initialize();

#ifdef home

PyRun_SimpleString("import sys");

PyRun_SimpleString("sys.prefix=r'D:/Master/Documents/Qt5/EmorgousWork/vene/Scripts/'");

PyRun_SimpleString("sys.exec_prefix=r'D:/Master/Documents/Qt5/EmorgousWork/vene/Scripts/'");

PyRun_SimpleString("sys.executable=r'D:/Master/Documents/Qt5/EmorgousWork/build-EmorgousWork-De sktop_Qt_5_6_1_MinGW_32bit-Debug/debug/'");

#endif

Widget w;

w.show();

return a.exec();

}

6.Sec.cpp

#include "sec.h"

#include "ui_sec.h"

#include

#include

using namespace std;

void sec::ShowNum(){

if(NumList!=NULL){

PyObject* z =PyList_GetItem(NumList,NowSrcNum); int GetedNum =PyLong_AsLong(z);

string str= to_string(GetedNum);

ui->lineEdit->setText(QString::fromStdString(str)); }

ui->label_2->setText(QString::number(NowSrcNum)); }

sec::sec(QWidget *parent,PyObject*NumList1) :

QDialog(parent),

ui(new Ui::sec)

{

ui->setupUi(this);

NumList = NumList1;

NowSrcNum=0;

if(NumList!=NULL)

MaxSrcNum = PyList_Size(NumList) -3;

FlashSrc(NowSrcNum);

setFocus();

this->grabKeyboard();

}

sec::~sec(){

delete ui;

Py_Finalize(); // 释放资源

}

void sec::on_pushButton_clicked() //减小

{

SetNum();

if(NowSrcNum>0)

NowSrcNum--;

else

NowSrcNum = MaxSrcNum;

FlashSrc(NowSrcNum);

ui->lineEdit->setFocus();

ui->lineEdit->selectAll();

}

void sec::on_pushButton_2_clicked() //增大

{

SetNum();

if(NowSrcNum

NowSrcNum++;

else

NowSrcNum = 0;

FlashSrc(NowSrcNum);

ui->lineEdit->setFocus();

ui->lineEdit->selectAll();

}

void sec::FlashSrc(int FileName) //刷新界面图片

{

QString FileNameS = QString::number(FileName);

QString a= QCoreApplication::applicationDirPath()+"/Temp/";

QString end=".png";

QString all = a+FileNameS+end;

ui->label->setPixmap(all);

ui->label->setScaledContents(true);

ShowNum();

}

void sec::on_pushButton_3_clicked() //设置数字大小

{

SetNum();

}

void sec::SetNum() //设置数值

{

QString tex=ui->lineEdit->text();

PyList_SetItem(NumList,NowSrcNum,Py_BuildValue("i",tex.toInt())); }

void sec::on_pushButton_4_clicked(){

PyObject* pModule = PyImport_ImportModule("ExcelCopy");

PyObject* pDict = PyModule_GetDict(pModule);

PyObject* pFunHi = PyDict_GetItemString(pDict, "ExcelGenerate"); PyObject *pArgs1 = PyList_New(MaxSrcNum+3);

if(NumList!=NULL)

for(int i=0;i < (MaxSrcNum+3); i++){

PyList_SetItem(pArgs1, i, PyList_GetItem(NumList,i));

}

PyObject *pArgs = PyTuple_New(1);

PyTuple_SetItem(pArgs, 0, pArgs1);// 0—序号 i表示创建int型变量 PyObject* a = PyObject_CallObject(pFunHi,pArgs);

Py_DECREF(pModule);

Py_DECREF(pArgs);

Py_DECREF(pArgs1);

}

void sec::keyPressEvent(QKeyEvent* event){

if(event->key() == Qt::Key_Up)

;

else if(event->key() == Qt::Key_Down)

;

else if(event->key() == Qt::Key_Left)

on_pushButton_2_clicked();

else if(event->key() == Qt::Key_Right)

on_pushButton_clicked();

if(event->key() == Qt::Key_Backspace)

;

}

void sec::keyReleaseEvent(QKeyEvent* event){

; }

7.Widget.h

#include "widget.h"

#include "ui_widget.h"

#include

#include

#include

#include

#include

#include

#include "sec.h"

#include "ui_sec.h"

using namespace std;

PyObject* Widget::tex(string cpp_string) {

PyObject* pModule = PyImport_ImportModule("excelcopy");

if(pModule == NULL) {

errordlg->setWindowTitle(tr("错误"));

errordlg->showMessage(tr("ExcelCopy.py路径错误"));

this->close();

}

else {

PyObject* pDict = PyModule_GetDict(pModule);

PyObject* pFunHi = PyDict_GetItemString(pDict, "PicRecog");

PyObject* a = PyObject_CallFunction(pFunHi,"s",cpp_string.c_str());

Py_DECREF(pModule);

return a;

}

}

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

setAcceptDrops(true);

errordlg = new QErrorMessage(this);

}

Widget::~Widget() {

delete ui;

}

void Widget::on_pushButton_clicked() {

QString fileName = QFileDialog::getOpenFileName(this,tr("文件对话框"),"D:",tr("图片文件(*png *jpg)")); qDebug()<<"fileName:"<

ui->lineEdit->setText(fileName);

ScrFilePath = fileName.toStdString();

}

void Widget::on_pushButton_2_clicked() //路径设置按钮

{

if(ScrFilePath.length()<5) {

errordlg->setWindowTitle(tr("错误"));

errordlg->showMessage(tr("未设置文件路径"));

}

else {

PyObject* temp = tex(ScrFilePath);

sec a(0,temp);

a.show();

基本运算电路实验报告

实报告 课程名称:电路与模拟电子技术实验指导老师:成绩: 实验名称:基本运算电路设计实验类型:同组学生姓名: 一、实验目的和要求: 实验目的: 1、掌握集成运算放大器组成的比例、加法和积分等基本运算电路的设计。 2、了解集成运算放大器在实际应用中应考虑的一些问题。 实验要求: 1、实现两个信号的反向加法运算 2、用减法器实现两信号的减法运算 3、用积分电路将方波转化为三角波 4、实现同相比例运算(选做) 5、实现积分运算(选做) 二、实验设备: 双运算放大器LM358 三、实验须知: 1.在理想条件下,集成运放参数有哪些特征? 答:开环电压增益很高,开环电压很高,共模抑制比很高,输入电阻很大,输入电流接近于零,输出电阻接近于零。2.通用型集成运放的输入级电路,为啥均以差分放大电路为基础? 答:(1)能对差模输入信号放大 (2)对共模输入信号抑制 (3)在电路对称的条件下,差分放大具有很强的抑制零点漂移及抑制噪声与干扰的能力。 3.何谓集成运放的电压传输特性线?根据电压传输特性曲线,可以得到哪些信 息? 答:运算放大器的电压传输特性是指输出电压和输入电压之比。4.何谓集成运放的输出失调电压?怎么解决输出失调? 答:失调电压是直流(缓变)电压,会叠 加到交流电压上,使得交流电的零线偏移 (正负电压不对称),但是由于交流电可 以通过“隔直流”电容(又叫耦合电容) 输出,因此任何漂移的直流缓变分量都不 能通过,所以可以使输出的交流信号不受 失调电压的任何影响。 专业: 姓名: 日期: 地点:紫金港东

5.在本实验中,根据输入电路的不同,主要有哪三种输入方式?在实际运用中这三种输入方式都接成何种反馈形式,以实现各种模拟运算? 答:反相加法运算电路,反相减法运算电路,积分运算电路。都为负反馈形式。 四、实验步骤: 1.实现两个信号的反相加法运算 实验电路: R′= Rl//R2//RF 电阻R'的作用:作为平衡电阻,以消除平均偏置电流及其漂移造成的运算误差 输入信号v s1v s1输出电压v o ,1kHz 0 2.减法器(差分放大电路) 实验电路: R1=R2、R F=R3 输入信号v s1v s1输出电压v o ,1kHz 0 共模抑制比850 3.用积分电路转换方波为三角波 实验电路: 电路中电阻R2的接入是为了抑制由I IO、V IO所造成的积分漂移,从而稳定运放的输出零点。 在t<<τ2(τ2=R2C)的条件下,若v S为常数,则v O与t 将近似成线性关系。 因此,当v S为方波信号并满足T p<<τ2时(T p为方波半个周期时间),则v O将转变

中间代码生成实验报告doc

中间代码生成实验报告 篇一:编译方法实验报告(中间代码生成器) 编译方法实验报告 XX年10月 一、 实验目的 熟悉算术表达式的语法分析与中间代码生成原理。 实验内容二、 (1)设计语法制导翻译生成表达式的四元式的算法; (2)编写代码并上机调试运行通过。 输入——算术表达式; 输出——语法分析结果; 相应的四元式序列。 (3)设计LL(1)分析法或LR(0)分析法的属性翻译文法,并根据这些属性翻译文 法,使用扩展的语法分析器实现语法制导翻译。 三、实验原理及基本步骤 ●算术表达式文法: G(E):E ? E ω0 T | T T ? T ω1 F | F F ? i | (E) ●文法变换:

G’(E) E ? T {ω0 T(本文来自:小草范文网:中间代码生成实验报告)} T ? F {ω1 F} F ? i | (E) ●属性翻译文法: E ? T {ω0 “push(SYN, w)” T “QUAT”} T ? F {ω1 “push(SYN, w)” F “QUAT”} F ? i “push(SEM, entry(w))” | (E) 其中: push(SYN, w) —当前单词w入算符栈SYN; push(SEM, entry(w)) —当前w在符号表中的入口值压入语义栈SEM; QUAT —生成四元式函数 i.T = newtemp; ii.QT[j] =( SYN[k], SEM[s-1], SEM[s], T); j++; iii.pop( SYN, _ ); pop( SEM, _ ); pop( SEM, _ ); push( SEM, T ); ●递归下降子程序: 数据结构:SYN —算符栈; SEM —语义栈; 四、数据结构设计 使用递归的结构进行四元式的设计,同时,运用堆栈

计算机网络基础模拟器实验报告

计算机网络模拟器实验报告 实验说明:共5个实验,其中前3个必做,后2个选做。 一、实验目的 1、掌握模拟器软件的使用方法; 2、掌握配置PC、交换机、路由器的方法; 3、掌握为交换机设置VLAN,为端口设置TRUNK的方法。 二、实验环境(请注意关闭杀毒软件) WinXP/WIN7、HW-RouteSim 2.2(软件请到BB课程 资源下载,下载后直接解压缩运行;下载前请关闭 杀毒软件) 三、实验步骤及结果 实验一:计算机和交换机基本设置 添加一个交换机,两个计算机,连接A电脑到交换机3号端口,B电脑到6号端口,双击交换机,进入终端配置: system password: [Quidway]sysname S3026 ;交换机重命名为S3026

[S3026]super password 111 ;设置特权密码为111 [S3026]quit sys password:111 [S3026]display currect-config ;查看当前所有配置[S3026]display vlan all ;查看当前VLAN设置 观察此时所有交换机端口都在同一个vlan1内。 双击小电脑A: login:root password:linux [root@PCAroot]# ? ;输入?号查看命令提示 [root@PCAroot]#ifconfig eth0 10.65.1.1 netmask 255.255.0.0 双击小电脑B: login:root password:linux [root@PCAroot]#ifconfig eth0 10.65.1.2 netmask 255.255.0.0 点击A电脑做测试: [root@PCA root]#ping 10.65.1.2

电路基础实验报告

北京交通大学电路基础实验报告

实验目的: (1)学习MultiSim2001建立电路、直流电路的分析方法。 (2)掌握伏安特性的测量。 (3)通过实验,加深对叠加定理和戴维南定理的理解。 实验内容: 1)测量二极管的伏安特性 (1)建立如右图所示的仿真Array电路。 (2)启动Simulate菜单中的 Analyses下的DC Sweep 设置相应的参数后,单击Simulate按钮,得到二极管的伏 安特性曲线。 2)验证叠加定理Array(1)建立如右图 所示的仿真电路。 (2)启动仿真开 关后,用电压表分 别测出V1、V2单 独作用和共同作 用时个支路的电压值,验证叠加定理。 3)验证戴维南定理 (1)建立如下图所示的仿真电路。(其中a对应2的位置,

b 对应0的位置) (2)用电压表测量R3断开时a 、b 端口的开路电压。 (3)将电阻R3短路,用电流表测量a 、b 端口短路电压。 (4)计算出等效电阻。重新建立一仿真电路,调出一个直流电压源,设置其电压为测量出的开路电压值,调一个电阻值为计算出的等效电阻,与R3电阻串联成一个等效电路。再用电压表和电流表测量R3两端的电压和流过电流,验证戴维南定理。 实验过程: 1) 测量二极管的伏安特性。 如右图,建立仿真电路图后,启动Simulate 菜单中的Analyses 下的DC Sweep 命令,设置相应的参数后,单击Simulate 按钮,得到二极管的伏安特性曲线如下:

2)验证叠加定理。 V1单独作用: 令V2=0.启动仿真开关如下图: U11=8.727V U21=3.273V U31=3.273V V2单独作用: 令V1=0,启动仿真开关如下图:

实验二MATLAB程序设计含实验报告

实验二M A T L A B程序设计含实验报告 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器 (Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21 3105168421 63105168421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y 5. (Root Mean Square)的计算(1(2)x=rand(1,200),得到的x 为200个(0,1)之间均匀分布的随机数。 6.根据2 2222 1......3121116n ++++=π,求π的近似值。当n 分别取100、1000、10000时,结果是多少 思考题:

通信网络基础实验报告

通信网络基础实验 报告 学号:。。。 姓名:。。。 专业:通信工程 指导老师:孙恩昌 完成时间:2015-12-27

目录 一.实验目的 (3) 二.实验内容 (3) 三.实验原理 (3) 四.实现停等式ARQ实验过程及结果: (5) 五.实现返回n-ARQ实验过程及结果: (7) 六.实现选择重发式ARQ过程及结果: (8) 七.心得体会 (10)

一.实验目的 1.理解数据链路层ARQ协议的基本原理 2.用算法实现四种不同形式的ARQ重传协议:停等式ARQ、返回n-ARQ、选择重发式ARQ和ARPANET ARQ。 3.提高分析和解决问题的能力和提高程序语言的实现能力 二.实验内容: 1.根据停等式ARQ协议基本理论,编写协议算法,进行仿真; 2.根据返回N-ARQ协议基本理论,编写协议算法,进行仿真; 3.根据选择重传ARQ协议基本理论,编写协议算法,进行仿真; 4.根据并行等待ARQ协议基本理论,编写协议算法,进行仿真 三.实验原理 1.停等式ARQ:在开始下一帧传送出去之前,必须确保当前帧已被正确接受。假定A到B的传输链路是正向链路,则B到A的链路称为反向链路。在该链路上A要发送数据帧给B,具体的传送过程如下: 发送端发出一个包后,等待ACK,收到ACK,再发下一个包,没有收

到ACK、超时,重发 重发时,如果ACK 不编号,因重复帧而回复的ACK,可能被错认为对其它帧的确认。 2. 返回n-ARQ:发送方和接收方状态示意图 返回n-ARQ方案的特点如下: (1)发送方连续发送信息帧,而不必等待确认帧的返回; (2)在重发表中保存所发送的每个帧的备份; (3)重发表按先进先出(FIFO)队列规则操作; (4)接收方对每一个正确收到的信息帧返回一个确认帧,每一个确认帧包含一个惟一的序号,随相应的确认帧返回; (5)接收方保存一个接收次序表,包含最后正确收到的信息帧的序号。当发送方收到相应信息帧的确认后,从重发表中删除该信息帧的备份;

电路基础实验报告 日光灯功率因素改善实验

实验题目: 日光灯电路改善功率因数实验 一、实验目的 1、了解日光灯电路的工作原理及提高功率因数的方法; 2、通过测量日光灯电路所消耗的功率,学会电工电子电力拖动实验装置; 3、学会日光灯的接线方法。 二、实验原理 用P 、S 、I 、V 分别表示电路的有功功率、视在功率、总电流和电源电压。按定义电路的功率因数IU P S P = = ?cos 。由此可见,在电源电压且电路的有功功率一定时,电路的功率因数越高,它占用电源(或供电设备)的容量S 就越少。 日光灯电路中,镇流器是一个感性元件(相当于电感与电阻的串联),因此它是一个感性电路,且功率因数很低,约0.5—0.6。 提高日光灯电路(其它感性电路也是一样)功率因数的方法是在电路的输入端并联一定容量的电容器。如图7-1所示: 图7-1 图7-2 图7-1 并联电容提高功率因数电路 图7-2 并联电容后的相量图 图7-1中L 为镇流器的电感,R 为日光灯和镇流器的等效电阻,C 为并联的电容器, 设并联电容后电路总电流I ,电容支路电流C I ,灯管支路电流RL I (等于未并电容前电路中的总电流),则三者关系可用相量图如图7-2所示。由图7-2知,并联电容C 前总电流 为RL I ,RL I 与总电压U 的相位差为L ?,功率因数为L ?cos ;并联电容C 后的总电流为I ,I 与总电压U 的相位差为?,功率因数为?cos ;显然?cos >L ?cos ,功率被提高了。并联电容C 前后的有功功率??cos cos IU U I P L RL ==,即有功功率不变。并联电容C 后的 总电流I 减小,视在功率IU S =则减小了,从而减轻了电源的负担,提高了电源的利用率。 三、实验设备 电工电子电力拖动实验装置一台,型号:TH-DT 、导线若干 四、实验内容 1、功率因数测试 按照图7-3的电路 实验电路如图7-3所示,将三表测得的数据记录于表7-1中。 图7-3 日光灯实验电路 W 为功率表,C 用可调电容箱。 五、实验数据与分析 表7-1 感性电路并联电容后的原始数据 C (μF ) P(瓦) V (伏) I (安) Cos ф 0 44.7 220 0.410 0.42

大学计算机实验报告

《大学计算机基础Ⅰ》课程 实验报告 (以上由学生填写) 西南大学计算机与信息科学学院 计算机基础教育系 2017年12月8日 实验成绩记载 课程Array实验报告一 一、实验题目:Win7得基本操作、文件管理与控制面板得使用 二、实验目得: 1.掌握“计算机"(资源管理器)得使用。 2.掌握文件与文件夹得基本操作。 3.了解显示属性得相关内容,掌握显示属性得设置。 4.掌握鼠标、键盘得属性设置。 5.掌握应用程序得添加/删除功能。 6.掌握输入法得设置方法.

7.掌握系统属性得设置方法。 8.掌握计算机名或域得查瞧及更改方法。 三、实验主要内容及过程(实验主要内容得介绍、主要得操作步骤) (列出实验主要内容通过截屏显示出操作过程以及实验结果) (一)文件与文件夹得管理 1、双击桌面上“计算机"→选择D盘→空白处右击选择“新建”重命名 文件夹→改名为“windows练习”→双击“windows练习"→右击空白处分别新建三个文件夹为“LX1”、“LX2”、“LX3”. 2、双击“C盘”打开→搜索框搜索“*、wmf”单击搜索按钮→选择任 意三个图片文件→右击→选择“复制”→粘贴至“LX1"文件夹中→并对三个文件分别重命名为“图片1、wmf”、“图片2、wmf”、“图片3、wmf”。 3、打开“LX1”文件夹→右击图片“1、wmf”→剪切→打开“LX2” 文件夹→右击空白处点击“粘贴”→选中剩下得两个文件→复制→打开“LX3”文件夹→右击选择“粘贴”→右击“LX2”选择“剪切” →打开“LX1”文件夹→右击选择“粘贴”

4、右击“LX3”文件夹→选择“属性”→选择“常规”属性卡→勾选“隐 藏”→右击“LX2"文件夹→选择“常规"属性卡→勾选“已读"

青岛科技大学实验报告(实验一)

班级:姓名:学号:成绩: 实验一: Qt 开发环境的搭建 (一)实验目的: ?掌握Qt 开发环境的搭建方法 ?掌握Qt Creator 的基本使用方法 ?了解Qt Creator 的界面布局 ?了解Qt 相关工具软件 (二)实验准备 ?对Qt 及Qt Creator 有基本了解 ?了解MinGW ?下载Qt 4.8.5、Qt Creator 2.8.0 和MinGW 安装包 (三)实验内容: ?安装Qt Creator ?安装MinGW ?安装Qt ?关联Qt Creator 和Qt ?运行一个示例程序 ?查看Qt 工具 (四)实验过程 1.安装Qt Creator (1)双击运行qt-creator-windows-opensource-2.8.0.exe 安装包,将出现如图1.1 所示的安装向导界面。单击“下一步”按钮。

图1.1 Qt Creator 安装向导 (2)选择安装位置界面如图1.2 所示。这里默认安装在C 盘,选中“Associate common filetypes with Qt Creator”选项会为Qt Creator 关联相应类型的文件,以后双击相应类型的文件(如Qt 项目文件)可直接在Qt Creator 中打开。这里保持默认设置,单击“下一步”按钮。 图1.2 选择安装位置 (3)在如图 1.3 所示的“许可协议”界面,选择“我接受此许可”即可。然后单击“下一步”按钮。 图1.3 许可协议界面

(4)在设置“开始菜单快捷方式”界面,可以在系统开始菜单中创建Qt Creator 的快捷方式,可以选择显示的位置和更改显示名称。如图1.4 所示。这里保持默认即可。单击“下一步”按钮。 图1.4 设置开始菜单快捷方式 (5)在“已做好安装准备”界面,单击“安装”按钮开始安装。如图1.5 所示。 图1.5 已做好安装准备界面 (6)完成安装。在完成安装界面,单击“完成”按钮结束安装。因为默认勾选了“Launch Qt Creator”,所以完成安装后会自动运行Qt Creator。如图1.6 所示。

电路基础实验报告

基尔霍夫定律和叠加定理的验证 组长:曹波组员:袁怡潘依林王群梁泽宇郑勋 一、实验目的 通过本次实验验证基尔霍夫电流定律和电压定律加深对“节点电流代数和”及“回路电压代数和”的概念的理解;通过实验验证叠加定理,加深对线性电路中可加性的认识。 二、实验原理 ①基尔霍夫节点电流定律[KCL]:在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于0。 ②基尔霍夫回路电压定律[KVL]:在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于0。 ③叠加定理:在线性电阻电路中,某处电压或电流都是电路中各个独立电源单独作用时,在该处分别产生的电压或电流的叠加。 三、实验准备 ①仪器准备 1.0~30V可调直流稳压电源 2.±15V直流稳压电源 3.200mA可调恒流源 4.电阻 5.交直流电压电流表 6.实验电路板 7.导线

②实验电路图设计简图 四、实验步骤及内容 1、启动仪器总电源,连通整个电路,分别用导线给电路中加上直流电压U1=15v,U2=10v。 2、先大致计算好电路中的电流和电压,同时调好各电表量程。 3、依次用直流电压表测出电阻电压U AB、U BE、U ED,并记录好电压表读数。 4、再换用电流表分别测出支路电流I1、I2、I3,并记录好电流读数。 5、然后断开电压U2,用直流电压表测出电阻电压U、BE,用电流表分别测出支路电流I、1并记录好电压表读数。 6、然后断开电压U1,接通电压U2,用直流电压表测出电阻电压U、、BE,用电流表分别测出支路电流I、、1并记录好电压表读数。 7、实验完毕,将各器材整理并收拾好,放回原处。 实验过程辑录 图1 测出U AB= 图2 测出电压U BE=

QT拼图实验报告

拼图游戏 1. 文档介绍 本文档主要介绍了一个简单的拼图游戏的开发过程 2. 系统概述 就是一个简单的拼图游戏,将一幅图片随机打散,然后拼出原图,很简单,也没有加入时间限制,只是一个拼图游戏的核心。 3. 设计约束 本软件是用Qt开发出来的,Qt一个c++的gui类库,可以跨多种操作系统平台。除了Qt库,还用到的就是标准的c程序库,各个系统中的开发环境也都有。基于这两点,所以我开发出来的拼图游戏可以跨平台移植而不用修改代码,直接在目标平台上再重新编译一下就行了。另外,我开发的只是一个拼图游戏的核心。有很强的可扩展性,可以根据不同的需要而加入代码进行定制。拼图中用到的图像分割和随机打散算法都是比较高效的。鼠标点击图像块进行图像的交换,非常易用,对用户来说,非常清晰。 4. 开发与运行环境 ●操作系统:Windows7 32位旗舰版Service Pack 1 ●处理器:Pentium(R) Dual-Core CPU E6300 @ 2.8GHz 2.8GHz ●安装内存(RAM): 2.00GB ●编译器:minGW移植到windows下的gcc编译器 ●调试器:minGW移植到windows下的gdb调试器 ●Make:minGW中的mingw32-make ●Qt C++ GUI库 ●软件开发成功后拿到windowx xp和其他windows 7下运行毫无问题。

5. 软件的总体结构图 图1 程序总流程图

5.1 随机打散图片 图2 随机打散图片

5.2 拼图流程 图3 拼图流程

6. 功能模块设计 对于一个拼图游戏的核心来说,主要的模块就是图片的随机打散模块和拼图模块。我将屏幕窗口分成9块,如下图所示: 图4 屏幕窗口 6.1 图像随机分割 我们将图像也分成和屏幕窗口一样的9块,如下图所示: 图5 图像分割 在Qt中,视口是物理坐标系下指定的任意矩形,窗口指的是同一矩形,只不过是逻辑坐标系下的。我们先将视口设置成屏幕上的一块,然后窗口设置成一块大小和一块图像的大小一样的矩形,我们将一块图像绘制到窗口中,经过窗口-视口变换后就绘制到了视口所对应的屏幕上。

C#记事本的实现实验报告

集美大学计算机工程学院实验报告 课程名称:C#程序设计班级:计算0711实验成绩: 指导教师:陈杰姓名:黄燕平 实验项目名称:记事本实现学号:2007810020上机实践日期:2010.5.25实验项目编号:实验三组号:上机实践时间:学时 一、目的(本次实验所涉及并要求掌握的知识点) 1.通过实验掌握windows程序设计的基础,以及常见windows控件的使用; 2.学习掌握记事本实现的思想以及编程方法; 二、实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图等) 实现记事本的Window运用程序,其功能能够实现记事本的功能(可参见Window 附件中的记事本基本格式); 三、实验使用环境(本次实验所使用的平台和相关软件) Windows操作系统Microsoft Visual Studio 2008编程软件 四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析) 记事本的实现:设计过程主要通过运用Window工具,利用MenuStrip工具设计主要的功能格式,之后再通过RichTextBox工具设置所要实现的记事本的编辑 框,作为输入输出时用(设置时为了提高实用性要求其在父容器中停 靠);最后就是对照相应的控件进行相应的编程。其实现代码如下:using System; using System.Collections.Generic; using https://www.wendangku.net/doc/8c14954641.html,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(); richTextBox1.Text = ""; //*初始化编辑文本框为空; } private void退出ToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); }

QT应用程序设计

南昌航空大学实验报告 二00 一四年五月十四日 课程名称:嵌入式系统设计及应用实验名称:QT应用程序设计 班级:姓名:同组人: 指导教师评定:签名: 一、实验内容 1. 阅读QT主窗口程序helloworld.cpp,然后编译并运行。 2.在helloworld.cpp程序中增加一个名为“hello”的按钮。 3. 编写一个登陆对话窗程序 二、实验步骤 (一)helloword程序 1.我们用File->New菜单来新建工程。 2这里我们选择Qt4 Gui Application。 3下面输入工程名和要保存到的文件夹路径。我们这里的工程名为helloworld。 4这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next。 5.我们将base class选为QDialog对话框类。然后点击Next。 6点击Finish,完成工程的建立。 7我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的绿色的run按钮或者按下Ctrl+R快捷键运行程序。 (二)登陆对话框程序 1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为 Base class,这样便建立了主窗口 2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中 3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。其中用户名后面的输入 框在属性中设置其object Name为usrLineEdit,密码后面的输入框为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。 4.将exitBtn的单击后效果设为退出程序,关联如下: 5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽函数,写 入一句 void loginDlg::on_loginBtn_clicked()

计算机控制基础实验报告

重庆交通大学 学生实验报告 实验课程名称机械工程控制基础 开课实验室交通装备与制造工程实训中心 学院机电与汽车工程学院年级 2012专业班机械电子工程(2)学生姓名学号 开课时间 2014 至 2015 学年第二学期

验证性设计性综合性

ans = (1/2)^n (2) ) 1.0)(8.0()(2 --=z z z z F syms z >> f=((z^2)/((z-0.8)*(z-0.1))) f = z^2/((z - 4/5)*(z - 1/10)) >> iztrans(f) ans = (8*(4/5)^n)/7 - (1/10)^n/7 实验项目 系统分析 实验时间 实验地点 90304 实验性质 验证性 设计性 综合性 教师评价: 评价教师签名: 第三章:计算机控制系统的分析 1 试求如题图 3.1所示的采样控制系统在单位阶跃信号作用下的输出响应)(*t y 。设 ) 10(*20 )(+= s s s G ,采样周期T=0.1s 。

解: gs=tf([20],[1 10 0]); gz=c2d(gs,0.1,'imp'); gzb1=gz/(gz+1); gzb2=feedback(gz,1); y=step(gzb1); step(gzb1,gzb2); 结果: 2 试求如题图3.1所示的采样控制系统在单位速度信号作用下的稳态误差。 设) 11.0(1 )(+= s s s G ,采样周期T=0.1s. 解: gs=tf([1],[0.1 1 0]); T=0.1; gz=c2d(gs,T,'imp'); gzb=feedback(gz,1); rz = tf([0.1 0],[1 -2 1],T); rz1 = zpk([0],[1 1],T,T); yz=rz*gzb; impulse(yz); t=[0:0.1:10]'; ramp=t; lsim(gzb,ramp,t) [y,t1] = lsim(gzb,ramp,t); ER = ramp - y

电路分析基础实验报告

实验一 1. 实验目的 学习使用workbench软件,学习组建简单直流电路并使用仿真测量仪表测量电压、电流。 2.解决方案 1)基尔霍夫电流、电压定理的验证。 解决方案:自己设计一个电路,要求至少包括两个回路和两个节点,测量节点的电流代数和与回路电压代数和,验证基尔霍夫电流和电压定理并与理论计算值相比较。 2)电阻串并联分压和分流关系验证。 解决方案:自己设计一个电路,要求包括三个以上的电阻,有串联电阻和并联电阻,测量电阻上的电压和电流,验证电阻串并联分压和分流关系,并与理论计算值相比较。 3.实验电路及测试数据 4.理论计算 根据KVL和KCL及电阻VCR列方程如下: Is=I1+I2, U1+U2=U3, U1=I1*R1,

U2=I1*R2, U3=I2*R3 解得,U1=10V,U2=20V,U3=30V,I1=5A,I2=5A 5. 实验数据与理论计算比较 由上可以看出,实验数据与理论计算没有偏差,基尔霍夫定理正确; R1与R2串联,两者电流相同,电压和为两者的总电压,即分压不分流; R1R2与R3并联,电压相同,电流符合分流规律。 6. 实验心得 第一次用软件,好多东西都找不着,再看了指导书和同学们的讨论后,终于完成了本次实验。在实验过程中,出现的一些操作上的一些小问题都给予解决了。 实验二 1.实验目的 通过实验加深对叠加定理的理解;学习使用受控源;进一步学习使用仿真测量仪表测量电压、电流等变量。 2.解决方案 自己设计一个电路,要求包括至少两个以上的独立源(一个电压源和一个电流源)和一个受控源,分别测量每个独立源单独作用时的响应,并测量所有独立源一起作用时的响应,验证叠加定理。并与理论计算值比较。 3. 实验电路及测试数据 电压源单独作用:

JAVA简单记事本程序设计实验报告

实验10 JAVA简单记事本程序设计 实验目的 1) 复习,巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握; 2) 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和 实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力; 3) 培养学生在项目开发中团队合作精神,创新意识及能力。 1.掌握窗口、菜单等高级组件的应用。 2.掌握Java Swing的使用方法。 3.了解GUI应用程序的创建过程与方法。 实验内容 课题:学生成绩管理 1、功能要求: 编写一个简单记事本程序,要求包含以下菜单项 文件新建、打开、保存、退出 编辑剪切、拷贝、粘贴、查找 帮助关于 2、实现文件和编辑菜单里的功能

3.1 系统实施 1:界面设计 创建一个下拉菜单和文本域,在文本域中显示编辑的文件信息。 主要代码: f=new Frame(s); p1=new TextArea(""); f.setSize(400,600); f.setBackground(Color.white); f.setVisible(true); menubar=new MenuBar(); menu1=new Menu("文件"); menu2=new Menu("编辑"); menu3=new Menu("帮助"); item1=new MenuItem("新建"); item2=new MenuItem("打开"); item3=new MenuItem("保存");

item4=new MenuItem("另存为"); item5=new MenuItem("退出"); item6=new MenuItem("全选"); item7=new MenuItem("复制"); item8=new MenuItem("剪切"); item9=new MenuItem("粘贴"); item10=new MenuItem("关于"); menu1.add(item1); menu1.add(item2); menu1.add(item4); menu1.add(item5); menu2.add(item6); menu2.add(item7); menu2.add(item8); menu2.add(item9); menu3.add(item10); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); f.setMenuBar(menubar); 2:功能设计 对每个菜单项进行注册监听。点击不同菜单项时,显示不同界面。 主要代码 item1.addActionListener(this); item2.addActionListener(this);

linux实验报告(QT)

Linux实验报告 学号:092201046 姓名:张攀班级:信工0901 实验时间:2012-4-26 实验地点:A4049 指导老师:雷鸿实验名称QT/E图形界面开发环境的搭建 实验目的成功搭建QT/E图形界面 一、实验题目 QT/E图形界面开发环境的搭建 二、实验内容及结果(请将相应题目代码和结果截图写在相应题目 下方) 1、[admin@localhost ~]$ su - root 密码: [root@localhost ~]# cd /mnt/hgfs/V MwareFedora14/ [root@localhost my6410]# cd qt-x11-opensource-src-4.5.3 [root@localhost qt-x11-opensource-src-4.5.3]# ./configure Which edition of Qt do you want to use ? Type 'c' if you want to use the Commercial Edition. Type 'o' if you want to use the Open Source Edition. O This is the Qt/X11 Open Source Edition. Y ou are licensed to use this software under the terms of the Lesser GNU General Public License (LGPL) versions 2.1. Y ou are also licensed to use this software under the terms of the GNU General Public License (GPL) versions 3. Type '3' to view the GNU General Public License version 3. Type 'L' to view the Lesser GNU General Public License version 2.1. Type 'yes' to accept this license offer. Type 'no' to decline this license offer. Do you accept the terms of either license? Y es for /home/admin/my6410/qt-x11-opensource-src-4.5.3/demos/arthurplugin/arthurplugin.pro Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into /usr/local/Trolltech/Qt-4.5.3 To reconfigure, run 'gmake confclean' and 'configure'.

实验一基本认识及基本操作实验报告.docx

谢谢观赏实验一V I S S I M基本认识及基本操作实验报告 一、实验目的 掌握交通仿真系统VISSIM基本功能的使用。 二、实验原理 以基本路段、出口匝道、无信号平面交叉口为例,练习基本交通仿真操作。 三、实验内容 1、基本路段仿真 2、设置行程时间检测器 3、道路的连接和路径决策 4、冲突区的设置 四、实验步骤 单击菜单栏上的View,选择Options,在Languages&Units下选择Chinese,切换成中文。 1、基本路段仿真步骤 (1)绘制路段:单击“路段&连接器”按钮,切换到路段编辑状态,将鼠标移到视图区,确定任意起点按住鼠标右键,平行向右移动鼠标,在需要的长度放开鼠标右键,路段绘制完成,在弹出的“路段属性”对话框内设置路段属性。车道数设置为“3”,单击“完成”。 (2)流量设置:单击“车辆输入”按钮,切换到路段流量编辑状态,双击路段,在“车辆输入”对话框输入流量“1500”,车辆构成选择“Default”。路段起点出现黑色线段,表示已完成流量设置。 (3)运行仿真:菜单栏单击“仿真”—>“参数”,在弹出的“仿真参数”对话框内调节仿真运行速度,为看清车辆行驶,调小速度为“6仿真秒/s”,单击确定。 2、设置行程时间检测器步骤: (1)单击行程时间,左键单击选中主路段,然后在主路段靠近起点某处右键,出现红色竖线,起点检测器设置完成, 再在靠近终点处右键出现绿色竖线同时弹出“创建行程时间检测”对话框,单击确定。 (2)评价结果输出:菜单栏单击“评价”—>“文件”在评价对话框内勾选行程时间。单击确定。 (3)运行仿真:单击上部工具栏连续仿真按钮,然后结束停止仿真。 在根目录右键打开“.rsz”文件,选择打开方式为记事本,最后一行第二个数字则为平均行程时间。 3、道路的连接和路径决策步骤 (1)添加出口匝道:按绘制路段步骤添加一段出口匝道。 (2)连接匝道:单击“路段&连接器”按钮,切换到路段编辑状态,鼠标移到主路段,左键单击显示出主路段中心线,右键单击拖动鼠标到与匝道的连接处,匝道发生 谢谢观赏

qt课程设计实验报告

程序设计课程设计实验报告 (qt实验报告) 信息科学与技术学院 软件三班 高文博 201005070309 2011年5月

实验1:计算当初存入本金的钱数。(12题) 1.实验目的、要求 目的: 1)熟悉qt中的常用属性; 2)熟悉vbox hbox模型及怎样根据需求设计控件,边框等; 3)熟悉各个槽函数的使用,准确的将c++语言转换成qt语言,将控件功 能与函数结合起来。 要求: 1)掌握对控件的文本色,背景色等常用属性的设置。 2)掌握对控件、边框尺寸与结构的设置 3)掌握对函数的设置 2.实验设备 笔记本电脑,已安装Qt 开发环境。 3.实验内容、步骤 ●先在vc++上进行编译。 ●应用qt3.38进行编译,运行。 实验步骤: 1)根据题目需求在草纸上画出结构图; 2)根据草图用代码设计整体框架和控件; 3)在qt上运行; 4)运行成功后根据功能添加函数; 5)在头文件中添加头文件。 6)将添加的功能函数与功能控件相连; 7)分别对每个函数进行测试; 8)将整个程序在qt运行调试; 9)运行通过后给每个函数写注释; 实验代码如下所示 A (1)主框架结构代码 #include"gwbsave.h"

GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) { //?? vBox=new QVBoxLayout(this); vBox->setMargin(5); vBox->setSpacing(5); label=new QLabel("Please input the lilv:",this,"label"); vBox->addWidget(label); //?? hBox=new QHBoxLayout(this); hBox->setMargin(5); hBox->setSpacing(5); vBox->addLayout(hBox); le1=new QLineEdit(this,"le1"); hBox->addWidget(le1); //?,?? hBox2=new QHBoxLayout(this); hBox2->setMargin(5); hBox2->setSpacing(5); vBox->addLayout(hBox2); leResult=new QLineEdit(this,"leResult"); leResult->setReadOnly(true); leResult->setPaletteBackgroundColor(Qt::gray); hBox->addWidget(leResult);

网络实验报告总结.doc

实验 1 PacketTrace基本使用 一、实验目的 掌握 Cisco Packet Tracer软件的使用方法。 二、实验任务 在 Cisco Packet Tracer中用HUB组建局域网,利用PING命令检测机器的互通性。 三、实验设备 集线器( HUB)一台,工作站PC三台,直连电缆三条。 四、实验环境 实验环境如图1-1 所示。 图 1-1交换机基本配置实验环境 五、实验步骤 (一)安装模拟器 1、运行“ PacketTracer53_setup”文件,并按如下图所示完成安装; 点“ Next ”

选择“ I accept the agreement”后,点“ next”不用更改安装目录,直接点“ next ” 点“ next ”

点“ next ” 点“ install”

正在安装 点“ Finish ”,安装完成。 2、进入页面。 (二)使用模拟器 1、运行Cisco Packet Tracer 软件,在逻辑工作区放入一台集线器和三台终端设备PC,用 直连线按下图将HUB 和PC工作站连接起 来, HUB端 接 Port 口, PC端分别接以太网口。

2、分别点击各工作站PC,进入其配置窗口,选择桌面项,选择运行IP 地址配置(IP Configuration ),设置IP 地址和子网掩码分别为PC0:1.1.1.1 ,255.255.255.0 ;PC1:1.1.1.2 ,255.255.255.0 ; PC2: 1.1.1.3 , 255.255.255.0 。 3、点击 Cisco Packet Tracer软件右下方的仿真模式按钮,如图1-2所示。将Cisco Packet Tracer的工作状态由实时模式转换为仿真模式。 图1-2 按Simulation Mode 按钮 4、点击PC0进入配置窗口,选择桌面Desktop 项,选择运行命令提示符Command Prompt,如图1-3 所示。 图5、在上述DOS命令行窗口中,输入(Simulation Panel)中点击自动捕获1-3进入PC配置窗口 Ping 1.1.1.3命令,回车运行。然后在仿真面板 / 播放( Auto Capture/Play)按钮,如图1-4 所示。 图 1-4 点击自动抓取 /运行按钮 6、观察数据包发送的演示过程,对应地在仿真面板的事件列表( 的类型。如图1-5 和图 1-6 所示。 Event List )中观察数据包

相关文档