




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、蘇 州 市 職 業 大 學課程設計任務書 課程名稱: 嵌入式linux c程序設計 起訖時間: 2011-12-26至2011-12-30 院 系: 電子信息工程系 班級: 10電子信息技術(1) 指導教師: 系 主 任: 蘇 州 市 職 業 大 學課程設計說明書 名稱 嵌入式linux c程序設計 2011年12月26日至2011年12月30日共1周院 系 電子信息工程系 班 級 10電子信息技術1 姓 名 系主任 教研室主任 崔志磊 指導教師 一、課程設計課題利用嵌入式linuxc程序設計課程中所學到的編程知識和編程技巧,完成具有一定難度和工作量的程序設計題目,幫助掌握編程、調試的基本技能
2、。參考題目:課題推薦:如學生另選課題,須經指導教師同意。1、建立一個鏈表,每個結點包含:學號、姓名、3門考試成績1) 按學號排序;2) 輸入一個學生學號,輸出其成績。3) 輸入一個學生的信息將它插入鏈表中(假定鏈表按學號有序)。4) 統計該鏈表中學生總成績和平均成績。 5) 找出成績最高的學生序號和課程.6) 找出不及格課程的學生序號及其各門課的全部成績.7) 求全部學生各門課程的平均分數,并輸出.2、投骰子游戲:游戲者投兩枚骰子,每個骰子有六面,這些面包含1,2,3,4,5,6個點。投兩枚骰子之后,計算點數之和。如果第一次投時的和為7或11,則游戲者獲勝。如果第一次投時的和為2,3或12,則
3、游戲者輸,莊家贏。如果第一次投時的和為4,5,6,8,9,10,則這個和成為游戲者下次投骰子獲勝的點數。要想贏,就要繼續投骰子,直到投到點數。如果投七次之后還沒有賺到點數,則游戲者輸。3、教材p239 “動手練練” 34、用遞歸方法建立一顆二叉樹,至少有10個節點,每個節點都存放整數值。要求所有的左孩子都小于根節點,而所有的右孩子都大于根節點。最后以中序序列輸出此樹。5、一個簡單計算器 ,從屏幕輸入算式,要求能夠完成一般四則運算。提示:用鏈表或數組6、萬年歷,見運行效果7、校際運動會管理系統,見運行效果問題描述:1.初始化輸入:n-參賽學校總數,m-男子競賽項目數,w-女子競賽項目數; 各項目
4、名次取法有如下幾種: 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; 取前3名:第1名得分 5,第2名得分 3,第3名得分2; 用戶自定義:各名次權值由用戶指定。2.由程序提醒用戶填寫比賽結果,輸入各項目獲獎運動員的信息。3.所有信息記錄完畢后,用戶可以查詢各個學校的比賽成績,生成團體總分報表,查看參賽學校信息和比賽項目信息等。提示:程序中可能用到以下定義信息,可以寫在一個 .h 文件里: #ifndef _mainfile_h_#define _mainfile_h_/*/#include stdio.h#include stdlib.h#define
5、 maxlength 20 /*字符串最大長度*/#define max_n 20 /*最大參賽學校數目*/#define max_m 30 /*男子項目最大數目*/#define max_w 20 /*女子項目最大數目*/#define len sizeof(position)#ifndef null#define null (void*)0#endif /*null*/typedef enum _bool _true=1,_false=0bool;typedef enum _sporttype _man,_woman sporttype; /*sport type*/typedef enu
6、m _scoretype _five,_three,_custom scoretype; /*score type*/*單個學校信息描述*/typedef struct _schoolinfoint schoolnum;/*學校編號*/char schoolnamemaxlength;/*學校名稱*/schoolinfo,*pschoolinfo;/*全部參賽學校描述*/typedef struct _schoolschoolinfo schinfoarraymax_n;int ntotalnmofsch;/*參賽學校總數*/school,*pschool;/*某一競賽項目名次取法*/type
7、def struct _scrinfoint total;/*取前多少名*/int* power;/*每一名次對應分值*/scrinfo,*pscrinfo;/*單個競賽項目信息描述*/typedef struct _sportinfoint sportnum;/*項目編號*/char sportnamemaxlength;/*項目名稱*/sporttype sprttyp;/*項目類型(男子、女子)*/scoretype scrtyp;/*取名次類型(前5、前3、用戶自定義)*/scrinfo scrinfo;/*名次取法紀錄項*/sportinfo,*psportinfo;/*全部競賽項目
8、信息描述*/typedef struct _sportsportinfo sportinfoarraymax_m+max_w;int ntotalnmofmsprt;/*男子項目總數*/int ntotalnmoffsprt;/*女子項目總數*/sport,*psport;/*比賽成績記錄*/typedef struct _positionint sportnum;/*競賽項目編號*/char namemaxlength;/*獲得名次的運動員姓名*/int score;/*得分*/int schoolnum;/*所屬學校編號*/struct _position *ptrnext;positio
9、n,*pposition;二、課程設計要求1要求1)重視課程設計環節,用嚴謹、科學和踏實的工作態度對待課程設計的每一項任務;2)按照課程設計的題目要求,獨立地完成各項任務,不允許相互抄襲;3)利用課程中所學到知識,能夠作到:進行功能需求分析,設計合理的數據結構和系統框架,程序功能齊全,界面友好,能正確運行;4)按時到機房上機,不得曠課、遲到、早退及做與課程設計內容無關的事,并接受指導老師的檢查;5)課題完成后必須按要求提交課程設計報告,課程設計報告要求及內容見本課程設計任務書第四點。2成績評定1)課程設計成績按優、良、中、及格和不及格五級評定;2)能獨立完成并有一定創新功能且正確者,成績評為優
10、;3)凡有無故曠課或多次遲到、早退者不能評定優、良、中;4)凡未按要求或不能按時完成者,以不及格評定;5)未交課程設計報告者,以不及格評定;6)與他人雷同或抄寫復制他人程序,以不及格評定;7)經課程設計答辯未達到設計要求者,以不及格評定。三、課程設計工作量課程設計共24學時,安排見下表。內容學時明確課程設計的目的、要求和任務(由指導老師布置)1查閱資料,分析、討論,完成選題1進行系統需求分析,設計合理的數據結構和系統框架4編寫代碼,進行程序調試(功能齊全,能正確運行)12進行模塊聯調,完成測試2完成課程設計說明書2課程設計驗收2課程設計可以由12名同學合作完成一個課題。全體成員應共同完成選題,
11、確定設計思想,進行功能模塊劃分,然后由組長為各成員分配任務。整個設計期間,組長負責協調工作。各小組成員明確自己的任務后,應獨立完成設計、編碼和調試。課題設計完成后,小組成員要理解同組其他成員設計的源程序,熟練操作本組設計,各自完成課程設計說明書。四、課程設計說明書內容為培養學生嚴謹的工作態度,鍛煉學生編寫文檔的能力,要求學生完成設計任務后,應按要求提交課程設計報告。設計報告除了填寫封面內容和正文部分的規定內容外,還包含如下幾個方面的內容:1、需求分析:簡述本課程設計要完成的任務;2、概要設計:應用程序功能詳細說明;3、詳細設計:主要功能模塊的詳細描述;4、調試報告:調試過程中出現的問題及解決方
12、法;5、測試結果;6、用戶使用說明;7、附錄:程序源代碼(附上有針對性的注釋),參考資料。目 錄一、需求分析101.1、課程設計任務101.2、課程設計的意義及目標10二、概要設計112.1、流程圖112.2、編譯.調試工具說明112.21、vi編譯器的介紹112.22、makefile介紹12三、詳細設計13四、編譯和調試144.1、用make編譯144.2 makefile文件14五、運行結果155.1、 按學號排序;155.2、 輸入一個學生學號,輸出其成績。155.3、 輸入一個學生的信息將它插入鏈表中(假定鏈表按學號有序)。165.4、 統計該鏈表中學生總成績和平均成績。165.5、
13、 找出成績最高的學生序號和課程.175.6、 找出不及格課程的學生序號及其各門課的全部成績175.7、 求全部學生各門課程的平均分數,并輸出.17六、心得18七、參考文獻19八、附錄20一、需求分析1.1、課程設計任務建立一個鏈表,每個結點包含:學號、姓名、3門考試成績1) 按學號排序2) 輸入一個學生學號,輸出其成績。3) 輸入一個學生的信息將它插入鏈表中(假定鏈表按學號有序)。4) 統計該鏈表中學生總成績和平均成績。 5) 找出成績最高的學生序號和課程.6) 找出不及格課程的學生序號及其各門課的全部成績.7) 求全部學生各門課程的平均分數,并輸出.1.2、課程設計的意義及目標課程設計是培養
14、學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程。要求在規定的時間內,完成老師布置的任務,最重要的是讓學生學到東西。目的使這次課程設計,使學生鞏固了上課學到的知識,進一步學習、掌握嵌入式linux的運行環境、開發平臺。二、概要設計2.1、流程圖 2.2、編譯.調試工具說明2.2.1、vi編譯器的介紹 vi 編輯器是visual interface的簡稱,通常稱之為vi。它在linux上的地位就像edit程序在dos上一樣。它可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據自己的需要對其進行定制,這是其他
15、編輯程序所沒有的。 vi 編輯器并不是一個排版程序,它不像word或wps那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。沒有菜單,只有命令,且命令繁多。vi有3種基本工作模式:命令行模式、文本輸入模式和末行模式2.2.2、makefile介紹(1)makefile文件介紹makefile一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復雜的功能操作,因為 makefile就像一個shell腳本一樣,其中也可以執行操作系統的命令。(2)m
16、akefile主要功能make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關系并自動維護編譯工作。而makefile 文件需要按照某種語法進行編寫,文件中需要說明如何編譯各個源文件并連接生成可執行文件,并要求定義源文件之間的依賴關系。makefile 文件是許多編譯器-包括 windows nt 下的編譯器-維護編譯信息的常用方法,只是在集成開發環境中,用戶通過友好的界面修改 makefile 文件而已。三、詳細設計(1)定義一個鏈表用鏈式存儲結構存儲學生信息, typedef struct student student;(2)定義節點,和各節點的內容stru
17、ct student /* 學生鏈表節點 */ int num; /* 學號 */char namemax_name_len; /* 姓名 */struct grade grade; /* 成績 */(3)輸入學號,輸出成績int print_list(student *head);(4)統計鏈表中學生總成績和平均成績/void search(student *head, int num);(5)輸出出成績最高的學生序號和課程*/void sum_ave(student *head);(6)輸出不及格課程的學生序號及其各門課的全部成績void max_grade(student *head);
18、(7)求全部學生各門課程的平均分數,并輸出*void failde_stu(student *head);四、編譯和調試4.1、用make編譯4.2 makefile文件 編譯調試程序是程序實現前的一項最重大的任務,不僅繁瑣而且很有技術含量。如果只是單單的寫程序是不會發現調試是多么幸苦的工作的。在整個程序的編譯過程中遇到了不少錯誤。有的是因為不小心少寫了一個括號,有的是語法錯誤。還有的情況就是編譯器的使用不當,我們最常用的是用gcc編譯。但是這次課程設計要求用make編譯,于是我在這就犯了一些很低級的錯誤。 上圖是我在makefile文件里出現了錯誤而導致的編譯失敗。在makefile文件里,
19、我只記得有空格,切忘記了那是tab鍵,所以造成了這樣的錯誤。 在編譯的過程中還會有很多警告,不過幸好不影響程序的執行。有警告是因為程序不夠完善才有的情況,程序有待完善。五、運行結果5.1、 按學號排序;5.2、 輸入一個學生學號,輸出其成績。第一個學生輸入第二個學生輸入第三個學生輸入5.3、 輸入一個學生的信息將它插入鏈表中(假定鏈表按學號有序)。5.4、 統計該鏈表中學生總成績和平均成績。5.5、 找出成績最高的學生序號和課程.5.6、 找出不及格課程的學生序號及其各門課的全部成績 5.7、 求全部學生各門課程的平均分數,并輸出.六、心得 課程設計是培養我們綜合運用所學知識,發現,提出,分析
20、和解決實際問題過程,鍛煉實踐能力的重要環節,是對我們實際工作能力的具體訓練和考察過程。此次課程設計,我和小組成員在規定的時間內,圓滿的完成了老師布置的任務,最重要的是我學到了很多東西。這次課程設計,使我們鞏固了上課學到的知識,進一步學習、掌握嵌入式linux的運行環境、開發平臺,同時我的編程水平也有了一定的提高。回想起此次嵌入式 linux 程序開發,我感慨頗多,的確,從選題到定稿,從理論到實踐,在整整一星期的日子里,從自己編寫到查資料、求助網絡,煩的可以。感覺這好像使咱電子系最難得課程設計了,有過抱怨,抱怨老師不給提示讓我讀題就花了一天時間,抱怨自己一個學期下來都沒有認真看書到最后才臨時抱佛
21、腳還不行幸被佛踢一腳。但等自己真的覺得沒有捷徑可以走的時候就靜下心來好好看書查資料了。雖說不用上課挺輕松的,但是糾結于那些程序的編譯修改,真的有時候挺累的。不過總的來說得是苦多于甜,可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正的實實在在的掌握知識,從而提高自己的實際動手能力和獨立思考的能力。重新溫故。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的辛勤指導下,同學的幫助下終于迎
22、刃而解。七、參考文獻1唐洪良、張威 linux實用教程 北京希望電子出版社 2002.92趙清晨、李同芳 linux操作系統實用教程 北京機械工業出版社2008.23華清遠見嵌入式培訓中心 嵌入式linux c語言應用程序設計 人民郵電出版社 2007.8八、附錄#include #define max2(a,b) (a)(b)?(a):(b) /* 兩個數的最大值 */#define max3(a,b,c) max2(max2(a),(b),(c) /* 三個數的最大值 */#define min2(a,b) (a)next;while(current & (current-num num)
23、front = current;current = current-next;/* 插入結點 */front-next = tmp;tmp-next = current;/* 釋放鏈表*/void free_chain(student *head)while(head = head-next)free(head);/* 打印菜單 * 返回選則的菜單項 */int print_menu()int i;printf(1. insert a studentt2. search a studentn);printf(3. sum and averaget4. max graden);printf(5.
24、 failed studentt6. lesson averagen);printf(7. print listttother to exitn);printf(choice_ _);printf(bb);scanf(%d,&i);return i;/* 打印所有學生信息 * 返回學生個數*/int print_list(student *head)int count = 0;student *tmp;if(!head |!(tmp = head-next)printf(empty chain tablen);return 0;printf(number name tonettwotthree
25、n);while(tmp)printf(%-9d %-10st,tmp-num,tmp-name);printf(%dt%dt%dn,tmp-grade.one,tmp-grade.two,tmp-grade.three);tmp = tmp-next;count+;return count;/* 輸入學號,輸出成績*/void search(student *head, int num)student *tmp;if(!head |!(tmp = head-next)printf(empty chain tablen);return;printf(number name tonettwott
26、hreen);while(tmp)if(tmp-num = num)printf(%-9d %-10st,tmp-num,tmp-name);printf(%dt%dt%dn,tmp-grade.one,tmp-grade.two,tmp-grade.three);tmp = tmp-next;return;/*統計鏈表中學生總成績和平均成績*/void sum_ave(student *head)student *tmp;int sum;float ave;if(!head |!(tmp = head-next)printf(empty chain tablen);return;printf
27、(number name tsumtaveragen);while(tmp)printf(%-9d %-10st,tmp-num,tmp-name);sum = tmp-grade.one + tmp-grade.two + tmp-grade.three;ave = sum/3.0;printf(%dt%.1fn,sum,ave);tmp = tmp-next;/*輸出出成績最高的學生序號和課程 */void max_grade(student *head)student *tmp;student *tmp_max;int imax = 0;int itmp_max = 0;if(!head |!(tmp = head-next)printf(empty chain tablen);return;/* 查找最大值 */while(tmp)itmp_max = max3(tmp-grade.one,tmp-grade.two,tmp-grade.three);if(itmp_max imax)imax = itmp_max;tmp_max = tmp;tmp = tmp-next;printf(number name
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年 長沙市北雅中學招聘教師考試試題附答案
- 中國活動扳手行業市場運營態勢分析及投資前景預測報告
- 2025年中國關節內窺鏡行業市場深度分析及投資策略咨詢報告
- 中國低溫粉碎機行業發展監測及投資戰略規劃研究報告
- 2023-2028年中國無機陶瓷行業發展監測及市場發展潛力預測報告
- 2025年中國無功功率補償設備行業投資分析及發展戰略咨詢報告
- 中國游泳池自動水處理系統項目投資可行性研究報告
- 中國太陽能單晶硅棒行業發展監測及投資戰略規劃報告
- 2020-2025年中國現代農業產業園區行業投資研究分析及發展前景預測報告
- 中國半導體照明光源行業市場全景監測及投資策略研究報告
- 簡歷撰寫與面試技巧
- GB∕T 16422.3-2022 塑料 實驗室光源暴露試驗方法 第3部分:熒光紫外燈
- 新建區2018年中小學(幼)教師、特崗教師
- 中國歷史地理復習資料
- 05示例:玉米脫粒機的設計(含全套CAD圖紙)
- 冷庫項目施工組織設計方案
- 年中總結會策劃方案
- (最新)污水處理池施工方案
- 肺膿腫護理查房ppt課件
- 我要建一座王宮(正譜)
- 下閘蓄水驗收鑒定書(共8頁)
評論
0/150
提交評論