RestaurantBook,订餐
来源:互联网 发布:淘宝店铺1920大图代码 编辑:程序博客网 时间:2024/05/16 18:15
无聊时写了一个订餐的MFC。其中,发送邮件的功能是别人写的,我只是照搬过来的。
程序实现的功能是从一个TXT中读取出名字和邮件地址,然后从另一个TXT文件中读取出餐厅的名字。
界面很简单,可是没有将资源文件也发出来。大家就只能看代码了!
实现发送的代码在OK_Send的Button的点击函数中。
不多说了,看代码吧!
- // stdafx.cpp : 標準インクルードファイルを含むソース ファイル
- // RestaurantBook.pch : 生成されるプリコンパイル済ヘッダー
- // stdafx.obj : 生成されるプリコンパイル済タイプ情報
- #include "stdafx.h"
- /////////////////////////////////////////////////////////////////////////////
- // 名前とメールのグローバル変数
- char strNameList[ PCC_MAX ][LINE_MAX];
- char strMailList[ PCC_MAX ][LINE_MAX];
- char strRestList[ RES_MAX ][LINE_MAX];
- int iLengthName = 0;
- int iLengthRest = 0;
- // stdafx.h : 標準のシステム インクルード ファイル、
- // または参照回数が多く、かつあまり変更されない
- // プロジェクト専用のインクルード ファイルを記述します。
- //
- #if !defined(AFX_STDAFX_H__A2CB24D8_D723_4A1B_BED7_75C4610E6CC0__INCLUDED_)
- #define AFX_STDAFX_H__A2CB24D8_D723_4A1B_BED7_75C4610E6CC0__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #define VC_EXTRALEAN // Windows ヘッダーから殆ど使用されないスタッフを除外します。
- #include <afxwin.h> // MFC のコアおよび標準コンポーネント
- #include <afxext.h> // MFC の拡張部分
- #include <afxdisp.h> // MFC のオートメーション クラス
- #include <afxdtctl.h> // MFC の Internet Explorer 4 コモン コントロール サポート
- #ifndef _AFX_NO_AFXCMN_SUPPORT
- #include <afxcmn.h> // MFC の Windows コモン コントロール サポート
- #endif // _AFX_NO_AFXCMN_SUPPORT
- /////////////////////////////////////////////////////////////////////////////
- // 名前とメールのグローバル変数
- #include <string>
- #include <mapi.h>
- #include <stdlib.h>
- #define PCC_MAX 30
- #define RES_MAX 20
- #define LINE_MAX 60
- #define SENDEMAIL_SUCCESS 0
- #define SENDEMAIL_MAPI_NOT_INSTALLED 1
- #define SENDEMAIL_MAPILOAD_FAILED 2
- #define SENDEMAIL_LOGON_FAILED 3
- #define SENDEMAIL_SEND_FAILED 4
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。
- #endif // !defined(AFX_STDAFX_H__A2CB24D8_D723_4A1B_BED7_75C4610E6CC0__INCLUDED_)
- // RestaurantBook.cpp : アプリケーション用クラスの定義を行います。
- //
- #include "stdafx.h"
- #include "RestaurantBook.h"
- #include "RestaurantBookDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CRestaurantBookApp
- BEGIN_MESSAGE_MAP(CRestaurantBookApp, CWinApp)
- //{{AFX_MSG_MAP(CRestaurantBookApp)
- // メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
- // この位置に生成されるコードを編集しないでください。
- //}}AFX_MSG
- ON_COMMAND(ID_HELP, CWinApp::OnHelp)
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CRestaurantBookApp クラスの構築
- CRestaurantBookApp::CRestaurantBookApp()
- {
- // TODO: この位置に構築用のコードを追加してください。
- // ここに InitInstance 中の重要な初期化処理をすべて記述してください。
- }
- /////////////////////////////////////////////////////////////////////////////
- // 唯一の CRestaurantBookApp オブジェクト
- CRestaurantBookApp theApp;
- /////////////////////////////////////////////////////////////////////////////
- // 名前とメールは取得
- bool InitNameMail ( void )
- {
- char strReadLine[ LINE_MAX ];
- char *pcTemp;
- FILE *pfPCC;
- int iCout = 0;
- pfPCC = fopen( "PCC全員連絡アドレス.txt", "rb" );
- if ( NULL == pfPCC )
- {
- MessageBox( NULL, "Error during open!", "Error", MB_ABORTRETRYIGNORE);
- return FALSE;
- }
- iCout = 0;
- while ( ! feof(pfPCC) )
- {
- if ( fgets (strReadLine, LINE_MAX, pfPCC) )
- {
- pcTemp = strpbrk ( strReadLine, "," );
- pcTemp += 2;
- strncpy ( strMailList[iCout], pcTemp, LINE_MAX );
- pcTemp = strtok ( strReadLine, "," );
- strncpy ( strNameList[iCout], pcTemp, LINE_MAX );
- iCout ++;
- }
- }
- fclose ( pfPCC );
- iLengthName = iCout;
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // メール送信
- int SendEmail(const char* Address,
- const char* Subject,
- const char* Text)
- {
- int iResult;
- UINT iMapiInstalled;
- HINSTANCE hMAPIInst;
- LPMAPILOGON pMAPILogon;
- LPMAPILOGOFF pMAPILogoff;
- LPMAPISENDMAIL pMAPISendMail;
- LHANDLE lhSession;
- iResult = SENDEMAIL_SUCCESS;
- iMapiInstalled = GetProfileInt("Mail", "MAPI", 0);
- if(! iMapiInstalled)
- return SENDEMAIL_MAPI_NOT_INSTALLED;
- hMAPIInst = LoadLibrary("MAPI32.DLL");
- if(!hMAPIInst)
- return SENDEMAIL_MAPILOAD_FAILED;
- pMAPILogon = (LPMAPILOGON)
- GetProcAddress(hMAPIInst, "MAPILogon");
- pMAPILogoff = (LPMAPILOGOFF)
- GetProcAddress(hMAPIInst, "MAPILogoff");
- pMAPISendMail = (LPMAPISENDMAIL)
- GetProcAddress(hMAPIInst, "MAPISendMail");
- if(pMAPILogon(0, NULL, NULL, MAPI_LOGON_UI, 0, &lhSession)
- != SUCCESS_SUCCESS)
- {
- iResult = SENDEMAIL_LOGON_FAILED;
- }
- else /* Send the Message */
- {
- ULONG Result;
- MapiMessage Msg;
- MapiRecipDesc Recipients[1];
- Recipients[0].ulReserved = 0;
- Recipients[0].ulRecipClass = MAPI_TO;
- Recipients[0].lpszName = (char*)Address;
- Recipients[0].lpszAddress = (char*)Address;
- Recipients[0].ulEIDSize = 0;
- Recipients[0].lpEntryID = 0;
- memset(&Msg, 0, sizeof(Msg));
- Msg.lpszSubject = (char*)Subject;
- Msg.lpszNoteText = (char*)Text;
- Msg.nRecipCount = 1;
- Msg.lpRecips = Recipients;
- Result = pMAPISendMail(lhSession, 0, &Msg, 0, 0);
- if(Result != SUCCESS_SUCCESS)
- iResult = SENDEMAIL_SEND_FAILED;
- pMAPILogoff(lhSession, 0, 0, 0);
- }
- FreeLibrary(hMAPIInst);
- return iResult;
- }
- /////////////////////////////////////////////////////////////////////////////
- // レストランは取得
- bool InitRestaurant ( void )
- {
- char strReadLine[ LINE_MAX ];
- char *pcTemp;
- FILE *pfRES;
- int iCout = 0;
- pfRES = fopen( "レストラン.txt", "rb" );
- if ( NULL == pfRES )
- {
- MessageBox( NULL, "Error during open!", "Error", MB_ABORTRETRYIGNORE);
- return FALSE;
- }
- iCout = 0;
- while ( ! feof(pfRES) )
- {
- if ( fgets (strReadLine, LINE_MAX, pfRES) )
- {
- pcTemp = strtok ( strReadLine, "," );
- strncpy ( strRestList[iCout], pcTemp, LINE_MAX );
- iCout ++;
- }
- }
- fclose ( pfRES );
- iLengthRest = iCout;
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CRestaurantBookApp クラスの初期化
- BOOL CRestaurantBookApp::InitInstance()
- {
- if ( FALSE == InitNameMail () )
- {
- return 0;
- }
- if ( FALSE == InitRestaurant () )
- {
- return 0;
- }
- AfxEnableControlContainer();
- // 標準的な初期化処理
- // もしこれらの機能を使用せず、実行ファイルのサイズを小さくしたけ
- // れば以下の特定の初期化ルーチンの中から不必要なものを削除して
- // ください。
- #ifdef _AFXDLL
- Enable3dControls(); // 共有 DLL 内で MFC を使う場合はここをコールしてください。
- #else
- Enable3dControlsStatic(); // MFC と静的にリンクする場合はここをコールしてください。
- #endif
- CRestaurantBookDlg dlg;
- m_pMainWnd = &dlg;
- int nResponse = dlg.DoModal();
- if (nResponse == IDOK)
- {
- // TODO: ダイアログが <OK> で消された時のコードを
- // 記述してください。
- }
- else if (nResponse == IDCANCEL)
- {
- // TODO: ダイアログが <キャンセル> で消された時のコードを
- // 記述してください。
- }
- // ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、
- // アプリケーションを終了するために FALSE を返してください。
- return FALSE;
- }
- // RestaurantBook.h : RESTAURANTBOOK アプリケーションのメイン ヘッダー ファイルです。
- //
- #if !defined(AFX_RESTAURANTBOOK_H__ADE76C47_967F_4609_A147_4511FED06929__INCLUDED_)
- #define AFX_RESTAURANTBOOK_H__ADE76C47_967F_4609_A147_4511FED06929__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #ifndef __AFXWIN_H__
- #error include 'stdafx.h' before including this file for PCH
- #endif
- #include "resource.h" // メイン シンボル
- /////////////////////////////////////////////////////////////////////////////
- // CRestaurantBookApp:
- // このクラスの動作の定義に関しては RestaurantBook.cpp ファイルを参照してください。
- //
- class CRestaurantBookApp : public CWinApp
- {
- public:
- CRestaurantBookApp();
- // オーバーライド
- // ClassWizard は仮想関数のオーバーライドを生成します。
- //{{AFX_VIRTUAL(CRestaurantBookApp)
- public:
- virtual BOOL InitInstance();
- //}}AFX_VIRTUAL
- // インプリメンテーション
- //{{AFX_MSG(CRestaurantBookApp)
- // メモ - ClassWizard はこの位置にメンバ関数を追加または削除します。
- // この位置に生成されるコードを編集しないでください。
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- /////////////////////////////////////////////////////////////////////////////
- // 名前とメールのグローバル変数
- extern char strNameList[ PCC_MAX ][LINE_MAX];
- extern char strMailList[ PCC_MAX ][LINE_MAX];
- extern char strRestList[ RES_MAX ][LINE_MAX];
- extern int iLengthName;
- extern int iLengthRest;
- /////////////////////////////////////////////////////////////////////////////
- // メール送信
- extern int SendEmail(const char* Address,
- const char* Subject,
- const char* Text);
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。
- #endif // !defined(AFX_RESTAURANTBOOK_H__ADE76C47_967F_4609_A147_4511FED06929__INCLUDED_)
- // RestaurantBookDlg.cpp : インプリメンテーション ファイル
- //
- #include "stdafx.h"
- #include "RestaurantBook.h"
- #include "RestaurantBookDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CRestaurantBookDlg ダイアログ
- CRestaurantBookDlg::CRestaurantBookDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CRestaurantBookDlg::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CRestaurantBookDlg)
- m_ComboName = _T( "名前" );
- m_ComboMail = _T( "レストラン" );
- m_SendText = _T( "メール" );
- //}}AFX_DATA_INIT
- // メモ: LoadIcon は Win32 の DestroyIcon のサブシーケンスを要求しません。
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- }
- void CRestaurantBookDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CRestaurantBookDlg)
- DDX_Control(pDX, IDC_COMBO3, m_SendTo);
- DDX_Control(pDX, IDC_EDIT1, m_Context);
- DDX_Control(pDX, IDC_EDIT2, m_TextMail);
- DDX_Control(pDX, IDC_COMBO2, m_Mail);
- DDX_Control(pDX, IDC_COMBO1, m_Name);
- DDX_CBString(pDX, IDC_COMBO1, m_ComboName);
- DDX_CBString(pDX, IDC_COMBO2, m_ComboMail);
- DDX_CBString(pDX, IDC_COMBO3, m_SendText);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CRestaurantBookDlg, CDialog)
- //{{AFX_MSG_MAP(CRestaurantBookDlg)
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_CBN_EDITCHANGE(IDC_COMBO1, OnEditchangeComboName)
- ON_CBN_DROPDOWN(IDC_COMBO1, OnDropdownComboName)
- ON_CBN_EDITUPDATE(IDC_COMBO1, OnEditupdateComboName)
- ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeComboName)
- ON_EN_UPDATE(IDC_EDIT2, OnUpdateEdit2)
- ON_EN_KILLFOCUS(IDC_EDIT2, OnKillfocusEdit2)
- ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
- ON_BN_CLICKED(IDOK, OnOK_Send)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CRestaurantBookDlg メッセージ ハンドラ
- BOOL CRestaurantBookDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- // このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
- // ウィンドウがダイアログでない時は自動的に設定しません。
- SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
- SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
- // TODO: 特別な初期化を行う時はこの場所に追加してください。
- int iCout = 0;
- for ( iCout = 0; iCout < iLengthName; iCout ++ )
- {
- m_Name.AddString ( strNameList[iCout] );
- }
- for ( iCout = 0; iCout < iLengthRest; iCout ++ )
- {
- m_Mail.AddString ( strRestList[iCout] );
- }
- for ( iCout = 0; iCout < iLengthName; iCout ++ )
- {
- m_SendTo.AddString ( strNameList[iCout] );
- }
- return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
- }
- // もしダイアログボックスに最小化ボタンを追加するならば、アイコンを描画する
- // コードを以下に記述する必要があります。MFC アプリケーションは document/view
- // モデルを使っているので、この処理はフレームワークにより自動的に処理されます。
- void CRestaurantBookDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // 描画用のデバイス コンテキスト
- SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
- // クライアントの矩形領域内の中央
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
- // アイコンを描画します。
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialog::OnPaint();
- }
- }
- // システムは、ユーザーが最小化ウィンドウをドラッグしている間、
- // カーソルを表示するためにここを呼び出します。
- HCURSOR CRestaurantBookDlg::OnQueryDragIcon()
- {
- return (HCURSOR) m_hIcon;
- }
- void CRestaurantBookDlg::OnEditchangeComboName()
- {
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- }
- void CRestaurantBookDlg::OnDropdownComboName()
- {
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- int iCout = 0;
- }
- void CRestaurantBookDlg::OnEditupdateComboName()
- {
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- }
- void CRestaurantBookDlg::OnSelchangeComboName()
- {
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- /*
- CString strTemp;
- char pcTemp [LINE_MAX];
- int iCout = 0;
- m_Name.GetWindowText( strTemp );
- sprintf ( pcTemp, "%s", strTemp);
- for ( iCout = 0; iCout < iLengthName; iCout ++ )
- {
- if ( !strcmp (pcTemp, strNameList[iCout]) )
- break ;
- }
- UpdateData ( FALSE );
- if ( iCout < iLengthName )
- {
- m_TextMail.SetWindowText ( strMailList[ iCout ] );
- }
- else
- {
- m_TextMail.SetWindowText ( "?" );
- }
- UpdateData ( TRUE );
- */
- }
- void CRestaurantBookDlg::OnUpdateEdit2()
- {
- // TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
- // 内での論理和の ENM_UPDATE フラグ付きで EM_SETEVENTMASK
- // メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
- // ライドしない限りこの通知を送りません。
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- }
- void CRestaurantBookDlg::OnKillfocusEdit2()
- {
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- UpdateWindow();
- }
- void CRestaurantBookDlg::OnButton1()
- {
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- CString strTemp;
- char pcTemp1 [LINE_MAX*PCC_MAX];
- char pcTemp2 [LINE_MAX*PCC_MAX];
- int iCout = 0;
- m_Name.GetWindowText( strTemp );
- sprintf ( pcTemp1, "%s", strTemp );
- for ( iCout = 0; iCout < iLengthName; iCout ++ )
- {
- if ( !strcmp (pcTemp1, strNameList[iCout]) )
- break ;
- }
- m_Mail.GetWindowText( strTemp );
- sprintf ( pcTemp2, " ⇒ %s/r/n", strTemp );
- strcat ( pcTemp1, pcTemp2 );
- m_Context.GetWindowText ( strTemp );
- sprintf ( pcTemp2, "%s", strTemp );
- strcat ( pcTemp2, pcTemp1 );
- m_Context.SetWindowText ( pcTemp2 );
- if ( iCout < iLengthName )
- {
- strcpy ( pcTemp2, strMailList[ iCout ] );
- //strcat ( pcTemp2, "/r/n" );
- }
- else
- {
- strcpy ( pcTemp2, "???/r/n" );
- }
- m_TextMail.GetWindowText ( strTemp );
- sprintf ( pcTemp1, "%s", strTemp );
- strcat ( pcTemp1, pcTemp2 );
- m_TextMail.SetWindowText ( pcTemp1 );
- }
- void CRestaurantBookDlg::OnOK_Send()
- {
- // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
- CString strTemp;
- char pcTemp [LINE_MAX*PCC_MAX];
- char pcTemp1 [LINE_MAX*PCC_MAX];
- int iCout = 0;
- m_Context.GetWindowText ( strTemp );
- sprintf ( pcTemp, "%s", strTemp );
- m_SendTo.GetWindowText( strTemp );
- sprintf ( pcTemp1, "%s", strTemp );
- for ( iCout = 0; iCout < iLengthName; iCout ++ )
- {
- if ( !strcmp (pcTemp1, strNameList[iCout]) )
- break ;
- }
- if ( iCout < iLengthName )
- {
- sprintf ( pcTemp1, "SMTP:%s", strMailList[ iCout ] );
- }
- else
- {
- strcpy ( pcTemp1, "SMTP:yashiro319@gmail.com" );
- }
- SendEmail( pcTemp1, "RestaurantBookServer", pcTemp );
- }
- // RestaurantBookDlg.h : ヘッダー ファイル
- //
- #if !defined(AFX_RESTAURANTBOOKDLG_H__3DA81B7B_8867_44EE_BF9D_49D0D1630D3C__INCLUDED_)
- #define AFX_RESTAURANTBOOKDLG_H__3DA81B7B_8867_44EE_BF9D_49D0D1630D3C__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- /////////////////////////////////////////////////////////////////////////////
- // CRestaurantBookDlg ダイアログ
- class CRestaurantBookDlg : public CDialog
- {
- // 構築
- public:
- CRestaurantBookDlg(CWnd* pParent = NULL); // 標準のコンストラクタ
- // ダイアログ データ
- //{{AFX_DATA(CRestaurantBookDlg)
- enum { IDD = IDD_RESTAURANTBOOK_DIALOG };
- CComboBox m_SendTo;
- CEdit m_Context;
- CEdit m_TextMail;
- CComboBox m_Mail;
- CComboBox m_Name;
- CString m_ComboName;
- CString m_ComboMail;
- CString m_SendText;
- //}}AFX_DATA
- // ClassWizard は仮想関数のオーバーライドを生成します。
- //{{AFX_VIRTUAL(CRestaurantBookDlg)
- protected:
- virtual void DoDataExchange(CDataExchange* pDX);
- //}}AFX_VIRTUAL
- // インプリメンテーション
- protected:
- HICON m_hIcon;
- // 生成されたメッセージ マップ関数
- //{{AFX_MSG(CRestaurantBookDlg)
- virtual BOOL OnInitDialog();
- afx_msg void OnPaint();
- afx_msg HCURSOR OnQueryDragIcon();
- afx_msg void OnEditchangeComboName();
- afx_msg void OnDropdownComboName();
- afx_msg void OnEditupdateComboName();
- afx_msg void OnSelchangeComboName();
- afx_msg void OnUpdateEdit2();
- afx_msg void OnKillfocusEdit2();
- afx_msg void OnButton1();
- afx_msg void OnOK_Send();
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。
- #endif // !defined(AFX_RESTAURANTBOOKDLG_H__3DA81B7B_8867_44EE_BF9D_49D0D1630D3C__INCLUDED_)
- RestaurantBook,订餐
- 订餐系统之地图订餐
- 订餐系统之地图订餐
- 订餐系统
- 订餐系统
- 关于订餐系统
- 自助订餐系统
- 订餐系统处理
- 自动订餐系统
- 订餐系统总结
- 自动订餐
- 自主订餐脚本
- 订餐系统
- 作业:订餐系统
- 餐厅订餐
- 订餐系统:订餐管理系统的一些故事
- 网上外卖订餐运营
- Project2 简单订餐系统
- symbian解析XML学习之路(五)
- 小议HashMap
- MFC中消息映射机制分析
- ASP.NET 2.0 Login控件使用技巧(一) - 迁徙数据库,个性化Login控件
- 最小二乘法拟合
- RestaurantBook,订餐
- HttpCookie.HttpOnly VS Cookie.HttpOnly?(downmoon原创)
- unix学习方法-高手之路
- self-paced improvement
- Python的一些小技巧小知识
- 十句话(推荐)
- 给公司的应届新员工加餐,让他们知道如何“死”!
- 浅析游戏引擎开发
- 使用ASP.NET判断进程是否存在和结束进程