❶ 怎麼編寫菜單式程序
用VB做一個記事本實在不很復雜,我們完全可以通過向導來很方便地做出來。但本文只打算討論用手動方法製作記事本,旨在向VB初學者展示:學VB原來是如此容易!
通過閱讀、研究本文並按本文所述進行嘗試,初學者將神碧運學到很多東西,如怎樣使用RichText控制項來打開和保存文件,怎樣製作菜單、工具欄和狀態欄以及如何對其編寫代碼等。
第一章 讓我們的記事本馬上運行
急於求成是初學者共有的心願。那好,請按如下三個步驟做,我們的願望立即就可以實現!
步驟一:繪制界面。
新建一個標准EXE工程,將其Caption屬性改為「超級記事本」,點擊Icon屬性給它找個合適的Icon圖標。單擊菜單「工程」-「部件」,在彈出的「部件」對話框里找到Microsoft RichText Box 6.0和公共對話框Microsoft Common Dialog 6.0並選中它們,單擊「確定」按鈕。這時左邊的工具欄上出現了我們剛才新添的兩個控制項了。在窗體上繪制RichText Box和Commn Dialog,其中RichText Box的大小和位置可不用理睬,我們將在代碼中處理它,當然,有必要把它的ScrollBar屬性設游梁為2-rtfVertical,這樣在打開和編輯文件時垂直滾動條才可用。
步驟二:編輯菜單。
按Ctrl+E調出菜單編輯器,我們來做如下幾個菜單:
一.文件菜單:
文件(第一層) mnuFile
新建(第二層) mnuNew
打開(第二層) mnuOpen
保存(第二層) mnuSave
- (第二層) mnuFileSep (分隔線)
退出(第二層) mnuExit
二.編輯菜單:
編輯(第一層) mnuEdit
復制(第二層) mnuCopy
剪切(第二層) mnuCut
粘貼(第二層) mnuPaste
- (第二層) mnuEditSep (分隔線)
全選(第二層) mnuSelecAll
三.搜索菜單:
搜索(第一層) mnuSearch
查找(第二層) mnuFind
查找下一個(第二層) mnuFindOn
四.幫助菜單:
幫助(第一層) mnuHelp
使用說明(第二層) mnuUsage
關於(第二層) mnuAbout
(註:各菜單項的快捷鍵請自行設置)
好了,其它的菜單項以後再根據需要添加。現在進入:
步驟三:編寫代碼。
』聲明查找變數
Dim sFind As String
』聲明文件類型
Dim FileType, FiType As String
』初始化程序
Private Sub Form_Load()
』設置程序啟動時的大小
Me.Height = 6000
Me.Width = 9000
End Sub
』設置編輯框的位置和大小
Private Sub Form_Resize()
On Error Resume Next 』出錯處理
RichTextBox1.Top=20
RichTextBox1.Left=20
RichTextBox1.Height = ScaleHeight-40
RichTextBox1.Width = ScaleWidth-40
End Sub
』新建文件
Private Sub mnuNew_Click()
RichTextBox1.Text = "" 』清空文本框
FileName = "未命名"
Me.Caption = FileName
End Sub
』打開文件
Private Sub mnuOpen_Click()
CommonDialog1.Filter = "文本文檔(*.txt)│*.txt│RTF文檔(*.rtf)│*.rtf│所有文件(*.*)│*.*"
CommonDialog1.ShowOpen
RichTextBox1.Text = "" 』清空文本框
FileName = CommonDialog1.FileName
RichTextBox1.LoadFile FileName
Me.Caption = "超級記事本:" & FileName
End Sub
』保存文件
Private Sub mnuSave_Click()
CommonDialog1.Filter = "文本文檔(*.txt)│*.txt│RTF文檔慧液(*.rtf)│*.rtf│所有文件(*.*)│*.*"
CommonDialog1.ShowSave
FileType = CommonDialog1.FileTitle
FiType = LCase(Right(FileType, 3))
FileName = CommonDialog1.FileName
Select Case FiType
Case "txt"
RichTextBox1.SaveFile FileName, rtfText
Case "rtf"
RichTextBox1.SaveFile FileName, rtfRTF
Case "*.*"
RichTextBox1.SaveFile FileName
End Select
Me.Caption = "超級記事本:" & FileName
End Sub
』退出
Private Sub mnuExit_Click()
End
End Sub
』復制
Private Sub mnuCopy_Click()
Clipboard.Clear
Clipboard.SetText RichTextBox1.SelText
End Sub
』剪切
Private Sub mnuCut_Click()
Clipboard.Clear
Clipboard.SetText RichTextBox1.SelText
RichTextBox1.SelText = ""
End Sub
』全選
Private Sub mnuSelectAll_Click()
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
End Sub
』粘貼
Private Sub mnuPaste_Click()
RichTextBox1.SelText = Clipboard.GetText
End Sub
』查找
Private Sub mnuFind_Click()
sFind = InputBox("請輸入要查找的字、詞:", "查找內容", sFind)
RichTextBox1.Find sFind
End Sub
』繼續查找
Private Sub mnuFindOn_Click()
RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1
RichTextBox1.Find sFind, , Len(RichTextBox1)
End Sub
』使用說明
Private Sub mnuReadme_Click()
On Error GoTo handler
RichTextBox1.LoadFile "Readme.txt", rtfText 』請寫好Readme.txt文件並存入程序所在文件夾中
Me.Caption = "超級記事本:" & "使用說明"
Exit Sub
handler:
MsgBox "使用說明文檔可能已經被移除,請與作者聯系。", vbOKOnly, " 錯誤信息"
End Sub
』關於
Private Sub mnuAbout_Click()
MsgBox "超級記事本 Ver1.0 版權所有(C) 2001 土人",vbOKOnly,"關於"
End Sub
』設置彈出式菜單(即在編輯框中單擊滑鼠右鍵時彈出的動態菜單)
Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu mnuEdit, vbPopupMenuLeftAlign
Else
Exit Sub
End If
End Sub
』防止在切換輸入法時字體自變(感謝王必成先生提供此方案)
Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then
RichTextBox1.SelFontName = CommonDialog1.FontName
End If
End Sub
至此,我們的記事本可以編譯使用了。點擊菜單「文件」-「生成XXX.EXE」,回到桌面運行我們的記事本看看,是不是頗有成就感?
當然,這樣的記事本還比較粗糙,我們還需要做些工作,請看下一章。
第二章 美化程序界面
多數字處理軟體都有工具欄和狀態欄。工具欄和狀態欄除了能美化我們的程序使其更具有專業性質外,還給用戶帶來操作上的便利。現在我們就來做一做這兩樣東西。
一.工具欄
(一)製作工具欄
單擊「工程」-「部件」,選中Microsoft Windows Common Control 6.0並確定。這時,我們要用到的控制項就出現在左邊的工具欄上了。
要做工具欄,首先需要一個叫ImageList的控制項來裝載圖像。在程序界面上添加它,然後右鍵單擊此控制項,左鍵單擊「屬性」,彈出「屬性頁」對話框的「圖像」,再單擊「插入圖片」就可以一次性裝載圖片了(如不滿意,以後還可以添加)。圖片可在C:\Microsoft Visual Studio\Common\Graphics\Bitmaps\TlBr_W95下選擇(這里假設你的VB安裝在C盤下)。注意了:在插入圖片時給每一張圖片註明關鍵字,以便在引用圖片時不至於混亂。如插入「新建」的圖片,我們在「關鍵字」欄註明「New」。
圖片有了,接下來在程序界面添加工具欄(ToolBar)。添加後工具欄就出現在菜單下面,右鍵單擊它,選擇「屬性」,在彈出的「屬性頁」對話框中的「通用」項作些設置,主要如下兩項:
1.「圖像列表」:選擇ImageList1
2.「樣式」:根據喜愛選擇1-trbStandard或者2-trbFlat
繼續點擊「屬性頁」的「按鈕」選項,插入若干按鈕。按鈕有多種樣式,請根據需要設置。這里請一定注意:每一個與用戶操作有關的按鈕都必須註明關鍵字、裝載圖片,如「新建」按鈕,在「關鍵字」項註明「新建」,在「圖像」項鍵入「New」(即ImageList1中的圖片關鍵字),需要的話還可以在「工具提示文本」項填入適當的提示語。
(二)編寫工具欄的按鈕代碼
工具欄按鈕的代碼編輯很簡單,可以按照下面的格式去編寫:
Private Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next 』出錯處理
Select Case Button.Key 』按關鍵字選擇
Case "新建"
mnuNew_Click 』等於菜單項「新建」被單擊
Case "打開" 』等於菜單項「打開」被單擊
mnuOpen_Click
』......(繼續編寫其它按鈕的代碼)
End Select
End Sub
完成後試運行一下我們的程序,我們發現,有了工具欄之後,程序變得漂亮多了,只是有一個問題:打開一個較長的文檔後,編輯框的下拉滾動條向上的箭頭不見了。原因是:工具條佔用一定的空間。解決方法:將「設置編輯框的位置和大小」中的RichTextBox1.Top = 20 和 RichTextBox1.Height = Me.ScaleHeight - 40分別改為RichTextBox1.Top = 380,RichTextBox1.Height = Me.ScaleHeight - 400即可。
二.狀態欄
(一)製作狀態欄
狀態欄的英文名字叫StatusBar,在窗體上添加它後會默認出現在窗體的最下方。用滑鼠右鍵點擊它,調出「屬性頁」對話框,單擊「窗格」項,插入一些窗格,可以將各個窗格的「樣式」設置為:
0-sbrText 顯示文本,需編寫代碼
1-sbrCaps 顯示大小寫狀態,無需編程
2-sbrNum 顯示NumLock鍵開關狀態,無需編程
3-sbrIns 顯示Insert鍵狀態,無需編程
4-sbrScr1
5-sbrTime 顯示時間,不編程時時間不會隨系統時鍾變化
6-sbrDate 顯示日期,無需編程
注意:加進狀態欄後需將Form_Resze中的RichTextBox1.Height = Me.ScaleHeight - 400改為RichTextBox1.Height = Me.ScaleHeight - 600。
(二)狀態欄根據其「樣式」屬性決定用不用編寫代碼(如上文所述)。下面舉些例子,讀者可以認真揣摩,從而達到舉一反三的效果。
例一:用戶選取了「新建」後,讓第一個窗格顯示:「目前狀態:正在打開文件《……》」。請將下面代碼寫進「打開」菜單裡面:
StatusBar1.Panels(1).Text = "目前狀態:正在打開文件" & "《" &CommonDialog1.FileTitle & "》"
例二:讓第三個窗格顯示時間並讓時間跟隨系統時鍾變化。
首先,給程序加一個Timer控制項,將其Interval屬性設為1000。然後:
在Form_Load過程加入:StatusBar1.Panels(1).Text = Time;然後給Timer控制項編寫代碼:
Private Sub Timer1_Timer()
If StatusBar1.Panels(3).Text < > CStr(Time) Then
StatusBar1.Panels(3).Text = Time
End If
End Sub
例三:當編輯框的文本發生變化時讓第一個窗格顯示:「正在編輯文檔:文件名」。
Private Sub RichTextBox1_Chang()
StatusBar1.Panels(1).Text = "正在編輯文檔:" & CommonDialog1.FileName
End Sub
辛苦了那麼久,我們現在已經擁有一個象模象樣的記事本了。這個記事本由於用了RichText控制項,理論上它能打開和編輯任意大的文檔,使用起來的確比Windows自帶的記事本方便得多。當然,還有一些其它的功能需要添加和完善,這就靠你慢慢去完成了。
❷ 用c語言寫一個簡單的菜單程序,一個主函數至少四個子函數急求!!就像這樣的。
分析:問題庫(QAS)用外部的配置文件保存,每次運行前先載入庫中已經建立的問題伍禪歲。然後再進入操作選擇。完整代碼如下:/*1.暫時不考慮漢字;2.可以用鏈表優化;3.將每一種操作封裝成一個函數;*/#include#include#include#include///////////////////////腔睜/////////////////////////////////////////////////////字元串最大長度#defineMAX_STR_LEN2048//題庫上限#defineMAX_QAS_LEN1024//配置文件路徑#defineQAS_FILE_PATH"d:\\qasconfig.txt"////////////////////////////////////////////////////////////////////////////問題結點typedefstructtagQASNode{charQuestion[MAX_STR_LEN];charAnswer[MAX_STR_LEN];doubleScore;boolIsAnswered;}QASNode;//問題庫QASNode*g_QASLib[MAX_QAS_LEN];intg_QASIndex=0;////////////////////////////////////////////////////////////////////////////添加boolInsertToLib(char*pQuestion,char*pAnswer,doublescore){if(pQuestion==NULL||strcmp(pQuestion,"")==0||pAnswer==NULL)returnfalse;QASNode*pNewNode=(QASNode*)malloc(sizeof(QASNode));memset(pNewNode,0L,sizeof(QASNode));strcpy_s(pNewNode->Question,pQuestion);strcpy_s(pNewNode->Answer,pAnswer);pNewNode->Score=score;g_QASLib[g_QASIndex++]=pNewNode;returntrue;}//隨機一個不重復的序號intGetQuestionIndex(){intretVal=-1;inttryCnt=0;while(tryCnt++IsAnswered){retVal=randVal;break;}}returnretVal;}//////////////////////////////////襲唯////////////////////////////////////////intmain(){//打開配置文件FILE*pStream=NULL;if(fopen_s(&pStream,QAS_FILE_PATH,"a+")!=0){printf_s("Opentheconfigfilefailed.\n");return-1;}//載入已有的QASfseek(pStream,0L,SEEK_END);intfileSize=ftell(pStream);fseek(pStream,0L,SEEK_SET);while(!feof(pStream)&&fileSize){if(g_QASIndexQuestion);printf_s("Inputanswer:");chartempA[MAX_STR_LEN]={0};fflush(stdin);gets_s(tempA,MAX_STR_LEN);if(strcmp(tempA,g_QASLib[currentIndex]->Answer)==0){printf("Right!\n");totalSocore+=g_QASLib[currentIndex]->Score;g_QASLib[currentIndex]->IsAnswered=true;}else{printf("Wrong!\n");}}else{printf("你已經答對了所有的問題!\n");}}break;case2:{if(currentIndex!=-1){printf("Quest:%s\nScore=%.2f\n",g_QASLib[currentIndex]->Question,g_QASLib[currentIndex]->Score);}else{printf("請先選擇\"回答問題\"!\n");}}break;case3:{//一次只添加一個問題if(g_QASIndexQuestion,g_QASLib[i]->Answer,g_QASLib[i]->Score);}}break;default:break;}}printf("\n");return0;}運行起來後先建立問題庫!
❸ 用匯編語言寫一個簡單的菜單選擇程序
裸機還是dos平台,或者windows平台
❹ 用C++編程:實現一個簡單菜單程序,運行時顯示「Menu:A(dd) D(elete) S(ort) Q(uit),Select one: 」
char c;
while(1)
{printf("A.增加\nB.刪除\nC.排梁嫌序\nD.退出\n");
c=getchar();
if(c=='A')printf("數據已增加");
else if(c==『B』)printf("數據已刪除");
else if(c=='C')printf("消渣碧數據已拿舉排序");
else if(c=='D')break;
}
❺ 實現一個簡單的菜單程序,運行時顯示「Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"提示用戶輸入
#include <iostream.h>
#include <stdlib.h>
void main()
{
char choice,c;
while(1)
{
cout << "Menu: A(dd) D(elete) S(ort) Q(uit),伏納 Select one:";
cin >> c;
choice = toupper(c);
if (choice == 'A')
{
cout << "數據已經增加. " << endl;
continue;
}
else if (choice == 'D')
{
cout << "數據已模廳陸經刪除. " << endl;
continue;
}
else if (choice == 'S')
{
cout << "數據旦頃已經排序. " << endl;
continue;
}
else if (choice == 'Q')
break;
}
}
❻ C語言編程做一個簡單的菜單
#include<stdio.h>
#include<stdlib.h>
voidmenu()//菜單繪制
{
printf("--------------------------------------- ");
printf(" 0.退出 ");
printf(" 1.錄入信息 ");
printf(" 2.查找信息 ");
printf(" 3.刪除信息 ");
printf(" 4.瀏覽信息 ");
printf(" 5.有其他疑問找群主")
printf(" 6.C++8群:491994603")
printf("--------------------------------------- ");
}
voidkeyDown()//按鍵處理
{
intchoice;
scanf("%d",&choice);
switch(choice)
{
case0:
printf("退出程序 ");
Sleep(2000);
return0;
case1:
//調用菜單1實現函數
break;
case2:
//調用菜單2實現函數
break;
case3:
//調用菜單3實現函數
break;
case4:
//調用菜單4實現函數
break;
default:
printf("輸入錯誤 ");
}
system("pause");
return0;
}
intmain()
{
while(1)
{
menu();
keyDown();
system("cls");
}
return0;
}
❼ 用c語言製作一個簡單的菜單程序,一個主函數四個子函數
給你一個簡單的菜單程序吧。其中的子函數,填充成樓主所需即可。
#include<stdio.h>
/*子函數1*/
fun1(){
printf("子槐橋函數1 ");
}
/*子函數2*/
fun2(){
printf("子函數2 ");
}
/*子函數3*/
fun3(){
printf("子函數3 ");
}
/*子函數4*/
fun4(){
printf("子函數4 ");
}
intmain(void){
intkey;/*命令編號*/
do{
system("cls");/*清屏*/
/*列印菜單*/
printf("====================================================== ");
printf("# 功能詳情 ");
printf("------------------------------------------------------ ");
printf("1 功能1 ");
printf("2 功能2 ");
printf("3 功能3 ");
printf("4 功能4 ");
printf("5 退出 ");
printf("====================================================== ");
printf(" ");
printf("請輸入納仿命令編號以開啟操作:");
/*輸入命令編號*/
scanf("%d",&key);
printf(" ");
/*switch函數實現輸入功能序號執行相應函數*/
switch(key){
case1:fun1();break;/*子函數1*/
case2:fun2();break;/*子函數2*/
case3:fun3();break;/*子函數3*/
case4:fun4();break;/*子函數4*/
case5:printf("程序結束!按任意鍵退出... ");break;
default:printf("輸入錯誤,請重新輸入! ");break;
}
/*屏幕洞明纖暫留*/
if(key!=5){
printf(" ");
printf("按Enter鍵繼續... ");
printf(" ");
fflush(stdin);
getch();
}
}while(key!=5);
/*屏幕暫留*/
fflush(stdin);
getch();
return0;
}
運行結果
❽ 用C語言製作一個簡單實用菜單的程序。
#include<iostream>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
usingnamespacestd;
voidxuanzepaixu()//選擇排序函數
{
printf("待添加,請按任意鍵繼續...");
getchar();
}
voiderfenpaixu()//二分查找函數
{
printf("待添加,請按任意鍵繼續...");
getchar();
}
voidmenu()//主菜單
{
system("cls");//清屏
printf(" 菜單 ");
printf(" #***********************# ");
printf(" #1選擇排序# ");
printf(" #2二分查找# ");
printf(" #3返回# ");
printf(" #4---關閉# ");
printf(" #***********************# ");
printf(" 請選擇(1-4)=:");
}
voidmain()
{
charselect;
while(1)
{
menu();
system("COLOR9f");
scanf("%c",&select);
if(select=='3')
break;//返回上級菜單
else
{
getchar();//讀入回車符
if(!isdigit(select))//如果不是數字字元
{
printf(" 7Yourselectmaybewrong,mustenterthedigit! ");_getch();
}
else
{
switch(select)
{
case'1':xuanzepaixu();break;
case'2':erfenpaixu();break;
case'4':exit(0);//直接退出
default:
{
printf(" 77Yourselecteddigitmaybewrong,selectagain! ");
_getch();
break;
}
}
}
}
}
}
❾ c語言設計菜單程序的結構體(只是最簡單的菜單)(c語言菜單選擇程序設計)
實現步驟:
1,在LV的編輯菜單中選擇『運行時賣掘菜單』菜單
2,在出現的對話框中選擇菜單御配洞類型為自定義,然後編輯自己的菜單
3,在程序框圖中中添加事件結構,選擇添加結構,事件類鎮枯型為:本VI-菜單選擇(用戶)
4,編輯條件結構處理各個菜單標識符對應的事件
❿ 實現一個簡單的菜單程序,要求使用循環和switch語句實現
完整的程序如下殲旦所示:
#include<iostream>
using
namespace
std;
void
main()
{
char
c;
cout<<"Menu:
A(dd)
D(elete)
S(ort)
Q(uit)
,please
select
one:"<<endl;
while((c=getchar())!='Q')
{
getchar();
switch(c)
{
case
'A':
cout<<"數據已經轎改扮增加!"<<endl;
break;
case
'D':
cout<<"數據已經刪除!"<<endl;
break;
case
'S':
cout<<"數據已經排序!"<<endl;
break;
default:
cout<<"請輸入大寫字閉灶母A、D、S、Q,輸入Q時退出程序!"<<endl;
}
}
}
說明:以上程序在VS2005中正確運行。若要在VC6.0中運行程序,請把頭文件替換為:#include
<iostream.h>
Hello!別忘了給分呀!