

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> C語言課程設(shè)計實踐報告</p><p> 課題: 時鐘 </p><p><b> 1、實踐目的</b></p><p> 1)明確課程設(shè)計的目的,能根據(jù)課程設(shè)計的要求,查閱相關(guān)文獻、資料,為完成設(shè)計準(zhǔn)備必要的知識;</p><p> 2)提高學(xué)生們用高級
2、語言進行程序設(shè)計的能力;</p><p> 3)初步了解軟件開發(fā)的一般方法和步驟;</p><p> 4)提高撰寫技術(shù)文檔的能力 </p><p> 5)培養(yǎng)和提高IE專業(yè)本科生應(yīng)用程序設(shè)計語言解決實際問題的素質(zhì)和能力;</p><p> 6)培養(yǎng)團隊協(xié)作的精神,培養(yǎng)創(chuàng)新意識,提高自學(xué)能力和實踐動手能力。</p>&l
3、t;p><b> 2、課程設(shè)計報告</b></p><p><b> 2.1 問題描述</b></p><p> 時鐘的形狀是一個圓形表盤,由時針、分針和秒針組成。按照每天時間從0:00(12:00)到12:00的循環(huán),將圓形表盤等分成12等份,又按每小時60分種(每分鐘60秒 )將表盤等分成60等份,用實心圓點標(biāo)注。為了便于人清晰的
4、讀出時間,從表盤的正北位置起每隔30度的那一個圓點用較大圓點進行區(qū)分,并標(biāo)以1至12的數(shù)字。 將時針、分針和秒針的旋轉(zhuǎn)中心固定在表盤的中心位置,并用真的顏色和長短進行區(qū)分,秒針最長,其次分針,最后時針。秒針走一圈分針走一小格,分針走一圈時針走5格。</p><p> 為了表盤的美觀,將表盤賦予顏色的變化。最后編譯相應(yīng)的程序獲取當(dāng)前時間。</p><p><b> 2.2 設(shè)計
5、步驟</b></p><p> 1)準(zhǔn)備工作,實例出各種顏色的變換,畫筆等,用于繪圖工作;</p><p> 2)繪制圓形表盤,將坐標(biāo)原點定在表盤中心;</p><p> 3)繪制時鐘表盤,各個針,等工作;</p><p> 4)將時鐘表盤按每分鐘60秒分60等份,繪制60個小圓,用來區(qū)分秒鐘時間間隔;</p>
6、<p> 5)將時鐘表盤按每天時間從0:00(12:00)到12:00的循環(huán)分12等份,繪制12個較大圓,用來區(qū)時針時間間隔;</p><p> 6)繪制時鐘的表盤數(shù)字,從1至12,實現(xiàn)數(shù)字化表盤;</p><p> 7)獲取當(dāng)前時間,并將時間轉(zhuǎn)換成時間字符串,分別索引時,分,秒的值,并分別存儲至字符串中;</p><p> 8)獲取當(dāng)前秒鐘數(shù)
7、,并按其定位秒針?biāo)阜较?,并繪制從原點至其方向的一條線,用以表示秒針的轉(zhuǎn)動;</p><p> 9) 獲取當(dāng)前分鐘數(shù),并按其定位分針?biāo)阜较颍⒗L制從原點至其方向的一條線,用以表示分針的轉(zhuǎn)動;</p><p> 10)獲取當(dāng)前時鐘數(shù),并按其定位時針?biāo)阜较?,并繪制從原點至其方向的一條線,用以表示時針的轉(zhuǎn)動;</p><p> 11)最后設(shè)計一個程序來報告當(dāng)前時
8、間。</p><p><b> 2.3程序流程圖</b></p><p><b> 3、源程序代碼</b></p><p> using System;</p><p> using System.Collections.Generic;</p><p> usin
9、g System.ComponentModel;</p><p> using System.Data;</p><p> using System.Drawing;</p><p> using System.Text;</p><p> using System.Windows.Forms;</p><p>
10、; namespace 時鐘</p><p><b> {</b></p><p> public partial class Form1 : Form </p><p><b> {</b></p><p> public Graphics g;</p><p&
11、gt; public Form1()</p><p><b> {</b></p><p> InitializeComponent();</p><p> timer1.Start();</p><p> timer1.Interval = 1000; //就是說每隔一秒執(zhí)行一次TIME事件 10
12、00是一秒=一毫秒</p><p><b> }</b></p><p> private void Form1_Paint(object sender, PaintEventArgs e) //圖像平鋪形狀程序</p><p><b> {</b></p><p> /*以下代碼為 準(zhǔn)
13、備工作,實例出各種顏色的變換,畫筆等,用于下面的繪圖工作*/</p><p> g = e.Graphics;</p><p> Random r = new Random();</p><p> int random = r.Next();</p><p> Color c = Color.FromArgb((random + 50
14、) % 255, (random + 30) % 255, (random - 100) % 255);</p><p> int random1 = r.Next();</p><p> Color k = Color.FromArgb((random1 + 50) % 255, (random1 + 30) % 255, (random1 - 100) % 255);</p&
15、gt;<p> Pen p = new Pen(c, 3);</p><p> Pen p1 = new Pen(Color.Black, 8);</p><p> Pen p2 = new Pen(Color.DeepSkyBlue, 3);</p><p> Pen p3 = new Pen(Color.DeepPink, 3);</
16、p><p> Pen p4 = new Pen(Color.Brown, 3);</p><p> SolidBrush sbrush = new SolidBrush(c);</p><p> SolidBrush sbrush1 = new SolidBrush(k);</p><p> SolidBrush sbrush2 = ne
17、w SolidBrush(Color.Black);</p><p> /*以下代碼為 重繪圖形坐標(biāo),將坐標(biāo)原點改至,窗體的中心。*/</p><p> int x = this.Width / 2;</p><p> int y = this.Height / 2;</p><p> g.TranslateTransform(x,
18、y);</p><p> /*以下代碼為 獲取當(dāng)前時間,并將時間轉(zhuǎn)換成時間字符串,分別索引時,分,秒的值,并分別存儲至字符串中*/</p><p> DateTime datetime = DateTime.Now;</p><p> string time = datetime.ToLongTimeString();</p><p>
19、 int i1 = time.IndexOf(":");</p><p> string hour = time.Substring(0, i1);</p><p> time = time.Substring(i1 + 1);</p><p> int i2 = time.IndexOf(":");</p>
20、;<p> string minute = time.Substring(0, i2);</p><p> string second = time.Substring(i2 + 1);</p><p> /*以下代碼為 繪圖工作,繪制時鐘表盤,各個針,等工作*/</p><p> g.DrawEllipse(p1, -162, -163, 3
21、25, 325); //繪制表盤</p><p> /*下列循環(huán)將時鐘表盤按秒鐘分60等份,繪制60個園,用來區(qū)分秒鐘時間間隔*/</p><p> for (int i = 0; i < 60; i++)</p><p><b> {</b></p><p> int x_position = Conve
22、rt.ToInt32(150 * (Math.Sin(Math.PI * i / 30)));</p><p> int y_position = Convert.ToInt32(150 * (Math.Cos(Math.PI * i / 30)));</p><p> g.FillEllipse(sbrush, x_position - 5, y_position - 5, 10,
23、10);</p><p><b> }</b></p><p> /*下列循環(huán)將時鐘表盤按分鐘分12等份,繪制12個較大園,用來區(qū)分分鐘時間間隔*/</p><p> for (int i = 0; i < 12; i++)</p><p><b> {</b></p>
24、<p> int x_position = Convert.ToInt32(150 * (Math.Sin(Math.PI * i / 6)));</p><p> int y_position = Convert.ToInt32(150 * (Math.Cos(Math.PI * i / 6)));</p><p> g.FillEllipse(sbrush1, x_po
25、sition - 7, y_position - 8, 15, 15);</p><p><b> }</b></p><p> /*下列循環(huán)繪制時鐘的表盤數(shù)字,從1至12,實現(xiàn)數(shù)字化表盤*/</p><p> for (int i = 0; i < 12; i++)</p><p><b> {
26、</b></p><p> Font font = new Font("Arial ", 15);</p><p> Brush fontBrush = SystemBrushes.ControlDarkDark;</p><p> string s = null;</p><p> int x_pos
27、ition = Convert.ToInt32(135 * (Math.Sin(Math.PI * (i + 1) / 6)));</p><p> int y_position = Convert.ToInt32(135 * (Math.Cos(Math.PI * (i + 1) / 6)));</p><p> s = (i + 1).ToString();</p>
28、<p> g.DrawString(s, font, fontBrush, x_position - 8, -y_position - 11);</p><p><b> }</b></p><p> /*以下代碼為 獲取當(dāng)前秒鐘數(shù),并按其定位秒針?biāo)阜较颍⒗L制從原點至其方向的一條線,用以表示秒針的轉(zhuǎn)動*/</p><p>
29、 float second_position_x = Convert.ToSingle(120 * Math.Sin(Convert.ToDouble(second) / 30 * Math.PI));</p><p> float second_position_y = -Convert.ToSingle(120 * Math.Cos(Convert.ToDouble(second) / 30 * Math.
30、PI));</p><p> g.DrawLine(p2, 0, 0, second_position_x, second_position_y);</p><p> /*以下代碼為 獲取當(dāng)前分鐘數(shù),并按其定位分針?biāo)阜较?,并繪制從原點至其方向的一條線,用以表示分針的轉(zhuǎn)動*/</p><p> float minute_position_x = Convert
31、.ToSingle(90 * Math.Sin(Convert.ToDouble(minute) / 30 * Math.PI));</p><p> float minute_position_y = -Convert.ToSingle(90 * Math.Cos(Convert.ToDouble(minute) / 30 * Math.PI));</p><p> g.DrawLi
32、ne(p3, 0, 0, minute_position_x, minute_position_y);</p><p> /*以下代碼為 獲取當(dāng)前時鐘數(shù),并按其定位時針?biāo)阜较颍⒗L制從原點至其方向的一條線,用以表示時針的轉(zhuǎn)動*/</p><p> int new_hour = Convert.ToInt32(hour) % 12;</p><p> floa
33、t hour_position_x = Convert.ToSingle(60 * Math.Sin((Convert.ToDouble(new_hour) / 12 + Convert.ToDouble(minute) / 720) * Math.PI * 2));</p><p> float hour_position_y = -Convert.ToSingle(60 * Math.Cos((Conver
34、t.ToDouble(new_hour) / 12 + Convert.ToDouble(minute) / 720) * Math.PI * 2));</p><p> g.DrawLine(p4, 0, 0, hour_position_x, hour_position_y);</p><p> /*以下代碼為 在表盤正中央的一個填充圓,代碼放置最后是因為:這個圓不能被時針,分針,
35、秒針?biāo)采w。美化作用*/</p><p> g.FillEllipse(sbrush2, -8, -8, 16, 16);</p><p><b> }</b></p><p> private void timer1_Tick(object sender, EventArgs e)</p><p><b&g
36、t; {</b></p><p> Invalidate();</p><p><b> }</b></p><p> private void Form1_Load(object sender, EventArgs e)</p><p><b> {</b></p>
37、;<p><b> }</b></p><p> private void button1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> /*一個button,用來報告當(dāng)前,數(shù)字化時鐘的時間。*/</p>&l
38、t;p> MessageBox.Show("現(xiàn)在時刻:" + DateTime.Now.ToLongTimeString());</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>&
39、lt;p><b> 4、實踐心得</b></p><p> 學(xué)完了C語言理論課,接下來就是要學(xué)以致用,否則個人認為學(xué)什么都沒有意義。在進行課程設(shè)計之前幾天,不知從何入手,一臉茫然。為什么呢?因為我們想自己做出來而不參考任何資料,以為這樣才可體現(xiàn)我們的智慧和能力,其實這是大錯特錯的。當(dāng)然也不是一味強調(diào)自己動腦自己做出來不好,從開發(fā)方面角度來說是可以的,有些東西也并不是一味的照搬照抄。
40、抱著這樣的態(tài)度迷茫了三四天只想出了一丁點大至結(jié)構(gòu)。最后決定上網(wǎng)找資料,不查不知道,一查大吃一驚,不但自己的想法網(wǎng)上比比皆是,比自己的想法更完美更合理的多得看都看不完。此時真是自愧不如,如早從網(wǎng)上借鑒,集大家之所成,加上自己的修改完善,早已做出了更好的系統(tǒng)結(jié)構(gòu)和想法了。現(xiàn)在才知道,幾個人的智慧敵不過千萬人智慧的集成,能借鑒的盡量借鑒,然后再修改完善,增加自己所需的功能,做出自己的特色。偉大的物理學(xué)家牛頓不也說過他之所以成功是站在偉人的肩上
41、嗎?</p><p> 完成設(shè)計后,我們覺得收獲不少,首先是自己首次應(yīng)用所學(xué)知識做出了這個時鐘系統(tǒng),以前從未做過這樣大(這是對我們自己而言,在專業(yè)人仕看來是小菜一碟)的程序,多少心里有點甜美的感覺;而收獲更大的是讓我們學(xué)到了怎樣和他人合作完成一件任務(wù),以及在完成的過程中如何溝通。</p><p> 完成設(shè)計是在一定時間內(nèi)完成的,在完成這個設(shè)計時,我們做得顯然有一些緊迫,我想是沒合理安排
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計實踐報告
- c語言圖形時鐘課程設(shè)計實驗報告
- c語言課程設(shè)計報告-模擬時鐘轉(zhuǎn)動程序
- c語言課程設(shè)計設(shè)計報告--模擬電子時鐘
- c語言課程設(shè)計(電子時鐘)
- 圖形模擬時鐘c語言課程設(shè)計
- c語言課程設(shè)計---整點報時時鐘
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言語言課程設(shè)計報告
- c語言年歷課程設(shè)計報告
- C語言課程設(shè)計報告.doc
- c語言課程設(shè)計報告模版
- c語言課程設(shè)計報告---游戲設(shè)計
- 時鐘課程設(shè)計報告
- 基于c語言單片機電子時鐘課程設(shè)計
- c課程設(shè)計報告-- c語言程序設(shè)計
- 【課程設(shè)計】c語言課程設(shè)計
評論
0/150
提交評論