




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!信息與電氣工程學(xué)院課程設(shè)計說明書(200 /200 學(xué)年第 學(xué)期)課程名稱 : 軟件程序設(shè)計課程設(shè)計 題 目 : 圖片管理器 專業(yè)班級 : 物聯(lián)網(wǎng)工程1201班 學(xué)生姓名 : 劉 銘 學(xué) 號: 120730123 指導(dǎo)教師 : 趙 輝 設(shè)計周數(shù) : 第十九周 設(shè)計成績 : 2015年 1月 9日1.需求分析由于對于現(xiàn)在使用電腦的大部份用戶來說,在進(jìn)行圖片查看瀏覽的時候都會用到圖片管理器,而對于圖片的處理大部份也都是一些具有專業(yè)圖片處理知識的人才會做的。對于一些特別的觀看效果來說,我們用一些專業(yè)的看圖軟件是高射炮打蚊子,僅僅為了看圖而用這樣一
2、些軟件是不合算的,我們必須花費(fèi)一些時間去學(xué)習(xí)這些軟件,因為越是功能強(qiáng)大的軟件,往往使用起來越復(fù)雜。這是一個很現(xiàn)實的規(guī)律。對于一般的用戶來說,他們說不定連這個軟件都不知道。我們需要一個簡單實用的圖片管理器來進(jìn)行瀏覽、管理。本軟件為一個簡單而且很實用的圖片查看工具,不但可以進(jìn)行圖片的一些簡單查看,瀏覽操作,而且還可以進(jìn)行用戶登錄、分類、增刪等功能,是一款比較適合廣大普通用戶和非計算機(jī)專業(yè)的用戶的圖片查看軟件,本軟件不但界面簡潔,功能齊全,而且操作簡單。是款比較容易操作,實用的圖片管理軟件。我們從用戶角度,把軟件功能的實現(xiàn)變得簡單,易于操作。2.開發(fā)與運(yùn)行環(huán)境開發(fā)環(huán)境:windows xp、wind
3、ows 7開發(fā)工具:microsoft visual studio2010 c#、sql2008運(yùn)行環(huán)境:windows xp/72. 系統(tǒng)設(shè)計初始化3.1.系統(tǒng)流程 用戶登錄輸入用戶名輸入密碼n用戶名和密碼是否正確繼續(xù)輸入退出完成所選功能用戶選擇功能y3.2.功能模塊主界面添加目錄刪除目錄導(dǎo)入圖片刪除圖片退出瀏覽文件修改名稱導(dǎo)入到目錄圖片瀏覽界面返回目錄上一張下一張自動播放時間間隔實際大小合適大小刪除圖片3. 詳細(xì)設(shè)計4.1.登陸界面本系統(tǒng)采用“用戶賬號數(shù)據(jù)庫”一體模式,做到用戶登錄以后能夠瀏覽與管理的圖片及相冊都為私人所有,以確保隱私安全。4.2.主界面菜單欄按鈕除了有圖標(biāo)及名稱以外,鼠標(biāo)
4、懸停一秒自動顯示提示,主體部分左側(cè)目錄列表與縮略圖顯示區(qū)域之間邊框位置可調(diào)。單擊選中列表名稱背景自動變藍(lán),并且在右側(cè)縮略圖顯示區(qū)域顯示該目錄下的圖片縮略圖及圖片名稱,單擊選中縮略圖會有藍(lán)色邊框且支持多選。4.2.1.目錄操作 新增目錄時會有窗口提示填寫新目錄名稱,后在目錄列表里生成項,并且在系統(tǒng)文件夾下生成相應(yīng)文件夾。未選定目錄情況下刪除目錄會提示選擇一個目錄,選定目錄情況下刪除目錄時會有窗口提示操作不可逆是否確認(rèn),點(diǎn)擊確認(rèn)后完成刪除操作。4.2.2.圖片操作未選定目錄情況下導(dǎo)入圖片下拉列表自動顯示首個目錄名稱,選定目錄情況下導(dǎo)入圖片下拉列表顯示所選定目錄名稱,也可即時選定。支持bmp,jpg
5、,gif,jpeg,ico格式圖片。用戶可以選定某圖片進(jìn)行改名,若有圖片重名將自動改名。狀態(tài)欄顯示所選圖片信息。縮略圖按比例縮小并在各框中居中顯示。導(dǎo)入圖片時下方進(jìn)度條顯示進(jìn)度鼠標(biāo)形狀為漏斗。4.3.圖片瀏覽界面 本界面與主界面為同一窗口,開始下方工具欄隱藏,雙擊縮略圖進(jìn)入圖片瀏覽時上方工具欄隱藏顯示下方工具欄。鼠標(biāo)懸停按鈕一秒則顯示提示。播放幻燈片時可自行選擇時間間隔,窗口小于圖片大小時可拖動也可選擇合適窗口大小顯示。5.調(diào)試分析主界面打不開出錯原因及改正:把lstfolder的selectedindexchanged事件的代碼沒注意寫在了lvview的selectedindexchange
6、d中了使得刪除路徑不對導(dǎo)致操作時出現(xiàn)異常將兩部分代碼交換每次運(yùn)行時原先保存在lstfolder的文件不顯示了錯誤原因及改正:要使得上次運(yùn)行時保存在圖片目錄文件下的文件在下次運(yùn)行時也直接顯示在lstfolder中需要在mainform_load方法里加上如下代碼6.課程設(shè)計總結(jié)通過這次課程設(shè)計,實現(xiàn)了一個簡單的圖片管理系統(tǒng),而我也對c#軟件開發(fā)有了更深一步的認(rèn)識,不論從開始分析到后來編程再到最后調(diào)試,也學(xué)到了很多在課堂上沒有學(xué)到的東西。對于visualstudio2010和sql2008的使用也更加熟練。系統(tǒng)中存在的一些不足和系統(tǒng)設(shè)計上存在的缺憾,說明自己在這些方面還有很多不足之處有待自己進(jìn)一步
7、學(xué)習(xí)、提高。 在本次課程設(shè)計中,趙師趙輝和同組同學(xué)給了我很大的指導(dǎo)幫助,從他們哪里我學(xué)到了很多,在此表示感謝!7.參考文獻(xiàn)1邱錦倫 visual c#.net程序設(shè)計教程 清華大學(xué)出版社 2006年4月2劉金嶺 數(shù)據(jù)庫系統(tǒng)及應(yīng)用教程sql server2008 清華大學(xué)出版社 2013年9月3陳 廣 c#程序設(shè)計基礎(chǔ)教程與實訓(xùn) 北京大學(xué)出版社 2013年7月8.附錄using system;using system.collections.generic;using system.linq;using system.windows.forms;namespace 圖片管理
8、器 static class program stathread static void main() application.enablevisualstyles(); application.setcompatibletextrenderingdefault(false); application.run(new frmlogin(); using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.li
9、nq;using system.text;using system.windows.forms;using system.io;using system.collections;namespace 圖片管理器 public partial class mainform : form public mainform() initializecomponent(); private string path = application.startuppath + "圖片目錄?" private pen boundpen = new pen(color.gainsboro); pr
10、ivate pen selpen = new pen(color.blue, 3); private solidbrush textbrush = new solidbrush(color.black); private solidbrush bgbrush; private stringformat format = new stringformat(); private bitmap bmpinpb; private point mousepoint = new point(); private point pbpoint = new point(); private bool candr
11、ag; private bool isdraging; private int bmpindex; private void mainform_load(object sender, eventargs e) lvview.dock = dockstyle.fill; tscbinterval.selectedindex = 1; showview(); bgbrush = new solidbrush(lvview.backcolor); statusstrip1.items0.visible = false; format.alignment = stringalignment.cente
12、r; try if (!directory.exists(path) directory.createdirectory(path); catch (exception ex) messagebox.show(ex.message, "錯誤", messageboxbuttons.ok, messageboxicon.error); return; directoryinfo dir = new directoryinfo(path); foreach (directoryinfo d in dir.getdirectories() folder folder = new
13、folder(application.startuppath, d.name); lstfolder.items.add(folder); /lstfolder.items.add(folder.name); private void form1_load(object sender, eventargs e) lvview.dock = dockstyle.fill; bgbrush = new solidbrush(lvview.backcolor); statusstrip1.items0.visible = false; format.alignment = stringalignme
14、nt.center; try if (!directory.exists(path) directory.createdirectory(path); catch (exception ex) messagebox.show(ex.message, "錯䨪誤¨®", messageboxbuttons.ok, messageboxicon.error); return; directoryinfo dir = new directoryinfo(path); foreach (directoryinfo d in dir
15、.getdirectories()/獲?取¨?dir中d的Ì?目?錄? folder folder = new folder(application.startuppath, d.name); lstfolder.items.add(folder); /lstfolder.items.add(folder.name); private void toolstripbutton1_click(object sender, eventargs e) frmcreatefolder frmcreatefolder = new frmcreatefolder(this.lstfol
16、der); try frmcreatefolder.showdialog(this); finally frmcreatefolder.dispose(); private void tsbtnload_click(object sender, eventargs e) frmloadpic frmloadpic = new frmloadpic(this.lstfolder, this.statusstrip1); try if (frmloadpic.showdialog(this) = dialogresult.ok) loadtolistview(); finally frmloadp
17、ic.dispose();/銷毀窗體? private void lvview_drawitem(object sender, drawlistviewitemeventargs e) if (lvview.items.count = 0) return; graphics g = e.graphics; folder folder = (folder)lstfolder.selecteditem; bitmap bmp = folder.getthubnail(e.item.text); rectangle bmprect = folder.getrectfrombounds(bmp, e.
18、bounds); bmprect.offset(0, 1); rectangle boundrect = folder.getrectfrombounds(101, 101, e.bounds); rectangle textrect = new rectangle(e.bounds.x + 4, e.bounds.y + 109, e.bounds.width - 8, 16); g.drawrectangle(boundpen, boundrect); if (e.state & listviewitemstates.selected) != 0) g.drawimage(bmp,
19、 bmprect); boundrect.inflate(1, 1); g.drawrectangle(selpen, boundrect); else g.drawimage(bmp, bmprect); g.fillrectangle(bgbrush, textrect); g.drawstring(e.item.text, lvview.font, textbrush, textrect, format); private void loadtolistview() folder folder = (folder)lstfolder.selecteditem; lvview.beginu
20、pdate(); lvview.items.clear(); if (!folder.isloaded) folder.loadimage(); foreach (dictionaryentry de in folder.bmps) lvview.items.add(string)de.key); lvview.endupdate(); private void lstfolder_selectedindexchanged(object sender, eventargs e) if (lstfolder.selecteditems.count = 0) return; loadtolistv
21、iew(); /瀏覽 private void showview() tsmain.visible = true; lstfolder.visible = true; splitter1.visible = true; lvview.visible = true; pbpic.visible = false; tsviewpic.visible = false; private void showimage() tsmain.visible = false; lstfolder.visible = false; splitter1.visible = false; lvview.visible
22、 = false; pbpic.visible = true; tsviewpic.visible = true; private void lvview_doubleclick(object sender, eventargs e) point p = control.mouseposition; p = lvview.pointtoclient(p); listviewhittestinfo info = lvview.hittest(p); showimage(); paintimageinpb(info.item.text); bmpindex = info.item.index; p
23、rivate void paintimageinpb(string bmpname) folder folder = (folder)lstfolder.selecteditem; if (bmpinpb != null) bmpinpb.dispose(); bmpinpb = folder.getimage(bmpname); statusstrip1.items1.text = "名?稱?:êo" + bmpname + "尺?寸ä?:êo" + bmpinpb.width.tostring() + "x&q
24、uot; + bmpinpb.height.tostring(); pbpic.image = bmpinpb; matchimage(); private void matchimage() if (tsbtnnormal.checked) /正常顯示模式? pbpic.dock = dockstyle.none; pbpic.sizemode = pictureboxsizemode.autosize; pbpic.left = (panel1.width - pbpic.width) / 2; pbpic.top = (panel1.height - pbpic.height) / 2;
25、 if (pbpic.width > panel1.width | pbpic.height > panel1.height) /圖像的長或?qū)挻笥陲@示邊框時 candrag = true; pbpic.cursor = cursors.hand;/改變鼠標(biāo)指針樣式 else /圖像小于顯示邊框則不允許拖ª動 candrag = false; pbpic.cursor = cursors.default; else candrag = false; pbpic.cursor = cursors.default; if (bmpinpb.width > panel1.w
26、idth | bmpinpb.height > panel1.height) pbpic.dock = dockstyle.fill; pbpic.sizemode = pictureboxsizemode.zoom; else pbpic.dock = dockstyle.none; pbpic.sizemode = pictureboxsizemode.autosize; pbpic.left = (panel1.width - pbpic.width) / 2; pbpic.top = (panel1.height - pbpic.height) / 2; private void
27、 tsbtnmatch_click(object sender, eventargs e) toolstripbutton btn = (toolstripbutton)sender; if (btn.checked) return; tsbtnnormal.checked = false; tsbtnmatch.checked = false; btn.checked = true; matchimage(); private void pbpic_mousedown(object sender, mouseeventargs e) if (e.button != mousebuttons.
28、left) return; isdraging = true; mousepoint.x = e.x; mousepoint.y = e.y; pbpoint.x = pbpic.left; pbpoint.y = pbpic.top; private void pbpic_mousemove(object sender, mouseeventargs e) if (!isdraging | !candrag) return; int x = pbpic.left; if (pbpic.width > panel1.width) x += e.x - mousepoint.x; if (
29、x > 0) x = 0; else if (x + pbpic.width < panel1.width) x = panel1.width - pbpic.width; int y = pbpic.top; if (pbpic.height > panel1.height) y += e.y - mousepoint.y; if (y > 0) y = 0; else if (y + pbpic.height < panel1.height) y = panel1.height - pbpic.height; pbpic.left = x; pbpic.top
30、 = y; private void pbpic_mouseup(object sender, mouseeventargs e) if (e.button != mousebuttons.left) return; isdraging = false; private void tsbtnreturn_click(object sender, eventargs e) timer1.stop(); pbpic.image = null; if (bmpinpb != null) bmpinpb.dispose(); showview(); private void tsbtnperiod_c
31、lick(object sender, eventargs e) if (bmpindex = 0) bmpindex = lvview.items.count - 1; else bmpindex-; listviewitem item = lvview.itemsbmpindex; paintimageinpb(item.text); private void tsbtnnext_click(object sender, eventargs e) if (bmpindex = lvview.items.count - 1) bmpindex = 0; else bmpindex+; lis
32、tviewitem item = lvview.itemsbmpindex; paintimageinpb(item.text); private void sbtnantoplay_click(object sender, eventargs e) timer1.enabled = !timer1.enabled; tsbtnautoplay.checked = timer1.enabled; private void tscbinterval_selectedindexchanged(object sender, eventargs e) timer1.interval = (int)(m
33、ath.pow(2, tscbinterval.selectedindex) * 1000); private void timer1_tick(object sender, eventargs e) tsbtnnext_click(null, null); private void toolstripbutton5_click(object sender, eventargs e) close(); private void tsbtndelfolder_click(object sender, eventargs e) if (lstfolder.selecteditems.count =
34、 0) messagebox.show("請選擇一個目錄再進(jìn)行刪除", "消息", messageboxbuttons.ok, messageboxicon.information); return; dialogresult dr = messagebox.show("刪除目錄將導(dǎo)致該目錄下的圖片丟失并且該操作不可恢復(fù)”是否真的要刪除" + lstfolder.text +"確認(rèn)", messageboxbuttons.yesno, messageboxicon.question); string delfold
35、ername = "" if (dr = dialogresult.yes) lvview.clear(); delfoldername = lstfolder.text; (folder)lstfolder.selecteditem).removeall(); lstfolder.items.remove(lstfolder.selecteditem); statusstrip1.items1.text = "目錄" + delfoldername + "已經(jīng)被刪除" private void tsbtndel_click(obje
36、ct sender, eventargs e) if (lstfolder.selecteditems.count = 0 | lvview.visible = false) messagebox.show("請選擇一張圖片再進(jìn)行刪除!", "消息", messageboxbuttons.ok, messageboxicon.information); return; folder folder = (folder)lstfolder.selecteditem; try lvview.beginupdate(); while (lvview.select
37、editems.count > 0) listviewitem item = lvview.selecteditems0; lvview.items.remove(item); folder.remove(item.text); catch (exception ex) messagebox.show(ex.message, "錯誤", messageboxbuttons.ok, messageboxicon.error); return; finally lvview.endupdate(); private void 添¬¨ª加
38、68;®用®?戶¡ìtoolstripmenuitem_click(object sender, eventargs e) formadd add = new formadd(); add.show(); private void 關(guān)?于®¨²本À?軟¨¨ª件ttoolstripmenuitem_click(object sender, eventargs e) frmabout about = new frmabout(); about.show(); private void 退ª?出?toolstripmenuitem_click(object sender, eventargs e) close(); private void toolstripbutton1_click_1(object sender, eventargs e) folder folder = (folder)lstfolder.selecteditem; try lvvie
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年安徽滁州市河道管理局招考工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年自營批發(fā)服務(wù)項目資金申請報告代可行性研究報告
- 2025年上半年安徽安慶市望江縣直事業(yè)單位招聘689人筆試易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽合肥肥東縣教體局招聘心理健康教育服務(wù)人員18人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽亳州蒙城縣鄉(xiāng)鎮(zhèn)生態(tài)環(huán)境保護(hù)(河長制)工作站招聘20人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧夏銀川市教育局直屬學(xué)校招聘事業(yè)單位工作人員160人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024遼寧沈陽市城市建設(shè)投資集團(tuán)有限公司所屬二級企業(yè)沈陽公路建設(shè)有限公司擬聘用人員筆試參考題庫附帶答案詳解
- 2024年醫(yī)藥級纖維素醚項目資金籌措計劃書
- 2025年實驗室網(wǎng)絡(luò)管理系統(tǒng)項目可行性研究報告
- 2025年臥式吊運(yùn)鋼帶卷電磁鐵項目可行性研究報告
- 神經(jīng)系統(tǒng)的結(jié)構(gòu)與神經(jīng)調(diào)節(jié)的基本方式 【知識精講+高效備課】 高考生物一輪復(fù)習(xí) (新教材)
- GA/T 992-2012停車庫(場)出入口控制設(shè)備技術(shù)要求
- 2、組織供應(yīng)、運(yùn)輸、售后服務(wù)方案
- 體育測量與評價-第一章緒論課件
- 航空機(jī)載設(shè)備履歷本
- 企業(yè)風(fēng)險管理-戰(zhàn)略與績效整合(中文版)
- 高效能人士的七個習(xí)慣The7HabitsofHighlyEffectivePeople課件
- 小學(xué)體育與健康教育科學(xué)二年級下冊第一章體育基本活動能力立定跳遠(yuǎn)教案 省一等獎
- 工程分包管理計劃
- 民事訴訟法學(xué)整套ppt課件完整版教學(xué)教程最全電子講義(最新)
- 河北省自然科學(xué)基金資助項目申請書模板
評論
0/150
提交評論