㈠ vb基本演算法
需要什麼樣的基本演算法呢?
㈡ 計算機二級Vb的考試大綱麻煩告知一下!
1. 熟悉Visual Basic集成開發環境。
2. 了解Visual Basic中對象的概念和事件驅動程序的基本特性。
3. 了解簡單的數據結構和演算法
4. 能夠編寫和調試簡單的Visual Basic程序。
考試內容
一、Visual Basic程序開發環境
1. Visual Basic的特點和版本。
2. Visual Basic的啟動與退出。
3. 主窗口:
(1) 標題和菜單。
(2) 工具欄。
4. 其它窗口:
(1)窗體設計器和工程資源管理器。
(2)屬性窗口和工具箱窗口。
二、對象及其操作
1.對象:
(1)Visual Basic的對象。
(2)對象屬性設置。
2.窗體:
(1)窗體的結構與屬性。
(2)窗體事件。
3.控制項:
(1)標准控制項。
(2)控制項的命名和控制項值。
4.控制項的畫法和基本操作。
5.事件驅動。
三、數據類型及運算
1.數據類型:
(1)基本數據類型。
(2)用戶定義的數據類型。
2.常量和變數:
(1)局部變數和全局變數。
(2)變體類型變數。
(3)預設聲明。
3.常用內部函數。
4.運算符和表達式:
(1)算術運算符。
(2)關系運算符和邏輯運算符。
(3)表達式的執行順序。
四、數據輸入輸出
1.數據輸出:
(1)Print方法。
(2)與Print方法有關的函數(Tab,Spc,Space $)。
(3)格式輸出(Format $)。
2.InputBox函數。
3.MsgBox函數和MsgBox語句。
4.字形。
5.列印機輸出:
(1)直接輸出。
(2)窗體輸出。
五、常用標准控制項
1.文本控制項:
(1)標簽。
(2)文本框。
2.圖形控制項:
(1)圖片框、圖象框的屬性、事件和方法。
(2)圖形文件的裝入。
(3)直線和形狀。
3.按鈕控制項。
4.選擇控制項:復選框和單選按鈕。
5.選擇控制項:列表框和組合框。
6.滾動條。
7.記時器。
8.框架。
9.焦點和Tab順序。
六、控制結構
1.選擇結構:
(1)單行結構條件語句。
(2)塊結構條件語句。
(3)IIf函數。
2.多分支結構。
3.For循環控制結構。
4.當循環控制結構。
5.Do 循環控制結構。
6.多重循環。
七、數組
1.數組的概念:
(1)數組的定義。
(2)靜態數組和動態數組。
2.數組的基本操作:
(1)數組元素的輸入、輸出和復制。
(2)ForEach…Next語句。
(3)數組的初始化。
3.控制項數組。
八、過程
1.Sub過程:
(1)Sub過程的建立。
(2)調用Sub過程。
(3)調用過程和事件過程。
2.Funtion過程:
(1)Funtion過程的定義。
(2)調用Funtion過程。
3.參數傳送:
(1)形參與實參。
(2)引用。
(3)傳值。
(4)數組參數的傳送。
4.可選參數和可變參數。
5.對象參數:
(1)窗體參數。
(2)控制項參數。
九、菜單和對話框
1.用菜單編輯器建立菜單。
2.菜單項的控制:
(1)有效性控制。
(2)菜單項標記。
(3)鍵盤選擇。
3.菜單項的增減。
4.彈出式對話框。
5.通用對話框。
6.文件對話框。
7.其它對話框(顏色、字體、列印對話框)。
十、多重窗體與環境應用
1. 建立多重窗體應用程序。
2. 多重窗體程序的執行與保存
3. Visual Basic工程結構:
(1)標准模塊
(2)窗體模塊。
(3)SubMain過程。
4.閑置循環與DoEvents語句。
十一、鍵盤與滑鼠事件過程
1. KeyPress事件。
2. KeyDown事件和KeyUp事件。
3. 滑鼠事件。
4. 滑鼠游標。
5. 拖放。
十二、數據文件
1. 文件的結構與分類。
2. 文件操作語句和函數。
3. 順序文件:
(1)順序文件的寫操作。
(2)順序文件的讀操作。
4. 隨機文件。
(1) 隨機文件的打開與讀寫操作。
(2) 隨機文件中記錄的增加與刪除。
(3) 用控制項顯示和修改隨機文件。
5. 文件系統控制項:
(1) 動器列表框和目錄列表框。
(2) 文件列表框。
6. 文件基本操作。
公共基礎知識
基本要求
1.掌握演算法的基本概念。
2.掌握基本數據結構及其操作。
3.掌握基本排序和查找演算法。
4.掌握逐步求精的結構化程序設計方法。
5.掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。
6.掌握資料庫的基本知識,了解關系資料庫的設計。
考試內容
一、基本數據結構與演算法
1.演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)。
2.數據結構的定義;數據的邏輯結構與存儲結構;數據結構的圖形表示;線性結構與非線性結構的概念。
3.線性表的定義;線性表的順序存儲結構及其插入與刪除運算。
4.棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。
5.線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。
6.樹的基本概念;二叉樹的定義及其存儲結構;二叉樹的前序、中序和後序遍歷。
7.順序查找與二分法查找演算法;基本排序演算法(交換類排序,選擇類排序,插入類排序)。
二、程序設計基礎
1.程序設計方法與風格
2.結構化程序設計。
3.面向對象的程序設計方法,對象,方法,屬性及繼承與多態性。
三、軟體工程基礎
1.軟體工程基本概念,軟體生命周期概念,軟體工具與軟體開發環境。
2.結構化分析方法,數據流圖,數據字典,軟體需求規格說明書。
3.結構化設計方法,總體設計與詳細設計。
4.軟體測試的方法,白盒測試與黑盒測試,測試用例設計,軟體測試的實施,單元測試、集成測試和系統測試。
5.程序的調試,靜態調試與動態調試。
四、資料庫設計基礎
1.資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統。
2.數據模型,實體聯系模型及E―R圖,從E―R圖導出關系數據模型。
3.關系代數運算,包括集合運算及選擇、投影、連接運算,資料庫規范化理 論。
4.資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略。
考試方式
1. 筆試:90分鍾,滿分100分,其中含公共基≈ 恫糠值?0分。
2. 上機操作:90分鍾,滿分100分。
上機操作包括:
(1) 基本操作。
(2) 簡單應用。
(3) 綜合應用。
㈢ VB學習的重點是哪些方面
VB可以作為你接觸現代流行編程的一個開始。 在ASP動態網頁的設計中會原封不動的運用到大量的VB知識。另外,在ASP.NET中也有VB的升級版VB.NET的應用,原理類似。 最重要的是,程序語言的總體思想大相徑庭,學精了一門程序語言後,學習另一門就易如反掌。希望我的這些經驗對你有幫助。 1,學習程序設計的基本要求 2,Vb的功能及特點 3,學習VB程序設計的方法 對學習者知識的要求: 首先,學習程序設計要具備一定的數學基礎.計算機與數學有很大的聯系,綜觀計算機歷史,計算機的數學模型(圖靈機,由Alan Turing提出)和體系結構(由John Von Neuman提出)等都是由數學家提出的,最早的計算機也是為數值計算而設計的.因此,要學習好計算機就要有一定的數學基礎.不過對於初學者來說,在數學基礎方面的要求並不是很高,從我個人的角度來看,有高中數學水平就差不多了. 如何學好VB程序設計 學習程序設計基本要求學者知識的要求: 其次,學習程序設計要有一定的邏輯思維能力.邏輯思維需要長時間的鍛煉,如果你覺得自己在邏輯思維能力上有不足,也沒有關系,因為編寫程序本身也是對邏輯思維的鍛煉.初學程序設計應具備的邏輯基礎可以從高中數學中學到. 如何學好VB程序設計 學習程序設計基本要求 熟悉Visual Basic操作環境設計工具,能設計應用程序界面. 掌握,理解面向對象程序設計基本概念 掌握VB語言的基礎知識,程序設計方法, 能閱讀一般難的程序; 能應用編寫一些簡單程序; 具有用Visual Basic開發Windows環境下應用程的能力和閱讀分析一般難度的VB程序的能力. 這樣你就可以象在畫板上一樣,隨意點幾下滑鼠,一個按鈕就完成了,這些在以前的編程語言下是要經過相復雜的工作的. 何為可視 Visual Basic的特點 1. 具有面向對象的可視化設計工具 2. 事件驅動的編程機制 3. 結構化的程序設計語言 4. 提供了易學易用的應用程序集成開發環境 5.支持多種資料庫系統的訪問 6.高度可移植化的代碼 7.VB6.0在開發環境上,網路功能等的大大增強 Visual Basic的特點 可視化設計: Visual Basic為用戶提供大量的界面元素(在Visual Basic中稱為控制項對象),例如 "窗體","菜單","命令按鈕","工具按鈕","檢查框"等等,用戶只需要利用滑鼠,鍵盤把這些控制項對象拖動到當的位置,設置它們的大小,形狀,屬性等,就可以設計出所需的應用程序界面. Visual Basic的特點 事件驅動編程:Windows操作系統出現以來,圖形化的用戶界面和多任務多進程的應用程序要求程序設計不能是單一性的,在使用Visual Basic設計應用程序時,必須首先確定應用程序如何同用戶進行交互.(例如發生滑鼠單擊,鍵盤輸入等事件時,用戶必須編寫代碼控制這些事件的響應方法)這就是所謂的事件驅動編程. 程序設計方法概述 1.初期的程序設計 高運行效率,少佔用內存為目標 2.結構化程序設計 程序的可讀性,可維護性為目標 程序=演算法+數據結構+計算機語言+面向過程的程序設計方法 3.面向對象的程序設計(OOP) 降低程序的復雜性,提高軟體的開法效率和改善工作界面為目標 程序=對象+消息+面向對象的程序設計 面向對象的程序設計具有如下的優點: 1.符合人們習慣的思維方法,便於分解大型的復雜多變的問題.由於對象對應於現實世界中的實體,因而可以很自然地按照現實世界中處理實體的方法來處理對象,軟體開發者可以很方便地與問題提出者進行溝通和交流. 2.易於軟體的維護和功能的增減.對象的封裝性及對象之間的鬆散組合,都給軟體的修改和維護帶來了方便. 3.可重用性好.重復使用一個類(類是對象的定義,對象是類的實例化),可以比較方便地構造出軟體系統,加上繼承的方式,極大地提高了軟體開發的效率. 4.與可視化技術相結合,改善了工作界面.隨著基於圖形界面操作系統的流行,面向對象的程序設計方法也深入人心.它與可視化技術相結合,使人機界面進入GUI時代. (1)養成良好的學習習慣 (2)學習程序設計要注重理解一些重要的概念. 3,學習VB程序設計的方法 (3)自己動手編寫程序 3,學習VB程序設計的方法 (5) VB程序設計學習的重點 (6)養成良好的編程習慣 . 3,學習VB程序設計的方法 學好VB程序設計的具體要求: (1)課前預習,認真聽課並作適當做筆記,課後要認真復習消化所學內容,完成作業. (2)多寫程序,注重實踐 3,學習VB程序設計的方法 3)上機調試程序3,學習VB程序設計的方法 (4)保持良好的學習心態
㈣ VB共有哪些演算法(所有)
所謂演算法,就是你解決一個問題所運算的方法,VB(或者其它程序語言)只提供基本語句,例如加減乘除、平方根、反切、冪、正餘弦等等,演算法是靠你自己去編寫的,所以說演算法是無窮無盡的!
㈤ VB課程設計演算法集錦
Private Sub Command1_Click()
If IsNumeric(Text1.Text) And IsNumeric(Text2.Text) And IsNumeric(Text3.Text) And IsNumeric(Text4.Text) Then
Text5.Text = Val(Text1.Text) * Val(Text2.Text) + Val(Text3.Text) * Val(Text4.Text)
End If
End Sub
Private Sub Form_Load()
Label1.Caption = "22:00-05:00"
Label2.Caption = "05:00-22:00"
Label3.Caption = "電價"
Label4.Caption = "用電量"
Command1.Caption = "計算電費"
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
End Sub
㈥ 關於VB的課程設計
自己參照數據改一下應該就可以了。
#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函數調用關系圖
註:「→」代表調用
Input函數
列印鏈表記錄
Display函數
輸入若干條記錄
menu_select()函數
選擇菜單
Sort_by_num函數
顯示所有記錄
Delete_a_record函數
按姓名查找,刪除一條記錄
Query_a_record查找並顯示一條記錄
Statistic函數
輸出統計信息 (新增)
AddfromText函數
從正文中添加數據到結構體數組中
Main函數
Insert_a_record插入一條記錄
WritetoText函數 將所有數據寫入文件中
退出程序
Reverse(head)函數
按學號排序
五、設計測試流程
1、進入界面
2、輸入選項1,回車;
按提示輸入數據:
3、回到主菜單;
輸入選項7,回車;
輸入文件名:data.txt,回車;
出現成功提示,則讀入文件操作成功。
4、回到主菜單,輸入2,回車
每10個暫停顯示數據
5、回到主菜單,輸入3,回車
出現排序成功信息。
6、回到主菜單,輸入4,回車
按提示插入一組數據
7、回到主菜單,輸入5,回車
按提示輸入姓名,刪除數據
出現刪除成功的信息
8、回到主菜單,輸入6,回車
輸入姓名進行查詢
9、回到主菜單,輸入7,回車
出現統計信息
10、回到主菜單,輸入9,回車
輸入result.txt,回車
出現成功寫入文件的信息
11、回到主菜單,輸入0,回車退出系統
回答者:kingkey001 - 試用期 一級 7-14 22:38
修改答復: kingkey001,您要修改的答復如下: 積分規則 關閉
C語言課程設計報告-------學生成績簡單管理程序
一、系統菜單的主要功能
(1)輸入若干條記錄
(2)顯示所有記錄
(3)按學號排序
(4)插入一條記錄
(5)按姓名查找,刪除一條記錄
(6)查找並顯示一條記錄
(7)輸出統計信息 (新增)
(8)從正文中添加數據到結構體數組中
(9)將所有數據寫入文件中
(0)退出程序
二、題目分析
該題主要考察學生對結構體,指針,文件的操作,以及C語言演算法的掌握,所以完成此道題目要求較強的設計能力,尤其是要有一種大局觀的意識。如何調程序也非常重要,通過這個程序可以學習到以前調試短程序沒有的的經驗。
菜單中的每一個選項都對應一個子程序,子程序的演算法幾乎囊獲了所有C語言學過的技巧,下面就各個子程序中的功能進行說明:
功能1和4的演算法相似,輸入一條記錄到結構體中去,其中有一部很關鍵,就是通過gets將所有的多餘的字元,回車讀去,否則就會出錯。
功能2是顯示所有的記錄,通過循環輸出,格式也比較重要。
功能3為按學號排序,因為學號定義成了字元數組的形式,因此在運用冒泡法進行排序的時候,要用到strcmp,strcpy等函數。
功能5為按姓名刪除記錄,先輸入姓名,再一一比較,如果沒有則返回失敗信息,如果找到就將此記錄都向前移一位,返回n-1。
功能6的演算法在5中就已經體現了,輸入姓名,一一比較。
功能7為新增的功能,因為考慮到原來給出的函數中竟然沒有對學生成績的統計功能,因此新增此功能,可以得出所有的記錄個數,最高、最低、平均分,並輸出相關的學生信息等。
功能8和9是對文件的操作,提前准備好數據。
三、程序正文部分
#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函數調用關系圖
註:「→」代表調用
Input函數
列印鏈表記錄
Display函數
輸入若干條記錄
menu_select()函數
選擇菜單
Sort_by_num函數
顯示所有記錄
Delete_a_record函數
按姓名查找,刪除一條記錄
Query_a_record查找並顯示一條記錄
Statistic函數
輸出統計信息 (新增)
AddfromText函數
從正文中添加數據到結構體數組中
Main函數
Insert_a_record插入一條記錄
WritetoText函數 將所有數據寫入文件中
退出程序
Reverse(head)函數
按學號排序
五、設計測試流程
1、進入界面
2、輸入選項1,回車;
按提示輸入數據:
3、回到主菜單;
輸入選項7,回車;
輸入文件名:data.txt,回車;
出現成功提示,則讀入文件操作成功。
4、回到主菜單,輸入2,回車
每10個暫停顯示數據
5、回到主菜單,輸入3,回車
出現排序成功信息。
6、回到主菜
㈦ 求VB演算法或者實現思路!
首先你要確定 高溫平滑數據段 定義,要更詳細些。這樣才能確定目標。
這樣定義如何:
1.如你所說,「數據點中溫度變化幅度小,形成的曲線幾乎在一個水平線上的一段數據」 ;
2.這個數據段最短是多少,兩個點組成的數據段作為目標也沒多大意義。假設為 N ;
3.變化幅度相同,距離不同,取哪個?變化幅度與距離是成正比,還是定值?
確定上面幾點後,再使用數學方法(如求平均、求方根等)對各段數據進行判斷即可
㈧ 大學電腦VB課程主要是學習什麼
基本要求1. 熟悉Visual Basic集成開發環境。 2. 了解Visual Basic中對象的概念和事件驅動程序的基本特性。3. 了解簡單的數據結構和演算法4. 能夠編寫和調試簡單的Visual Basic程序。 課時分配:章節理論課時實驗課時第1章 Visual Basic 程序設計概述42第2章 程序設計基礎44第3章 程序流程式控制制44第4章 常用內部控制項44第5章 數 組22第6章 過 程22 第7章 菜單和工具欄22第8章 文件系統處理44第9章 鍵盤和滑鼠事件11第十章 OLE控制項與API函數簡介11第11章 繪制圖形22 第12章 資料庫技術24 3232 內容摘要 第1章 Visual Basic 程序設計概述 1.1 Visual Basic 簡介 1.2 Visual Basic 6.0 的啟動及基本界面 1.3 Visual Basic應用程序設計初步1.4 面向對象程序設計的基本概念1.4.1 面向對象的程序設計1.4.2 對象與對象屬性、類1.4.3 窗體和命令按鈕、標簽、文本框控制項的常用屬性1.4.4 屬性的設置1.4.5 對象事件與事件過程1.4.6 對象方法1.4.7 事件編程1.4.8 Visual Basic 6.0工程的結構1.4.9 立即窗口1.4.10 Visual Basic應用程序的編程步驟第2章 程序設計基礎2.1 數據類型2.2 常量與變數2.3 運算符、表達式、函數2.4 Visual Basic程序代碼的編寫規則2.5 命令格式中的符號約定第3章 程序流程式控制制3.1 順序結構程序設計3.2 選擇結構程序設計3.2.1 條件語句3.2.2 SELECT CASE語句3.3 循環結構程序設計3.3.1 Do…Loop語句3.3.2 For … Next語句3.3.3 多重循環第4章 常用內部控制項4.1 框 架4.1.1 添加框架的方法4.1.2 框架的主要屬性4.2 單選按鈕、復選框4.2.1 單選按鈕(OptionButton)4.2.2 復選框(CheckBox)4.3 列表框和組合框4.3.1 列表框 (ListBox) 4.3.2 組合框(ComboBox)4.4 圖片控制項、圖像控制項4.4.1 圖片控制項(PictureBox)4.4.2 圖像控制項(Image)4.5 計時器控制項(Timer)4.6 滾動條控制項(ScrollBar)第5章 數 組5.1 數組的概念5.2 固定數組5.3 動態數組5.4 For Each … Next循環5.5 控制項數組 第6章 過 程6.1 Sub過程6.2 Function過程6.3 參數的傳遞6.4 過程的嵌套與遞歸6.5 變數和過程的作用域6.6 多重窗體程序設計第7章 菜單和工具欄7.1 菜單設計7.2 創建工具欄7.3 Windows界面樣式及創建SDI程序界面7.4 創建MDI程序界面第8章 文件系統處理8.1 文件概述8.2 文件的建立、打開、讀寫和關閉8.3 文件處理函數與語句8.4 文件系統控制項8.5 公共對話框控制項8.6 綜合舉例第9章 鍵盤和滑鼠事件9.1 鍵盤事件9.2 滑鼠事件9.3 拖放技術第十章 OLE控制項與API函數簡介第11章 繪制圖形11.1 Visual Bisic的坐標系統11.2 顏色11.3 常用繪圖控制項11.4 繪圖方法第12章 資料庫技術12.1 資料庫的基本概念12.2 可視化數據管理器的使用12.4 使用Data控制項訪問資料庫