2014年5月8日 星期四

視窗程式設計5/8

資料庫 PhoneBook.mdb
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);
    }
 };
}


沒有留言:

張貼留言