




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C+程序設計實現環節考核規定2.1實踐環節考核大綱一、考核類型上機考核二、目的要求C+語言程序設計是計算機科學和應用專業、信息管理專業(本科)的必修課,是培育學生實踐動手實力的一門重要的專業課程,是為滿意計算機應用領域和計算機應用人才的須要而設計的。C+語言是一種面對對象的編程語言,它集抽象性、封裝性、繼承性和多態性等面對對象特征于一體,可以幫助人們開發出具有較高數據抽象程度,能夠充分體現信息隱藏、軟件重用、易修改、易擴充等特征的大型軟件。C+語言程序設計的試驗采納Microsoft Visual C+6.0。通過上機實踐,加深對課程的理解,更好地駕馭程序設計的基本方法,增加實踐動手實力。三、
2、考核環境硬件:586以上的PC系列機,主頻大于166MHz,內存大于256MB,硬盤空間大于500MB。軟件:中文Windows2000/NT/XP操作系統,Microsoft Visual C+6.0。四、考核方法考生抽取試題后,在45分鐘內,完成試卷中所要求的全部內容,并作必要的記錄。考試結束后,考生上交試卷。上機考核成果由現場老師初評,經考點負責人審核簽名,報主考院校核定。成果分合格、不合格兩類。五、考核內容l 駕馭Microsoft Visual C+6.0集成開發環境的運用,新建工程,編輯含有類C+源文件,存取文件,編譯文件,調試程序和運行程序。l 模板。包括:函數模板、類模板,練習
3、編制函數模板和類模板。l 熟識面對對象編程思想和多文件編程規范。l 駕馭公有繼承的賦值兼容性規則、構造函數、復制構造函數和析構函數的設計方法。l 練習各類運算符的重載。l 熟識運用文件的基本方法。l 熟識繼承和包含以及虛函數的多態性。六、參考書目1.劉振安主編,C+程序設計,機械工業出版社2008年2.雪萬鵬譯,C+程序設計教程,機械工業出版社2005年3.錢能,C+程序設計教程,清華高校出版社 2006年2.2 C+程序設計上機考核指導C+語言程序設計是一門實踐性很強的課程,必需通過反復上機練習,深化領悟面對對象程序設計的基本思想。通過試驗教學加深理解和鞏固課堂和教材所學的內容,提高實踐動手
4、實力。試驗一 Microsoft Visual C+6.0集成開發環境的運用一、 試驗目的和要求了解并初步駕馭Microsoft Visual C+6.0集成開發環境的運用。二、 試驗內容(1) 創建項目(Project)1、 啟動VC6.02、 從主菜單中選擇【文件】|【新建】吩咐,打開【新建】對話框。單擊【工程】標簽,從項目列表中單擊Win32 Console Application選項;在【工程】文本框中輸入項目的名字,如“hello”,系統將自動為用戶的項目安排一個默認的書目。3、 假如是Visual C+6.0,系統將顯示一個詢問項目類型的程序向導,選擇an empty projec
5、t(空項目)選項,單擊【完成】按鈕,顯示新建項目信息;單擊【確定】按鈕結束。(2) 添加程序代碼1、 從主菜單中選擇【文件】|【新建】吩咐,打開【新建】對話框。2、 在【新建】對話框中打開【文件】選項卡,單擊C+Source File選擇,建立源文件;選擇“添加工程”復選框。在右邊的“文件”文本框中為文件指定一個名字,如“hello”。3、 編輯源文件。在【工作區】窗口中單擊FileVIEW標簽,選擇并打開該窗口中SourceFiles下的文件,如hello.app,在打開的【文件】窗口中輸入源文件。4、 在項目文件中增加文件。若在已有的項目文件中增加一個新文件,如C+源文件“*.cpp”或頭
6、文件“*.h”須要執行以下操作。打開相應的項目文件,選擇【新建】|【文件】吩咐,選擇C+編輯欄Source選擇,可增加C+源文件;或選擇C/C+Head File選項增加 C/C+頭文件。在【文件】文本框輸入文件名,單擊【確定】按鈕。(3) 編譯源文件先激活相應的源文件窗口,選擇【編譯】|【編譯】吩咐或按Ctrl+F7鍵來編譯源文件,形成目標文件(生成.obj文件),若該項目中有多個源文件,可依次激活并編譯。(4) 連接目標文件,形成可執行文件選擇【編譯】|【連接】吩咐或快捷鍵F7連接程序,并形成可執行文件。此吩咐也可干脆將項目中的全部源文件進行編譯并連接形成可執行文件,使編譯和連接的過程結合
7、在一起。(5) 運行程序選擇【編譯】|【執行】吩咐或運用快捷鍵Ctrl+F5運行該程序,將顯示一個類似于DOS的窗口,在窗口中第一行輸出程序計算結果,其次行輸出“Press any key to continue”,提示用戶按隨意鍵回到開發環境。三、 程序練習定義一個關于日期的類,然后聲明對象,推斷該日期是否為閏年并輸出。本題練習的是定義類和運用類的方法#include<iostream>using namespace std;class TDatepublic:void SetDate(int y,int m,int d);int isLeapYear();void Print(
8、);private:int year,month,day;void TDate:SetDate(int y,int m,int d)year=y;month=m;day=d;int TDate:isLeapYear()return (year%4=0 && year%100!=0)|(year%400=0);void TDate:Print()cout<<year<<"."<<month<<"."<<day<<endl;void main()TDate date1,d
9、ate2;date1.SetDate(2004,5,4);date2.SetDate(2005,4,9);int leap=date1.isLeapYear();date1.Print();if(leap=1)cout<<"是閏年!"<<endl;elsecout<<"不是閏年!"<<endl;date2.Print();leap=date2.isLeapYear();if(leap=1)cout<<"是閏年!"<<endl;elsecout<<&qu
10、ot;不是閏年!"<<endl;四、 試驗要求按要求編寫試驗程序,將試驗程序調試運行,寫出程序的運行結果,并提交試驗報告,寫出調試運行的分析和體會。試驗二 類和對象的運用一、 試驗目的和要求(1) 熟識類的定義格式和類中成員的訪問權限。(2) 駕馭對象的定義以及對象的初始化和賦值的操作。(3) 駕馭構造函數和析構函數的運用。二、 試驗內容1 編寫一個程序,定義類CPeople包含個人信息名稱、年齡、薪水。并在類中定義構造函數、析構函數。題目分析:留意構造函數、析構函數的定義規則。源程序代碼:#include<iostream>#include<strin
11、g>using namespace std;/類Cpeople的定義 class CPeopleint m_nAge;float m_fSalary;char* m_pstrName;public:CPeople(); /缺省構造函數CPeople(int age,float salary,char *name); /帶參數的構造函數CPeople(const CPeople&); /拷貝構造函數CPeople(); /析構函數char *GetName();float GetSalary();void SetSalary(float);int GetAge();void Set
12、Age(int age);CPeople:CPeople()m_nAge=20;m_fSalary=3000.00f;m_pstrName=new char20;strcpy(m_pstrName,"無名氏");CPeople:CPeople(int age,float salary,char *name)m_nAge=age;m_fSalary=salary;m_pstrName=new char20;strcpy(m_pstrName,name);CPeople:CPeople(const CPeople&AnotherPeople)m_nAge=Another
13、People.m_nAge;m_fSalary=AnotherPeople.m_fSalary;m_pstrName=new char20;strcpy(m_pstrName,AnotherPeople.m_pstrName);CPeople:CPeople()if(m_pstrName!=NULL) delete m_pstrName;char *CPeople:GetName()return m_pstrName;int CPeople:GetAge()return m_nAge;void CPeople:SetAge(int age)if(age<=0)cout<<&q
14、uot;設置的年齡不合法"<<endl;elsem_nAge=age;float CPeople:GetSalary()return m_fSalary;void CPeople:SetSalary(float num)if(num<0)cout<<"設置的薪水數目不合法"<<endl;elsem_fSalary=num;void main()CPeople ZhangSan(65,2000.00f,"張 三");cout<<"以下為個人信息:n姓名,年齡,薪水"<
15、<endl;cout<<"-n"cout<<ZhangSan.GetName()<<" "cout<<ZhangSan.GetAge()<<" "cout<<ZhangSan.GetSalary()<<endl<<endl;CPeople A;A.SetAge(34);A.SetSalary(4000.00f);cout<<A.GetName()<<" "cout<<A.GetA
16、ge()<<" "cout<<A.GetSalary()<<endl<<endl;CPeople B(ZhangSan);cout<<B.GetName()<<" "cout<<B.GetAge()<<" "cout<<B.GetSalary()<<endl<<endl;三、 試驗和要求按要求編寫試驗程序,將試驗程序調試運行,寫出程序的運行結果,并提交試驗報告,寫出調試運行的分析和體會。試驗三 繼承和派生
17、一、試驗目的和要求(1)駕馭派生類的定義方法和派生類構造函數的定義方法。(2)駕馭不同繼承方法的狀況下,基類成員函數在派生類中的訪問權限。(3)了解派生類的構造函數和析構函數的執行依次。了解多重繼承的定義方法,多重繼承的構造函數和析構函數的運用。二、試驗內容在類CPeople的基礎上,派生出學生類CStudent,并實現對學生成果的統計和輸出。源程序代碼:#include<iostream>#include<string>#define MAXNUM 10using namespace std;class CPeopleint m_nAge;public:char* m
18、_pstrName;CPeople(int age,char *name);CPeople();int GetAge();void SetAge(int age);void CopyPeople(CPeople *pAnother);CPeople:CPeople(int age,char *name)m_nAge=age;m_pstrName=new char20;strcpy(m_pstrName,name);CPeople:CPeople()if(m_pstrName!=NULL) delete m_pstrName;int CPeople:GetAge()return m_nAge;v
19、oid CPeople:SetAge(int age)m_nAge=age;void CPeople:CopyPeople(CPeople *pAnother)m_nAge=pAnother->m_nAge;strcpy(m_pstrName,pAnother->m_pstrName);class CStudent:public CPeoplefloat m_ArrayScoreMAXNUM; /用來存放成果的數組protected:int m_stuNo;/學號int m_courseNum;/課程數目float m_aScore;/平均成果public:CStudent(int
20、 age,int No,int Num,char* pName="no name"):CPeople(age,pName)m_stuNo=No;m_courseNum=Num;m_aScore=0.0f;/初始化成果數組cout<<"請輸入學生"<<m_pstrName<<m_courseNum<<"門課的成果:"<<endl;for(int i=0;i<m_courseNum;+i)cin>>m_ArrayScorei;void CaculateAvera
21、geScore()float SUM=0.0f;for(int i;i<m_courseNum;+i)SUM+=m_ArrayScorei;m_aScore=SUM/m_courseNum;float GetM_aScore()return m_aScore;friend ostream &operator <<(ostream &out,const CStudent &s);ostream &operator <<(ostream &out,const CStudent &s)out<<"學生
22、姓名"<<s.m_pstrName<<",學號:"<<s.m_stuNo<<",成果列表:"<<endl;for(int i=0;i<s.m_courseNum;+i)out<<s.m_ArrayScorei<<endl;out<<"平均成果="<<s.m_aScore<<endl<<endl;return out;void main()CStudent stu1(16,29,3,&quo
23、t;張三");stu1.CaculateAverageScore();cout<<stu1;留意:VC+6.0 不支持插入操作符和提取操作符作為友元運算符重載,故改造如下:#include<iostream>#include<string>#define MAXNUM 10using namespace std;class CPeopleint m_nAge;public:char* m_pstrName;CPeople(int age,char *name);CPeople();int GetAge();void SetAge(int age);
24、void CopyPeople(CPeople *pAnother);CPeople:CPeople(int age,char *name)m_nAge=age;m_pstrName=new char20;strcpy(m_pstrName,name);CPeople:CPeople()if(m_pstrName!=NULL) delete m_pstrName;int CPeople:GetAge()return m_nAge;void CPeople:SetAge(int age)m_nAge=age;void CPeople:CopyPeople(CPeople *pAnother)m_
25、nAge=pAnother->m_nAge;strcpy(m_pstrName,pAnother->m_pstrName);class CStudent:public CPeoplefloat m_ArrayScoreMAXNUM; /用來存放成果的數組protected:int m_stuNo;/學號int m_courseNum;/課程數目float m_aScore;/平均成果public:CStudent(int age,int No,int Num,char* pName="no name"):CPeople(age,pName)m_stuNo=No;
26、m_courseNum=Num;m_aScore=0.0f;/初始化成果數組cout<<"請輸入學生"<<m_pstrName<<m_courseNum<<"門課的成果:"<<endl;for(int i=0;i<m_courseNum;i+)cin>>m_ArrayScorei;void CaculateAverageScore()float SUM=0.0f;for(int i=0;i<m_courseNum;i+)SUM+=m_ArrayScorei;m_aScor
27、e=SUM/m_courseNum;float GetM_aScore()return m_aScore;ostream &operator <<(ostream &out);ostream & CStudent:operator<<(ostream &out)out<<"學生姓名"<<m_pstrName<<",學號:"<<m_stuNo<<",成果列表:"<<endl;for(int i=0;i<m
28、_courseNum;i+)out<<m_ArrayScorei<<endl;out<<"平均成果="<<m_aScore<<endl<<endl;return out;void main()CStudent stu1(16,29,3,"張三");stu1.CaculateAverageScore();stu1<<cout;三、試驗和要求按要求編寫試驗程序,將試驗程序調試運行,寫出程序的運行結果,并提交試驗報告,寫出調試運行的分析和體會。試驗四 模板的運用一、試驗目的和要
29、求了解函數模板、類模板的概念,練習編制函數模板和類模板。二、試驗內容編寫一個程序,運用類模板對數組進行排序、查找和求元素和的程序。要求:設計一個類模板template <class T> class Array,用于對T類型的數組進行排序、查找和求元素和,然后由此產生模板類Array<int>和Array<double>。源程序代碼:#include<iostream>#include<iomanip>using namespace std; template <class T>class ArrayT *set;int
30、n;public:Array(T *data,int i)set=data;n=i;Array();void sort(); /排序int seek(T key); /查找指定的元素T SUM(); /求和void disp(); /顯示全部的元素;template <class T>void Array<T>:sort()int i,j;T temp;for(i=1;i<n;i+)for(j=n-1;j>=i;j-)if(setj-1>setj)temp=setj-1;setj-1=setj;setj=temp;template <class
31、T>int Array<T>:seek(T key)int i;for(i=0;i<n;i+)if(seti=key) return i;return -1;template <class T>T Array<T>:SUM()T s=o;int i;for(i=0;i<n;i+)s+=seti;return s;template <class T>void Array<T>:disp()int i;for(i=0;i<n;i+)cout<<seti<<" "cout&
32、lt;<endl;void main()int a=6,3,8,1,9,4,7,5,2;double b=2.3,6.1,1.5,8.4,6.7,3.8;Array<int>arr1(a,9);Array<double>arr2(b,6);cout<<"arr1"<<endl;cout<<"原序列"arr1.disp();cout<<"8 在arr1中的位置:"<<arr1.seek(8)<<endl;arr1.sort();cout
33、<<"排序后:"arr1.disp();cout<<"arr2"<<endl;cout<<"原序列"arr2.disp();cout<<"8.4 在arr2中的位置:"<<arr2.seek(8.4)<<endl;arr2.sort();cout<<"排序后:"arr2.disp();三、試驗和要求按要求編寫試驗程序,將試驗程序調試運行,寫出程序的運行結果,并提交試驗報告,寫出調試運行的分析和體會。試
34、驗五 運用向量一、試驗目的和要求練習運用向量解決實際問題。二、試驗內容利用向量編寫程序;出圈嬉戲。假設有人為n的一個小組,他們順時針方向圍坐一圈。一起先任選一個正整數作為報數的上限值m,從第一個人起先按順時針方向自star起先依次報數,報到m時停止報數并出列。如此下去,直到全部人全部出列為止。要求按他們出列的依次輸出他們的名字。源程序代碼:#include<iostream>#include<string>#include<vector>using namespace std;void fun(vector<string> &rc,uns
35、igned &rm,unsigned &ri)vector<string>:iterator p=rc.begin();unsigned j=1;/報數while(j<=rm)ri+;if(ri>=rc.size() /到終點,返回到第一個位置計數ri=0;j+;cout<<rcri<<","rc.erase(p+ri); /刪除出圈人的記錄if(ri>=rc.size() ri=0; /到終點,返回到第一個位置計數void main()unsigned length=0,m,star,i;cout<
36、;<"請輸入人數:"cin>>length;vector<string> c(length);cout<<"請輸入報數上限值m (m<=20)"cin>>m;while(m>20)cout<<"報數上限值太大,請重新輸入:"cin>>m;cout<<"從第幾個人的位置起先報數(不能大于"<<c.size()<<"):"cin>>star;while(star&
37、gt;c.size()cout<<"起先位置大于人數,重新輸入:"cin>>star;cout<<"打算輸入名字"<<endl;for(i=0;i<c.size();i+)cout<<"第"<<i+1<<"個人的名字:"cin>>ci;i=star-1; /計數位置初始值while(c.size()>1)fun(c,m,i);cout<<ci<<endl;三、試驗和要求按要求編寫試驗程
38、序,將試驗程序調試運行,假設參與嬉戲的人數為5人,間隔數選10,從第三個人的位置起先報數,5個人的名字依次為:李紅、王強、李四、王五,寫出程序的運行結果,并提交試驗報告,寫出調試運行的分析和體會。試驗六 多態性和虛函數一、試驗目的和要求熟識繼承和包含以及虛函數的多態性。二、試驗內容建立工程文件、類在頭文件(employee.h)中聲明、類在源文件(empfun.cpp)實現、在源文件(sy10_4.cpp)中編寫主程序。程序實現的基本功能:小公司人員管理信息。某小公司主要有3類人員:經理、兼職技術人員、兼職銷售員。這些人員分別具有以下屬性。經理 :姓名、編號、固定工資、當月薪水、計算月薪、顯示
39、信息;兼職技術人員:姓名、編號、工作小時、每小時工資額、當月薪水、計算月薪、顯示信息;兼職銷售員 :姓名、編號、銷售額、銷售額提成、當月薪水、計算月薪、顯示信息;要求:人員編號基數為1000,每輸入一個人員信息編碼加1;月薪計算方法是經理固定月薪8000元;兼職技術人員按100元、小時領取月薪;兼職銷售員按當月銷售額的4%提成。依據題目要求,設計一個基數emplyee,然后派生出technician(兼職技術人員)類、manager(經理)類和salesman(兼職銷售員)類。源程序代碼:/employee.h 頭文件#include<iostream>#include<st
40、ring>using namespace std;class employee /定義職員類protected:char *name; /定義姓名int EmpNo; /個人編號double SUMPay; /月薪總額static int employeeNo; /本公司職員編號目前最大值public:employee();employee();virtual void pay()=0; /計算月薪函數,解決:虛函數void displayStatus(); /顯示人員信息;class technician:public employee /兼職技術人員類(公有派生)protected:
41、float hourlyRate; /每小時酬金int workHours; /當月工作時數public:technician();void pay(); /計算月薪void displayStatus(); /顯示人員信息;class salesman:public employee /兼職銷售員類(公有派生)protected:double CommRate; /提成百分比double sales; /當月銷售額public:salesman();void pay(); /計算月薪void displayStatus(); /顯示人員信息;class manager: virtual pu
42、blic employee /經理類(公有派生)protected:float monthlyPay; /固定月薪public:manager();void pay(); /計算月薪void displayStatus(); /顯示人員信息;/empfun.cpp#include<iostream>#include<string>using namespace std;#include "employee.h"int employee:employeeNo=1000; /員工編號基數employee:employee()char str20;cout
43、<<"n 輸入雇員姓名"cin>>str;name=new charstrlen(str)+1; /動態申請strcpy(name,str);EmpNo=employeeNo+; /新員工編號自動生成SUMPay=0.0; /月薪總額初始0employee:employee()delete name; /釋放空間void employee:displayStatus()cout<<name<<":"<<"編號"<<EmpNo<<",本月工資&
44、quot;<<SUMPay<<endl;technician:technician()hourlyRate=100; /每小時酬金100元void technician:pay()cout<<"輸入本月工作時數:"cin>>workHours;SUMPay=hourlyRate*workHours;void technician:displayStatus()cout<<"兼職技術人員:"employee:displayStatus();salesman:salesman()CommRate=0
45、.04; /提成比例void salesman:pay()cout<<"輸入本月銷售額:"cin>>sales;SUMPay=sales*CommRate; /月薪=銷售提成void salesman:displayStatus()cout<<"銷售員:"employee:displayStatus();manager:manager()monthlyPay=8000;void manager:pay()SUMPay=monthlyPay; /月薪總額=固定月薪void manager:displayStatus()c
46、out<<"經理:"employee:displayStatus();/sy10_4.cpp#include<iostream>#include<string>using namespace std;#include "employee.h"void main()/經理manager m1;m1.pay();m1.displayStatus();/兼職技術人員technician t1;t1.pay();t1.displayStatus();/兼職銷售員 salesman s1;s1.pay();s1.displayS
47、tatus();cout<<"n使基類指針指向子類對象"<<endl;employee *ptr4=&m1,&t1,&s1;for(int i=0;i<3;i+)ptri->displayStatus();三、試驗和要求按要求編寫試驗程序,將試驗程序調試運行,寫出程序的運行結果,并提交試驗報告,寫出調試運行的分析和體會。試驗七 缺少一、試驗目的和要求試驗八 文件讀寫一、試驗目的和要求熟識運用文件的基本方法。熟識標準流對象cin和cout的運用方法,駕馭系統供應的輸入操作和輸出操作函數。二、試驗內容簡潔通訊錄:編寫一個簡潔的通訊錄程序,在文件myNote中記錄摯友的姓名、年齡和電話號碼,允許用戶向其中添加信息,依據姓名查詢或顯示全部信息。源程序代碼:#include<iostream>#include<string>#include "iomanip"#include "fstream"using namespace std;class MyFriendprivate:unsigned int age;string name;string telephoneNo;public:void getdata()cin&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆職業大學《中學語文模擬教學》2023-2024學年第二學期期末試卷
- 甘肅省蘭州市天慶實驗中學2024屆中考數學適應性模擬試題含解析
- 廣東省佛山市禪城區2024屆中考數學考前最后一卷含解析
- 2025年廠級職工安全培訓考試試題附答案【完整版】
- 2025年承包商入廠安全培訓考試試題答案完整
- 2025班組三級安全培訓考試試題帶答案(A卷)
- 2025安全管理人員安全培訓考試試題及完整答案【奪冠】
- 2024-2025公司項目部負責人安全培訓考試試題及答案參考
- 2025新工人入場安全培訓考試試題及參考答案(滿分必刷)
- 2025年中國自動操舵儀行業市場規模及未來投資方向研究報告
- 體育賽事運營方案投標文件(技術方案)
- 海綿城市施工質量保證措施
- 新華書店集團招聘筆試沖刺題2025
- 《凝結水精處理》課件
- 大學答題紙模板
- 福建省寧德福鼎市2024-2025學年七年級上學期期中考試語文試題
- 福建省普通高中6月學業水平合格性考試英語試題(含答案解析)
- 【MOOC】Office高級應用-成都信息工程大學 中國大學慕課MOOC答案
- 《化工新材料生產技術》課件-知識點1 聚酰胺概述
- 醫院患者信息保密管理制度
- 心肺復蘇完整版本
評論
0/150
提交評論