第一篇:VC課程設(shè)計(jì)教學(xué)和任務(wù)
VC++ 課程設(shè)計(jì)指導(dǎo)書
江蘇科技大學(xué)南徐學(xué)院電子信息系
2011年9月
《計(jì)算機(jī)程序設(shè)計(jì)(vc++)課程設(shè)計(jì)》課程設(shè)計(jì)指導(dǎo)書
一. 課程設(shè)計(jì)教學(xué)和任務(wù)
《計(jì)算機(jī)程序設(shè)計(jì)(vc++)課程設(shè)計(jì)》是實(shí)踐性教學(xué)環(huán)節(jié),是學(xué)生必修的一門計(jì)算機(jī)實(shí)踐課程。
本課程設(shè)計(jì)的目的是通過綜合性程序設(shè)計(jì)訓(xùn)練,使學(xué)生進(jìn)一步鞏固對計(jì)算機(jī)程序設(shè)計(jì)語言(vc++)基本語法,基本算法的理解,加深對面向?qū)ο蟪绦蛟O(shè)計(jì)的理解與應(yīng)用,并使學(xué)生養(yǎng)成模塊化,結(jié)構(gòu)化程序設(shè)計(jì)的良好風(fēng)格,以及一定的程序組織能力,掌握基本程序設(shè)計(jì)的方法和技巧,為學(xué)習(xí)后續(xù)課程和實(shí)際編程打下良好的基礎(chǔ)。
本課程設(shè)計(jì)的重點(diǎn)要求學(xué)生掌握基本程序設(shè)計(jì)理念和方法,培養(yǎng)學(xué)生基本程序設(shè)計(jì)的應(yīng)用和開發(fā)能力。二. 課程設(shè)計(jì)要求與內(nèi)容
1.本課程設(shè)計(jì)要求
(1)學(xué)生必須完成本指導(dǎo)書中所有的小綜合設(shè)計(jì)題,并且完成大綜合設(shè)計(jì)題中的任意一題(具體題目由任課教師指定)。要求:對主要變量及函數(shù)要加注釋,以說明其功能。
(2)每個(gè)學(xué)生必須完成課程設(shè)計(jì)報(bào)告一篇。(報(bào)告格式見附錄)2.課程設(shè)計(jì)的內(nèi)容
本課程設(shè)計(jì)內(nèi)容包括兩個(gè)部分:小綜合設(shè)計(jì)題和大綜合設(shè)計(jì)題。
====================================== 附:課程設(shè)計(jì)報(bào)告格式一、二、課程設(shè)計(jì)目的 課程設(shè)計(jì)內(nèi)容
1、小綜合題
2、大綜合題
三、課程設(shè)計(jì)體會及建議
小綜合設(shè)計(jì)題
1.二維數(shù)組的操作運(yùn)算
定義一個(gè)n×n的二維數(shù)組a,將該二維數(shù)組中周邊元素的值全部置為2,其他元素全部置為0。
例如: 當(dāng)n為8時(shí)生成并輸出的矩陣為:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 定義類MAT,具體要求如下:
(1)私有數(shù)據(jù)成員
int n;二維數(shù)組的階數(shù)
int *p;將二維數(shù)組以一維數(shù)組方式存儲,p是起始指針。
(2)公有成員函數(shù)
MAT(int n1);初始化n,并動態(tài)申請數(shù)組空間,令p指向該空間。
void create();給數(shù)組賦值。
void print();按矩陣方式輸出二維數(shù)組。
~ MAT();析構(gòu)函數(shù),釋放動態(tài)數(shù)組空間。
(3)在主函數(shù)中完成對該類的測試。鍵盤輸入二維數(shù)組的階數(shù)n(如8或6),定義一個(gè)MAT類的對象m,用n初始化m,按要求生成并輸出數(shù)組的值。
2.鏈表
建立一條無序鏈表,結(jié)點(diǎn)名為node,用一個(gè)函數(shù)實(shí)現(xiàn)將這條鏈表構(gòu)成一條新的逆序鏈表,即將鏈表頭當(dāng)鏈表尾,鏈表尾當(dāng)鏈表頭。輸出這兩條鏈表上各個(gè)節(jié)點(diǎn)的值。
3.字符串處理
將字符串中指定的英語單詞(字母子串)進(jìn)行單數(shù)變復(fù)數(shù)的處理,單詞之間用非字母分隔。為了簡化編程,將單詞的單數(shù)變復(fù)數(shù)的規(guī)則是:直接在單詞后加s。例如單詞student的復(fù)數(shù)為students。例如,有下列字符串:
We are student, you are student, too.指定單詞student,將字符串中所有的student修改為students。處理后的字符串為:
We are students, you are students, too.試建立一個(gè)類Modistr,完成以上工作。具體要求如下:
(1)私有數(shù)據(jù)成員
char *str;存放指定的字符串;
(2)公有成員函數(shù)
Modistr(char *s);構(gòu)造函數(shù),動態(tài)申請字符串空間,用s所指向的串初
始化str;
void print();輸出字符串str;
void modify(char *wordp);將wordp所指向的單詞轉(zhuǎn)換為復(fù)數(shù)。
~Modistr();析構(gòu)函數(shù)
(3)在主函數(shù)中完成對該類的測試。定義類Modistr的對象mys,用字符串“We are student, you are student, too.”初始化mys,調(diào)用函數(shù)modify(char *)完成將單詞“student”單數(shù)變復(fù)數(shù)的處理。
輸出變換前和變換后的字符串。
提示:判斷一個(gè)字符ch是否為字母,可用系統(tǒng)庫函數(shù)isalpha(ch)。該函數(shù)的功能是:若ch是字母,返回真,否則返回假。使用該函數(shù)必須包含頭文件ctype.h。
4.素?cái)?shù)問題
建立一個(gè)類PRIME,求指定范圍內(nèi)的所有素?cái)?shù)(質(zhì)數(shù))。具體要求如下:
(1)私有數(shù)據(jù)成員
int data[200];依次存放指定范圍內(nèi)的所有素?cái)?shù)。
int min,max;存放待求素?cái)?shù)的數(shù)值范圍的下限和上限。
int num;存放min與max之間的素?cái)?shù)個(gè)數(shù)。
(2)公有成員函數(shù)
構(gòu)造函數(shù)PRIME(int n1, int n2);用n1和n2初始化待求素?cái)?shù)的范圍 min、max及num(值為0)。
void process();求指定范圍內(nèi)的所有素?cái)?shù),把它們存放在數(shù)組data中。求素?cái)?shù)的算法必須是:首先將min與max之間的所有奇數(shù)依次放入數(shù)組data中,然后依次判斷data中的每一個(gè)元素是否為素?cái)?shù)。
若不是素?cái)?shù),則將其值賦為0。最后,數(shù)組data中不為0的元素均為素?cái)?shù)。將不為0的元素值集中連續(xù)存放到數(shù)組的前面,同時(shí)統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù)。
void print();輸出求出的所有素?cái)?shù),同時(shí)輸出素?cái)?shù)個(gè)數(shù)。
(3)在主程序中對該類進(jìn)行測試。
定義一個(gè)PRIME類的對象test,并用待求素?cái)?shù)范圍min =10, max=200初始化test。通過test調(diào)用成員函數(shù)求出10至200之間的所有素?cái)?shù),并輸出結(jié)果。[提示] 素?cái)?shù)的定義是“只能被1和它本身整除的正整數(shù)”,素?cái)?shù)也稱為質(zhì)數(shù)。
5.信號系統(tǒng)問題
定義一個(gè)類為形狀,由它公有派生出正方體、球體和圓柱體。利用虛函數(shù)的多態(tài)性形式完成計(jì)算正方體、球體和圓柱體的體積。具體要求如下:(1)基類: shape 保護(hù)數(shù)據(jù)成員:double a,b;
公有構(gòu)造函數(shù):shape(double,double); 公有純虛函數(shù):double volume();(2)派生類
正方體、球體和圓柱體的類名分別為cube,sphere,cylinder, 各派生類均需要定義公有的構(gòu)造函數(shù)以及求體積的虛函數(shù)double volume()。(3)派生類為球體時(shí),a為半徑,b為0。
派生類為正方體時(shí),a表示邊長,b為0。
派生類為圓柱體時(shí),a為圓柱體的邊長,b為圓柱體的高。
(4)設(shè)計(jì)一個(gè)完整的程序,分別計(jì)算正方體、球體和圓柱體的體積并輸出結(jié)果。
測試數(shù)據(jù)如下:
形狀類指針變量:p、球體對象:C(0.8)、正方體對象:S(3.2)和圓柱體類對象:R(4.1,5)。用指針p分別指向派生類對象。
輸出結(jié)果為:
球體的體積是2.14357
正方體的體積是32.768
長方體的體積是263.917 提示:球體的體積公式=4/3*π*半徑*半徑*半徑(其中π取常數(shù)3.14)
正方體的體積=棱長×棱長×棱長
圓柱的體積=底面積×高
6.求兩個(gè)日期之間相差的天數(shù)。
設(shè)計(jì)一個(gè)日期類Date,包括日期的年份、月份和日號,編寫一個(gè)友元函數(shù),求兩個(gè)日期之間相差的天數(shù)。具體要求如下:(1)私有數(shù)據(jù)成員
int year, month, day;
(2)公有成員函數(shù)
Date(int y,int m,int d);//構(gòu)造函數(shù),初始化日期。void disp();//輸出日期。
friend int count day(Date &d,int);// 使用二維數(shù)組存放各月天數(shù),第一行對應(yīng)非閏年,第二行對應(yīng)閏年。
friend int leap(int year);
//判斷是否閏年,是返回1,否則返回0。friend int subs(Date &d1,Date &d2);
//求兩個(gè)日期之間相差的天數(shù)。
(3)在主函數(shù)中完成對該類測試,定義兩個(gè)對象d1(2000,1,1)和d2(2002,10,1),調(diào)用subs函數(shù)。程序正確的運(yùn)行結(jié)果是: 2000.1.1與2002.10.1之間有1002天
7.身份證。
已知舊身份證號碼共15位,其中第7~12位是以2位年份+2位月份+兩位日期組成,而新身份證號碼共18位,其中第7~14位是以4位年份+2位月份+兩位日期組成。試定義一個(gè)類ID,根據(jù)居民的出生日期檢查其身份證號是否正確。
具體要求如下: 1)私有成員:
char s[19] : 存放身份證號。
int yy, mm, dd : 分別存放居民出生日期的年(4位)、月(10~12月兩位,其余1 位)、日(兩位)。
2)公有成員:
ID(char str[]):構(gòu)造函數(shù)。
int val(char *p): 將數(shù)字字符串p轉(zhuǎn)換為相應(yīng)的十進(jìn)制數(shù),如“123”轉(zhuǎn)換為數(shù)值123,“08”轉(zhuǎn)換為數(shù)值8;
int fun(): 根據(jù)出生日期檢驗(yàn)身份證號是否正確,如果正確,函數(shù)值為1,否則為0。
必須使用如下算法:先分別取出身份證中的表示年份、月份、日期的子字符串,然后利用上述int val(char *p)函數(shù)轉(zhuǎn)換為數(shù)值,再與出生日期的相應(yīng)成員數(shù)據(jù)比較。
void print(): 輸出所有成員數(shù)據(jù)。
3)在主函數(shù)中輸入兩個(gè)身份證號(一個(gè)18位:***910,另一個(gè)15位***),分別用這兩個(gè)身份證號生成類ID的對象,在主函數(shù)中通過成員函數(shù)fun確定身份證號是否正確并輸出相應(yīng)的信息(身份證號、出生日期、檢驗(yàn)結(jié)果)。
8.9×9乘法口訣表。
定義一個(gè)類MUL,生成如下的9×9乘法口訣表,要求口訣表存儲在動態(tài)數(shù)組中,并輸出到屏幕上。運(yùn)行結(jié)果如下: 1 2 3 4
5
6
7
8
9
具體要求如下:(1)私有數(shù)據(jù)成員
nt(*a)[9];a是一個(gè)行指針變量,其指向的數(shù)組空間是動態(tài)生成的,用于存放口訣表??谠E表存放在二維數(shù)組的左下三角形中。
(2)公有成員函數(shù)
MUL();構(gòu)造函數(shù),動態(tài)生成數(shù)組空間。void process();生成乘法口訣表。void print();輸出乘法口訣表。
~MUL();析構(gòu)函數(shù),釋放動態(tài)數(shù)組空間。
(3)在主函數(shù)中完成對該類的測試。定義一個(gè)MUL類的對象a,通過a調(diào)用成員函數(shù)求出并輸出乘法口訣表。
9.字符串分類。
輸入一個(gè)字符串,串內(nèi)有數(shù)字和非數(shù)字字符。
例如:
ABC2345
345rrf678
jfkld945
將其中連續(xù)的數(shù)字作為一個(gè)整數(shù),依次存放到另一個(gè)整型數(shù)組b中。如對于上面的輸入,將2345存放到b[0]、345放入b[1]………
統(tǒng)計(jì)出字符串中的整數(shù)個(gè)數(shù),并輸出這些整數(shù)。要求:
(1)在主函數(shù)中完成輸入和輸出工作。
(2)設(shè)計(jì)一個(gè)函數(shù),把指向字符串的指針和指向整數(shù)的指針作為函數(shù)的參數(shù),并完成從字符串中依次提取出整數(shù)的工作。
10.?dāng)?shù)組元素排序
將含有12個(gè)元素的數(shù)組作如下處理:先將所有數(shù)據(jù)按其在數(shù)組中的次序分成4等分,然后以每一組數(shù)據(jù)為單位按其平均值從小到大排序。例如,原數(shù)組為:{5,6,7,1,2,3,7,8,9,2,3,5 }處理后的數(shù)組為:{1,2,3,2,3,5,5,6,7,7,8,9}試定義一個(gè)類DATA完成上述功能,具體要求如下:
(1)私有數(shù)據(jù)成員int a[12], b[12];數(shù)組a用以存放原始數(shù)據(jù),數(shù)組b用以存放處理后的數(shù)據(jù)。
(2)公有成員函數(shù)DATA(int x[], int n);構(gòu)造函數(shù)。用參數(shù)x初始化a,將b的所有元素初始化為0,n為數(shù)組x的元素個(gè)數(shù)。
void convert(int x[4][3]);將a中的數(shù)據(jù)進(jìn)行分組,并轉(zhuǎn)換為二維數(shù)組x,其中每一組依次為數(shù)組x的一行。
void sort();按每組的平均值實(shí)現(xiàn)分段排序,并將排序后的數(shù)據(jù)存放到數(shù)據(jù)成員b中。
算法要求:利用函數(shù)convert()將a轉(zhuǎn)換為二維數(shù)組,再求二維數(shù)組每一行的平均值,然后根據(jù)該平均值從小到大對該二維數(shù)組進(jìn)行行排序,并將結(jié)果按題意轉(zhuǎn)換為一維數(shù)組存放到b中。
void print();輸出a和b的所有元素。
(3)在主函數(shù)中利用給定的數(shù)組生成類DATA的對象test,并對該類進(jìn)行測試。假設(shè)給定數(shù)組為{5, 6, 7, 1, 2, 3, 7, 8, 9, 2, 3, 5}。輸入/輸出示例:
處理前的數(shù)組:5 6 7 1 2 3 7 8 9 2 3 5
處理后的數(shù)組:1 2 3 2 3 5 5 6 7 7 8 9
大綜合設(shè)計(jì)題
設(shè)計(jì)題目一:學(xué)生學(xué)籍成績管理系統(tǒng)
每個(gè)學(xué)生的信息包括:姓名、學(xué)號、性別、和學(xué)生的成績信息 如:英語、數(shù)學(xué)、程序設(shè)計(jì)及體育成績等各門課的成績,要求程序能自動增加一門或是幾門課的成績,同時(shí)可以刪除課程。
從鍵盤輸入數(shù)據(jù),然后,完成如下處理:
1.對學(xué)生姓名或?qū)W號進(jìn)行查詢,顯示其信息,求出其總成績、平均成績、平均基點(diǎn),并且顯不在全班的學(xué)成績排名。2.對所有學(xué)生,按班級計(jì)算平均。
設(shè)計(jì)題目二:通訊錄管理系統(tǒng)
1.系統(tǒng)概要
該系統(tǒng)的功能是實(shí)現(xiàn)通訊錄管理。2.基本功能要求
(1)輸入姓名、單位、電話號碼(2)顯示上述內(nèi)容(3)按姓名查找后顯示(4)刪除有關(guān)記錄(5)增加記錄
(6)保存修改后的文件(7)顯示修改后的文件
3.各功能模塊的程序流程圖。(學(xué)生完成)4.完整的源程序代碼。(學(xué)生設(shè)計(jì)完成)
設(shè)計(jì)題目三:小型特殊計(jì)算器
1.系統(tǒng)概要
本程序的功能是實(shí)現(xiàn)一個(gè)特殊的計(jì)算器,可以實(shí)現(xiàn)復(fù)數(shù)、有理數(shù)、矩陣和集合的特殊計(jì)算。程序可以實(shí)現(xiàn)復(fù)數(shù)、有理數(shù)的加、減、乘、除,可以實(shí)現(xiàn)矩陣的加法、減法和乘法運(yùn)算,也可以實(shí)現(xiàn)集合的求交集、并集、子集的運(yùn)算。注:可任選兩種運(yùn)算。
2.基本功能要求
(1)功能選擇可以用菜單來實(shí)現(xiàn) 例如:請選擇您的計(jì)算內(nèi)容: 1.復(fù)數(shù)計(jì)算 2.有理數(shù)計(jì)算 3.矩陣計(jì)算 4.集合計(jì)算 0.退出
用戶通過輸入不同的數(shù)字進(jìn)入不同的菜單。次級菜單主要顯示本程序的功能,主要的功能有加法、減法、乘法和除法以及集合的求交集、求并集、求子集。(2)運(yùn)行時(shí)給出明確的提示信息。
比如,輸入一個(gè)什么類型的數(shù)據(jù)。根據(jù)用戶的輸入計(jì)算輸出結(jié)果。由于數(shù)據(jù)類型比較多,可以一次輸入第一個(gè)復(fù)數(shù)的實(shí)部,第一個(gè)復(fù)數(shù)的虛部,再輸入第二個(gè)復(fù)數(shù)的實(shí)部、虛部。矩陣運(yùn)算需要先輸入矩陣的行數(shù)和列數(shù),然后依次輸出矩陣的第一行第一列的元素、第一行第二列的元素等等,依次類推。有理數(shù)運(yùn)算需要一次輸入有理數(shù)的分子、分母。集合運(yùn)算需要輸入集合的元素個(gè)數(shù),然后依次輸入集合中的每一個(gè)元素。
3.各功能模塊的程序流程圖。(學(xué)生完成)4.完整的源程序代碼。(學(xué)生設(shè)計(jì)完成)
設(shè)計(jì)題目四:選修課小系統(tǒng)
1.系統(tǒng)概要
通過這一款選修課小系統(tǒng),學(xué)生可以登入學(xué)生端進(jìn)行選課及其他的操作,管理者通過登入管理端可以進(jìn)行對選修課系統(tǒng)的數(shù)據(jù)的管理和維護(hù)。在學(xué)生端主要設(shè)置了3個(gè)基本功能:學(xué)生選課、學(xué)生情況、選課情況等;在管理端主要設(shè)置了9個(gè)基本功能:增加/刪除學(xué)生、增加/刪除課程、更改學(xué)分、填寫成績、學(xué)生情況、選課情況、保存數(shù)據(jù)等。這些功能基本上能滿足選課的基本要求。此程序可以初步體現(xiàn)課程設(shè)計(jì)的目標(biāo)。2.基本功能要求
用VC++編寫一個(gè)界面美觀流暢學(xué)生選課系統(tǒng)。學(xué)生有名字,學(xué)生最多可學(xué)五門課程,學(xué)生實(shí)際學(xué)的門數(shù),可以給定學(xué)生的名字,可以得到學(xué)生的名字,可以得到學(xué)生給定課程的成績,可以得到學(xué)生所學(xué)課程的平均成績,可以給學(xué)生增加一門課(同時(shí)在該課程中增加一個(gè)學(xué)生)。課程最多有30個(gè)學(xué)生,課程有實(shí)際學(xué)生
數(shù),課程有實(shí)際學(xué)生名單,課程有學(xué)分?jǐn)?shù),課程有每個(gè)學(xué)生成績,課程可以得到學(xué)分?jǐn)?shù),課程可以設(shè)置學(xué)分?jǐn)?shù),課程可以得到班平均成績,課程可以得到某個(gè)學(xué)生成績。
3.各功能模塊的程序流程圖。(學(xué)生完成)4.完整的源程序代碼。(學(xué)生設(shè)計(jì)完成)
設(shè)計(jì)題目五:學(xué)生成績管理系統(tǒng)
系統(tǒng)上采用VC++為開發(fā)環(huán)境,這個(gè)編譯器功能完善,使用方便。課程設(shè)計(jì)《學(xué)生成績管理系統(tǒng)》,它的主要功能是對學(xué)生的成績進(jìn)行修改和管理。
系統(tǒng)功能要求:(1)界面
************************************ 學(xué)生成績管理系統(tǒng)
************************************ ************************************ ** 1--輸入數(shù)據(jù) ** ** 2-查詢成績 ** ** 3--修改成績 ** ** 4--輸出所有學(xué)生成績 ** ** 5--統(tǒng)計(jì)及格和優(yōu)秀人數(shù) ** ** 6--退出系統(tǒng) ** *************************************(2)功能
程序的主要功能是輸入學(xué)生姓名、成績,學(xué)號自動生成,并可以對學(xué)生的成績按學(xué)號和姓名進(jìn)行查詢。該系統(tǒng)具有存貯學(xué)生數(shù)據(jù),按學(xué)號、姓名查詢,按需要修改學(xué)生成績,列出學(xué)生成績和統(tǒng)計(jì)功能。
第二篇:VC課程設(shè)計(jì)教學(xué)和任務(wù)12131
VC++ 課程設(shè)計(jì)指導(dǎo)書
江蘇科技大學(xué)南徐學(xué)院電子信息系
2012年6月
《計(jì)算機(jī)程序設(shè)計(jì)(vc++)課程設(shè)計(jì)》課程設(shè)計(jì)指導(dǎo)書
一. 課程設(shè)計(jì)教學(xué)和任務(wù)
《計(jì)算機(jī)程序設(shè)計(jì)(vc++)課程設(shè)計(jì)》是實(shí)踐性教學(xué)環(huán)節(jié),是學(xué)生必修的一門計(jì)算機(jī)實(shí)踐課程。
本課程設(shè)計(jì)的目的是通過綜合性程序設(shè)計(jì)訓(xùn)練,使學(xué)生進(jìn)一步鞏固對計(jì)算機(jī)程序設(shè)計(jì)語言(vc++)基本語法,基本算法的理解,加深對面向?qū)ο蟪绦蛟O(shè)計(jì)的理解與應(yīng)用,并使學(xué)生養(yǎng)成模塊化,結(jié)構(gòu)化程序設(shè)計(jì)的良好風(fēng)格,以及一定的程序組織能力,掌握基本程序設(shè)計(jì)的方法和技巧,為學(xué)習(xí)后續(xù)課程和實(shí)際編程打下良好的基礎(chǔ)。
本課程設(shè)計(jì)的重點(diǎn)要求學(xué)生掌握基本程序設(shè)計(jì)理念和方法,培養(yǎng)學(xué)生基本程序設(shè)計(jì)的應(yīng)用和開發(fā)能力。二. 課程設(shè)計(jì)要求與內(nèi)容
1.本課程設(shè)計(jì)要求
(1)學(xué)生必須完成本指導(dǎo)書中所有的小綜合設(shè)計(jì)題,并且完成大綜合設(shè)計(jì)題中的任意一題(具體題目由任課教師指定)。要求:對主要變量及函數(shù)要加注釋,以說明其功能。
(2)每個(gè)學(xué)生必須完成課程設(shè)計(jì)報(bào)告一篇。(報(bào)告格式見附錄)2.課程設(shè)計(jì)的內(nèi)容
本課程設(shè)計(jì)內(nèi)容包括兩個(gè)部分:小綜合設(shè)計(jì)題和大綜合設(shè)計(jì)題。
====================================== 附:課程設(shè)計(jì)報(bào)告格式一、二、課程設(shè)計(jì)目的 課程設(shè)計(jì)內(nèi)容
1、小綜合題
2、大綜合題
三、課程設(shè)計(jì)體會及建議
小綜合設(shè)計(jì)題
1.二維數(shù)組元素旋轉(zhuǎn)
以下程序?qū)×N階矩陣向左旋轉(zhuǎn)90°,得到一個(gè)新的N×N階矩陣。例如:原矩陣為:
向左旋轉(zhuǎn)90°后的矩陣為:2.找回文數(shù)
判斷一個(gè)字符串是否文回文,是指正向拼寫和反向拼寫都一樣的字符串。例如,“madam”是回文。假定字符串中只出現(xiàn)字母,且不區(qū)分字母的大小寫,即“A”和“a”被視為同一字母,其余類似。如“Madam”是回文。而“Sir”不是回文。函數(shù)plain(char*s)判斷一個(gè)字符串是回文時(shí),若是回文,函數(shù)返回1,否則,返回0.在主函數(shù)中,當(dāng)判斷一個(gè)字符串是回文時(shí),輸出Yes,否則輸出No。
3.二維數(shù)組的操作運(yùn)算
定義一個(gè)N×N的二維數(shù)組a,將該二維數(shù)組中周邊元素的值全部置為2,其他元素全部置為0。例如,當(dāng)n為8時(shí)生成并輸出的矩陣為
定義類MAT,具體要求如下:(1)私有數(shù)據(jù)成員。
●int n:二維數(shù)組的行數(shù)(列數(shù))。
●int *p:將二維數(shù)組以一維數(shù)組方式存儲,p是起始指針。(2)共有成員函數(shù)。
●MAT(int n1):初始化n,并動態(tài)申請數(shù)組空間。令p指向該空間。
●void create():給數(shù)組賦值。
●void print():按矩陣方式輸出二維數(shù)組?!駘MAT():析構(gòu)函數(shù),釋放動態(tài)數(shù)組空間。
(3)在主函數(shù)中完成對該類的測試。從鍵盤輸入二維數(shù)組的行數(shù)(列數(shù))n(如8或6)。定義一個(gè)MAT類的對象m,用n初始化m,按要求生成并輸出數(shù)組元素的值。
4.刪除序列中相同的數(shù)
定義一個(gè)字符串類STR,從左到右對字符串中每個(gè)字符刪除其后所有相同的字符,只留下第一次出現(xiàn)的那一個(gè)。例如,若字符串為“cocoon”,刪除重復(fù)出現(xiàn)的字符后,其結(jié)果是字符串“con”。
具體要求如下:(1)私有數(shù)據(jù)成員。
●char *s1:指向原字符串,存放字符串的空間需動態(tài)分配。
●char *s2:指向結(jié)果字符串,存放字符串的空間需動態(tài)分配。(2)公有成員函數(shù)
●STR(char *str:構(gòu)造函數(shù),用str初始化s1,動態(tài)分配s1和s2指向的空間。
●void delsame():刪除重復(fù)出現(xiàn)的字符。
●void show():輸出原字符串和結(jié)果字符串。
●~STR():析構(gòu)函數(shù),釋放動態(tài)分配的存儲空間。
在主函數(shù)中定義一個(gè)STR類的對象test,用字符串“cocoon”初始化test,通過test調(diào)用成員函數(shù)完成刪除工作,輸出刪除前后的兩個(gè)字符串。
5.求任意數(shù)降序數(shù)
對任意一個(gè)各位數(shù)字不完全相同的四位數(shù)(如4133),將各位上的數(shù)字從小到大排列得到一個(gè)升序數(shù)(1334),再將各位上的數(shù)字從小到大排列得到一個(gè)降序數(shù)(4331)。用大數(shù)(降序數(shù))減去小數(shù)(升序數(shù))得到一個(gè)新的四位數(shù)(2997=4331-1334)。若相減后不足四位,則高位上補(bǔ)零,稱此過程為一次變換。將新的四位數(shù)按上述方法再變換一次,又得到一個(gè)四位數(shù)。有斷言,經(jīng)過多次變換,最后一定會得到一個(gè)固定的數(shù)6174。以下程序試圖驗(yàn)證這個(gè)斷言。
6.求兩個(gè)日期之間相差的天數(shù)。
設(shè)計(jì)一個(gè)日期類Date,包括日期的年份、月份和日號,編寫一個(gè)友元函數(shù),求兩個(gè)日期之間相差的天數(shù)。具體要求如下:(1)私有數(shù)據(jù)成員 int year, month, day;
//構(gòu)造函數(shù),初始化日期。(2)公有成員函數(shù) Date(int y,int m,int d);void disp();//輸出日期。
friend int count_day(Date &d,int);// 使用二維數(shù)組存放各月天數(shù),第一行對應(yīng)非閏年,第二行對應(yīng)閏年。
friend int leap(int year);
//判斷是否閏年,是返回1,否則返回0。
friend int subs(Date &d1,Date &d2);
//求兩個(gè)日期之間相差的天數(shù)。(3)在主函數(shù)中完成對該類測試,定義兩個(gè)對象d1(2000,1,1)和d2(2002,10,1),調(diào)用subs函數(shù)。程序正確的運(yùn)行結(jié)果是: 2000.1.1與2002.10.1之間有1002天
7.實(shí)現(xiàn)點(diǎn)對象之間的各種運(yùn)算。
設(shè)計(jì)一個(gè)點(diǎn)類Point,Point類提供了6個(gè)運(yùn)算符重載函數(shù)(參加程序中的代碼和注釋),以實(shí)現(xiàn)相應(yīng)的運(yùn)算。具體要求如下:(1)私有數(shù)據(jù)成員 int x,y;
// x,y分別表示橫坐標(biāo)和縱坐標(biāo)。Point();//構(gòu)造函數(shù),初始化x,y的值為0。Point(int i,int j);
// //置x、y坐標(biāo)。
Point(Point &);//利用完成拷貝的構(gòu)造函數(shù),給x、y賦值。~Point(){};
//析構(gòu)函數(shù),無操作。int getx();
//取x坐標(biāo)。int gety();
//取y坐標(biāo)。void disp();//輸出x、y的值。void offset(int,int);// 提供對點(diǎn)的偏移。
void offset(Point);// 重載,偏移量用Point類對象表示。bool operator==(Point);// 運(yùn)算符重載,判斷兩個(gè)對象是否相同。bool operator!=(Point);// 運(yùn)算符重載,判斷兩個(gè)對象是否不相同。void operator+=(Point);// 運(yùn)算符重載,將兩個(gè)點(diǎn)對象相加。void operator-=(Point);// 運(yùn)算符重載,將兩個(gè)點(diǎn)對象相減。
Point operator+(Point);// 運(yùn)算符重 載,相加并將結(jié)果放在左操作數(shù)中。Point operator-(Point);// 運(yùn)算符重載,相減并將結(jié)果放在左操作數(shù)中。(3)編寫一個(gè)程序測試該類,測試數(shù)據(jù)及要求如下:
點(diǎn)類:p1(2,3),p2(3,4),p3(p2)完成的運(yùn)算有:
以p3為主要測試對象,首先輸出p3坐標(biāo)值,置p3偏移量(10,10),p2==p3;p2!=p3;p3+=p1;p3-=p2;p3=p1+p3;p3=p1-p2;每完成一次運(yùn)算,要將結(jié)果進(jìn)行輸出。程序正確執(zhí)行的結(jié)果如下:
1:(3,4)2:(13,14)3:0(2)公有成員函數(shù)
4:1 5:(15,17)6:(12,13)7:(14,16)8:(11,12)8.定義一個(gè)描述學(xué)生通訊錄的類,并進(jìn)行測試。
定義一個(gè)描述學(xué)生通訊錄的類COMMU,數(shù)據(jù)成員包括:姓名、學(xué)校、電話號碼和郵編;成員函數(shù)包括:輸出各個(gè)數(shù)據(jù)成員的值,分別設(shè)置和獲取各個(gè)數(shù)據(jù)成員的值。
分析:由于姓名、學(xué)校和電話號碼的數(shù)據(jù)長度是可變的,可使用動態(tài)的數(shù)據(jù)結(jié)構(gòu)。郵編的長度是固定的,可定義一個(gè)字符數(shù)組來存放郵編。將數(shù)據(jù)成員均定義為私有的。用一個(gè)成員函數(shù)輸出所有的成員數(shù)據(jù),用四個(gè)成員函數(shù)分別設(shè)置姓名、單位、電話號碼和郵編,再用四個(gè)成員函數(shù)分別獲取姓名、單位、電話號碼和郵編。主函數(shù)完成簡單的測試工作。具體要求如下:(1)私有數(shù)據(jù)成員
char *pName;//
char *pSchool;
char *pNum;
char
Box[10];(2)公有成員函數(shù)
void Print(void);
//輸出數(shù)據(jù)成員
//釋放數(shù)據(jù)成員占用的void Init(char *,char *,char *,char *);
//完成初始化
void FreeSpace(void);空間
void SetName(char *name);void SetScool(char *unit);void SetNum(char *num);void SetBox(char *mailnum);char *GetName(void);char *GetScool(void);char *GetNum(void);char *GetBox(void);
//置姓名
//學(xué)校名稱 //置電話號碼 //置郵編 //取姓名 //取學(xué)校 //取電話號碼 //取郵編
//單位 //電話號碼 //郵編
(3)在主函數(shù)中完成對該類測試,定義兩個(gè)對象c1和c2,分別兩個(gè)對象的成員進(jìn)行初始化、值設(shè)置并輸出測試結(jié)果。
9.打印日歷。
根據(jù)所輸入的年份打印該年的日歷。主要功能函數(shù)如下: void printmonth(int);//打印每個(gè)月的日歷
void printhead(int);
//打印日歷每個(gè)月的頭,并將打印位置移到該月第一天的星期幾處
int firstday(int);
//計(jì)算第一天是星期幾 int daysofmonth(int);//該月有多少天 int isleap(int);
//判斷是否是閏年
需定義兩個(gè)全局變量year和weekday,分別存放年份 和 每個(gè)月的第一天是星期幾
10.集合的操作
定義一個(gè)求兩個(gè)集合的交集的類DataSet。并在主函數(shù)中用兩個(gè)字符串進(jìn)行測試。具體要求如下:
1)私有數(shù)據(jù)成員:
char *p1, *p2;指向存放兩個(gè)原始數(shù)據(jù)集合的指針。
char *p;指向復(fù)制出來的兩個(gè)集合的交集數(shù)據(jù)的指針。
2)公有成員函數(shù):
DataSet(char a[ ], char b[ ]): 構(gòu)造函數(shù),提供原始數(shù)組,同時(shí)也要根據(jù)兩個(gè)數(shù)組中較大的一個(gè)初始化指針p所指向的內(nèi)存。
void fun(): 功能函數(shù),求交集。要求交集中無重復(fù)字符。
void print(): 輸出函數(shù),輸出原始數(shù)據(jù)及結(jié)果。
~DataSet(): 析構(gòu)函數(shù),實(shí)現(xiàn)必要的功能。
大綜合設(shè)計(jì)題
設(shè)計(jì)題目一:學(xué)生成績管理系統(tǒng)
1.系統(tǒng)概要
該系統(tǒng)完成學(xué)生信息的輸入,插入,刪除一個(gè)學(xué)生信息,修改,查找學(xué)生信息,計(jì)算學(xué)生的總分,并能按學(xué)生的總分排序。
2.基本功能要求
(1)按順序輸入若干個(gè)學(xué)生信息
(2)插入一個(gè)學(xué)生信息(先輸入插入位置,再輸入學(xué)生信息)(3)刪除一個(gè)學(xué)生信息(先刪除插入位置,再刪除學(xué)生信息)(4)修改已知學(xué)號的學(xué)生信息(按學(xué)號來找)(5)查找已知學(xué)號的學(xué)生信息(按姓名來找)(6)統(tǒng)計(jì)一個(gè)學(xué)生的總分成績(7)按總分從高到低輸出學(xué)生成績表(8)顯示所有學(xué)生的信息(9)退出。
3.各功能模塊的程序流程圖。(學(xué)生完成)
4.完整的源程序代碼。(學(xué)生設(shè)計(jì)完成)
設(shè)計(jì)題目二:通訊錄管理系統(tǒng)
1.系統(tǒng)概要
該系統(tǒng)的功能是實(shí)現(xiàn)通訊錄管理。
2.基本功能要求
(1)輸入姓名、單位、電話號碼(2)顯示上述內(nèi)容(3)按姓名查找后顯示(4)刪除有關(guān)記錄(5)增加記錄(6)保存修改后的文件
(7)顯示修改后的文件
3.各功能模塊的程序流程圖。(學(xué)生完成)
4.完整的源程序代碼。(學(xué)生設(shè)計(jì)完成)
設(shè)計(jì)題目三:小型特殊計(jì)算器
1.系統(tǒng)概要
本程序的功能是實(shí)現(xiàn)一個(gè)特殊的計(jì)算器,可以實(shí)現(xiàn)復(fù)數(shù)、有理數(shù)、矩陣和集合的特殊計(jì)算。程序可以實(shí)現(xiàn)復(fù)數(shù)、有理數(shù)的加、減、乘、除,可以實(shí)現(xiàn)矩陣的加法、減法和乘法運(yùn)算,也可以實(shí)現(xiàn)集合的求交集、并集、子集的運(yùn)算。注:可任選兩種運(yùn)算。
2.基本功能要求
(1)功能選擇可以用菜單來實(shí)現(xiàn) 例如:請選擇您的計(jì)算內(nèi)容:
1.復(fù)數(shù)計(jì)算 2.有理數(shù)計(jì)算 3.矩陣計(jì)算 4.集合計(jì)算 0.退出
用戶通過輸入不同的數(shù)字進(jìn)入不同的菜單。次級菜單主要顯示本程序的功能,主要的功能有加法、減法、乘法和除法以及集合的求交集、求并集、求子集。(2)運(yùn)行時(shí)給出明確的提示信息。
比如,輸入一個(gè)什么類型的數(shù)據(jù)。根據(jù)用戶的輸入計(jì)算輸出結(jié)果。由于數(shù)據(jù)類型比較多,可以一次輸入第一個(gè)復(fù)數(shù)的實(shí)部,第一個(gè)復(fù)數(shù)的虛部,再輸入第二個(gè)復(fù)數(shù)的實(shí)部、虛部。矩陣運(yùn)算需要先輸入矩陣的行數(shù)和列數(shù),然后依次輸出矩陣的第一行第一列的元素、第一行第二列的元素等等,依次類推。有理數(shù)運(yùn)算需要一次輸入有理數(shù)的分子、分母。集合運(yùn)算需要輸入集合的元素個(gè)數(shù),然后依次輸入集合中的每一個(gè)元素。
3.各功能模塊的程序流程圖。(學(xué)生完成)
4.完整的源程序代碼。(學(xué)生設(shè)計(jì)完成)
第三篇:VC課程設(shè)計(jì)報(bào)告
編號:
河北工業(yè)大學(xué)計(jì)算機(jī)軟件技術(shù)基礎(chǔ)(VC)2007年課程設(shè)計(jì)報(bào)告
學(xué)院 班級 姓名 __ 學(xué)號 ____ 成績 __ ____
一、題目:查找滿足特定條件的三位數(shù)(27)
二、設(shè)計(jì)思路
1、總體設(shè)計(jì) 1)分析程序的功能
2)系統(tǒng)總體結(jié)構(gòu):設(shè)計(jì)程序的組成模塊,簡述各模塊功能。
2、各功能模塊的設(shè)計(jì):說明各功能模塊的實(shí)現(xiàn)方法
3、設(shè)計(jì)中的主要困難及解決方案
在這部分論述設(shè)計(jì)中遇到的主要困難及解決方案。1)如何將輸出1~9不重復(fù)數(shù)字 2)困難2
4、你所設(shè)計(jì)的程序最終完成的功能 1)說明你編制的程序能完成的功能 2)準(zhǔn)備的測試數(shù)據(jù)及運(yùn)行結(jié)果
三、程序清單
如果是使用一個(gè)文件完成的程序,只需列出程序代碼。
如果是使用多文件完成的程序,首先說明程序中的代碼存放在哪些文件中,說明文件名(例如:本程序包含first.cpp、second.cpp、third.cpp和all.h四個(gè)文件);然后依次給出每個(gè)文件名及該文件清單,例如:
1、first.cpp文件清單
2、second.cpp文件清單
3、third.cpp文件清單
第1頁/共2 頁
編號:
4、all.h文件清單
(說明:程序清單中一定要有注釋。將程序中自己編寫的代碼列在此處,系統(tǒng)自動生成的代碼就不要列出了。程序清單部分的行間距設(shè)為1行即可。)
四、對該設(shè)計(jì)題目有何更完善的方案
1、對自己完成程序進(jìn)行自我評價(jià)。
2、對課題提出更完善的方案
五、收獲及心得體會
1、通過本次課程設(shè)計(jì),自己在哪些方面的能力有所提高。
2、收獲和心得體會。
日期: 2007年
月
日
(說明:本模板只提供參考,每個(gè)同學(xué)根據(jù)自己課題的特點(diǎn),可減少或增加某方面的論述)
第2頁/共2 頁
第四篇:VC課程設(shè)計(jì)題目
VC++課程設(shè)計(jì)題目 B090110-12
(2012-04-23 – 2012-05-19)
前言:本課程設(shè)計(jì)分成自測題和綜合題兩部分。兩部分都列入驗(yàn)收。
練習(xí)題:
共11道。內(nèi)容覆蓋主要基本技術(shù):基本的開發(fā)環(huán)境(調(diào)試技術(shù)),文件操作,動態(tài)鏈接庫,圖形圖像編程,多線程編程,控件開發(fā)等。
每個(gè)學(xué)生選擇5個(gè)完成,要求如下:
必做:1;
2,3選擇其一;
4,5選擇其一;
6-11選擇其二;
1. 基本環(huán)境調(diào)試
將例程1用VC++打開,修改錯(cuò)誤使程序能夠運(yùn)行。理解編譯錯(cuò)誤,運(yùn)行錯(cuò)誤等。
2. 數(shù)據(jù)庫操作
通過ODBC數(shù)據(jù)源訪問數(shù)據(jù)庫(ACCESS),數(shù)據(jù)庫中保存以下內(nèi)容:
學(xué)生姓名,性別,年齡,家庭住址,電話,電子郵件,愛好等。
再以上基礎(chǔ)上進(jìn)行該記錄的讀出并可編輯瀏覽顯示。
3. 文件操作
寫一個(gè)檔案文件保存以下內(nèi)容:
學(xué)生姓名,性別,年齡,家庭住址,電話,電子郵件,愛好等。
再以上基礎(chǔ)上進(jìn)行該文件的讀出并可編輯瀏覽顯示。
4. 圖形編程
提供一個(gè)圖形工具界面,讓用戶能夠畫出直線,橢圓,多邊形等幾何元素,結(jié)果可以保存并可讀出。
5. 圖像顯示
編程加載顯示位圖文件(bmp)。實(shí)現(xiàn)多個(gè)位圖的疊加顯示效果。在此基礎(chǔ)上,實(shí)現(xiàn)動畫效果。
6. 字符串操作
能夠從磁盤上選擇打開文本文檔,讀入所有內(nèi)容并顯示,統(tǒng)計(jì)所有的字符數(shù)目,單詞數(shù)目,中文字符串的數(shù)目。
7. 多線程技術(shù)
目的:掌握多線程編程的基本概念,掌握用戶線程的編程方法和調(diào)試方法。
建立一個(gè)工程,主線程負(fù)責(zé)用戶交互,界面上提供一個(gè)按鈕,通過它用戶建立一個(gè)新的線程處理復(fù)雜的計(jì)算。多個(gè)線程可以共享內(nèi)存中的某些變量。線程可以中止,掛起。線程間需要同步。
8. 通信技術(shù)
利用套接字編寫雙機(jī)通信程序,從服務(wù)器接收GPS數(shù)據(jù)。協(xié)議內(nèi)容如下:
0xDB,緯度(4字節(jié)浮點(diǎn)),經(jīng)度(4字節(jié)浮點(diǎn)),時(shí)間(4字節(jié)CTime),速度(2字節(jié)整型),校驗(yàn)(1字節(jié)異或),0xDB
在此基礎(chǔ)上,能夠在屏幕上顯示其位置和速度等信息。
把接收到的內(nèi)容進(jìn)行解析并且顯示。
9. 動態(tài)鏈接庫
目的:了解MFC 支持的三種動態(tài)鏈接庫:Win32DLL,MFC 常規(guī)DLL, MFC擴(kuò)展庫。掌握封裝DLL的基本方法。
步驟:
新建三個(gè)不同的DLL工程;
分別封裝一些類和函數(shù);
新建一個(gè)測試工程對上述庫里的函數(shù)或類進(jìn)行調(diào)用;
封裝一個(gè)對話框類到DLL,并新建一個(gè)工程調(diào)用之。
10. 控件編程
利用ATL編寫一個(gè)控件,并寫一個(gè)測試程序進(jìn)行調(diào)用。
目的:掌握ATL控件的編寫方法,測試方法和調(diào)用方法。
步驟:
新建一個(gè)ATL工程;
添加ATL控件;
往接口里添加屬性和事件;
修改繪制代碼;
寫測試程序;
11. 多媒體數(shù)據(jù)采集
利用微軟的視頻,音頻采集API函數(shù),編寫一個(gè)能夠進(jìn)行圖像,音頻,視頻采集的程序。
綜合題:
1. 硬盤錄像機(jī)的制作
要求:
對外接USB接口的攝像頭的數(shù)據(jù)進(jìn)行采集,結(jié)果保存在硬盤上。能夠根據(jù)要求對文件進(jìn)行檢索,播放,備份,上傳。
*能夠架構(gòu)一個(gè)視頻流服務(wù)器,提供多人的基于IE的在線視頻瀏覽。
2. 數(shù)字存貯示波器的制作
要求:編程實(shí)現(xiàn)一個(gè)數(shù)字存貯示波器。示波器的蹤數(shù)1-10可變,示波器的數(shù)據(jù)采樣點(diǎn)可達(dá)1024。
示波器可以實(shí)現(xiàn)圖形以不同的形式顯示(如波形圖,柱圖等)。
示波器的橫向,縱向均可以用鼠標(biāo)進(jìn)行分辨率調(diào)整。
示波器提供文件接口,可以文件讀寫。
結(jié)果以DLL形式封裝。
創(chuàng)建一個(gè)客戶程序?qū)κ静ㄆ鬟M(jìn)行測試。
參考:SIMULINK的示波器。
3. 大地面積測量
要求:在文本文件中保存了一條封閉路徑的頂點(diǎn)的經(jīng)緯度數(shù)據(jù),計(jì)算由這條路封閉出的區(qū)域面積。
步驟:
(1)自行編輯三個(gè)不同大小區(qū)域的文本文件(區(qū)域范圍50KM,500KM,5000KM);
(2)生成一個(gè)單獨(dú)的對話框工程(項(xiàng)目);
(3)導(dǎo)入?yún)^(qū)域文件;
(4)函數(shù)說明 float Area(int nNum/*頂點(diǎn)數(shù)目:>=3*/, float* vX/*經(jīng)度*/, float* vY/*緯度
*/, char Coord=1/*坐標(biāo)系: 1 經(jīng)緯度 2平面坐標(biāo)*/);
(5)對于結(jié)果進(jìn)行誤差分析。
參考資料:地理坐標(biāo)變換算法(上網(wǎng)搜索)
測試方法:用MATLAB工具包函數(shù)可以進(jìn)行對比測試。
4. 文件編輯
創(chuàng)建一個(gè)多文檔工程,實(shí)現(xiàn)對于磁盤文件的瀏覽,編輯等功能。
能夠以文本文件,二進(jìn)制文件方式打開文件;
支持剪貼板功能;
支持搜索,查找,替換功能;
支持文件定位;
功能可參考:磁盤文件工具程序UltraEdit。
5. 個(gè)人簡歷
創(chuàng)建一個(gè)個(gè)人簡歷程序,能夠編輯自己的個(gè)人資料,添加自己的相片集進(jìn)行瀏覽,具有保存,打印等功能。
6.文字聊天室
做一個(gè)基于點(diǎn)對點(diǎn)的聊天程序。同時(shí)具有客戶端和服務(wù)器功能。
字體顏色可設(shè)置;
具有豐富的表情;
聊天記錄可以保存,瀏覽。
7. 卡拉OK點(diǎn)歌管理系統(tǒng)
在本地硬盤庫里存放歌曲文件(暫定WAV文件格式)。按照歌手,歌名(字?jǐn)?shù)),類別進(jìn)行檢索播放。
對歌曲庫可以進(jìn)行管理,如添加,刪除等。
計(jì)時(shí)計(jì)費(fèi)功能。
8. 酒店管理系統(tǒng)
實(shí)現(xiàn)酒店客房的預(yù)定,登記,分配,計(jì)費(fèi)等功能。
基本步驟:
(1)數(shù)據(jù)庫后臺設(shè)計(jì),數(shù)據(jù)準(zhǔn)備;
(2)界面設(shè)計(jì);
(3)功能實(shí)現(xiàn);
(4)測試;
9. 數(shù)字圖像格式轉(zhuǎn)換
能夠進(jìn)行BMP,GIF,TIF,JPG等圖像的顯示,保存,轉(zhuǎn)換;
能夠?qū)D像進(jìn)行處理:平滑,濾波,增強(qiáng)等。(算法可自行查找)
10. 簡易電子地圖編輯
用MapX實(shí)現(xiàn)地圖的編輯功能:打開地圖(Tab格式), 添加/刪除點(diǎn),線,面元素,通過屬性查詢并高亮顯示。
請大家發(fā)揮想象,獨(dú)立完成。
課程設(shè)計(jì)安排
時(shí)間與進(jìn)度安排
課程設(shè)計(jì)共40學(xué)時(shí),分在四周內(nèi)完成。參考的時(shí)間分配如下(以每天4學(xué)時(shí)為例): 第1天: 基本環(huán)境熟悉;
第2-4 天: 基礎(chǔ)練習(xí)題;
第5-9 天: 綜合題;
第10天: 驗(yàn)收;
注:基礎(chǔ)練習(xí)題11道中完成5道(如前所述),可在完成后請老師驗(yàn)收。綜合課題任選一道。為避免重復(fù),原則上每個(gè)題目只允許一定數(shù)目的同學(xué)選擇。
實(shí)驗(yàn)報(bào)告要求
實(shí)驗(yàn)報(bào)告包括兩部分的題目(基礎(chǔ)練習(xí)題和綜合題)。內(nèi)容包括:
1. 實(shí)驗(yàn)?zāi)康?. 算法流程框圖;
3. 數(shù)據(jù)結(jié)構(gòu)說明;
4. 程序說明;
5. 測試結(jié)果;
6. 附件:程序代碼。
成績評定
成績評定遵循過程與結(jié)果并重的原則,給出考查課成績等級(不及格,及格,中等,良好,優(yōu)秀)。依據(jù)下列因素進(jìn)行學(xué)生的成績評定:
1. 出勤率;
出勤率低于30%者將被成績降級,低于50%將被要求重修。
2. 認(rèn)真程度;
有如下行為者視情節(jié)輕重成績將被降級直至重修:打游戲,看電影或其他無關(guān)事項(xiàng)。
3. 完成質(zhì)量;
相同的課題,如果出現(xiàn)雷同的結(jié)果,將被降級。
4. 回答問題的水平;
對于完成的課題,如果不能解釋,視同抄襲,成績降級。
5. 實(shí)驗(yàn)報(bào)告
對于沒有完成指定內(nèi)容,或者雷同報(bào)告的,成績降級。
特別的,對于完成內(nèi)容超過題目要求或者有獨(dú)特成果,給與成績獎(jiǎng)勵(lì)。
2012-4-20
驗(yàn)收提示:
(根據(jù)最新的上級要求,做如下的通知)
5月18日: 驗(yàn)收日。在此之前,請大家完成準(zhǔn)備工作(代碼,必要的說明文檔等)。驗(yàn)收時(shí)采用教師學(xué)生一對一方式進(jìn)行,同學(xué)需要進(jìn)行預(yù)約,并主動出示有效證件。為了提供良好的驗(yàn)收環(huán)境,非驗(yàn)收同學(xué)應(yīng)在別處等候,不要圍觀,評論。驗(yàn)收老師會提問一些相關(guān)問題,請同學(xué)獨(dú)立回答。學(xué)生也可能被要求進(jìn)行現(xiàn)場的一些簡單的功能改進(jìn)。
對于上機(jī)時(shí)間沒有達(dá)到最低要求的,取消驗(yàn)收資格。此數(shù)據(jù)來自計(jì)算機(jī)系統(tǒng),請大家平時(shí)注意查詢。
平時(shí)有問題,歡迎在教師值班時(shí)候來咨詢。(見附表)
實(shí)驗(yàn)報(bào)告:需要提供報(bào)告的硬拷貝和電子版資料(文檔,代碼等),如果在成績評定日尚未提交,則一律下一年重修。(提示:請班長或者學(xué)習(xí)委員負(fù)責(zé)統(tǒng)一收齊,按照學(xué)號排序,交到指定位置)。
第五篇:VC課程設(shè)計(jì)報(bào)告--教學(xué)事務(wù)管理系統(tǒng)
C++ 課 程 設(shè) 計(jì) 實(shí) 驗(yàn) 報(bào) 告
學(xué)號
姓名
院系專業(yè) 能源與環(huán)境工程 熱能與動力工程
一、課題名稱
《教學(xué)事務(wù)管理系統(tǒng)》
二、問題陳述
使用面向?qū)ο笤O(shè)計(jì)的系統(tǒng)分析和設(shè)計(jì),設(shè)計(jì)出適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),編寫一個(gè)信息管理程序,程序的功能是管理學(xué)生基本信息,要求具有添加,刪除,查詢,排序的功能,并具有一定的查詢功能。
三、設(shè)計(jì)目標(biāo)和設(shè)計(jì)任務(wù)
新學(xué)期開學(xué)時(shí)新學(xué)生需要注冊,登記注冊信息。注冊信息包括每個(gè)已注冊學(xué)生的班級代號、學(xué)號、姓名、注冊的學(xué)期等。
每個(gè)學(xué)期開始,學(xué)生可以選課,登記選課信息。選課信息包括已注冊的每個(gè)學(xué)生所選的課程,選課僅限該生注冊的學(xué)期。
每個(gè)學(xué)期考試完畢,需要成績登記。每個(gè)學(xué)生所選課程的考核成績,以及此成績的類型。
所輸入學(xué)生的信息如果有誤,可以修改。對于退學(xué)、轉(zhuǎn)學(xué)的學(xué)生,刪除有關(guān)資料,對轉(zhuǎn)入的學(xué)生,可以增加其各項(xiàng)信息。
學(xué)生信息包括:學(xué)號、班級、院系、姓名、性別、聯(lián)系電話、家庭住址等。課程信息包括:課程代號、課程名、開課學(xué)期、學(xué)分、課時(shí)。
成績信息包括:姓名、學(xué)號、班級、課程代號、成績、類別(初修、補(bǔ)考、重修)??商峁┑牟樵児δ埽?/p>
根據(jù)某些信息(班級、性別、專業(yè))查詢學(xué)生名單; 某門課程的選修者名單(含學(xué)號、成績、成績類型); 某個(gè)學(xué)生某個(gè)課程某學(xué)期的成績單; 某個(gè)班級某個(gè)課程各個(gè)學(xué)生的成績單; 某個(gè)課程選修者中不及格學(xué)生的名單;
某個(gè)課程的各項(xiàng)信息(課程代號、學(xué)分、課時(shí)、開課學(xué)期);
四、解題算法思想
程序包括11個(gè)對話框,主對話框上四個(gè)按鈕,分別調(diào)用“注冊信息”、“選課信息”、“成績錄入”及“信息管理和查詢”四個(gè)子對話框。
其中,在“注冊信息”對話框內(nèi)可以選擇學(xué)生的注冊學(xué)期,點(diǎn)擊“確定”按鈕后,彈出“學(xué)生信息”對話框,此對話框與后面將會提到的“信息管理與查詢”對話框的子對話框之一,“學(xué)生信息”相同,二者可相互共享。在該對話框中點(diǎn)擊“增加”按鈕,將調(diào)用“成員對話框”,用以實(shí)現(xiàn)學(xué)生的注冊。信息填寫完整后點(diǎn)擊“確定”,并可依次返回至主對話框。
接著,點(diǎn)擊“選課信息登記”,彈出選課信息對話框,在相應(yīng)輸入框或下拉菜單中輸入信息后,點(diǎn)擊所要選的課程(可多選),然后點(diǎn)“確定”,程序可以自行判斷信息輸入是否合理(選課學(xué)生是否已經(jīng)注冊或是否已選擇同樣的課程),如果有誤,則通過消息框提示,并可以再次輸入信息;如果信息合理,則提示選課成功。
點(diǎn)擊“返回”回到主對話框,可通過“學(xué)生成績錄入”按鈕調(diào)用“成績錄入”對話框,在此對話框中,可在輸入框或下拉菜單中填寫相關(guān)信息,程序同樣可以自行判斷信息輸入的合理性(輸入的學(xué)生是否已注冊或是否已選擇相應(yīng)課程),如果輸入有誤,則彈出消息框提示,可以再次輸入信息;如果信息合理,則成績錄入成功,新的成績信息會在下方的List Control控件中顯示。也可以直接點(diǎn)擊下方List中的原有信息,程序會自動將該信息中的學(xué)生學(xué)號及相應(yīng)課程代碼填寫入上方控件,方便成績的錄入。所有成績錄入完成后,點(diǎn)擊“完成并保存”按鈕,保存已錄入的信息,同時(shí)自動返回至主對話框。
如需要查詢相應(yīng)信息,可點(diǎn)擊“信息管理與查詢?nèi)肟凇保{(diào)用“信息管理與查詢”對話框。在這個(gè)對話框中,包含三個(gè)主要功能按鈕,“學(xué)生信息”,“課程信息”和“成績信息”,分別用以提供相應(yīng)的查詢功能。
點(diǎn)擊“學(xué)生信息”,進(jìn)入“學(xué)生信息”對話框。在這里可以實(shí)現(xiàn)學(xué)生信息的查詢及管理功能。在上方控件中填寫或選擇相應(yīng)信息后,便可以在下方的List Control控件中查看到所要的學(xué)生信息,同時(shí)選中相應(yīng)條目后,可以通過右方的“刪除”、“增加”和“修改”按鈕,實(shí)現(xiàn)數(shù)據(jù)的管理。而通過下方“載入”和“保存”按鈕,可以載入及保存現(xiàn)有數(shù)據(jù),當(dāng)然也可以載入進(jìn)之前保存的文件,從而實(shí)現(xiàn)相同學(xué)生,不同學(xué)期的信息查詢。
返回至“信息管理與查詢”對話框后,點(diǎn)擊“課程信息”按鈕,在彈出的“課程信息”對話框中,可以查看所有的課程的基本信息,并可以通過“增加課程”按鈕,調(diào)用“增加課程”對話框,填寫新課程信息,從而增加新的課程;在“課程信息”中的控件中選擇某門課程后,也可以通過“查看課程”按鈕調(diào)用“查看課程”對話框,查看到選修該課程的學(xué)生名單,包括學(xué)號,成績等信息,勾選上方控件后可以查看不及格學(xué)生的名單。
依次返回至“信息管理與查詢對話框”,點(diǎn)擊“成績信息”后,進(jìn)入“成績信息”對話框。在這個(gè)對話框中可以在下方的List Control看到所有學(xué)生的成績單,通過上方的Edit控件輸入各個(gè)相應(yīng)的篩選條件,便可以在下方看到所有符合條件的學(xué)生的成績單。
依次返回至主對話框,點(diǎn)擊“◎”退出程序。
五、數(shù)據(jù)結(jié)構(gòu)描述
程序數(shù)據(jù)通過兩個(gè)節(jié)點(diǎn)類、兩個(gè)鏈表類來存儲。分別如下:
{ public:
CString m_CourseNum;//存儲課程代碼 CString m_CourseName;//存儲課程名 CString m_CourseTerm;//存放課程開課學(xué)期 CString m_CoursePoint;//存放課程學(xué)分 CString m_CourseTime;//存放課程課時(shí)數(shù) int m_CourseScore;//存放學(xué)生課程成績 CString m_CourseType;//存放學(xué)生成績類型 Course *next;Course()//默認(rèn)構(gòu)造函數(shù) class Course
{
} Course(CString CourseNum,CString CourseName,CString CourseTerm,CString m_CourseNum=“";m_CourseName=”“;m_CourseTerm=”“;m_CoursePoint=”“;m_CourseTime=”“;m_CourseScore=0;m_CourseType=”";next=NULL;CoursePoint,CString CourseTime);};
class CourseList { public:
Course * head;CourseList();void DeleteNode(Course *p);//用來刪除存放指定課程的鏈表 void SaveToFile(const char *name);//將課程信息保存至文件 void LoadFromFile(const char *name);//從文件中導(dǎo)入課程信息 void ReleaseList();//釋放鏈表
void AddNode(CString CourseNum,CString CourseName,CString CourseTerm,CString CoursePoint,CString CourseTime);//向鏈表中添加節(jié)點(diǎn)
};
class CStudent Course* FindNode(CString CourseNum);//根據(jù)課程代碼查找節(jié)點(diǎn) { public:
CString m_StudentNo;//存放學(xué)號 CString m_Class;//存放班級 CString m_Name;//存放學(xué)生姓名 CString m_Sex;//存放學(xué)生性別 CString m_Dept;//存放專業(yè)
CString m_PhoneNo;//存放學(xué)生電話號碼 CString m_Address;//存放學(xué)生家庭住址 CString m_Term;//存放學(xué)生注冊學(xué)期 CStudent *next;Course m_Course[20];//用來存放學(xué)生選的各項(xiàng)課程 int s;//存放學(xué)生所選課程的數(shù)量 CStudent();CStudent(CString CourseNum,CString StudentNum,int Score,CString ScoreType);CStudent(CString StudentNo,CString Class,CString Name,CString Sex,CString Dept,CString PhoneNo,CString Address);};class CStudentList { public:
CStudent * head;//頭指針 int n;//節(jié)點(diǎn)數(shù)量 CStudentList();void DeleteNode(CStudent *p);//從鏈表中刪除指定節(jié)點(diǎn) void SaveToFile(const char *name);//將鏈表內(nèi)容存入文件 void LoadFromFile(const char *name);//從文件載入鏈表內(nèi)容 void ReleaseList();//釋放鏈表 void AddNode(CString StudentNo,CString Class,CString Name,CString Sex,CString Dept,CString PhoneNo,CString Address);//向?qū)W生鏈表中添加節(jié)點(diǎn) void AddScoreNode(CString CourseNum,CString StudentNum,int Score,CString ScoreType);//向鏈表中加入成績信息 void AddCourseNode(CString StudentNo,CString CourseName, CString CourseNum,CString CourseTerm CString CoursePoint, CString CourseTime);//向鏈表中加入對應(yīng)課程信息
};
另外,定義了全局變量:
CStudentList m_List;//用來保存學(xué)生的各項(xiàng)數(shù)據(jù)
CString Term;//用來存放學(xué)生的注冊學(xué)期,用來將注冊的學(xué)期信息加入鏈表(開始時(shí),AddNode函數(shù)中忘記加入m_Term變量了)
CString Num;//為了在查看課程信息時(shí),對話框里的內(nèi)容能夠方便的傳入子對話框中 CStudent* FindNode(CString StuNo);//根據(jù)學(xué)號查找節(jié)點(diǎn)
六、測試數(shù)據(jù)
以下為程序初步運(yùn)行后保存至文件中的內(nèi)容:
2009-***091許亞軍男 能源與環(huán)境學(xué)院 ***M9
110100首修高等數(shù)學(xué)5.0
2009-201048課時(shí)111100首修
2009-201048課時(shí)大學(xué)物理3.0 2009-201048課時(shí)112100首修C++2.0 111100首修大學(xué)物理3.0 男
2009-201048課時(shí)
2009-***091周帆能源與環(huán)境學(xué)院110M9
111100首修大學(xué)物理3.0 2009-201048課時(shí)11299首修C++2.0 2009-201048課時(shí)
2009-***091雒志強(qiáng)男
2009-201048課時(shí)能源與環(huán)境學(xué)院10086M9
112100首修C++2.0 2009-***091楊宗冰男
能源與環(huán)境學(xué)院119M9
112100首修C++2.0 2009-201048課時(shí)2009-***091XX女建筑學(xué)院XXXXXX
11055補(bǔ)考高等數(shù)學(xué)5.0 2009-201048課時(shí)1110重修大學(xué)物理3.0 2009-201048課時(shí)112100首修2009-201048課時(shí) C++2.0
七、運(yùn)行情況分析
輸入數(shù)據(jù)測試后,生成包含以上內(nèi)容的文件。整個(gè)過程順利,程序可以正確運(yùn)行,未出現(xiàn)重大錯(cuò)誤,各項(xiàng)功能也都可以實(shí)現(xiàn)??蓪⑸傻奈募硗獗4?,從而錄入新的數(shù)據(jù)(如其他學(xué)期的學(xué)生信息),而在查詢時(shí),可以根據(jù)需要查詢的不同學(xué)期的信息來載入不同的文件。
八、設(shè)計(jì)小結(jié)
在程序設(shè)計(jì)過程中遇到了不少問題,很多都是因?yàn)橹暗南敕]有完全照顧到全局,使得后來要大幅度的修改代碼,或者用較為復(fù)雜的代碼來彌補(bǔ)。所以,較大的程序設(shè)計(jì),最重要的就是一定要有大局觀,在設(shè)計(jì)初期就要將自己的目標(biāo)、思路理清,最好做下記錄,而且做每一步的同時(shí)也必須想到后面的很多步,否則到后來很可能會因?yàn)橹暗娜毕荻霾幌氯?,或者不得不放棄某些功能。另外,對于程序編寫本身,我發(fā)現(xiàn)需要注意的部分是文件的保存及載入,這部分的每一個(gè)代碼都需要仔細(xì)斟酌,否則很可能出現(xiàn)在編譯時(shí)沒問題,而運(yùn)行時(shí)出錯(cuò)的狀況。而一旦出現(xiàn)這種情況,就必須通過恰當(dāng)?shù)姆椒▽ふ页鰡栴}所在,如注釋某些最近寫的代碼、利用消息框彈出某些變量的值,從而判斷其與設(shè)想是否相符等方法,而不能盲目的查看所有代碼,慢慢找或者索性手足無措了。
九、心得體會
這是我第一次嘗試做比較大的程序,所以從中學(xué)到的還是很多的。首先,我發(fā)現(xiàn)我對程序設(shè)計(jì)還是很感興趣的,很喜歡去鉆研;其次,在設(shè)計(jì)及編程的過程中,通過發(fā)現(xiàn)問題、解決問題,我自己總結(jié)出來了不少方法,也發(fā)現(xiàn)了編寫時(shí)所必須注意和避免的錯(cuò)誤,可以讓以后少走彎路。這些都是對于程序設(shè)計(jì)本身,此中的心得當(dāng)然有很多,我也無法一一列舉出來,而最重要的是我從其中學(xué)到了一些程序設(shè)計(jì)之外的東西。我深切的體會到了全局思想的重要性,無論干什么,基本上都得有這種思想,每走一步都必須想到以后的路,必須想到這一步是為什么而走的,為什么目標(biāo)而服務(wù)的。只有這樣,才能慢慢的穩(wěn)健的走向自己的目標(biāo),不會在某一點(diǎn)上突然發(fā)現(xiàn)自己走不下去了,發(fā)現(xiàn)之前的某一步將自己帶上的崎嶇的路,而不得不往回走去彌補(bǔ)之前的過錯(cuò)或者干脆拐上另一條不明方向的道路。另外,前進(jìn)的過程中,當(dāng)遇到問題時(shí),必須通過恰當(dāng)?shù)姆椒ㄈグl(fā)現(xiàn)起源,然后解決,而不要盲目的去尋找或者毫無對策了,必要的時(shí)候也得求助他人。而在一步步解決問題的過程中,也必須學(xué)會自己總結(jié),以避免以后再次遇上相同錯(cuò)誤時(shí)再走彎路。
總之,這次的課程設(shè)計(jì)給了我很大幫助,如果有機(jī)會,我便會選擇向這方面去深入發(fā)展。
參考資料
1、《C++課程設(shè)計(jì)》
2、《C++程序設(shè)計(jì)》 提交日期 2010-9-16 星期四
朱金付 何鐵軍 朱萍 鄭雪清 徐冬梅 編著
朱金付 主編