qt课程设计实验报告
qt数独课程设计

qt数独课程设计一、课程目标知识目标:1. 理解数独的基本规则,掌握数独的解题技巧。
2. 学会运用qt编程实现数独游戏界面及其逻辑功能。
3. 掌握运用数独解题过程中的逻辑推理、分析能力和问题解决策略。
技能目标:1. 能够运用qt编程环境,设计并实现一个功能完善的数独游戏。
2. 培养学生的逻辑思维能力和编程实践能力,提高问题解决技巧。
3. 学会合作与沟通,能够在团队中发挥个人优势,共同完成项目任务。
情感态度价值观目标:1. 培养学生对编程和数学的兴趣,激发学生的学习热情。
2. 培养学生的耐心、细心和毅力,树立面对困难的积极态度。
3. 培养学生的团队精神,认识到团队合作的重要性,学会互相尊重与支持。
课程性质:本课程为信息技术与数学相结合的实践课程,强调学生的动手操作和团队合作。
学生特点:学生具备基本的数学知识和逻辑思维能力,对编程有一定了解,但实践经验不足。
教学要求:结合学生特点,注重培养学生的学习兴趣,提高实践能力,强调在操作过程中培养学生的逻辑思维和问题解决能力。
将课程目标分解为具体学习成果,以便在教学过程中进行有效评估和调整。
二、教学内容1. 数独基础知识:数独规则、数独技巧(唯一数字法、排除法、唯一候选数法等)。
2. qt编程基础:qt环境搭建、基本控件使用、事件处理、信号与槽机制。
3. 数独游戏设计与实现:- 界面设计:使用qt控件设计数独游戏界面,包括游戏棋盘、数字输入框、按钮等。
- 逻辑实现:编写数独游戏的逻辑代码,实现数独的生成、验证、提示等功能。
- 游戏测试:测试并优化数独游戏,确保游戏的稳定性和可用性。
4. 项目实践:分组进行项目实践,每组设计并实现一个完整的数独游戏。
5. 教学大纲:- 第一周:数独基础知识学习,了解数独规则和解题技巧。
- 第二周:qt编程基础学习,掌握qt基本控件的使用和事件处理。
- 第三周:数独游戏界面设计,学习使用qt控件设计游戏界面。
- 第四周:数独游戏逻辑实现,学习编写游戏逻辑代码。
qt课程设计实训小结

qt课程设计实训小结一、教学目标本课程的教学目标是使学生掌握Qt课程设计的基本知识和技能,能够独立完成Qt应用程序的设计与开发。
具体目标如下:1.理解Qt的基本概念和架构。
2.掌握Qt应用程序的设计流程。
3.熟悉Qt常用的类和接口。
4.了解Qt的事件处理机制。
5.能够使用Qt Creator进行应用程序的开发。
6.能够使用Qt Widgets进行图形用户界面的设计。
7.能够使用Qt的信号与槽机制进行事件处理。
8.能够使用Qt的数据库功能进行数据存储和检索。
情感态度价值观目标:1.培养学生的创新意识和解决问题的能力。
2.培养学生的团队协作精神和沟通能力。
3.培养学生的自主学习和持续学习的习惯。
二、教学内容本课程的教学内容主要包括以下几个部分:1.Qt的基本概念和架构:Qt是什么,Qt的优点和缺点,Qt的版本和安装,Qt的模块和类。
2.Qt应用程序的设计流程:Qt Creator的使用,项目创建和管理,应用程序的框架结构,主窗口的设计和实现。
3.Qt Widgets的使用:按钮、文本框、标签、对话框等控件的使用,布局管理器的设计,工具栏和菜单的设计。
4.Qt的信号与槽机制:信号与槽的概念,信号与槽的连接,自定义信号与槽,信号与槽的运用。
5.Qt的数据库功能:数据库的基本概念,Qt对数据库的支持,数据库连接的建立和关闭,SQL语句的执行,数据模型的使用。
三、教学方法本课程的教学方法主要包括以下几种:1.讲授法:通过讲解和演示,使学生掌握Qt的基本概念和架构,以及应用程序的设计流程。
2.讨论法:通过小组讨论,使学生深入理解Qt的信号与槽机制和数据库功能。
3.案例分析法:通过分析典型案例,使学生掌握Qt Widgets的使用和事件处理。
4.实验法:通过上机实验,使学生熟练掌握Qt Creator的使用和应用程序的开发。
四、教学资源本课程的教学资源主要包括以下几种:1.教材:《Qt课程设计实训》。
2.参考书:《Qt 5.12官方文档》、《Qt Creator用户手册》。
qt贪吃蛇课程设计总结

qt贪吃蛇课程设计总结一、教学目标本课程的教学目标是使学生掌握Qt贪吃蛇游戏的基本开发方法和技巧,培养学生运用编程思维解决实际问题的能力。
具体目标如下:1.知识目标:–了解Qt框架的基本概念和原理;–掌握Qt Creator的使用方法和编程环境;–掌握贪吃蛇游戏的基本算法和数据结构;–熟悉Qt Widget编程和事件处理。
2.技能目标:–能够独立设置Qt开发环境,编写简单的Qt程序;–能够运用贪吃蛇游戏的基本算法,实现游戏的基本功能;–能够使用Qt Creator进行调试和优化程序;–能够根据需要,查阅相关资料和文档,解决问题。
3.情感态度价值观目标:–培养学生对编程和软件开发的兴趣和热情;–培养学生独立思考、自主学习和团队协作的能力;–培养学生勇于探索、创新和解决问题的精神;–培养学生具有良好的职业道德和责任意识。
二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.Qt框架的基本概念和原理:Qt概述、Qt模块、信号与槽机制、Qt类体系结构等;2.Qt Creator的使用方法和编程环境:安装与配置、界面布局、编写代码、调试与运行等;3.贪吃蛇游戏的基本算法和数据结构:游戏流程、坐标系、蛇身模型、食物模型、方向控制、碰撞检测等;4.Qt Widget编程和事件处理:窗口布局、控件使用、事件处理机制、键盘和鼠标事件等。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解Qt框架的基本概念和原理,贪吃蛇游戏的基本算法和数据结构;2.案例分析法:分析典型代码和案例,引导学生理解和掌握相关知识;3.实验法:让学生动手编写和调试Qt程序,培养实际编程能力;4.小组讨论法:分组进行讨论和实践,培养团队协作和解决问题能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将提供以下教学资源:1.教材:《Qt编程入门》、《Qt Creator入门与实践》等;2.参考书:《Qt 5开发实战》、《Qt 5核心编程》等;3.多媒体资料:教学PPT、视频教程、在线文档等;4.实验设备:计算机、网络环境、编程软件等。
Qt TCP实验报告

Qt大型实验报告一、实验目的1. 了解并掌握Qt集成开发环境下使用Qt Designer开发图形界面程序的流程和相关操作;2 . 掌握在Qt Designer界面上为菜单项添加工具栏按钮、创建相应槽函数的方法;3. 了解并掌握Qt的信号槽和信号传递机制,并通过具体应用加深理解;4. 了解并掌握TCP通信机制并掌握QTcpSocket及QTcpServer类的具体使用方法;二、实验原理信号和槽机制信号:当对象改变其状态时,信号就由该对象发射(emit) 出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号。
这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用。
槽:用于接收信号,而且槽只是普通的对象成员函数。
一个槽并不知道是否有任何信号与自己相连接。
而且对象并不了解具体的通信机制。
信号与槽的连接:所有从QObject 或其子类( 例如Qwidget ) 派生的类都能够包含信号和槽。
因为信号与槽的连接是通过QObject 的connect() 成员函数来实现的。
客户端:类信号槽函数Client void fileSize(qint64 size) Void on_connected() Void message(const QString&str)VoiddisplaySocketError(QAbstractSocket::SocketErrore)void onError(qint32)Void connected()SocketError error() Void on_connected() void disconnected()MainWindow void on_Sendmsg_clicked() Void deleteLater()void on_Filerev_clicked() Voidon_socketDisconnected() void on_Sendfile_clicked()void setProccessBar(qint64 r)void updateProccessBar(qint64v)Voidon_socketError(qint32) void on_socketDisconnected()void on_socketError(qint32)信号与槽关联关系:connect(Client,SIGNAL(connected()),Client,SLOT(on_connected()));connect(Client, SIGNAL(error(QAbstractSocket::SocketError)),SLOT(displaySocketError(QAbstractSocket::SocketError)));connect(client,SIGNAL(disconnected()),client, SLOT(deleteLater()));connect(client,SIGNAL(disconnected()),MainWindow,SLOT(on_sock etDisconne c ted()));connect(client,SIGNAL(fileSize(qint64)),MainWindow,SLOT(setProc cessBar(qi nt64)));connect(client,SIGNAL(bytesWritten(qint64)),MainWindow,SLOT(up dateProcce ssBar(qint64)));connect(client,SIGNAL(onError(qint32)),MainWindow,SLOT(on_soc ketError(qi n t32)));服务器端:类信号槽函数Servervoidrcvmessage(QString)void rcvmsg(QString text)void file()void filerecv() void displayError(int)void finished()clientThreadvoid error(int) void on_socket_readyRead() voidmessage(QString)voidon_socket_disconnected() void filerecv() voiddisplaySocketError(QAbstractSocket::SocketError e)MainWindow voidupdateEditText(QString text)void updateProccessBar()信号与槽关联关系:connect(client,SIGNAL(error(int)),MainWindow,SLOT(displayError(i nt)));connect(client,SIGNAL(finished()), MainWindow, SLOT(finished()));connect(client, SIGNAL(finished()), client, SLOT(deleteLater()));connect(client,SIGNAL(message(QString)),MainWindow,SLOT(rcvm sg(QString)));connect(client, SIGNAL(filerecv()), MainWindow, SLOT(file()));connect(&QThread,SIGNAL(disconnected()),clientThread,SLOT(on_ socket_disconnected()));connect(&QThread,SIGNAL(read yRead()),clientThread,SLOT(on_soc ket_readyRead()));connect(&QThread,SIGNAL(error(QAbstractSocket::SocketError)),cl ientThread, SLOT(displaySocketError(QAbstractSocket::SocketError)));QT多线程QThread类提供了与系统无关的线程。
基于qt的课程设计报告

基于qt的课程设计报告一、课程目标知识目标:1. 让学生掌握Qt基本编程概念,如信号与槽机制、事件处理等;2. 使学生了解Qt图形用户界面设计原理,熟悉常用控件的使用;3. 帮助学生理解Qt的网络编程和数据库操作方法。
技能目标:1. 培养学生运用Qt进行图形用户界面设计的能力,能独立开发简单的应用程序;2. 提高学生解决实际问题的编程能力,学会分析需求并使用Qt技术进行实现;3. 培养学生的团队协作和沟通能力,学会在项目中进行有效分工与合作。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发他们探索新技术的好奇心;2. 培养学生认真负责的工作态度,养成良好编程习惯,注重代码规范与优化;3. 增强学生的自信心,让他们在解决问题中体验成功,培养克服困难的毅力。
课程性质分析:本课程为选修课,适用于有一定编程基础的学生。
课程以实践为主,注重培养学生的动手能力和实际应用能力。
学生特点分析:学生具备基本的编程知识,对图形用户界面设计有一定兴趣,但可能对Qt编程框架较为陌生。
部分学生可能在学习过程中遇到困难,需要教师耐心指导。
教学要求:1. 理论与实践相结合,注重实际操作能力的培养;2. 采用项目驱动教学,让学生在实际项目中掌握Qt编程技能;3. 课后提供丰富的学习资源,鼓励学生自主学习,提高解决问题能力。
二、教学内容1. Qt基本概念与编程环境- Qt简介与安装- Qt Creator使用方法- 常用控件与布局2. 信号与槽机制- 信号与槽的定义与使用- 事件处理与过滤3. 图形用户界面设计- 常用控件属性与样式设置- 自定义控件与绘图- 界面布局与美化4. 网络编程与数据库操作- 网络编程基础- 使用Qt网络模块实现简单客户端与服务器- 数据库操作与查询5. 实践项目:开发简易聊天软件- 需求分析- 界面设计与实现- 网络通信与数据库存储教学内容安排与进度:第1周:Qt基本概念与编程环境第2周:信号与槽机制第3周:图形用户界面设计第4周:网络编程与数据库操作第5-6周:实践项目开发与调试教材章节关联:本教学内容与教材中以下章节相关:1. 第1章:Qt概述与安装2. 第2章:Qt基本编程概念3. 第3章:图形用户界面设计4. 第4章:事件处理与信号与槽机制5. 第5章:网络编程与数据库操作教学内容确保科学性和系统性,通过实践项目将所学知识融会贯通,提高学生的实际应用能力。
QT实验报告

QT(C++)课程设计报告学院:信息科学与技术学院姓名:***学号:************报告时间:2013年5月3日一.课程题目:计算器二.课程设计目的:一方面检测对于学过的相关知识的掌握熟练程度,另一方面可以再进一步的巩固。
三.需求分析及开发背景需要一个能够用于计算的工具,满足基本的计算需求,同时来显示C++语言的应用。
四.C++面向程序设计语言,面向对象。
可以说它是所有编程语言中的一门很重要的计算机语言,具有非常多的有点。
五.主要算法:见下面的实现文件。
六.课程设计内容1.程序功能说明:(1).计算功能:通过按键实现计算的功能。
(2).清除功能:点击clear按钮实现清除功能。
计算器图片:程序大体代码:头文件:#ifndef ALCULATOR_H#define ALCULATOR_H#include <qpushbutton.h>#include <qlineedit.h>#include <qstring.h>#include <qlayout.h>//在QT中取类class Calculator : public QWidget{Q_OBJECT //要定义有自定义信号或槽的类,必须将这一句写在最前面public:Calculator( QWidget *parent = 0 ); //构造函数private slots: //定义Slot函数slotButton(),当指针连接的信号发生时会调用此函数void slotButton(); //客户点击按钮时触发private:void addToExpression( char ch );void calculatExpression(); //计算表达式void clearExpression(); //清除表达式void sqrt2();void sqrt3();void power2();void recip();void power3();void recipx2();//成员变量QPushButton *num1Button;QPushButton *num2Button;QPushButton *num3Button;QPushButton *num4Button;QPushButton *num5Button;QPushButton *num6Button;QPushButton *num7Button; QPushButton *num8Button; QPushButton *num9Button; QPushButton *num0Button; QPushButton *pointButton;QPushButton *addButton; QPushButton *subButton; QPushButton *multButton; QPushButton *divButton;QPushButton *sqrt2Button; QPushButton *sqrt3Button; QPushButton *powerXButton; QPushButton *power2Button; QPushButton *recipButton; QPushButton *recipx2Button;QPushButton *clearButton; QPushButton *power3Button;QPushButton *equalButton;QLineEdit *lineEdit;//注:成员变量一般都用指针QString expressionEdit;int flag; //用于记录// 1:第一个数准备输入// 2.第一个数的第一位为0// 3.整数且第一个数字不是0// 4.已输入小数点// 5,6,7,8 第二个数// 9 已计算结果double result;};#endif // ALCULATOR_CPP实现文件:#include "calculator.h"#include <math.h>Calculator :: Calculator(QWidget *parent ) {flag = 1;result = 0;setMaximumSize( minimumSize() );lineEdit = new QLineEdit( this );lineEdit->setEnabled( false);num1Button = new QPushButton( "1", this );num2Button = new QPushButton( "2", this );num3Button = new QPushButton( "3", this );num4Button = new QPushButton( "4", this );num5Button = new QPushButton( "5", this );num6Button = new QPushButton( "6", this );num7Button = new QPushButton( "7", this );num8Button = new QPushButton( "8", this );num9Button = new QPushButton( "9", this );num0Button = new QPushButton( "0", this ); pointButton = new QPushButton( ".", this ); addButton = new QPushButton( "+", this );subButton = new QPushButton( "-", this );multButton = new QPushButton( "*", this );divButton = new QPushButton( "/", this );sqrt2Button = new QPushButton( tr("sqtr()"), this ); sqrt3Button = new QPushButton( "sqrt3()", this ); powerXButton = new QPushButton( "^", this );power2Button = new QPushButton( "^2", this );recipButton = new QPushButton( "1/x", this ); //reciprocalrecipx2Button = new QPushButton( "1/x^2", this );clearButton = new QPushButton( "clear", this );power3Button = new QPushButton( "^3", this );equalButton = new QPushButton( "=", this );connect( num1Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num2Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num3Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num4Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num5Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num6Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num7Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num8Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num9Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( num0Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( addButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( subButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( multButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( divButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( powerXButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( equalButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( power3Button, SIGNAL(clicked()), SLOT(slotButton()) );connect( sqrt2Button, SIGNAL(clicked()),SLOT(slotButton()) );connect( pointButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( sqrt3Button, SIGNAL(clicked()), SLOT( slotButton() ) );connect( power2Button, SIGNAL(clicked()),SLOT(slotButton() ) );connect( recipButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( clearButton, SIGNAL(clicked()), SLOT(slotButton()) );connect( recipx2Button, SIGNAL(clicked()), SLOT(slotButton()) );//当点击各个不同的按钮时,所点击的按钮就会自动发布clicked()信号QGridLayout *keyLayout = new QGridLayout;keyLayout->addWidget( sqrt2Button, 0,0 );keyLayout->addWidget( sqrt3Button, 0,1 );keyLayout->addWidget( powerXButton, 0,2 );keyLayout->addWidget( recipButton, 0,3 );keyLayout->addWidget( clearButton, 0,4 );keyLayout->addWidget( num1Button, 1,0 );keyLayout->addWidget( num2Button, 1,1 );keyLayout->addWidget( num3Button, 1,2 );keyLayout->addWidget( power2Button, 1,3 );keyLayout->addWidget( power3Button, 1,4 );keyLayout->addWidget( num4Button, 2,0 );keyLayout->addWidget( num5Button, 2,1 );keyLayout->addWidget( num6Button, 2,2 );keyLayout->addWidget( addButton, 2,3 );keyLayout->addWidget( subButton, 2,4 );keyLayout->addWidget( num7Button, 3,0 );keyLayout->addWidget( num8Button, 3,1 );keyLayout->addWidget( num9Button, 3,2 );keyLayout->addWidget( multButton, 3,3 );keyLayout->addWidget( divButton, 3,4 );keyLayout->addWidget( num0Button, 4,0 );keyLayout->addWidget( pointButton, 4,1 );keyLayout->addWidget( recipx2Button,4,2 );//keyLayout->addWidget( equalButton, 4,3 );keyLayout->addMultiCellWidget( equalButton, 4,4, 3,4 );QVBoxLayout *mainLyout = new QVBoxLayout( this );mainLyout->addWidget( lineEdit );mainLyout->addLayout( keyLayout );}void Calculator :: slotButton(){QPushButton *btn = (QPushButton *)sender();if( btn == num1Button )addToExpression( '1' );else if( btn == num2Button )addToExpression( '2' );else if( btn == num3Button )addToExpression( '3' );else if( btn == num4Button )addToExpression( '4' );else if( btn == num5Button )addToExpression( '5' );else if( btn == num6Button )addToExpression( '6' );else if( btn == num7Button )addToExpression( '7' ); else if( btn == num8Button ) addToExpression( '8' ); else if( btn == num9Button ) addToExpression( '9' ); else if( btn == num0Button ) addToExpression( '0' ); else if( btn == pointButton ) addToExpression( '.' ); else if( btn == addButton ) addToExpression( '+' ); else if( btn == subButton ) addToExpression( '-' ); else if( btn == multButton ) addToExpression( '*' ); else if( btn == divButton ) addToExpression( '/' ); else if( btn == powerXButton ) addToExpression( '^' ); else if( btn == equalButton ) calculatExpression();else if( btn == clearButton )clearExpression();else if( btn == sqrt2Button ) sqrt2();else if( btn == sqrt3Button ) sqrt3();else if( btn == power2Button ) power2();else if( btn == recipButton ) recip();else if( btn == power3Button ) power3();else if( btn == recipx2Button ) recipx2();}// 1:第一个数准备输入// 2.第一个数的第一位为0// 3.整数且第一个数字不是0// 4.已输入小数点// 5,6,7,8 第二个数// 9 已计算结果void Calculator :: addToExpression(char ch) {if( flag == 1 ){if( ch == '0' ){expressionEdit.append( ch );flag = 2;}else if( ch >'0' && ch <= '9' ){expressionEdit.append( ch );flag = 3;}else if( ch == '.' ){expressionEdit.append( "0." );flag = 4;}}else if( flag == 2 ){if( ch >'0' && ch <= '9' ){expressionEdit.replace( expressionEdit.length()-1, 1, ch );flag = 3;}else if( ch == '.' ){expressionEdit.append( ch );flag = 4;}else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^'){expressionEdit.append( ch );flag = 5;}}else if( flag == 3 ){if( ch >='0' && ch <= '9' ){expressionEdit.append( ch );}else if( ch == '.' ){expressionEdit.append( ch );}else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^' ){expressionEdit.append( ch );flag = 5;}}else if( flag == 4 ){if( ch >= '0' && ch <= '9' )expressionEdit.append( ch );else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^'){expressionEdit.append( ch );flag = 5;}}else if( flag == 5 ){if( ch == '0' ){expressionEdit.append( ch );}if( ch == '.' ){expressionEdit.append( "0." );flag = 8;}else if( ch >'0' && ch <= '9' ){expressionEdit.append( ch );flag = 7;}}else if( flag == 6 ){if( ch >'0' && ch <= '9' ){expressionEdit.replace( expressionEdit.length()-1, 1, ch );flag = 7;}else if( ch == '.' ){expressionEdit.append( ch );flag = 8;}}else if( flag == 7 ){if( ch > '0' && ch <= '9' ){expressionEdit.append( ch );}else if( ch == '.' ){expressionEdit.append( ch );flag = 8;}}else if( flag == 8 ){if( ch >= '0' && ch <= '9' )expressionEdit.append( ch ); }else if( flag == 9 ){if( ch == '0' ){expressionEdit.append( '0' );flag = 2;}else if( ch > '0' && ch <= '9' ){expressionEdit.append( ch );flag = 3;}else if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^' ){expressionEdit.append( QString::number( result ) );expressionEdit.append( ch );flag = 5;}}lineEdit->setText( expressionEdit );}void Calculator :: calculatExpression(){if( flag == 6 || flag == 7 || flag == 8 ){double num1, num2;bool error = false;char oper;sscanf( tin1(), "%lf%c%lf", &num1, &oper, &num2 ); //得到数和运算符switch( oper ){case '+':result = num1+num2;break;case '-':result = num1-num2;break;case '*':result = num1*num2;break;case '/':if( num2 == 0 ) //如果除数为0error = true;elseresult = num1/num2;break;case '^':result = pow(num1, num2 );break;}expressionEdit.append('=');if( error ) //如果有错expressionEdit.append( "error" );elseexpressionEdit.append( QString::number( result ));lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 2 || flag == 3 || flag == 4 ){double num1;sscanf( tin1(), "%lf", &num1 );expressionEdit.append( "=" );expressionEdit.append( QString::number( num1 ) );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: clearExpression(){expressionEdit.remove( 0, expressionEdit.length() );lineEdit->setText( expressionEdit );flag = 1;}void Calculator :: sqrt2(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 0.5 );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "sqrt( %1 ) = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){if( result < 0 )return;expressionEdit = QString( "sqrt( %1 ) = ").arg( result );result = pow( result, 0.5 );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: sqrt3(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 1./3. );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "sqrt3( %1 ) = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit = QString( "sqrt3( %1 ) = ").arg( result );result = pow( result, 1./3. );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator::power2(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 2 );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "%1^2 = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit = QString( "%1^2 = ").arg( result );result = ::pow( result, 2 );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator::recip(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble( );if( num == 0 ) return;result = 1./num;expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/%1=%2" ).arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){if( result == 0 ) return;expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/%1=" ).arg( result );result = 1./result;expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: power3(){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble();if( num < 0 ) return;result = pow( num, 3 );expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "%1^3 = %2").arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit = QString( "%1^3 = ").arg( result );result = pow( result, 3 );expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0, expressionEdit.length() );}}void Calculator :: recipx2( ){if( flag == 3 || flag == 4 ){double num = expressionEdit.toDouble( );if( num == 0 ) return;result = 1./( num*num);expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/(%1^2)=%2" ).arg( num ).arg( result );lineEdit->setText( expressionEdit );flag = 9;expressionEdit.remove( 0, expressionEdit.length() );}else if( flag == 9 ){expressionEdit.remove( 0, expressionEdit.length() );expressionEdit = QString( "1/(%1^2)=" ).arg( result );if( result == 0 ) return;result = 1./(result*result);expressionEdit.append( QString::number( result ) );lineEdit->setText( expressionEdit );expressionEdit.remove( 0,expressionEdit.length() );}}计算器的计算功能就是通过上述的一系列算法实现的。
QT-五子棋游戏设计-课程设计报告

2013-2014学年秋季学期《Windows程序设计》课程设计报告学院:计算机与信息学院序号: 56姓名:周春雷学号: 2012112302指导教师:王安慧完成时间 2014 年 05月29日目录一、课程设计的目的 (1)二、课程设计的容及要求 (1)三、关键技术及相关原理介绍 (1)四、系统的总体设计 (2)五、设计思路及关键问题的解决方法 (3)六、设计模块分类 (4)1. 输入模块 (4)2. 输出模块 (6)3. 判断模块 (7)①判断输赢模块 (7)②判断命令模块 (11)七、运行结果截屏 (13)一、课程设计的目的通过所学的知识和技术,在老师的帮助下以及自己查询资料,完成对五子棋游戏的编程实现,使程序支持人人战,并且可以完成判断输赢,悔棋,从新开始等基本功能。
本次课程设计的课题简单,且娱乐性强。
在完成课题的过程中可以很好的复习学过的知识和技术,并且在完成设计编程后,可以很大程度上提高自信心和好学心,同时在做的过程中遇到难题能主动查阅资料、寻求帮助,对团队协作以及对网络资源的有效利用有了更深的体会。
二、课程设计的容及要求课程设计的容:本次设计将提供一个“五子棋”的游戏程序,可完成的功能有“人与人对战”、悔棋、开始新游戏。
课程设计的要求:使用QT软件开发,语言使用C++。
三、关键技术及相关原理介绍本系统主要分为输入模块、输出模块和判断模块这三大块。
各模块依据所属功能的不同来划分。
输入模块主要实现用户对数据的输入,输出模块则是完成对用户输入到系统的数据在棋盘上的显示,而判断模块这是系统的主要模块,完成对用户输赢的判断和对用户悔棋和从新开始等操作命令的响应。
本次采用了QT进行程序设计,对于图形界面有较好的处理方法和环境。
四、系统的总体设计图1:系统功能模块图图1是系统的总体模块图,依据系统的不同功能包含3个大的模块:输入模块,判断模块和输出模块。
各个模块的具体代码实现和功能描述在后面将详细的解释。
QT课程设计报告【范本模板】

题目:简易计算器学院:信息科学与技术专业:软件工程姓名:学号:2014.04.19一、需求分析当今社会是信息社会,科技经济高速发展的社会,为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。
然而,电脑已经成为当代人生活的必需品,运行在电脑上的计算器成为了人们的生活学习绝佳伴侣。
下面是用C++编写的,基于Qt图形用户界面应用程序框架的计算器,它实现了对整数,浮点数的加﹑减﹑乘﹑除﹑幂运算。
二、设计过程1.界面设计在QT设计器中布置好计算器界面,所有按键采用的pushButton控件,显示计算结果采用的是lineEdit控件.完成的界面如下图所示:图计算器界面为了使按钮显示美观,将每个button的属性设置如下:图button大小、字体属性为符合人们的使用习惯,将lineEdit空间的属性更改,使得输入的数字和符号出现在空间的右边起。
如图:图lineEdit控件属性更改2.控件重命名将界面布局设计好后,将各个空间改名,例如“0"改为but0.3.简单信号响应对于button exit退出程序,这样简单的响应,直接在设计器中通过添加信号和槽来完成,如图:图信号和槽4.辅助数据成员及函数为了区分每一次计算和保存操作数、操作符,和辅助函数(如:输出函数),在calculator。
h的类中设定数据成员以及成员函数:calculat。
cpp中辅助函数的实现:5.数字键的响应以button 0为例,在calculator。
cpp文件中添加but0的代码,如下:6.小数点的响应当一个操作数已经输入了一个小数点时,将小数点按钮置为不可用,以防用户重复输入小数点,导致输入操作数不合法,如下如:7.运算功能的响应以加法为例,向lineEdit中输入显示+号,并在数据成员中保存,以便后面进行计算:8.清屏的响应首先将lineEdit的显示清除,再置为0;将一切辅助的数据成员数据重置到新一轮计算的开始状态,如:运算符为空,操作数为0等.实现如下:9.等号的响应根据数据成员记录的运算符和操作数进行相应的计算,并将得出的结果转化为string显示在lineEdit上,并重置辅助数据成员,准备下一轮的计算开始。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计课程设计实验报告(qt实验报告)信息科学与技术学院软件三班高文博2010050703092011年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);//аgrid=new QGridLayout(this,1,5,5,10);vBox->addLayout(grid);btnResult=new QPushButton("Result",this,"btnResult");grid->addWidget(btnResult,0,2);btnClean=new QPushButton("Clean",this,"btnClean");grid->addWidget(btnClean,0,3);btnExit=new QPushButton("Exit",this,"btnExit");grid->addWidget(btnExit,0,4);connect(btnExit,SIGNAL(clicked()),this,SLOT(close())); // connect(btnClean,SIGNAL(clicked()),this,SLOT(slotClean())); //? connect(btnResult,SIGNAL(clicked()),this,SLOT(slotExit()));//}(2)主窗体结构视图B(1)添加函数后的全部代码a头文件//#ifndef GWBSAVE_H#define GWBSAVE_H#include<qwidget.h>#include<qlayout.h>#include<qlineedit.h>#include<qpushbutton.h>#include<qlabel.h>#include<qdatetime.h>//class GwbSave:public QWidget{Q_OBJECTpublic:GwbSave(QWidget*parent=0,const char*name=0);//构造函数。
int i;//double t;//double n;//public slots:void slotExit();void slotClean();private:QVBoxLayout*vBox; //多级嵌套布局时,使用Layout更好QHBoxLayout*hBox; //布局算式有关的控件QHBoxLayout*hBox2;QGridLayout*grid; //布局四个按钮。
QLabel*label;QLineEdit*le1;QLineEdit*leResult;QPushButton*btnExit,*btnClean,*btnResult;//定义几个按钮。
};#endifb实现文件#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);//定义几个按钮,并实现其排布。
grid=new QGridLayout(this,1,5,5,10);vBox->addLayout(grid);btnResult=new QPushButton("Result",this,"btnResult");grid->addWidget(btnResult,0,2);btnClean=new QPushButton("Clean",this,"btnClean");grid->addWidget(btnClean,0,3);btnExit=new QPushButton("Exit",this,"btnExit");grid->addWidget(btnExit,0,4);connect(btnExit,SIGNAL(clicked()),this,SLOT(close())); //退出按钮信号链接。
connect(btnClean,SIGNAL(clicked()),this,SLOT(slotClean())); //清除按钮链接connect(btnResult,SIGNAL(clicked()),this,SLOT(slotExit()));// 结果按钮链接。
}void GwbSave::slotClean()//把字符清零的槽函数。
{le1->setText(QString::number(0));leResult->setText(QString::number(0));}void GwbSave::slotExit() //实现求应该存入多少钱的函数。
int i; double t=0; double n;n=le1->text().toDouble();for(i=0;i<5;i++)//i0-4t=(t+1000)/(1+n*12);//??leResult->setText(QString::number(t)); }C主函数#include<qapplication.h>#include"gwbsave.h"int main(int argc,char**argv){QApplication app(argc,argv);GwbSave mainWindow;mainWindow.setGeometry(100,100,250,150);app.setMainWidget(&mainWindow);mainWindow.show();return app.exec();}(2)函数功能实现视图(1)输入利率(2)点击”result”键计算出应存入本金。
(2)点击clean键结果全部清零。
(3)点击exit退出界面。
C添加的函数(1)void GwbSave::slotClean()//把字符清零的槽函数。
{le1->setText(QString::number(0));leResult->setText(QString::number(0));}(2)void GwbSave::slotExit() //实现求应该存入多少钱的函数。