版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> C語言課程設(shè)計(jì)實(shí)踐報(bào)告</p><p> 課題: 時(shí)鐘 </p><p><b> 1、實(shí)踐目的</b></p><p> 1)明確課程設(shè)計(jì)的目的,能根據(jù)課程設(shè)計(jì)的要求,查閱相關(guān)文獻(xiàn)、資料,為完成設(shè)計(jì)準(zhǔn)備必要的知識(shí);</p><p> 2)提高學(xué)生們用高級(jí)
2、語言進(jìn)行程序設(shè)計(jì)的能力;</p><p> 3)初步了解軟件開發(fā)的一般方法和步驟;</p><p> 4)提高撰寫技術(shù)文檔的能力 </p><p> 5)培養(yǎng)和提高IE專業(yè)本科生應(yīng)用程序設(shè)計(jì)語言解決實(shí)際問題的素質(zhì)和能力;</p><p> 6)培養(yǎng)團(tuán)隊(duì)協(xié)作的精神,培養(yǎng)創(chuàng)新意識(shí),提高自學(xué)能力和實(shí)踐動(dòng)手能力。</p>&l
3、t;p><b> 2、課程設(shè)計(jì)報(bào)告</b></p><p><b> 2.1 問題描述</b></p><p> 時(shí)鐘的形狀是一個(gè)圓形表盤,由時(shí)針、分針和秒針組成。按照每天時(shí)間從0:00(12:00)到12:00的循環(huán),將圓形表盤等分成12等份,又按每小時(shí)60分種(每分鐘60秒 )將表盤等分成60等份,用實(shí)心圓點(diǎn)標(biāo)注。為了便于人清晰的
4、讀出時(shí)間,從表盤的正北位置起每隔30度的那一個(gè)圓點(diǎn)用較大圓點(diǎn)進(jìn)行區(qū)分,并標(biāo)以1至12的數(shù)字。 將時(shí)針、分針和秒針的旋轉(zhuǎn)中心固定在表盤的中心位置,并用真的顏色和長(zhǎng)短進(jìn)行區(qū)分,秒針最長(zhǎng),其次分針,最后時(shí)針。秒針走一圈分針走一小格,分針走一圈時(shí)針走5格。</p><p> 為了表盤的美觀,將表盤賦予顏色的變化。最后編譯相應(yīng)的程序獲取當(dāng)前時(shí)間。</p><p><b> 2.2 設(shè)計(jì)
5、步驟</b></p><p> 1)準(zhǔn)備工作,實(shí)例出各種顏色的變換,畫筆等,用于繪圖工作;</p><p> 2)繪制圓形表盤,將坐標(biāo)原點(diǎn)定在表盤中心;</p><p> 3)繪制時(shí)鐘表盤,各個(gè)針,等工作;</p><p> 4)將時(shí)鐘表盤按每分鐘60秒分60等份,繪制60個(gè)小圓,用來區(qū)分秒鐘時(shí)間間隔;</p>
6、<p> 5)將時(shí)鐘表盤按每天時(shí)間從0:00(12:00)到12:00的循環(huán)分12等份,繪制12個(gè)較大圓,用來區(qū)時(shí)針時(shí)間間隔;</p><p> 6)繪制時(shí)鐘的表盤數(shù)字,從1至12,實(shí)現(xiàn)數(shù)字化表盤;</p><p> 7)獲取當(dāng)前時(shí)間,并將時(shí)間轉(zhuǎn)換成時(shí)間字符串,分別索引時(shí),分,秒的值,并分別存儲(chǔ)至字符串中;</p><p> 8)獲取當(dāng)前秒鐘數(shù)
7、,并按其定位秒針?biāo)阜较?,并繪制從原點(diǎn)至其方向的一條線,用以表示秒針的轉(zhuǎn)動(dòng);</p><p> 9) 獲取當(dāng)前分鐘數(shù),并按其定位分針?biāo)阜较?,并繪制從原點(diǎn)至其方向的一條線,用以表示分針的轉(zhuǎn)動(dòng);</p><p> 10)獲取當(dāng)前時(shí)鐘數(shù),并按其定位時(shí)針?biāo)阜较?,并繪制從原點(diǎn)至其方向的一條線,用以表示時(shí)針的轉(zhuǎn)動(dòng);</p><p> 11)最后設(shè)計(jì)一個(gè)程序來報(bào)告當(dāng)前時(shí)
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 時(shí)鐘</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、備工作,實(shí)例出各種顏色的變換,畫筆等,用于下面的繪圖工作*/</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)原點(diǎn)改至,窗體的中心。*/</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)前時(shí)間,并將時(shí)間轉(zhuǎn)換成時(shí)間字符串,分別索引時(shí),分,秒的值,并分別存儲(chǔ)至字符串中*/</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> /*以下代碼為 繪圖工作,繪制時(shí)鐘表盤,各個(gè)針,等工作*/</p><p> g.DrawEllipse(p1, -162, -163, 3
21、25, 325); //繪制表盤</p><p> /*下列循環(huán)將時(shí)鐘表盤按秒鐘分60等份,繪制60個(gè)園,用來區(qū)分秒鐘時(shí)間間隔*/</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)將時(shí)鐘表盤按分鐘分12等份,繪制12個(gè)較大園,用來區(qū)分分鐘時(shí)間間隔*/</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í)鐘的表盤數(shù)字,從1至12,實(shí)現(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)阜较?,并繪制從原點(diǎn)至其方向的一條線,用以表示秒針的轉(zhuǎn)動(dòng)*/</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)阜较?,并繪制從原點(diǎn)至其方向的一條線,用以表示分針的轉(zhuǎn)動(dòng)*/</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í)鐘數(shù),并按其定位時(shí)針?biāo)阜较?,并繪制從原點(diǎn)至其方向的一條線,用以表示時(shí)針的轉(zhuǎn)動(dòng)*/</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> /*以下代碼為 在表盤正中央的一個(gè)填充圓,代碼放置最后是因?yàn)椋哼@個(gè)圓不能被時(shí)針,分針,
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> /*一個(gè)button,用來報(bào)告當(dāng)前,數(shù)字化時(shí)鐘的時(shí)間。*/</p>&l
38、t;p> MessageBox.Show("現(xiàn)在時(shí)刻:" + DateTime.Now.ToLongTimeString());</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>&
39、lt;p><b> 4、實(shí)踐心得</b></p><p> 學(xué)完了C語言理論課,接下來就是要學(xué)以致用,否則個(gè)人認(rèn)為學(xué)什么都沒有意義。在進(jìn)行課程設(shè)計(jì)之前幾天,不知從何入手,一臉茫然。為什么呢?因?yàn)槲覀兿胱约鹤龀鰜矶粎⒖既魏钨Y料,以為這樣才可體現(xiàn)我們的智慧和能力,其實(shí)這是大錯(cuò)特錯(cuò)的。當(dāng)然也不是一味強(qiáng)調(diào)自己動(dòng)腦自己做出來不好,從開發(fā)方面角度來說是可以的,有些東西也并不是一味的照搬照抄。
40、抱著這樣的態(tài)度迷茫了三四天只想出了一丁點(diǎn)大至結(jié)構(gòu)。最后決定上網(wǎng)找資料,不查不知道,一查大吃一驚,不但自己的想法網(wǎng)上比比皆是,比自己的想法更完美更合理的多得看都看不完。此時(shí)真是自愧不如,如早從網(wǎng)上借鑒,集大家之所成,加上自己的修改完善,早已做出了更好的系統(tǒng)結(jié)構(gòu)和想法了?,F(xiàn)在才知道,幾個(gè)人的智慧敵不過千萬人智慧的集成,能借鑒的盡量借鑒,然后再修改完善,增加自己所需的功能,做出自己的特色。偉大的物理學(xué)家牛頓不也說過他之所以成功是站在偉人的肩上
41、嗎?</p><p> 完成設(shè)計(jì)后,我們覺得收獲不少,首先是自己首次應(yīng)用所學(xué)知識(shí)做出了這個(gè)時(shí)鐘系統(tǒng),以前從未做過這樣大(這是對(duì)我們自己而言,在專業(yè)人仕看來是小菜一碟)的程序,多少心里有點(diǎn)甜美的感覺;而收獲更大的是讓我們學(xué)到了怎樣和他人合作完成一件任務(wù),以及在完成的過程中如何溝通。</p><p> 完成設(shè)計(jì)是在一定時(shí)間內(nèi)完成的,在完成這個(gè)設(shè)計(jì)時(shí),我們做得顯然有一些緊迫,我想是沒合理安排
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)實(shí)踐報(bào)告
- c語言圖形時(shí)鐘課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告-模擬時(shí)鐘轉(zhuǎn)動(dòng)程序
- c語言課程設(shè)計(jì)設(shè)計(jì)報(bào)告--模擬電子時(shí)鐘
- c語言課程設(shè)計(jì)(電子時(shí)鐘)
- 圖形模擬時(shí)鐘c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)---整點(diǎn)報(bào)時(shí)時(shí)鐘
- c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告
- c語言語言課程設(shè)計(jì)報(bào)告
- c語言年歷課程設(shè)計(jì)報(bào)告
- C語言課程設(shè)計(jì)報(bào)告.doc
- c語言課程設(shè)計(jì)報(bào)告模版
- c語言課程設(shè)計(jì)報(bào)告---游戲設(shè)計(jì)
- 時(shí)鐘課程設(shè)計(jì)報(bào)告
- 基于c語言單片機(jī)電子時(shí)鐘課程設(shè)計(jì)
- c課程設(shè)計(jì)報(bào)告-- c語言程序設(shè)計(jì)
- 【課程設(shè)計(jì)】c語言課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論