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); } } }; }老師範例
練習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: 在此加入建構函式程式碼 // } 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); } }; }
練習作業#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.mdb
A9803001 林品潔 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)