欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      VC課程設(shè)計報告--教學(xué)事務(wù)管理系統(tǒng)

      時間:2019-05-12 18:01:44下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《VC課程設(shè)計報告--教學(xué)事務(wù)管理系統(tǒng)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《VC課程設(shè)計報告--教學(xué)事務(wù)管理系統(tǒng)》。

      第一篇:VC課程設(shè)計報告--教學(xué)事務(wù)管理系統(tǒng)

      C++ 課 程 設(shè) 計 實 驗 報 告

      學(xué)號

      姓名

      院系專業(yè) 能源與環(huán)境工程 熱能與動力工程

      一、課題名稱

      《教學(xué)事務(wù)管理系統(tǒng)》

      二、問題陳述

      使用面向?qū)ο笤O(shè)計的系統(tǒng)分析和設(shè)計,設(shè)計出適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),編寫一個信息管理程序,程序的功能是管理學(xué)生基本信息,要求具有添加,刪除,查詢,排序的功能,并具有一定的查詢功能。

      三、設(shè)計目標(biāo)和設(shè)計任務(wù)

      新學(xué)期開學(xué)時新學(xué)生需要注冊,登記注冊信息。注冊信息包括每個已注冊學(xué)生的班級代號、學(xué)號、姓名、注冊的學(xué)期等。

      每個學(xué)期開始,學(xué)生可以選課,登記選課信息。選課信息包括已注冊的每個學(xué)生所選的課程,選課僅限該生注冊的學(xué)期。

      每個學(xué)期考試完畢,需要成績登記。每個學(xué)生所選課程的考核成績,以及此成績的類型。

      所輸入學(xué)生的信息如果有誤,可以修改。對于退學(xué)、轉(zhuǎn)學(xué)的學(xué)生,刪除有關(guān)資料,對轉(zhuǎn)入的學(xué)生,可以增加其各項信息。

      學(xué)生信息包括:學(xué)號、班級、院系、姓名、性別、聯(lián)系電話、家庭住址等。課程信息包括:課程代號、課程名、開課學(xué)期、學(xué)分、課時。

      成績信息包括:姓名、學(xué)號、班級、課程代號、成績、類別(初修、補考、重修)??商峁┑牟樵児δ埽?/p>

      根據(jù)某些信息(班級、性別、專業(yè))查詢學(xué)生名單; 某門課程的選修者名單(含學(xué)號、成績、成績類型); 某個學(xué)生某個課程某學(xué)期的成績單; 某個班級某個課程各個學(xué)生的成績單; 某個課程選修者中不及格學(xué)生的名單;

      某個課程的各項信息(課程代號、學(xué)分、課時、開課學(xué)期);

      四、解題算法思想

      程序包括11個對話框,主對話框上四個按鈕,分別調(diào)用“注冊信息”、“選課信息”、“成績錄入”及“信息管理和查詢”四個子對話框。

      其中,在“注冊信息”對話框內(nèi)可以選擇學(xué)生的注冊學(xué)期,點擊“確定”按鈕后,彈出“學(xué)生信息”對話框,此對話框與后面將會提到的“信息管理與查詢”對話框的子對話框之一,“學(xué)生信息”相同,二者可相互共享。在該對話框中點擊“增加”按鈕,將調(diào)用“成員對話框”,用以實現(xiàn)學(xué)生的注冊。信息填寫完整后點擊“確定”,并可依次返回至主對話框。

      接著,點擊“選課信息登記”,彈出選課信息對話框,在相應(yīng)輸入框或下拉菜單中輸入信息后,點擊所要選的課程(可多選),然后點“確定”,程序可以自行判斷信息輸入是否合理(選課學(xué)生是否已經(jīng)注冊或是否已選擇同樣的課程),如果有誤,則通過消息框提示,并可以再次輸入信息;如果信息合理,則提示選課成功。

      點擊“返回”回到主對話框,可通過“學(xué)生成績錄入”按鈕調(diào)用“成績錄入”對話框,在此對話框中,可在輸入框或下拉菜單中填寫相關(guān)信息,程序同樣可以自行判斷信息輸入的合理性(輸入的學(xué)生是否已注冊或是否已選擇相應(yīng)課程),如果輸入有誤,則彈出消息框提示,可以再次輸入信息;如果信息合理,則成績錄入成功,新的成績信息會在下方的List Control控件中顯示。也可以直接點擊下方List中的原有信息,程序會自動將該信息中的學(xué)生學(xué)號及相應(yīng)課程代碼填寫入上方控件,方便成績的錄入。所有成績錄入完成后,點擊“完成并保存”按鈕,保存已錄入的信息,同時自動返回至主對話框。

      如需要查詢相應(yīng)信息,可點擊“信息管理與查詢?nèi)肟凇?,調(diào)用“信息管理與查詢”對話框。在這個對話框中,包含三個主要功能按鈕,“學(xué)生信息”,“課程信息”和“成績信息”,分別用以提供相應(yīng)的查詢功能。

      點擊“學(xué)生信息”,進入“學(xué)生信息”對話框。在這里可以實現(xiàn)學(xué)生信息的查詢及管理功能。在上方控件中填寫或選擇相應(yīng)信息后,便可以在下方的List Control控件中查看到所要的學(xué)生信息,同時選中相應(yīng)條目后,可以通過右方的“刪除”、“增加”和“修改”按鈕,實現(xiàn)數(shù)據(jù)的管理。而通過下方“載入”和“保存”按鈕,可以載入及保存現(xiàn)有數(shù)據(jù),當(dāng)然也可以載入進之前保存的文件,從而實現(xiàn)相同學(xué)生,不同學(xué)期的信息查詢。

      返回至“信息管理與查詢”對話框后,點擊“課程信息”按鈕,在彈出的“課程信息”對話框中,可以查看所有的課程的基本信息,并可以通過“增加課程”按鈕,調(diào)用“增加課程”對話框,填寫新課程信息,從而增加新的課程;在“課程信息”中的控件中選擇某門課程后,也可以通過“查看課程”按鈕調(diào)用“查看課程”對話框,查看到選修該課程的學(xué)生名單,包括學(xué)號,成績等信息,勾選上方控件后可以查看不及格學(xué)生的名單。

      依次返回至“信息管理與查詢對話框”,點擊“成績信息”后,進入“成績信息”對話框。在這個對話框中可以在下方的List Control看到所有學(xué)生的成績單,通過上方的Edit控件輸入各個相應(yīng)的篩選條件,便可以在下方看到所有符合條件的學(xué)生的成績單。

      依次返回至主對話框,點擊“◎”退出程序。

      五、數(shù)據(jù)結(jié)構(gòu)描述

      程序數(shù)據(jù)通過兩個節(jié)點類、兩個鏈表類來存儲。分別如下:

      { public:

      CString m_CourseNum;//存儲課程代碼 CString m_CourseName;//存儲課程名 CString m_CourseTerm;//存放課程開課學(xué)期 CString m_CoursePoint;//存放課程學(xué)分 CString m_CourseTime;//存放課程課時數(shù) int m_CourseScore;//存放學(xué)生課程成績 CString m_CourseType;//存放學(xué)生成績類型 Course *next;Course()//默認構(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é)點

      };

      class CStudent Course* FindNode(CString CourseNum);//根據(jù)課程代碼查找節(jié)點 { 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é)生選的各項課程 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é)點數(shù)量 CStudentList();void DeleteNode(CStudent *p);//從鏈表中刪除指定節(jié)點 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é)點 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é)生的各項數(shù)據(jù)

      CString Term;//用來存放學(xué)生的注冊學(xué)期,用來將注冊的學(xué)期信息加入鏈表(開始時,AddNode函數(shù)中忘記加入m_Term變量了)

      CString Num;//為了在查看課程信息時,對話框里的內(nèi)容能夠方便的傳入子對話框中 CStudent* FindNode(CString StuNo);//根據(jù)學(xué)號查找節(jié)點

      六、測試數(shù)據(jù)

      以下為程序初步運行后保存至文件中的內(nèi)容:

      2009-***091許亞軍男 能源與環(huán)境學(xué)院 ***M9

      110100首修高等數(shù)學(xué)5.0

      2009-201048課時111100首修

      2009-201048課時大學(xué)物理3.0 2009-201048課時112100首修C++2.0 111100首修大學(xué)物理3.0 男

      2009-201048課時

      2009-***091周帆能源與環(huán)境學(xué)院110M9

      111100首修大學(xué)物理3.0 2009-201048課時11299首修C++2.0 2009-201048課時

      2009-***091雒志強男

      2009-201048課時能源與環(huán)境學(xué)院10086M9

      112100首修C++2.0 2009-***091楊宗冰男

      能源與環(huán)境學(xué)院119M9

      112100首修C++2.0 2009-201048課時2009-***091XX女建筑學(xué)院XXXXXX

      11055補考高等數(shù)學(xué)5.0 2009-201048課時1110重修大學(xué)物理3.0 2009-201048課時112100首修2009-201048課時 C++2.0

      七、運行情況分析

      輸入數(shù)據(jù)測試后,生成包含以上內(nèi)容的文件。整個過程順利,程序可以正確運行,未出現(xiàn)重大錯誤,各項功能也都可以實現(xiàn)??蓪⑸傻奈募硗獗4?,從而錄入新的數(shù)據(jù)(如其他學(xué)期的學(xué)生信息),而在查詢時,可以根據(jù)需要查詢的不同學(xué)期的信息來載入不同的文件。

      八、設(shè)計小結(jié)

      在程序設(shè)計過程中遇到了不少問題,很多都是因為之前的想法沒有完全照顧到全局,使得后來要大幅度的修改代碼,或者用較為復(fù)雜的代碼來彌補。所以,較大的程序設(shè)計,最重要的就是一定要有大局觀,在設(shè)計初期就要將自己的目標(biāo)、思路理清,最好做下記錄,而且做每一步的同時也必須想到后面的很多步,否則到后來很可能會因為之前的缺陷而做不下去,或者不得不放棄某些功能。另外,對于程序編寫本身,我發(fā)現(xiàn)需要注意的部分是文件的保存及載入,這部分的每一個代碼都需要仔細斟酌,否則很可能出現(xiàn)在編譯時沒問題,而運行時出錯的狀況。而一旦出現(xiàn)這種情況,就必須通過恰當(dāng)?shù)姆椒▽ふ页鰡栴}所在,如注釋某些最近寫的代碼、利用消息框彈出某些變量的值,從而判斷其與設(shè)想是否相符等方法,而不能盲目的查看所有代碼,慢慢找或者索性手足無措了。

      九、心得體會

      這是我第一次嘗試做比較大的程序,所以從中學(xué)到的還是很多的。首先,我發(fā)現(xiàn)我對程序設(shè)計還是很感興趣的,很喜歡去鉆研;其次,在設(shè)計及編程的過程中,通過發(fā)現(xiàn)問題、解決問題,我自己總結(jié)出來了不少方法,也發(fā)現(xiàn)了編寫時所必須注意和避免的錯誤,可以讓以后少走彎路。這些都是對于程序設(shè)計本身,此中的心得當(dāng)然有很多,我也無法一一列舉出來,而最重要的是我從其中學(xué)到了一些程序設(shè)計之外的東西。我深切的體會到了全局思想的重要性,無論干什么,基本上都得有這種思想,每走一步都必須想到以后的路,必須想到這一步是為什么而走的,為什么目標(biāo)而服務(wù)的。只有這樣,才能慢慢的穩(wěn)健的走向自己的目標(biāo),不會在某一點上突然發(fā)現(xiàn)自己走不下去了,發(fā)現(xiàn)之前的某一步將自己帶上的崎嶇的路,而不得不往回走去彌補之前的過錯或者干脆拐上另一條不明方向的道路。另外,前進的過程中,當(dāng)遇到問題時,必須通過恰當(dāng)?shù)姆椒ㄈグl(fā)現(xiàn)起源,然后解決,而不要盲目的去尋找或者毫無對策了,必要的時候也得求助他人。而在一步步解決問題的過程中,也必須學(xué)會自己總結(jié),以避免以后再次遇上相同錯誤時再走彎路。

      總之,這次的課程設(shè)計給了我很大幫助,如果有機會,我便會選擇向這方面去深入發(fā)展。

      參考資料

      1、《C++課程設(shè)計》

      2、《C++程序設(shè)計》 提交日期 2010-9-16 星期四

      朱金付 何鐵軍 朱萍 鄭雪清 徐冬梅 編著

      朱金付 主編

      第二篇:VC課程設(shè)計報告

      編號:

      河北工業(yè)大學(xué)計算機軟件技術(shù)基礎(chǔ)(VC)2007年課程設(shè)計報告

      學(xué)院 班級 姓名 __ 學(xué)號 ____ 成績 __ ____

      一、題目:查找滿足特定條件的三位數(shù)(27)

      二、設(shè)計思路

      1、總體設(shè)計 1)分析程序的功能

      2)系統(tǒng)總體結(jié)構(gòu):設(shè)計程序的組成模塊,簡述各模塊功能。

      2、各功能模塊的設(shè)計:說明各功能模塊的實現(xiàn)方法

      3、設(shè)計中的主要困難及解決方案

      在這部分論述設(shè)計中遇到的主要困難及解決方案。1)如何將輸出1~9不重復(fù)數(shù)字 2)困難2

      4、你所設(shè)計的程序最終完成的功能 1)說明你編制的程序能完成的功能 2)準(zhǔn)備的測試數(shù)據(jù)及運行結(jié)果

      三、程序清單

      如果是使用一個文件完成的程序,只需列出程序代碼。

      如果是使用多文件完成的程序,首先說明程序中的代碼存放在哪些文件中,說明文件名(例如:本程序包含first.cpp、second.cpp、third.cpp和all.h四個文件);然后依次給出每個文件名及該文件清單,例如:

      1、first.cpp文件清單

      2、second.cpp文件清單

      3、third.cpp文件清單

      第1頁/共2 頁

      編號:

      4、all.h文件清單

      (說明:程序清單中一定要有注釋。將程序中自己編寫的代碼列在此處,系統(tǒng)自動生成的代碼就不要列出了。程序清單部分的行間距設(shè)為1行即可。)

      四、對該設(shè)計題目有何更完善的方案

      1、對自己完成程序進行自我評價。

      2、對課題提出更完善的方案

      五、收獲及心得體會

      1、通過本次課程設(shè)計,自己在哪些方面的能力有所提高。

      2、收獲和心得體會。

      日期: 2007年

      (說明:本模板只提供參考,每個同學(xué)根據(jù)自己課題的特點,可減少或增加某方面的論述)

      第2頁/共2 頁

      第三篇:VC課程設(shè)計教學(xué)和任務(wù)

      VC++ 課程設(shè)計指導(dǎo)書

      江蘇科技大學(xué)南徐學(xué)院電子信息系

      2011年9月

      《計算機程序設(shè)計(vc++)課程設(shè)計》課程設(shè)計指導(dǎo)書

      一. 課程設(shè)計教學(xué)和任務(wù)

      《計算機程序設(shè)計(vc++)課程設(shè)計》是實踐性教學(xué)環(huán)節(jié),是學(xué)生必修的一門計算機實踐課程。

      本課程設(shè)計的目的是通過綜合性程序設(shè)計訓(xùn)練,使學(xué)生進一步鞏固對計算機程序設(shè)計語言(vc++)基本語法,基本算法的理解,加深對面向?qū)ο蟪绦蛟O(shè)計的理解與應(yīng)用,并使學(xué)生養(yǎng)成模塊化,結(jié)構(gòu)化程序設(shè)計的良好風(fēng)格,以及一定的程序組織能力,掌握基本程序設(shè)計的方法和技巧,為學(xué)習(xí)后續(xù)課程和實際編程打下良好的基礎(chǔ)。

      本課程設(shè)計的重點要求學(xué)生掌握基本程序設(shè)計理念和方法,培養(yǎng)學(xué)生基本程序設(shè)計的應(yīng)用和開發(fā)能力。二. 課程設(shè)計要求與內(nèi)容

      1.本課程設(shè)計要求

      (1)學(xué)生必須完成本指導(dǎo)書中所有的小綜合設(shè)計題,并且完成大綜合設(shè)計題中的任意一題(具體題目由任課教師指定)。要求:對主要變量及函數(shù)要加注釋,以說明其功能。

      (2)每個學(xué)生必須完成課程設(shè)計報告一篇。(報告格式見附錄)2.課程設(shè)計的內(nèi)容

      本課程設(shè)計內(nèi)容包括兩個部分:小綜合設(shè)計題和大綜合設(shè)計題。

      ====================================== 附:課程設(shè)計報告格式一、二、課程設(shè)計目的 課程設(shè)計內(nèi)容

      1、小綜合題

      2、大綜合題

      三、課程設(shè)計體會及建議

      小綜合設(shè)計題

      1.二維數(shù)組的操作運算

      定義一個n×n的二維數(shù)組a,將該二維數(shù)組中周邊元素的值全部置為2,其他元素全部置為0。

      例如: 當(dāng)n為8時生成并輸出的矩陣為:

      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),定義一個MAT類的對象m,用n初始化m,按要求生成并輸出數(shù)組的值。

      2.鏈表

      建立一條無序鏈表,結(jié)點名為node,用一個函數(shù)實現(xiàn)將這條鏈表構(gòu)成一條新的逆序鏈表,即將鏈表頭當(dāng)鏈表尾,鏈表尾當(dāng)鏈表頭。輸出這兩條鏈表上各個節(jié)點的值。

      3.字符串處理

      將字符串中指定的英語單詞(字母子串)進行單數(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.試建立一個類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ù)的處理。

      輸出變換前和變換后的字符串。

      提示:判斷一個字符ch是否為字母,可用系統(tǒng)庫函數(shù)isalpha(ch)。該函數(shù)的功能是:若ch是字母,返回真,否則返回假。使用該函數(shù)必須包含頭文件ctype.h。

      4.素數(shù)問題

      建立一個類PRIME,求指定范圍內(nèi)的所有素數(shù)(質(zhì)數(shù))。具體要求如下:

      (1)私有數(shù)據(jù)成員

      int data[200];依次存放指定范圍內(nèi)的所有素數(shù)。

      int min,max;存放待求素數(shù)的數(shù)值范圍的下限和上限。

      int num;存放min與max之間的素數(shù)個數(shù)。

      (2)公有成員函數(shù)

      構(gòu)造函數(shù)PRIME(int n1, int n2);用n1和n2初始化待求素數(shù)的范圍 min、max及num(值為0)。

      void process();求指定范圍內(nèi)的所有素數(shù),把它們存放在數(shù)組data中。求素數(shù)的算法必須是:首先將min與max之間的所有奇數(shù)依次放入數(shù)組data中,然后依次判斷data中的每一個元素是否為素數(shù)。

      若不是素數(shù),則將其值賦為0。最后,數(shù)組data中不為0的元素均為素數(shù)。將不為0的元素值集中連續(xù)存放到數(shù)組的前面,同時統(tǒng)計素數(shù)個數(shù)。

      void print();輸出求出的所有素數(shù),同時輸出素數(shù)個數(shù)。

      (3)在主程序中對該類進行測試。

      定義一個PRIME類的對象test,并用待求素數(shù)范圍min =10, max=200初始化test。通過test調(diào)用成員函數(shù)求出10至200之間的所有素數(shù),并輸出結(jié)果。[提示] 素數(shù)的定義是“只能被1和它本身整除的正整數(shù)”,素數(shù)也稱為質(zhì)數(shù)。

      5.信號系統(tǒng)問題

      定義一個類為形狀,由它公有派生出正方體、球體和圓柱體。利用虛函數(shù)的多態(tài)性形式完成計算正方體、球體和圓柱體的體積。具體要求如下:(1)基類: shape 保護數(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)派生類為球體時,a為半徑,b為0。

      派生類為正方體時,a表示邊長,b為0。

      派生類為圓柱體時,a為圓柱體的邊長,b為圓柱體的高。

      (4)設(shè)計一個完整的程序,分別計算正方體、球體和圓柱體的體積并輸出結(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.求兩個日期之間相差的天數(shù)。

      設(shè)計一個日期類Date,包括日期的年份、月份和日號,編寫一個友元函數(shù),求兩個日期之間相差的天數(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);

      //求兩個日期之間相差的天數(shù)。

      (3)在主函數(shù)中完成對該類測試,定義兩個對象d1(2000,1,1)和d2(2002,10,1),調(diào)用subs函數(shù)。程序正確的運行結(jié)果是: 2000.1.1與2002.10.1之間有1002天

      7.身份證。

      已知舊身份證號碼共15位,其中第7~12位是以2位年份+2位月份+兩位日期組成,而新身份證號碼共18位,其中第7~14位是以4位年份+2位月份+兩位日期組成。試定義一個類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)的十進制數(shù),如“123”轉(zhuǎn)換為數(shù)值123,“08”轉(zhuǎn)換為數(shù)值8;

      int fun(): 根據(jù)出生日期檢驗身份證號是否正確,如果正確,函數(shù)值為1,否則為0。

      必須使用如下算法:先分別取出身份證中的表示年份、月份、日期的子字符串,然后利用上述int val(char *p)函數(shù)轉(zhuǎn)換為數(shù)值,再與出生日期的相應(yīng)成員數(shù)據(jù)比較。

      void print(): 輸出所有成員數(shù)據(jù)。

      3)在主函數(shù)中輸入兩個身份證號(一個18位:***910,另一個15位***),分別用這兩個身份證號生成類ID的對象,在主函數(shù)中通過成員函數(shù)fun確定身份證號是否正確并輸出相應(yīng)的信息(身份證號、出生日期、檢驗結(jié)果)。

      8.9×9乘法口訣表。

      定義一個類MUL,生成如下的9×9乘法口訣表,要求口訣表存儲在動態(tài)數(shù)組中,并輸出到屏幕上。運行結(jié)果如下: 1 2 3 4

      5

      6

      7

      8

      9

      具體要求如下:(1)私有數(shù)據(jù)成員

      nt(*a)[9];a是一個行指針變量,其指向的數(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ù)中完成對該類的測試。定義一個MUL類的對象a,通過a調(diào)用成員函數(shù)求出并輸出乘法口訣表。

      9.字符串分類。

      輸入一個字符串,串內(nèi)有數(shù)字和非數(shù)字字符。

      例如:

      ABC2345

      345rrf678

      jfkld945

      將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到另一個整型數(shù)組b中。如對于上面的輸入,將2345存放到b[0]、345放入b[1]………

      統(tǒng)計出字符串中的整數(shù)個數(shù),并輸出這些整數(shù)。要求:

      (1)在主函數(shù)中完成輸入和輸出工作。

      (2)設(shè)計一個函數(shù),把指向字符串的指針和指向整數(shù)的指針作為函數(shù)的參數(shù),并完成從字符串中依次提取出整數(shù)的工作。

      10.?dāng)?shù)組元素排序

      將含有12個元素的數(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}試定義一個類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的元素個數(shù)。

      void convert(int x[4][3]);將a中的數(shù)據(jù)進行分組,并轉(zhuǎn)換為二維數(shù)組x,其中每一組依次為數(shù)組x的一行。

      void sort();按每組的平均值實現(xiàn)分段排序,并將排序后的數(shù)據(jù)存放到數(shù)據(jù)成員b中。

      算法要求:利用函數(shù)convert()將a轉(zhuǎn)換為二維數(shù)組,再求二維數(shù)組每一行的平均值,然后根據(jù)該平均值從小到大對該二維數(shù)組進行行排序,并將結(jié)果按題意轉(zhuǎn)換為一維數(shù)組存放到b中。

      void print();輸出a和b的所有元素。

      (3)在主函數(shù)中利用給定的數(shù)組生成類DATA的對象test,并對該類進行測試。假設(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è)計題

      設(shè)計題目一:學(xué)生學(xué)籍成績管理系統(tǒng)

      每個學(xué)生的信息包括:姓名、學(xué)號、性別、和學(xué)生的成績信息 如:英語、數(shù)學(xué)、程序設(shè)計及體育成績等各門課的成績,要求程序能自動增加一門或是幾門課的成績,同時可以刪除課程。

      從鍵盤輸入數(shù)據(jù),然后,完成如下處理:

      1.對學(xué)生姓名或?qū)W號進行查詢,顯示其信息,求出其總成績、平均成績、平均基點,并且顯不在全班的學(xué)成績排名。2.對所有學(xué)生,按班級計算平均。

      設(shè)計題目二:通訊錄管理系統(tǒng)

      1.系統(tǒng)概要

      該系統(tǒng)的功能是實現(xiàn)通訊錄管理。2.基本功能要求

      (1)輸入姓名、單位、電話號碼(2)顯示上述內(nèi)容(3)按姓名查找后顯示(4)刪除有關(guān)記錄(5)增加記錄

      (6)保存修改后的文件(7)顯示修改后的文件

      3.各功能模塊的程序流程圖。(學(xué)生完成)4.完整的源程序代碼。(學(xué)生設(shè)計完成)

      設(shè)計題目三:小型特殊計算器

      1.系統(tǒng)概要

      本程序的功能是實現(xiàn)一個特殊的計算器,可以實現(xiàn)復(fù)數(shù)、有理數(shù)、矩陣和集合的特殊計算。程序可以實現(xiàn)復(fù)數(shù)、有理數(shù)的加、減、乘、除,可以實現(xiàn)矩陣的加法、減法和乘法運算,也可以實現(xiàn)集合的求交集、并集、子集的運算。注:可任選兩種運算。

      2.基本功能要求

      (1)功能選擇可以用菜單來實現(xiàn) 例如:請選擇您的計算內(nèi)容: 1.復(fù)數(shù)計算 2.有理數(shù)計算 3.矩陣計算 4.集合計算 0.退出

      用戶通過輸入不同的數(shù)字進入不同的菜單。次級菜單主要顯示本程序的功能,主要的功能有加法、減法、乘法和除法以及集合的求交集、求并集、求子集。(2)運行時給出明確的提示信息。

      比如,輸入一個什么類型的數(shù)據(jù)。根據(jù)用戶的輸入計算輸出結(jié)果。由于數(shù)據(jù)類型比較多,可以一次輸入第一個復(fù)數(shù)的實部,第一個復(fù)數(shù)的虛部,再輸入第二個復(fù)數(shù)的實部、虛部。矩陣運算需要先輸入矩陣的行數(shù)和列數(shù),然后依次輸出矩陣的第一行第一列的元素、第一行第二列的元素等等,依次類推。有理數(shù)運算需要一次輸入有理數(shù)的分子、分母。集合運算需要輸入集合的元素個數(shù),然后依次輸入集合中的每一個元素。

      3.各功能模塊的程序流程圖。(學(xué)生完成)4.完整的源程序代碼。(學(xué)生設(shè)計完成)

      設(shè)計題目四:選修課小系統(tǒng)

      1.系統(tǒng)概要

      通過這一款選修課小系統(tǒng),學(xué)生可以登入學(xué)生端進行選課及其他的操作,管理者通過登入管理端可以進行對選修課系統(tǒng)的數(shù)據(jù)的管理和維護。在學(xué)生端主要設(shè)置了3個基本功能:學(xué)生選課、學(xué)生情況、選課情況等;在管理端主要設(shè)置了9個基本功能:增加/刪除學(xué)生、增加/刪除課程、更改學(xué)分、填寫成績、學(xué)生情況、選課情況、保存數(shù)據(jù)等。這些功能基本上能滿足選課的基本要求。此程序可以初步體現(xiàn)課程設(shè)計的目標(biāo)。2.基本功能要求

      用VC++編寫一個界面美觀流暢學(xué)生選課系統(tǒng)。學(xué)生有名字,學(xué)生最多可學(xué)五門課程,學(xué)生實際學(xué)的門數(shù),可以給定學(xué)生的名字,可以得到學(xué)生的名字,可以得到學(xué)生給定課程的成績,可以得到學(xué)生所學(xué)課程的平均成績,可以給學(xué)生增加一門課(同時在該課程中增加一個學(xué)生)。課程最多有30個學(xué)生,課程有實際學(xué)生

      數(shù),課程有實際學(xué)生名單,課程有學(xué)分數(shù),課程有每個學(xué)生成績,課程可以得到學(xué)分數(shù),課程可以設(shè)置學(xué)分數(shù),課程可以得到班平均成績,課程可以得到某個學(xué)生成績。

      3.各功能模塊的程序流程圖。(學(xué)生完成)4.完整的源程序代碼。(學(xué)生設(shè)計完成)

      設(shè)計題目五:學(xué)生成績管理系統(tǒng)

      系統(tǒng)上采用VC++為開發(fā)環(huán)境,這個編譯器功能完善,使用方便。課程設(shè)計《學(xué)生成績管理系統(tǒng)》,它的主要功能是對學(xué)生的成績進行修改和管理。

      系統(tǒng)功能要求:(1)界面

      ************************************ 學(xué)生成績管理系統(tǒng)

      ************************************ ************************************ ** 1--輸入數(shù)據(jù) ** ** 2-查詢成績 ** ** 3--修改成績 ** ** 4--輸出所有學(xué)生成績 ** ** 5--統(tǒng)計及格和優(yōu)秀人數(shù) ** ** 6--退出系統(tǒng) ** *************************************(2)功能

      程序的主要功能是輸入學(xué)生姓名、成績,學(xué)號自動生成,并可以對學(xué)生的成績按學(xué)號和姓名進行查詢。該系統(tǒng)具有存貯學(xué)生數(shù)據(jù),按學(xué)號、姓名查詢,按需要修改學(xué)生成績,列出學(xué)生成績和統(tǒng)計功能。

      第四篇:VC課程設(shè)計教學(xué)和任務(wù)12131

      VC++ 課程設(shè)計指導(dǎo)書

      江蘇科技大學(xué)南徐學(xué)院電子信息系

      2012年6月

      《計算機程序設(shè)計(vc++)課程設(shè)計》課程設(shè)計指導(dǎo)書

      一. 課程設(shè)計教學(xué)和任務(wù)

      《計算機程序設(shè)計(vc++)課程設(shè)計》是實踐性教學(xué)環(huán)節(jié),是學(xué)生必修的一門計算機實踐課程。

      本課程設(shè)計的目的是通過綜合性程序設(shè)計訓(xùn)練,使學(xué)生進一步鞏固對計算機程序設(shè)計語言(vc++)基本語法,基本算法的理解,加深對面向?qū)ο蟪绦蛟O(shè)計的理解與應(yīng)用,并使學(xué)生養(yǎng)成模塊化,結(jié)構(gòu)化程序設(shè)計的良好風(fēng)格,以及一定的程序組織能力,掌握基本程序設(shè)計的方法和技巧,為學(xué)習(xí)后續(xù)課程和實際編程打下良好的基礎(chǔ)。

      本課程設(shè)計的重點要求學(xué)生掌握基本程序設(shè)計理念和方法,培養(yǎng)學(xué)生基本程序設(shè)計的應(yīng)用和開發(fā)能力。二. 課程設(shè)計要求與內(nèi)容

      1.本課程設(shè)計要求

      (1)學(xué)生必須完成本指導(dǎo)書中所有的小綜合設(shè)計題,并且完成大綜合設(shè)計題中的任意一題(具體題目由任課教師指定)。要求:對主要變量及函數(shù)要加注釋,以說明其功能。

      (2)每個學(xué)生必須完成課程設(shè)計報告一篇。(報告格式見附錄)2.課程設(shè)計的內(nèi)容

      本課程設(shè)計內(nèi)容包括兩個部分:小綜合設(shè)計題和大綜合設(shè)計題。

      ====================================== 附:課程設(shè)計報告格式一、二、課程設(shè)計目的 課程設(shè)計內(nèi)容

      1、小綜合題

      2、大綜合題

      三、課程設(shè)計體會及建議

      小綜合設(shè)計題

      1.二維數(shù)組元素旋轉(zhuǎn)

      以下程序?qū)×N階矩陣向左旋轉(zhuǎn)90°,得到一個新的N×N階矩陣。例如:原矩陣為:

      向左旋轉(zhuǎn)90°后的矩陣為:2.找回文數(shù)

      判斷一個字符串是否文回文,是指正向拼寫和反向拼寫都一樣的字符串。例如,“madam”是回文。假定字符串中只出現(xiàn)字母,且不區(qū)分字母的大小寫,即“A”和“a”被視為同一字母,其余類似。如“Madam”是回文。而“Sir”不是回文。函數(shù)plain(char*s)判斷一個字符串是回文時,若是回文,函數(shù)返回1,否則,返回0.在主函數(shù)中,當(dāng)判斷一個字符串是回文時,輸出Yes,否則輸出No。

      3.二維數(shù)組的操作運算

      定義一個N×N的二維數(shù)組a,將該二維數(shù)組中周邊元素的值全部置為2,其他元素全部置為0。例如,當(dāng)n為8時生成并輸出的矩陣為

      定義類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)。定義一個MAT類的對象m,用n初始化m,按要求生成并輸出數(shù)組元素的值。

      4.刪除序列中相同的數(shù)

      定義一個字符串類STR,從左到右對字符串中每個字符刪除其后所有相同的字符,只留下第一次出現(xiàn)的那一個。例如,若字符串為“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ù)中定義一個STR類的對象test,用字符串“cocoon”初始化test,通過test調(diào)用成員函數(shù)完成刪除工作,輸出刪除前后的兩個字符串。

      5.求任意數(shù)降序數(shù)

      對任意一個各位數(shù)字不完全相同的四位數(shù)(如4133),將各位上的數(shù)字從小到大排列得到一個升序數(shù)(1334),再將各位上的數(shù)字從小到大排列得到一個降序數(shù)(4331)。用大數(shù)(降序數(shù))減去小數(shù)(升序數(shù))得到一個新的四位數(shù)(2997=4331-1334)。若相減后不足四位,則高位上補零,稱此過程為一次變換。將新的四位數(shù)按上述方法再變換一次,又得到一個四位數(shù)。有斷言,經(jīng)過多次變換,最后一定會得到一個固定的數(shù)6174。以下程序試圖驗證這個斷言。

      6.求兩個日期之間相差的天數(shù)。

      設(shè)計一個日期類Date,包括日期的年份、月份和日號,編寫一個友元函數(shù),求兩個日期之間相差的天數(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);

      //求兩個日期之間相差的天數(shù)。(3)在主函數(shù)中完成對該類測試,定義兩個對象d1(2000,1,1)和d2(2002,10,1),調(diào)用subs函數(shù)。程序正確的運行結(jié)果是: 2000.1.1與2002.10.1之間有1002天

      7.實現(xiàn)點對象之間的各種運算。

      設(shè)計一個點類Point,Point類提供了6個運算符重載函數(shù)(參加程序中的代碼和注釋),以實現(xiàn)相應(yīng)的運算。具體要求如下:(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);// 提供對點的偏移。

      void offset(Point);// 重載,偏移量用Point類對象表示。bool operator==(Point);// 運算符重載,判斷兩個對象是否相同。bool operator!=(Point);// 運算符重載,判斷兩個對象是否不相同。void operator+=(Point);// 運算符重載,將兩個點對象相加。void operator-=(Point);// 運算符重載,將兩個點對象相減。

      Point operator+(Point);// 運算符重 載,相加并將結(jié)果放在左操作數(shù)中。Point operator-(Point);// 運算符重載,相減并將結(jié)果放在左操作數(shù)中。(3)編寫一個程序測試該類,測試數(shù)據(jù)及要求如下:

      點類:p1(2,3),p2(3,4),p3(p2)完成的運算有:

      以p3為主要測試對象,首先輸出p3坐標(biāo)值,置p3偏移量(10,10),p2==p3;p2!=p3;p3+=p1;p3-=p2;p3=p1+p3;p3=p1-p2;每完成一次運算,要將結(jié)果進行輸出。程序正確執(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.定義一個描述學(xué)生通訊錄的類,并進行測試。

      定義一個描述學(xué)生通訊錄的類COMMU,數(shù)據(jù)成員包括:姓名、學(xué)校、電話號碼和郵編;成員函數(shù)包括:輸出各個數(shù)據(jù)成員的值,分別設(shè)置和獲取各個數(shù)據(jù)成員的值。

      分析:由于姓名、學(xué)校和電話號碼的數(shù)據(jù)長度是可變的,可使用動態(tài)的數(shù)據(jù)結(jié)構(gòu)。郵編的長度是固定的,可定義一個字符數(shù)組來存放郵編。將數(shù)據(jù)成員均定義為私有的。用一個成員函數(shù)輸出所有的成員數(shù)據(jù),用四個成員函數(shù)分別設(shè)置姓名、單位、電話號碼和郵編,再用四個成員函數(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ù)中完成對該類測試,定義兩個對象c1和c2,分別兩個對象的成員進行初始化、值設(shè)置并輸出測試結(jié)果。

      9.打印日歷。

      根據(jù)所輸入的年份打印該年的日歷。主要功能函數(shù)如下: void printmonth(int);//打印每個月的日歷

      void printhead(int);

      //打印日歷每個月的頭,并將打印位置移到該月第一天的星期幾處

      int firstday(int);

      //計算第一天是星期幾 int daysofmonth(int);//該月有多少天 int isleap(int);

      //判斷是否是閏年

      需定義兩個全局變量year和weekday,分別存放年份 和 每個月的第一天是星期幾

      10.集合的操作

      定義一個求兩個集合的交集的類DataSet。并在主函數(shù)中用兩個字符串進行測試。具體要求如下:

      1)私有數(shù)據(jù)成員:

      char *p1, *p2;指向存放兩個原始數(shù)據(jù)集合的指針。

      char *p;指向復(fù)制出來的兩個集合的交集數(shù)據(jù)的指針。

      2)公有成員函數(shù):

      DataSet(char a[ ], char b[ ]): 構(gòu)造函數(shù),提供原始數(shù)組,同時也要根據(jù)兩個數(shù)組中較大的一個初始化指針p所指向的內(nèi)存。

      void fun(): 功能函數(shù),求交集。要求交集中無重復(fù)字符。

      void print(): 輸出函數(shù),輸出原始數(shù)據(jù)及結(jié)果。

      ~DataSet(): 析構(gòu)函數(shù),實現(xiàn)必要的功能。

      大綜合設(shè)計題

      設(shè)計題目一:學(xué)生成績管理系統(tǒng)

      1.系統(tǒng)概要

      該系統(tǒng)完成學(xué)生信息的輸入,插入,刪除一個學(xué)生信息,修改,查找學(xué)生信息,計算學(xué)生的總分,并能按學(xué)生的總分排序。

      2.基本功能要求

      (1)按順序輸入若干個學(xué)生信息

      (2)插入一個學(xué)生信息(先輸入插入位置,再輸入學(xué)生信息)(3)刪除一個學(xué)生信息(先刪除插入位置,再刪除學(xué)生信息)(4)修改已知學(xué)號的學(xué)生信息(按學(xué)號來找)(5)查找已知學(xué)號的學(xué)生信息(按姓名來找)(6)統(tǒng)計一個學(xué)生的總分成績(7)按總分從高到低輸出學(xué)生成績表(8)顯示所有學(xué)生的信息(9)退出。

      3.各功能模塊的程序流程圖。(學(xué)生完成)

      4.完整的源程序代碼。(學(xué)生設(shè)計完成)

      設(shè)計題目二:通訊錄管理系統(tǒng)

      1.系統(tǒng)概要

      該系統(tǒng)的功能是實現(xiàn)通訊錄管理。

      2.基本功能要求

      (1)輸入姓名、單位、電話號碼(2)顯示上述內(nèi)容(3)按姓名查找后顯示(4)刪除有關(guān)記錄(5)增加記錄(6)保存修改后的文件

      (7)顯示修改后的文件

      3.各功能模塊的程序流程圖。(學(xué)生完成)

      4.完整的源程序代碼。(學(xué)生設(shè)計完成)

      設(shè)計題目三:小型特殊計算器

      1.系統(tǒng)概要

      本程序的功能是實現(xiàn)一個特殊的計算器,可以實現(xiàn)復(fù)數(shù)、有理數(shù)、矩陣和集合的特殊計算。程序可以實現(xiàn)復(fù)數(shù)、有理數(shù)的加、減、乘、除,可以實現(xiàn)矩陣的加法、減法和乘法運算,也可以實現(xiàn)集合的求交集、并集、子集的運算。注:可任選兩種運算。

      2.基本功能要求

      (1)功能選擇可以用菜單來實現(xiàn) 例如:請選擇您的計算內(nèi)容:

      1.復(fù)數(shù)計算 2.有理數(shù)計算 3.矩陣計算 4.集合計算 0.退出

      用戶通過輸入不同的數(shù)字進入不同的菜單。次級菜單主要顯示本程序的功能,主要的功能有加法、減法、乘法和除法以及集合的求交集、求并集、求子集。(2)運行時給出明確的提示信息。

      比如,輸入一個什么類型的數(shù)據(jù)。根據(jù)用戶的輸入計算輸出結(jié)果。由于數(shù)據(jù)類型比較多,可以一次輸入第一個復(fù)數(shù)的實部,第一個復(fù)數(shù)的虛部,再輸入第二個復(fù)數(shù)的實部、虛部。矩陣運算需要先輸入矩陣的行數(shù)和列數(shù),然后依次輸出矩陣的第一行第一列的元素、第一行第二列的元素等等,依次類推。有理數(shù)運算需要一次輸入有理數(shù)的分子、分母。集合運算需要輸入集合的元素個數(shù),然后依次輸入集合中的每一個元素。

      3.各功能模塊的程序流程圖。(學(xué)生完成)

      4.完整的源程序代碼。(學(xué)生設(shè)計完成)

      第五篇:C語言課程設(shè)計報告-學(xué)生成績管理系統(tǒng)(vc)

      一、實踐的目的和要求

      加深對《C語言》課程所學(xué)知識的理解,進一步鞏固C語言語法規(guī)則。學(xué)會編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)模谜Z言程序,從而具備解決綜合性實際問題的能力。

      二、實踐內(nèi)容

      在熟練掌握C語言的基本知識:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結(jié)構(gòu)等);運算類型(算術(shù)運算、邏輯運算、自增自減運算、賦值運算等);程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu));大程序的功能分解方法(即函數(shù)的使用)等。進一步掌握各種函數(shù)的應(yīng)用,包括時間函數(shù)、繪圖函數(shù),以及文件的讀寫操作等。

      三、實踐任務(wù) 1.歡迎畫面

      2.學(xué)生成績管理系統(tǒng)(自己設(shè)計界面)3.異或加密與解密

      (1)文件加密

      (2)文件解密 說明:將某一已知文件的內(nèi)容以字符形式讀出,與密鑰(用戶從鍵盤輸入)的對應(yīng)字符進行異或操作即可,解密同樣如此。如:設(shè)原文為ab1234,密鑰為56,則有 ab1234 565656

      按二進制進行異或操作即可得到密文(亂碼)。4.移位加密與解密(1)文件加密(2)文件解密

      說明:將某一已知文件的內(nèi)容(限于英文字母)以字符形式讀出,根據(jù)密鑰k(用戶從鍵盤輸入)將對應(yīng)字符進行移位操作即可,解密時移動方向相反。

      如:設(shè)原文為abcdef,密鑰為5,則有

      abcdef 每個字母按字母表向后移動位(注:z后接a)fghijkl 可得到密文(亂碼)。5.輔助運算(1)整數(shù)N模m的乘法逆t

      要求:輸入整數(shù)N和m,求出t,若t不存在,給出信息。提示:這三個數(shù)滿足:N*t%m=1,使用窮舉法。

      例如:當(dāng)N為11,m為26時,由于(11×19)%26=1,所以11模26的乘法逆為19。(2)統(tǒng)計字母個數(shù)

      要求:輸入一段英文字母,統(tǒng)計各個字母的個數(shù),并按個數(shù)從大到小排序輸出。

      提示:字母大小寫等價。輸出格式為:字母:個數(shù)。(3)OTP加密

      要求:輸入同等長度的原文x和密鑰k(英文字母),根據(jù)公式 c=(x+k)%26 得到密文,并輸出。

      提示:將26個字母按0~25編號,將原文字母和對應(yīng)位置的密鑰字母的編號按上述公式進行計算后得到一個新的字母。

      四、設(shè)計流程圖

      流程圖另附!

      五、相關(guān)程序 1 歡迎畫面

      #include #include struct Snow { int x;int y;int speed;}snow[100];int snownum=0;int size;int change=10;void *save1,*save2;void Copy();void DrawSnow();void Pr();void main(void){int gd=DETECT,gm;

      initgraph(&gd,&gm,“c: urboc2”);Copy();DrawSnow();getch();closegraph();}

      void Copy(){

      setcolor(0);

      setfillstyle(SOLID_FILL,15);fillellipse(200,200,4,4);size=imagesize(196,196,204,204);save1=malloc(size);save2=malloc(size);

      getimage(196,196,204,204,save1);getimage(96,96,104,104,save2);}

      void Pr(){

      int s[15]={0,100,150,200,150,200,250,150,250,300,250,150,100,250,350};setcolor(change/10);settextstyle(0,0,4);

      outtextxy(150,200,“Welcome!!”);sound(s[change/10]);}void DrawSnow(){int i;int sx[62];randomize();for(i=0;i<62;i++)sx[i]=(i+2)*10;cleardevice();while(!kbhit()){ Pr();

      if(snownum!=100){

      snow[snownum].speed=2+random(5);i=random(62);

      snow[snownum].x=sx[i];

      snow[snownum].y=10-random(100);} for(i=0;i

      putimage(snow[i].x,snow[i].y,save2,COPY_PUT);Pr();

      if(snownum!=100)snownum++;/*delay(300);*/

      setfillstyle(SOLID_FILL,15);for(i=0;i

      snow[i].y+=snow[i].speed;

      putimage(snow[i].x,snow[i].y,save1,COPY_PUT);if(snow[i].y>500)

      snow[i].y=10-random(200);}

      change++;if(change==140)change=10;}

      nosound();}

      2學(xué)生成績管理系統(tǒng)(自己設(shè)計界面)#define N 1 struct student {char num[10];char name[10];int score[4];float ave;}stu[N];main()

      {int i,j,max,maxi,sum;float average;for(i=0;i

      {printf(“Please input scores of student %d :n”,i+1);printf(“NO.:”);

      scanf(“%s”,stu[i].num);printf(“name:”);

      scanf(“%s”,stu[i].name);for(j=0;j<3;j++)

      {printf(“score %d :”,j+1);scanf(“%d”,&stu[i].score[j]);} }

      average=0;max=0;maxi=0;for(i=0;i

      for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].ave=sum/3.0;average+=stu[i].ave;if(sum>max){max=sum;maxi=i;} }

      average/=N;

      printf(“ NO.name score1 score2 score3 averagen”);for(i=0;i

      {printf(“%5s”,stu[i].num);

      printf(“%10s”,stu[i].name);for(j=0;j<3;j++)

      printf(“%9d”,stu[i].score[j]);printf(“%8.2fn”,stu[i].ave);}

      printf(“average=%6.2fn”,average);

      printf(“The highest score is : %s,score total :%dn”,stu[maxi].name,max);getch();}

      3.異或加密與解密 #include #include #include #include

      void jiami(char *in,char *pwd,char *out);void main(int argc,char *argv[]){

      char in[30];char out[30];char pwd[8];if(argc!=4){

      printf(“Input file name:n”);gets(in);

      printf(“Please enter password:n”);gets(pwd);

      printf(“Output file name:n”);gets(out);

      jiami(in,pwd,out);} else {

      strcpy(in,argv[1]);strcpy(pwd,argv[2]);strcpy(out,argv[3]);jiami(in,pwd,out);} }

      void jiami(char *in,char *pwd,char *out_file){

      FILE *fp1,*fp2;register char ch;int j=0;int k=0;

      fp1=fopen(in,“rb”);if(fp1==NULL){

      printf(“Cannot open in-file!n”);exit(1);}

      fp2=fopen(out_file,“wb”);if(fp2==NULL){

      printf(“Cannot open or create output-file!n”);exit(1);}

      while(pwd[++k]);ch=fgetc(fp1);while(!feof(fp1)){

      fputc(ch^pwd[j>=k?j=0:j++],fp2);ch=fgetc(fp1);}

      fclose(fp1);fclose(fp2);}

      4.移位加密與解密 #include“stdio.h” main(){

      int choice=0,k;FILE *fp1,*fp2;

      char c,filename1[30],filename2[30];

      printf(“Please input two deferent filename:”);scanf(“%s%s”,filename1,filename2);printf(“Please input the password :n”);scanf(“%d”,&k);

      if((fp1=fopen(filename1,“r”))==NULL)

      printf(“nERROR!CAN NOT OPEN THE FILEn”);else{

      fp2=fopen(filename2,“w”);

      printf(“nChoose:(1-jiami 2-jiemi)”);scanf(“%d”, &choice);switch(choice){ case 1: do{ c=getc(fp1);

      if(((c>='a')&&(c<='z'-k))||((c>='A')&&(c<='Z'-k)))putc(c+k,fp2);

      else if(((c>'z'-k)&&(c<='z'))||((c>'Z'-k)&&(c<='Z')))putc(c-(26-k),fp2);else

      putc(c,fp2);}while(c!=EOF);break;case 2: do{

      c=getc(fp1);

      if(((c>='a'+k)&&(c<='z'))||((c>='A'+k)&&(c<='Z')))putc(c-k,fp2);

      else if(((c>='a')&&(c<'a'+k))||((c>='A')&&(c<'A'+k)))putc(c+(26-k),fp2);else

      putc(c,fp2);}while(c!=EOF);break;

      default:

      printf(“nYou have choose a wrong number!Please choose again!”);} }

      fclose(fp1);fclose(fp2);}

      5.輔助運算

      (1)整數(shù)N模m的乘法逆t

      main(){

      unsigned n,m,t=1;int c;

      printf(“Please enter the number:n”);scanf(“%d,%d”,&n,&m);while(t<65535){

      c=n*t%m;if(c==1||c==0)break;t++;}

      if(t==65535||c==0)

      printf(“Nicheng number is not exited!n”);if(c==1)

      printf(“T is : %dn”,t);getch();}

      (2)統(tǒng)計字母個數(shù) #include “string.h” main(){ int i,j,t;

      char a[80],b[26];int c[26];char e;

      printf(“Please enter the letters:n”);gets(a);

      for(i=0;i<26;i++)b[i]='A'+i;for(i=0;i<26;i++)c[i]=0;

      for(j=0;j<80;j++){for(i=0;i<26;i++){

      if(a[j]==b[i]||a[j]==b[i]+32)c[i]++;}

      if(a[j]=='