Blank's Program Language
程式語言學習紀錄 多看多寫思考嘗試
2014年7月24日 星期四
2014年5月15日 星期四
視窗程式設計5/15
練習A
#pragma once
namespace graph3 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此加入建構函式程式碼
//
}
protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// 設計工具所需的變數。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
void InitializeComponent(void)
{
this->SuspendLayout();
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(8, 15);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(673, 613);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
protected: virtual void OnPaint(PaintEventArgs^ e) override{
System::Drawing::Font ^myFont=gcnew System::Drawing::Font("Verdana",18);
System::Drawing::SolidBrush ^redBrush=gcnew System::Drawing::SolidBrush(Color::Red);
System::Drawing::SolidBrush ^blueBrush=gcnew System::Drawing::SolidBrush(Color::Blue);
/*for(int i=0;i<20;i+=2){
if(i%4)
e->Graphics->DrawString("Hellow USC!", myFont, redBrush, 40+i*10, 40+i*10);
else
e->Graphics->DrawString("Hellow USC!", myFont, blueBrush, 400-i*10, 60+i*10);
}*/
Graphics^ g = e->Graphics;
Pen^ myPen = gcnew Pen(Color::Black, 3);
/*for(int i=0;i<20;i++){
for(int j=0;j<7000000;j++) ;
g->DrawEllipse(myPen, 30+i*15, 20+i*10, 220, 90);
}*/
/*
int x1 = 300,y1=200,x2=150,y2=150;
g->FillEllipse(redBrush2,x1,y1,x2,y2);
*/
Pen^ myPen2 = gcnew Pen(Color::White, 3);
SolidBrush^ redBrush2 = gcnew SolidBrush(Color::HotPink);
int r=200,x,y;
double deg=Math::PI/72;
for(int i=0;i<144;i++){
for(int j=0;j<70000000;j++) ;
g->DrawLine(myPen2, 200, 200, 200+x, 200+y);
x=r*Math::Sin(deg*i);
y=r*Math::Cos(deg*i);
g->DrawLine(myPen, 200, 200, 200+x, 200+y);
}
}
};
}
老師範例#pragma once
namespace graph3 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此加入建構函式程式碼
//
}
protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// 設計工具所需的變數。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
void InitializeComponent(void)
{
this->SuspendLayout();
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(8, 15);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(673, 613);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
protected: virtual void OnPaint(PaintEventArgs^ e) override{
System::Drawing::Font ^myFont=gcnew System::Drawing::Font("Verdana",18);
System::Drawing::SolidBrush ^redBrush=gcnew System::Drawing::SolidBrush(Color::Red);
e->Graphics->DrawString("Hellow USC!", myFont, redBrush, 40, 40);
//=========================================================================
Graphics^ g = e->Graphics;
Pen^ myPen = gcnew Pen(Color::Black, 3);
g->DrawEllipse(myPen, 30, 20, 220, 90);
// Graphics^ g = e->Graphics;
//==========================================================================
Pen^ goldPen = gcnew Pen(Color::Gold, 5);
array<PointF>^ curvePoints =gcnew array<PointF>
{PointF(230,260), PointF(230,235), PointF(370,215), PointF(410,260), PointF(430,310)};
g->DrawClosedCurve(goldPen, curvePoints);
//=====================================================================================
Pen^ blackPen = gcnew Pen(Color::Black, 3);
int x =35; // 方框左上點橫座標(方框為?圓之外框)
int y =15; // 方框左上點縱座標
int width = 200; // 方框寬
int height = 100; // 方框高
int startAngle = 40; // 開始角度
int sweepAngle = 230; // 掃過角度
g->DrawPie(blackPen, x, y, width, height, startAngle, sweepAngle);
//=======================================================================================
SolidBrush^ redBrush2 = gcnew SolidBrush(Color::LightBlue);
int x1 = 300;
int y1 = 20;
int x2 = 380;
int y2 = 70;
g->FillEllipse(redBrush2 , x1, y1, x2, y2);
//=======================================================================================
// 先產生fillRegion區域
System::Drawing::Region^ fillRegion =
gcnew System::Drawing::Region(Rectangle(230, 230, 330, 330));
// 將fillRegion區域與Rectangle 聯集
fillRegion->Complement(Rectangle(260, 260, 330, 330));
SolidBrush^ br1=gcnew SolidBrush(Color::Red);
// 畫實心區域圖
g->FillRegion(br1,fillRegion);
}
};
}
練習B#pragma once
namespace graph3 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此加入建構函式程式碼
//
}
Graphics^ g1;
Pen ^p1, ^p2;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button3;
public:
private: System::Windows::Forms::Button^ button2;
protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// 設計工具所需的變數。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(93, 440);
this->button1->Margin = System::Windows::Forms::Padding(5);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(122, 35);
this->button1->TabIndex = 0;
this->button1->Text = L"Circle";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(272, 440);
this->button2->Margin = System::Windows::Forms::Padding(5);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(122, 35);
this->button2->TabIndex = 1;
this->button2->Text = L"Retcangle";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// button3
//
this->button3->Location = System::Drawing::Point(450, 440);
this->button3->Margin = System::Windows::Forms::Padding(5);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(122, 35);
this->button3->TabIndex = 2;
this->button3->Text = L"Clear";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(13, 23);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(668, 522);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Font = (gcnew System::Drawing::Font(L"新細明體", 13.8F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(136)));
this->Margin = System::Windows::Forms::Padding(5);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
g1=this->CreateGraphics();
p1=gcnew Pen(Color::Red, 2);
p2=gcnew Pen(Color::Blue, 4);
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
g1->DrawEllipse(p2,200,200,200,200);
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
g1->DrawRectangle(p1,150,70,250,80);
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Refresh();
}
};
}
練習作業#pragma once
namespace graph3 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此加入建構函式程式碼
//
}
Graphics^ g1;
Pen ^p1, ^p2;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button3;
public:
private: System::Windows::Forms::Button^ button2;
protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// 設計工具所需的變數。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(93, 440);
this->button1->Margin = System::Windows::Forms::Padding(5);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(122, 35);
this->button1->TabIndex = 0;
this->button1->Text = L"Circle";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(272, 440);
this->button2->Margin = System::Windows::Forms::Padding(5);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(122, 35);
this->button2->TabIndex = 1;
this->button2->Text = L"Retcangle";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// button3
//
this->button3->Location = System::Drawing::Point(450, 440);
this->button3->Margin = System::Windows::Forms::Padding(5);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(122, 35);
this->button3->TabIndex = 2;
this->button3->Text = L"Clear";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(13, 23);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(668, 522);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Font = (gcnew System::Drawing::Font(L"新細明體", 13.8F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(136)));
this->Margin = System::Windows::Forms::Padding(5);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
g1=this->CreateGraphics();
p1=gcnew Pen(Color::Red, 2);
p2=gcnew Pen(Color::Blue, 4);
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Pen^ myPen2 = gcnew Pen(Color::White, 3);
SolidBrush^ redBrush2 = gcnew SolidBrush(Color::HotPink);
int r=200,x,y;
double deg=Math::PI/72;
for(int i=0;i<144;i++){
for(int j=0;j<70000000;j++) ;
x=r*Math::Sin(deg*i);
y=r*Math::Cos(deg*i);
g1->DrawEllipse(p2,240+x,150+y,150,150);
}
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
Pen^ myPen2 = gcnew Pen(Color::White, 3);
SolidBrush^ redBrush2 = gcnew SolidBrush(Color::HotPink);
int r=200,x,y;
double deg=Math::PI/72;
for(int i=0;i<144;i++){
for(int j=0;j<70000000;j++) ;
x=r*Math::Sin(deg*i);
y=r*Math::Cos(deg*i);
g1->DrawRectangle(p1,240+x,150+y,150,70);
}
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Refresh();
}
};
}
2014年5月8日 星期四
視窗程式設計5/8
資料庫 PhoneBook.mdb
Visual Studio 2008 CLR主控台應用程式
Visual Studio 2008 CLR主控台應用程式
// DB1.cpp: 主要專案檔。
#include "stdafx.h"
#using <System.Dll>
#using <System.Data.Dll>
using namespace System;
using namespace System::Data;
using namespace System::Data::OleDb;
int main(array<System::String ^> ^args)
{
// 與指定的Access 資料庫建立連接
String^ connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=D:\\PhoneBook.mdb;";
OleDbConnection^ myConn = gcnew OleDbConnection(connectionString);
//OdbcCommand^ cmd;
try
{
myConn->Open();
// 設定取樣標準
OleDbCommand^ myCommand = myConn->CreateCommand();
myCommand->CommandText ="SELECT 姓名, 電話, 地址, 郵區 FROM Phone ";
// 讀取資料
OleDbDataReader^ myReader = myCommand->ExecuteReader();
while (myReader->Read())
{
Console::WriteLine("姓名 = " + myReader["姓名"]);
Console::WriteLine("電話 = " + myReader["電話"]);
Console::WriteLine("地址 = " + myReader["地址"]);
Console::WriteLine("郵區 = " + myReader["郵區"]);
Console::WriteLine();
}
myConn->Close();
myConn->Open();
myCommand->CommandText ="INSERT INTO Phone VALUES ('李九九', '02-11112222', '台北市星光大道100號' , '00011') " ;
// 新增資料
myCommand->ExecuteNonQuery();
Console::WriteLine("新增完成!");
myCommand->CommandText ="SELECT 姓名, 電話, 地址, 郵區 FROM Phone ";
// 讀取資料
OleDbDataReader^ myReader2 = myCommand->ExecuteReader();
while (myReader2->Read())
{
Console::WriteLine("姓名 = " + myReader2["姓名"]);
Console::WriteLine("電話 = " + myReader2["電話"]);
Console::WriteLine("地址 = " + myReader2["地址"]);
Console::WriteLine("郵區 = " + myReader2["郵區"]);
Console::WriteLine();
}
}
catch (Exception^ e)
{
Console::WriteLine("Error: " + e);
}
catch (OleDbException^ ex)
{
Console::WriteLine(ex->ToString());
}
finally
{
myConn->Close();
}
}
資料庫為stdRec.mdbA9803001 林品潔 33 96 66 75 Average=67
A9803004 王曉華 60 75 75 77 Average=71
A9803005 王智明 44 59 83 74 Average=65
A9803007 李斌 34 56 58 89 Average=59*
A9803009 陳大川 43 31 80 94 Average=62
A9803010 楊智源 38 65 49 62 Average=53*
A9803012 黃美鳳 39 99 82 51 Average=67
A9803015 鍾智勝 92 44 67 46 Average=62
A9803021 陳大川 75 88 65 64 Average=73
A9803022 朱彰文 54 79 96 80 Average=77
A9803025 黃莉茉 64 61 83 99 Average=76
A9803029 曾山國 47 78 31 37 Average=48*
A9803030 李雄山 43 58 67 99 Average=66
A9803033 林莉貞 41 38 50 34 Average=40*
A9803039 陳均安 82 55 87 62 Average=71
A9803042 李素惠 31 90 72 49 Average=60
A9803043 王小寶 62 49 94 74 Average=69
A9803048 李明白 50 30 35 32 Average=36*
A9803050 曾美蓮 99 92 78 91 Average=90
A9803052 魏一林 77 52 99 39 Average=66
請按任意鍵繼續 . . .
-------------------------------------------------------------
// DB1.cpp: 主要專案檔。
#include "stdafx.h"
#using <System.Dll>
#using <System.Data.Dll>
using namespace System;
using namespace System::Data;
using namespace System::Data::OleDb;
int main(array<System::String ^> ^args)
{
// 與指定的Access 資料庫建立連接
int sc;
String^ tmp;
String^ connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=d:\\stdRec.mdb;";
OleDbConnection^ myConn = gcnew OleDbConnection(connectionString);
//OdbcCommand^ cmd;
try
{
myConn->Open();
// 設定取樣標準
OleDbCommand^ myCommand = myConn->CreateCommand();
//myCommand->CommandText ="SELECT 課程A.學號,課程A.分數, 課程B.分數 FROM 課程A, 課程B WHERE 課程A.學號=課程B.學號";
myCommand->CommandText ="SELECT 學生資料表.學號, 姓名, 課程A.分數, 課程B.分數, 課程C.分數, 課程D.分數 from 學生資料表, 課程A, 課程B, 課程C, 課程D WHERE 學生資料表.學號=課程A.學號 and 學生資料表.學號=課程B.學號 and 學生資料表.學號=課程C.學號 and 學生資料表.學號=課程D.學號";
// 讀取資料
OleDbDataReader^ myReader = myCommand->ExecuteReader();
while (myReader->Read())
{
String^ tmp;
int sc=0;
Console::Write(myReader["學號"]);
Console::Write(" " + myReader["姓名"]);
Console::Write(" \t" + myReader["課程A.分數"]);
Console::Write(" " + myReader["課程B.分數"]);
Console::Write(" " + myReader["課程C.分數"]);
Console::Write(" " + myReader["課程D.分數"]);
//Console::WriteLine("電話號碼 = " + myReader["電話號碼"]);
//Console::WriteLine("聯絡地址 = " + myReader["聯絡地址"]);
tmp=myReader["課程A.分數"]->ToString();
sc+=System::Int32::Parse(tmp);
tmp=myReader["課程B.分數"]->ToString();
sc+=System::Int32::Parse(tmp);
tmp=myReader["課程C.分數"]->ToString();
sc+=System::Int32::Parse(tmp);
tmp=myReader["課程D.分數"]->ToString();
sc+=System::Int32::Parse(tmp);
sc/=4.0;
Console::Write(" Average=" + sc);
if(sc >= 60)
Console::WriteLine( " ");
else
Console::WriteLine( "*");
// Console::WriteLine("郵區 = " + myReader["郵區"]);
//Console::WriteLine();
}
}
catch (Exception^ e)
{
Console::WriteLine("Error: " + e);
}
catch (OleDbException^ ex)
{
Console::WriteLine(ex->ToString());
}
finally
{
myConn->Close();
}
}
Visual Studio 2008 Windows form 圖片移動 計畫名稱要一致#pragma once
namespace KeyBoard {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此加入建構函式程式碼
//
}
protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::PictureBox^ pictureBox1;
protected:
private:
/// <summary>
/// 設計工具所需的變數。
String^ state;
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
// String^ state;
/// </summary>
//System::ComponentModel::Container ^components;
/// </summary>
void InitializeComponent(void)
{
System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->BeginInit();
this->SuspendLayout();
//
// pictureBox1
//
this->pictureBox1->Image = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"pictureBox1.Image")));
this->pictureBox1->Location = System::Drawing::Point(110, 53);
this->pictureBox1->Name = L"pictureBox1";
this->pictureBox1->Size = System::Drawing::Size(61, 56);
this->pictureBox1->SizeMode = System::Windows::Forms::PictureBoxSizeMode::StretchImage;
this->pictureBox1->TabIndex = 0;
this->pictureBox1->TabStop = false;
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->BackColor = System::Drawing::Color::White;
this->ClientSize = System::Drawing::Size(290, 189);
this->Controls->Add(this->pictureBox1);
this->Name = L"Form1";
this->Text = L"鍵盤按鍵";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->EndInit();
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
this->KeyUp += gcnew KeyEventHandler(this, &KeyBoard::Form1::OnKeyPress);
state="Up";
}
public: void OnKeyPress(Object^ sender, KeyEventArgs^ e)
{
String^ skey = e->KeyCode.ToString(); // 取得按鍵名稱
if (skey=="Up") {
// 同向未碰到頂邊則向上移動
if ((pictureBox1->Top>=10) && state=="Up") {
pictureBox1->Top -= 10;
}
else
{
state = "Up";
pictureBox1->ImageLocation = "D:\\\ArrowU.gif";
}
}
if (skey=="Down") {
// 同向未碰到底邊則向下移動
if ((pictureBox1->Top <=this->Height-40-10) && state == "Down")
pictureBox1->Top += 10;
else
{
state = "Down";
pictureBox1->ImageLocation = "D:\\ArrowD.gif";
}
}
if (skey=="Left") {
// 同向未碰到左邊則向左移動
if ((pictureBox1->Left >= 10) && state == "Left")
pictureBox1->Left -= 10;
else
{
state = "Left";
pictureBox1->ImageLocation = "D:\\ArrowL.gif";
}
}
if (skey=="Right") {
// 同向未碰到右邊則向右移動
if ((pictureBox1->Left <= this->Width - 40 - 10) && state == "Right")
pictureBox1->Left += 10;
else
{
state = "Right";
pictureBox1->ImageLocation = "D:\\ArrowR.gif";
}
}
}
};
}
Visual Studio 2008 Windows form 畫矩形 計畫名稱要一致#pragma once
namespace mouse {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此加入建構函式程式碼
//
}
protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
bool mouseOn;
int x0,y0,x1,y1,w,h;
private:
/// <summary>
/// 設計工具所需的變數。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
void InitializeComponent(void)
{
this->SuspendLayout();
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(8, 15);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(421, 374);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
this->MouseDown +=gcnew MouseEventHandler(this, &mouse::Form1::OnMouseDown);
this->MouseUp +=gcnew MouseEventHandler(this, &mouse::Form1::OnMouseUp);
this->MouseMove +=gcnew MouseEventHandler(this, &mouse::Form1::OnMouseMove);
mouseOn=false;
}
private: System::Void OnMouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
x0=e->X;
y0=e->Y;
x1=e->X;
y1=e->Y;
mouseOn=true;
}
private: System::Void OnMouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
w=e->X-x1;
h=e->Y-y1;
if(w<0){
w=w*-1;
x0=e->X;
}
if(h<0){
h=h*-1;
y0=e->Y;
}
Refresh();
mouseOn=false;
}
private: System::Void OnMouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
if( mouseOn){
w=e->X-x1;
h=e->Y-y1 ;
if(w<0){
w=w*-1;
x0=e->X;
}
if(h<0){
h=h*-1;
y0=e->Y;
}
Refresh();
}
}
protected: virtual void OnPaint(PaintEventArgs^ e) override{
Pen^ blackPen = gcnew Pen(Color::Black, 3);
e->Graphics->DrawRectangle(blackPen,x0,y0,w,h);
}
};
}
2014年5月1日 星期四
視窗程式設計5/1
egles老鷹圖片在網路學園
#pragma once
namespace eagle {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 的摘要
///
/// 警告: 如果您變更這個類別的名稱,就必須變更與這個類別所依據之所有 .resx 檔案關聯的
/// Managed 資源編譯器工具的 'Resource File Name' 屬性。
/// 否則,這些設計工具
/// 將無法與這個表單關聯的當地語系化資源
/// 正確互動。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此加入建構函式程式碼
//
}
protected:
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
int times;
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::PictureBox^ pictureBox1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Timer^ timer1;
private: System::Windows::Forms::Button^ button3;
private: System::ComponentModel::IContainer^ components;
private:
/// <summary>
/// 設計工具所需的變數。
/// </summary>
#pragma region Windows Form Designer generated code
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
this->button1 = (gcnew System::Windows::Forms::Button());
this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
this->button2 = (gcnew System::Windows::Forms::Button());
this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
this->button3 = (gcnew System::Windows::Forms::Button());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->BeginInit();
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(12, 22);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 0;
this->button1->Text = L"Stop";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// pictureBox1
//
this->pictureBox1->Location = System::Drawing::Point(22, 65);
this->pictureBox1->Name = L"pictureBox1";
this->pictureBox1->Size = System::Drawing::Size(173, 150);
this->pictureBox1->TabIndex = 1;
this->pictureBox1->TabStop = false;
this->pictureBox1->Click += gcnew System::EventHandler(this, &Form1::pictureBox1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(174, 22);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(75, 23);
this->button2->TabIndex = 2;
this->button2->Text = L"Exit";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// timer1
//
this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
//
// button3
//
this->button3->Location = System::Drawing::Point(93, 22);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(75, 23);
this->button3->TabIndex = 3;
this->button3->Text = L"restart";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(192)), static_cast<System::Int32>(static_cast<System::Byte>(255)),
static_cast<System::Int32>(static_cast<System::Byte>(255)));
this->ClientSize = System::Drawing::Size(284, 262);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->pictureBox1);
this->Controls->Add(this->button1);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->EndInit();
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {
switch(times){
case 0:
pictureBox1->Image=Image::FromFile("D:\\Eagle2.gif");
times=1;
break;
case 1:
pictureBox1->Image=Image::FromFile("D:\\Eagle3.gif");
times=2;
break;
case 2:
pictureBox1->Image=Image::FromFile("D:\\Eagle1.gif");
times=0;
break;
}
pictureBox1->Left +=14;
pictureBox1->Top +=4;
pictureBox1->Height +=5;
pictureBox1->Width +=6;
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
timer1->Enabled=true;
timer1->Interval=100;
times=0;
Form1::Height=1024;
Form1::Width=1024;
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
timer1->Enabled=!timer1->Enabled;
if(timer1->Enabled==true)
button1->Text="Start";
else
button1->Text="Retart";
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
Application::Exit();
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
timer1->Enabled=true;
System::Media::SoundPlayer^ so = gcnew System::Media::SoundPlayer("D:\\");
so->Play();
}
};
}
視窗程式設計期中考
midTest1
#include <iostream>
using namespace std;
void sort(int *dd,int num){ // Descending
int tmp;
for(int i=0;i<num-1;i++){
for(int j=i+1;j<num;j++){
if(dd[i]<dd[j]){
tmp=dd[i];
dd[i]=dd[j];
dd[j]=tmp;
}
}
}
}
int bsearch(int* dd, int low, int high, int tk){
int idx;
if(low > high) return -1;
idx=(low+high)/2;
if(tk==dd[idx]) return idx;
else if(tk>dd[idx]) bsearch(dd,low,idx-1,tk);
else bsearch(dd,idx+1,high,tk);
}
int main(){
int num, rk, tk;
int data[]={59,83,66,54,79,63,44,99,50,88,73,47,80,75,60,39,92,95,87,69,57};
num=sizeof(data)/4; // number of array element
sort(data,num);
rk=bsearch(data,0,20,63);
if(rk < 0) cout << "score 63 not found!!!" << endl;
else cout << "rank of 63 is " << bsearch(data,0,20,63)+1 << endl;
rk=bsearch(data,0,20,53);
if(rk < 0) cout << "score 53 not found!!!" << endl;
else cout << "rank of 53 is " << bsearch(data,0,20,53)+1 << endl;
rk=bsearch(data,0,20,92);
if(rk < 0) cout << "score 92 not found!!!" << endl;
else cout << "rank of 92 is " << bsearch(data,0,20,92)+1 << endl;
}
midTest2#include <fstream>
#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;
int main(void)
{
char txt[80],ch;
string record;
ifstream ifile("D:\\stdrec5.txt",ios::in); // for input
ofstream ofileA("D:\\reportA.txt",ios::out); // for output1
ofstream ofileB("D:\\reportB.txt",ios::out); // for output2
char porf=' ';
string cls, id, name,sc[5],fnum;
int isc[5],sum;
while(!ifile.eof())
{
sum=0;
fnum="";
ifile.getline(txt,80,'\n');
cout << txt << endl;
record=txt;
cls=record.substr(0,6); // class
id=record.substr(6,8); // student identifier
name=record.substr(14,10); // student name
for(int i=0;i<5;i++){ // get 5 course score & transfer to integer
sc[i]=record.substr(24+i*3,3);
isc[i]=atoi(sc[i].c_str());
sum+=isc[i];
if(isc[i]<60) fnum+="*";
}
if(cls.compare("DITM3A")==0){
ofileA<<cls<<" "<<id<<" "<<name<<" "<<sc[0]<<" "<<sc[1]<<" "<<sc[2]<<" "<<sc[3]<<" "<<sc[4]<<" Total="<<sum<<" Average="<<round(sum*10/5.0)/10.0<<"("<<fnum<<")"<<endl;
}
else{
ofileB<<cls<<" "<<id<<" "<<name<<" "<<sc[0]<<" "<<sc[1]<<" "<<sc[2]<<" "<<sc[3]<<" "<<sc[4]<<" Total="<<sum<<" Average="<<round(sum*10/5.0)/10.0<<"("<<fnum<<")"<<endl;
}
}
ifile.close();
ofileA.close();
ofileB.close();
return 0;
}
midTest3#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
class person{
private:
double pound,inch,kg,m;
public:
person(double pd, double in){
pound=pd;
inch=in;
toKg();
toM();
}
private:
void toKg(){
kg=pound*0.454;
}
void toM(){
m=inch*0.0254;
}
public:
double getKg(){
return kg;
}
double getM(){
return m;
}
};
class BMI:person{
public:
BMI(double pd, double in):person(pd, in){};
public:
short ckBMI(){
double bmi=getBMI();
if(bmi<18.5) return -1;
else if(bmi<24.0) return 0;
else if(bmi<27.0) return 1;
else if(bmi<30.0) return 2;
else if(bmi<35.0) return 3;
else return 4;
}
double getBMI(){
double kg,m, bmi;
kg=person::getKg();
m=person::getM();
return bmi=kg/(m*m);
}
char* toMessage(short f){
switch(f){
case -1:
return "體重過輕";
break;
case 0:
return "正常";
break;
case 1:
return "過重";
break;
case 2:
return "輕度肥胖";
break;
case 3:
return "中度肥胖";
break;
case 4:
return "重度肥胖";
}
}
};
int main(void) {
BMI John(200, 71);
BMI Mary(170, 69);
BMI Ronny(192, 65);
cout << "John BMI is " << John.getBMI()<< " Status:" << John.toMessage(John.ckBMI())<< endl;
cout << "Mary BMI is " << Mary.getBMI()<< " Status:" << Mary.toMessage(Mary.ckBMI())<< endl;
cout << "Ronny BMI is " << Ronny.getBMI()<< " Status:" << Ronny.toMessage(Ronny.ckBMI())<< endl;
}
2014年4月11日 星期五
視窗程式設計期中考重點
2/20 練習
A9803002 Alexis 73 81 54 66 avg:66
A9803006 Matthew 98 87 74 83 avg:84
A9803008 Aiden 83 77 82 72 avg:78
A9803011 Chrimetor 53 53 46 55 avg:51 *
A9803017 Addisory 83 88 74 57 avg:73
A9803019 Chritopher 77 83 71 88 avg:79
A9803020 Mason 63 69 88 90 avg:79
A9803023 Addison 95 97 94 82 avg:91
A9803028 Joshua 43 52 60 55 avg:53 *
A9803029 Andrew 71 79 64 72 avg:70
A9803030 Elizabeth 63 61 58 51 avg:57 *
ifstream (檔案輸入)、ofstream (檔案輸出) 以及 fstream (檔案輸出入)
※檔案的開啟與關閉
開啟檔案
檔案物件.open(“檔案名稱”,ios::開啟模式);
可供選擇的開啟模式
關閉檔案
檔案物件.close();
※文字檔的處理
將資料寫入文字檔
將資料附加到已存在的文字檔
從文字檔案讀取資料
get()、getline()、put()
利用 put() 將字串寫入檔案
文字檔的拷貝與讀取
//從檔案內讀取一個字元,並把它寫入 ch 字元變數
檔案物件.get(ch);
//從檔案內最多讀取 N-1 個字元,或是讀取到 \n
//並把它存放到字串 str 中
檔案物件.getline(str, N, ’\n’);
//將ch字元變數的值寫入檔案內
檔案物件.put(ch);
prog18_1
Report for Ansi C++
A9803002 Alexis 73 81 54 66 avg: 66
A9803006 Matthew 98 87 74 83 avg: 84
A9803008 Aiden 83 77 82 72 avg: 78
A9803011 Chrimetor 53 53 46 55 avg: 51*
A9803017 Addisory 83 88 74 57 avg: 73
A9803019 Chritopher 77 83 71 88 avg: 79
A9803020 Mason 63 69 88 90 avg: 79
A9803023 Addison 95 97 94 82 avg: 91
A9803028 Joshua 43 52 60 55 avg: 53*
A9803029 Andrew 71 79 64 72 avg: 70
A9803030 Elizabeth 63 61 58 51 avg: 57*
使用C的atoi()與atof()。
先利用c_str()轉成C string,再用atoi()與atof()。
double n = atof(s.c_str());
int n = atoi(s.c_str());
#include<iostream>
using namespace std;
int main(){
double degreeC,degreeF;
cout<<"Please enter the degree C!"<<endl;
cin>>degreeC;
degreeF=degreeC*9/5+32;
cout<<"The degree C transform to degree F is "<<degreeF<<endl;
cout<<"Please enter the degree F!"<<endl;
cin>>degreeF;
degreeC=(degreeF-32)*5/9;
cout<<"The degree F transform to degree C is "<<degreeC<<endl;
return 0;
}
0227練習#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
int n[101][200]={0};
n[0][0]=1;
int i,j;
for(i=1;i<=100;i++){
for(j=0;j<200;j++)
n[i][j]=n[i-1][j]*i;
for(j=0;j<200;j++)
if(n[i][j]>=10){
n[i][j+1]+=n[i][j]/10;
n[i][j]%=10;
}
int t=199;
while(n[i][t]==0) t--;
cout<<i<<"!=";
for(;t>=0;t--) cout<<n[i][t];
cout<<endl;
}
}
0306練習# include <iostream>
#include <cstdlib>
#include<cmath>
using namespace std;
class CTime
{
private:
// members data
int m_hours;
int m_mins;
int m_secs;
public:
// constructors
CTime(void);
CTime(int hours, int mins, int secs);
// other members function
bool setTime(int hours, int mins, int secs);
int getHours();
int getMins();
int getSecs();
void diff(CTime *time);
void print();
};
// Auxiliary Function
bool isValidTime(int hours,int mins,int secs);
// constructors
CTime::CTime(){
m_hours=0;
m_mins=0;
m_secs=0;
}
CTime::CTime(int hours, int mins, int secs) {
m_hours=hours;
m_mins=mins;
m_secs=secs;
}
// member methods
bool CTime::setTime(int hours, int mins, int secs){
if (!isValidTime(hours, mins, secs))
return false;
else {
m_hours=hours;
m_mins=mins;
m_secs=secs;
return true;
}
}
void CTime::diff(CTime *time){
int sum1=m_hours*3600+m_mins*60+m_secs;
int sum2=time->m_hours*3600+time->m_mins*60+time->m_secs;
int sum=abs(sum2-sum1);
int h=sum/3600;
int m=sum%3600/60;
int s=sum%60;
if(h<10) cout<<0;
cout << h << ":";
if(m<10) cout<<0;
cout << m << ":";
if(s<10) cout<<0;
cout << s << endl;
}
int CTime::getHours(){
return m_hours;
}
int CTime::getMins(){
return m_mins;
}
int CTime::getSecs(){
return m_secs;
}
void CTime::print() {
if(m_hours<10) cout<<0;
cout << m_hours << ":";
if(m_mins<10) cout<<0;
cout << m_mins << ":";
if(m_secs<10) cout<<0;
cout << m_secs << endl; // ??? 00:00:00
}
bool isValidTime(int hours,int mins,int secs)
{
return ( hours >=0 && hours < 24 && mins >= 0
&& mins < 60&& secs >= 0 && secs < 60 );
}
int main(){
CTime *time1=new CTime(12, 59, 59);
cout << " time1>> ";
time1->print();
CTime *time2=new CTime(13, 0, 0); // generate an CTime object time2 and time is 13:00:00
cout << " time2>> ";
time2->print();
// add a member function into the CTime class for processing time difference
//
cout << " diftime>> ";
time1->diff(time2);
}
ex0320 MS visual studio C++// php.cpp: 主要專案檔。
#include "stdafx.h"
#include "stdlib.h"
using namespace System;
using namespace System::Text::RegularExpressions;
using namespace System::Collections;
int main(array<System::String ^> ^args)
{
String^ input="Information and Management Department";
String^ infix="67 + 55 * 5 - 32 / 4";
String^ postfix="";
Regex^ rx=gcnew Regex(" ");
array<String^> ^a=rx->Split(infix);
for each(String^ ss in a) Console::WriteLine(";"+ss);
Stack^ stk1=gcnew Stack();
for each(String^ ss in a){
if(ss=="+" || ss=="-" ||ss=="*" ||ss=="/" ){
if(stk1->Count ==0){
stk1->Push(ss);
}else{
String^ peek=stk1->Peek()->ToString();
if(ss=="*" ||ss=="/" ){
if(peek=="-"||peek=="+"){
stk1->Push(ss);
}else{
while(stk1->Count!=0)
postfix=postfix+" "+stk1->Pop();
stk1->Push(ss);
}
}else{
while(stk1->Count!=0)
postfix=postfix+" "+stk1->Pop();
stk1->Push(ss);
}
}
}else{
postfix=postfix+" "+ss;
}
}
while(stk1->Count!=0)
postfix=postfix+" "+stk1->Pop();
Console::WriteLine("postfix >>" + postfix);
int op1,op2,op3;
array<String^> ^b=rx->Split(postfix);
for each(String^ ss in b){
if(ss=="")
;
else{
if(ss=="+"){
op1=Convert::ToInt32(stk1->Pop()->ToString());
op2=Convert::ToInt32(stk1->Pop()->ToString());
op3=op2+op1;
stk1->Push(Convert::ToString(op3));
}else if(ss=="-" ){
op1=Convert::ToInt32(stk1->Pop()->ToString());
op2=Convert::ToInt32(stk1->Pop()->ToString());
op3=op2-op1;
stk1->Push(Convert::ToString(op3));
}else if(ss=="*"){
op1=Convert::ToInt32(stk1->Pop()->ToString());
op2=Convert::ToInt32(stk1->Pop()->ToString());
op3=op2*op1;
stk1->Push(Convert::ToString(op3));
}else if(ss=="/"){
op1=Convert::ToInt32(stk1->Pop()->ToString());
op2=Convert::ToInt32(stk1->Pop()->ToString());
op3=op2/op1;
stk1->Push(Convert::ToString(op3));
}else{
stk1->Push(ss);
}
}
}
Console::WriteLine("sum >>" + stk1->Pop());
system("pause");
return 0;
}
0327練習A// 0327A.cpp: 主要專案檔。
#include "stdafx.h"
#include "stdlib.h"
using namespace System;
int main(array<System::String ^> ^args)
{
array<int> ^day=gcnew array<int>{10,9,3,7};
try // 監視程式碼的區塊
{
int b = Convert::ToInt32("ABC") ;
Console::WriteLine("b is {0}", b);
}
catch (ArithmeticException ^e) // 取得”除以零”的錯誤
{
Console::WriteLine("ArithmeticException: {0}",e->Message);
}catch (ArgumentException ^e)
{
Console::WriteLine("ArgumentException: {0}",e->Message);
}catch (FormatException ^e)
{
Console::WriteLine("FormatException: {0}",e->Message);
}catch (IndexOutOfRangeException ^e)
{
Console::WriteLine("IndexOutOfRangeException: {0}",e->Message);
}catch (Exception ^e) // 例外狀況
{
Console::WriteLine("Exception: {0}",e->Message);
}
__finally
{
Console::WriteLine("End of Job");
}
system("pause");
return 0;
}
0327練習B#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;
class interest{
private:
char type; // 'S': Single rate; 'C':Compound interest
double prin, rate=0.05; // prin: principal; rate: bank rate
int year;
public:
interest(char tp);
interest(char tp, double rt);
int getResult(double year);
void setPrin(double pp);
void setRate(double rr);
};
interest::interest(char tp){
type = tp;
}
interest::interest(char tp, double rt){
type = tp;
rate = rt;
}
int interest::getResult(double yy){ // Formula of Single= p(1+nr)
// Formula of Compound= P(1+r)^n
year = yy;
if(type=='S'){
return round(prin*(1+year*rate));
}else{
return round(prin*pow((1+rate),year));
}
}
void interest::setPrin(double pp){
prin = pp;
}
void interest::setRate(double rr){
rate = rr;
}
int main(){
double prin=2000, rate=0.05;
interest *A = new interest('S');
interest *B = new interest('C',rate);
A->setPrin(prin);
B->setPrin(prin);
interest *D = new interest('S');
interest *C = new interest('C',rate);
C->setPrin(5000);
C->setRate(0.0315);
D->setPrin(5000);
D->setRate(0.0315);
cout<< " *** Principal = " << prin << " \t **** Rate = "<< rate<<endl; // 2000, 0.05
cout<< "\nYears\t Bank A(Single) \tBank B(Compound) " << endl;
cout<< "----------------------------------------------------- " << endl;
for(int i=1;i<=10;i++) {
//...............
cout << " "<<i<<"\t\t"<<A->getResult(i);
cout << "\t\t\t"<< B->getResult(i)<< endl;
}
cout << "===================================================== "<<endl;
cout<< " *** Principal = 5000 \t **** Rate = 0.0315"<<endl;
cout<< "\nYears\t Bank D(Single) \tBank C(Compound) " << endl;
cout<< "----------------------------------------------------- " << endl;
for(int i=1;i<=10;i++) {
//...............
cout << " "<<i<<"\t\t"<<D->getResult(i);
cout << "\t\t\t"<< C->getResult(i)<< endl;
}
}
0410練習A9803002 Alexis 73 81 54 66 avg:66
A9803006 Matthew 98 87 74 83 avg:84
A9803008 Aiden 83 77 82 72 avg:78
A9803011 Chrimetor 53 53 46 55 avg:51 *
A9803017 Addisory 83 88 74 57 avg:73
A9803019 Chritopher 77 83 71 88 avg:79
A9803020 Mason 63 69 88 90 avg:79
A9803023 Addison 95 97 94 82 avg:91
A9803028 Joshua 43 52 60 55 avg:53 *
A9803029 Andrew 71 79 64 72 avg:70
A9803030 Elizabeth 63 61 58 51 avg:57 *
// test.cpp: 主要專案檔。
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
using namespace System;
using namespace System::IO;
int main(array<System::String ^> ^args)
{
try {
String^ fid2="d:\\stdrec1.txt";
if(!File::Exists(fid2)){
Console::WriteLine(L" File does not exists!!");
return 0;
}
String^ fid="d:\\report.txt";
if(File::Exists(fid)){
Console::WriteLine(L" File already exists!!");
File::Delete(fid);
return 0;
}
StreamWriter^ sw=File::CreateText(fid);
StreamReader^ sr=gcnew StreamReader(fid2);
String ^line, ^sid, ^sname, ^sc1, ^sc2, ^sc3, ^sc4;
while((line = sr->ReadLine()) != nullptr){
sid=line->Substring(0,8);
sname=line->Substring(8,10);
sc1=line->Substring(19,2);
sc2=line->Substring(22,2);
sc3=line->Substring(25,2);
sc4=line->Substring(28);
int avg=Convert::ToDouble(sc1)*0.2+Convert::ToDouble(sc2)*0.2+Convert::ToDouble(sc3)*0.3+Convert::ToDouble(sc4)*0.3;
String ^fail=" ";
if(avg < 60) fail="*";
Console::WriteLine("{0} {1} {2} {3} {4} {5} avg:{6} {7}",sid,sname,sc1,sc2,sc3,sc4,avg,fail);
sw->WriteLine("{0} {1} {2} {3} {4} {5} avg:{6} {7}",sid,sname,sc1,sc2,sc3,sc4,avg,fail);
}
sr->Close();
sw->Close();
}
catch(Exception^ e){
Console::WriteLine("The file can't be read: {0}",e->Message);
}
return 0;
}
0417檔案輸出輸入ifstream (檔案輸入)、ofstream (檔案輸出) 以及 fstream (檔案輸出入)
※檔案的開啟與關閉
開啟檔案
檔案物件.open(“檔案名稱”,ios::開啟模式);
可供選擇的開啟模式
- ios::app 開啟可供附加資料的檔案
- ios::in 開啟可供讀取資料的檔案
- ios::out 開啟可供寫入資料的檔案
- ios::trunc 若檔案已存在,先刪除它,再開啟
- ios::binary 開啟二進位的輸入/輸出檔案
關閉檔案
檔案物件.close();
※文字檔的處理
將資料寫入文字檔
將資料附加到已存在的文字檔
從文字檔案讀取資料
get()、getline()、put()
利用 put() 將字串寫入檔案
文字檔的拷貝與讀取
//從檔案內讀取一個字元,並把它寫入 ch 字元變數
檔案物件.get(ch);
//從檔案內最多讀取 N-1 個字元,或是讀取到 \n
//並把它存放到字串 str 中
檔案物件.getline(str, N, ’\n’);
//將ch字元變數的值寫入檔案內
檔案物件.put(ch);
prog18_1
//prog18_1, 將資料寫入文字檔
#include <fstream> // 載入fstream標頭檔
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
ofstream ofile("c:\\donkey.txt",ios::out); // 建立ofile物件
if(ofile.is_open()) // 測試檔案是否被開啟
{
ofile << "我有一隻小毛驢" << endl; // 將字串寫入檔案
ofile << "我從來也不騎" << endl; // 將字串寫入檔案
cout << "已將字串寫入檔案..." << endl;
}
else
cout << "檔案開啟失敗..." << endl;
ofile.close(); // 關閉檔案
system("pause");
return 0;
}
prog18_2//prog18_2, 將資料附加到已存在的文字檔
#include <fstream> // 載入fstream標頭檔
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
ofstream afile("c:\\donkey.txt",ios::app); // 建立afile物件 從檔案結尾寫入(輸出)資料
if(afile.is_open()) // 測試檔案是否被開啟
{
afile << "有一天我心血來潮騎著去趕集"; // 將字串寫入檔案
cout << "已將字串附加到檔案了..." <<endl;
}
else
cout << "檔案開啟失敗..." << endl;
afile.close(); // 關閉檔案
system("pause");
return 0;
}
prog18_3//prog18_3, 從檔案讀入資料
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
char txt[40]; // 建立字元陣列,用來接收字串
ifstream ifile("c:\\donkey.txt",ios::in);
while(!ifile.eof()) // 判別是否讀到檔案的尾端
{
ifile >> txt; // 將檔案內容寫入字元陣列
cout << txt << endl;
}
ifile.close(); // 關閉檔案
system("pause");
return 0;
}
prog18_4//prog18_4, 利用put()將字串寫入檔案
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
char txt[]="Welcome to the C++ world" ; // 建立字元陣列
int i=0;
ofstream ofile("F:\\welcome.txt",ios::out);
while(txt[i] != '\0') // 判別txt[i]字元是否為字串尾端
{
ofile.put(txt[i]); // 將字元txt[i]寫入檔案
i++;
}
cout << "字串寫入完成..." << endl;
ofile.close();
system("pause");
return 0;
}
prog18_5//prog18_5, 文字檔的拷貝與讀取
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
char txt[80],ch;
ifstream ifile1("c:\\welcome.txt",ios::in);
ofstream ofile("c:\\welcome2.txt",ios::out);
while(ifile1.get(ch)) // 判別是否讀到檔案的尾端
ofile.put(ch);
cout << "拷貝完成..." << endl;
ifile1.close();
ofile.close();
ifstream ifile2("c:\\welcome2.txt",ios::in);
while(!ifile2.eof()) // 判別是否讀到檔案的尾端
{
ifile2.getline(txt,80,'\n');
cout << txt << endl;
}
ifile2.close();
system("pause");
return 0;
}
prog18_6//prog18_6, 二進位檔寫入的練習
#include <fstream> // 載入fstream標頭檔
#include <iostream>
#include <cstdlib>
#include <cmath> // 載入數學函數庫cmath
using namespace std;
int main(void)
{
double num;
ofstream ofile("c:\\binary.dat",ios::binary); // 開啟可供寫入的二進位檔
for(int i=1;i<=5;i++)
{
num=sqrt((double)i); // 將i轉成double,再計算sqrt(i)
ofile.write((char*)&num,sizeof(num)); // 將num寫入二進位檔
}
cout << "已將資料寫入二進位檔了..." << endl;
ofile.close(); // 關閉檔案
system("pause");
return 0;
}
prog18_7//prog18_7, 讀取二進位檔
#include <fstream> // 載入fstream標頭檔
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
ifstream ifile("c:\\binary.dat",ios::binary); // 開啟二進位檔
double num;
for(int i=1;i<=5;i++)
{
ifile.read((char*) &num,sizeof(num)); // 從二進位檔中讀取資料
cout << num << endl; // 印出讀取的內容
}
cout << "二進位檔已被讀取了..." << endl;
ifile.close(); // 關閉檔案
system("pause");
return 0;
}
prog18_8//prog18_8, 將物件的內容寫入二進位檔
#include <fstream> // 載入fstream標頭檔
#include <iostream>
#include <cstdlib>
using namespace std;
class CStudent
{
protected:
char name[40];
int age;
public:
void get_data(void) // 成員函數,用來輸入物件的資料成員
{
cout << "Enter name: "; cin >> name;
cout << "Enter age: "; cin >> age;
}
void show_data(void) // 成員函數,用來顯示物件的資料成員
{
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
};
int main(void)
{
CStudent st;
st.get_data();
ofstream ofile("c:\\student.dat",ios::binary);
ofile.write((char*) &st,sizeof(st)); // 將物件寫入二進位檔中
cout << "資料已寫入檔案中..." << endl;
ofile.close(); // 關閉檔案
system("pause");
return 0;
}
prog18_9//prog18_9, 從二進位檔裡讀取物件的資料
#include <fstream> // 載入fstream標頭檔
#include <iostream>
#include <cstdlib>
using namespace std;
class CStudent
{
protected:
char name[40];
int age;
public:
void get_data(void) // 成員函數,用來輸入物件的資料成員
{
cout << "Enter name: "; cin >> name;
cout << "Enter age: "; cin >> age;
}
void show_data(void) // 成員函數,用來顯示物件的資料成員
{
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
}
};
int main(void)
{
CStudent st;
ifstream ifile("c:\\student.dat",ios::binary);
ifile.read((char*) &st,sizeof(st));
st.show_data();
ifile.close(); // 關閉檔案
system("pause");
return 0;
}
0417作業Report for Ansi C++
A9803002 Alexis 73 81 54 66 avg: 66
A9803006 Matthew 98 87 74 83 avg: 84
A9803008 Aiden 83 77 82 72 avg: 78
A9803011 Chrimetor 53 53 46 55 avg: 51*
A9803017 Addisory 83 88 74 57 avg: 73
A9803019 Chritopher 77 83 71 88 avg: 79
A9803020 Mason 63 69 88 90 avg: 79
A9803023 Addison 95 97 94 82 avg: 91
A9803028 Joshua 43 52 60 55 avg: 53*
A9803029 Andrew 71 79 64 72 avg: 70
A9803030 Elizabeth 63 61 58 51 avg: 57*
使用C的atoi()與atof()。
先利用c_str()轉成C string,再用atoi()與atof()。
double n = atof(s.c_str());
int n = atoi(s.c_str());
//prog18_5, 文字檔的拷貝與讀取
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
char txt[80],ch;
string rec;
ifstream ifile("D:\\stdRec1.txt",ios::in);
ofstream ofile("D:\\report2.txt",ios::out);
if(ofile.is_open()){
ofile<< " Report for Ansi C++ "<< endl;
while(ifile.getline(txt,sizeof(txt),'\n')){
rec = txt;
string id = rec.substr(0,8);
string name = rec.substr(8,10);
double sc1 = atof(rec.substr(18,3).c_str());
double sc2 = atof(rec.substr(21,3).c_str());
double sc3 = atof(rec.substr(24,3).c_str());
double sc4 = atof(rec.substr(27,3).c_str());
//cout<<id<<" "<<name<<" "<<sc1<<" "<<sc2<<" "<<sc3<<" "<<sc4<<" "<<endl;
int avg = sc1*0.2+sc2*0.2+sc3*0.3+sc4*0.3;
string fail=" ";
if(avg < 60) fail="*";
ofile<<id<<" "<<name<<" "<<sc1<<" "<<sc2<<" "<<sc3<<" "<<sc4<<" avg: "<<avg<<fail<<endl;
}
ifile.close();
ofile.close();
}
system("pause");
return 0;
}
2014年1月4日 星期六
訂閱:
意見 (Atom)