收藏 分销(赏)

面向对象C程序设计.doc

上传人:可**** 文档编号:2956172 上传时间:2024-06-12 格式:DOC 页数:24 大小:452KB
下载 相关 举报
面向对象C程序设计.doc_第1页
第1页 / 共24页
面向对象C程序设计.doc_第2页
第2页 / 共24页
面向对象C程序设计.doc_第3页
第3页 / 共24页
面向对象C程序设计.doc_第4页
第4页 / 共24页
面向对象C程序设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、 浙江工商大学计算机与信息工程学院课程设计报告课程名称:面向对象程序设计 _专 业:计算机科学与技术 班 级:计科0902 _ 学 号:0912300201 _姓 名:周永强 _题 目:音乐播放器_指导教师: 2011年1月计算机与信息工程学院班级计科0902姓名 学号0912300201题目音乐播放器时间2011年1月目的 通过使用微软的MFC编程实现windows系统下的简单播放器的功能,使之能够播放常见的音频文件,并且实现用户与窗口程序的简单交互。要求运用窗口界面设计。本课题将生成一个播放器,能够实现*.mp3,*.wma等常见的音频文件播放,并且还有一个对话框,点击上面的连接能够实现调

2、用outlook进行发邮件反馈信息。为实现友好的和美观的操作界面,本例中将调用位图资源,以及常见的播放器操作,以更好的满足用户的要求。内容和要求播放器的基本要素:打开文件、播放文件、录制文件、删除列表中文件、暂停播放、停止播放、上一曲、下一曲。窗口操作:播放清单弹出和关闭、窗口关闭、窗口最小化到托盘、窗口子对话框。其他功能:用户反馈(发送邮件)。成绩 指导教师(签名): 2009级面向对象程序设计课程设计任务书设计说明书需求分析:本课题通过对Windows API的多媒体和资源文件的高层控制MCI进行封装,建立了一个播放器类KuWfPlayer(酷狼),不必过分追究MCI内部函数,仅是根据自己

3、的需要,直接调用其接口,即可轻松实现基本的播放器所具有的功能。该案例提供给用户以下服务:1, 高层音频服务2, 媒体控制接口3, 连接媒体设备4, 顺序播放加入列表的音频文件5, 程序托盘功能6, 实现复读机功能7, 超级链接的使用其中后两项功能并非目前所有播放器都具备的功能,可以算得上本课题的创新之处。程序设计思想:Windows系统提供了强大的多媒体系统,为我们提供了WINMM.DLL动态链接库,通过调用它所提供的API函数,就可以实现MCI指令进行多方面的操作了,就想普通播放器一样,只是此处是通过命令的方式。MCI的全称是Media Control Interface,译为媒体控制接口,

4、就像一个解释器,通过调用函数的形式解释命令。MCI工作过程中需要在指令中需要调用API函数实现程序与多媒体设备的连接。有三个重要的API,分别是mciSendString(), mciExecute()和mciGetErrorString(),本程序中将展现其各自的功能。概要设计:1,建立MFC工程,选择类型为Dialog Based模式,其他均默认。2,此时工程会自动生成两个对话框,对于本例已经够了。3,设计界面,如下图:4,给控件设置ID值,本案例中ID值为上图中控件上的标识,前面再加上IDC_标志。5,给控件添加成员变量,其中按钮空间添加CButton类型,滚动条为CSliderCtrl

5、类型,列表为CListBox类型。6,一切结束后,右击工程图标属性linkinputAdditional Dependences中加入winmm.lib,注意此处一定要加,不然会连接错。8, 添加位图资源,本例使用别人提供的位图资源,把位图复制到工程下的res目录中,然后在资源视图中,通过导入位图资源,把已有资源导入,ID值为默认,不再修改。9, 位图添加后,要把对话框的成员变量那些CButton类型的对象修改为CBitmapButton类型,并设置属性值owner draw为true。10, 在About对话框中添加CStatic控件,设置ID为IDC_EMAIL,标题设为 Emaito:z

6、yqhi201011, 窗口设计工作基本文成,以下开始是代码工作。12, 以下是程序的类关系图。程序框架及详细实现:本例充分利用面向对象的思想,创建了几个程序所需要的类,来实现特定的功能,下面将分别介绍:第一个类:KuWfPlayerDlg 通过public:继承CDialogEx而来,是一个对话框类,为实现其功能,添加了以下必要的函数,其层次和成员函数、数据成员UML图.本类主要是实现窗口显示控制,文件播放控制,和音频功能的实现,由于函数名很直观,可以从上表中基本看出起功能,因此下面只分析重要的函数和几个关键步骤。构造函数:构造函数是每个类必不可少的部分,是类的对象在创建后能够正确的初始化,

7、下面是本类的构造函数:KuWfPlayerDlg:KuWfPlayerDlg(CWnd* pParent /*=NULL*/): CDialogEx(KuWfPlayerDlg:IDD, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);aa=_T();hour=minute=second=0;fi=-1;fr=0;以下几个函数主要用于界面的显示,即构造外观:BOOL KuWfPlayerDlg:OnInitDialog()该函数是窗口的初始化函数,在窗口显示后已经完成,对整个窗口的显示起决定性作用,位图的加载以及图标的加载都在该函数中

8、实现,是本课题第一个目标,即实现美观的外表的重要函数。例如:界面背景位图加载:m_bg.LoadBitmap(IDB_BITMAP2);按钮位图加载:m_open.LoadBitmaps(IDB_BITMAP3,IDB_BITMAP3);m_bexit.LoadBitmaps(IDB_BITMAP6,IDB_BITMAP6);图标的加载:SetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon以及相关变量的初始化工作:m_flag=TRUE;m_flag1=TRUE;void KuWfPlayer

9、Dlg:OnPaint()该函数是负责程序主界面的绘制工作,在上个函数中,资源得到加载,在本函数中资源得到使用,下面是一些重要的语句及解释:CPaintDC dc(this);CRect rect;GetClientRect(&rect); /以上是获得当前的设备环境dc,和操作区域rectCDC dcMem;dcMem.CreateCompatibleDC(&dc);BITMAP bitMap;m_bg.GetBitmap(&bitMap);CBitmap *pbmpOld = dcMem.SelectObject(&m_bg);dc.StretchBlt(0,0,rect.Width(),

10、rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);/该语句实现背景的位图填充以下函数主要用于实现播放功能,通过调用MCI指令:首先保证添加头文件 #include “mmsystem.h”void KuWfPlayerDlg:OnPlay()播放和暂停函数:播放:MCI_OPEN_PARMS mciopenparms;/播放MCI_PLAY_PARMS mciplayparms;/播放路径mciopenparms.lpstrElementName=aa;/文件类型mciopenparms.lpstrDeviceTy

11、pe=NULL;/向MCI设备发送命令消息,使其包含文件的类型和路径mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,(DWORD)(LPVOID)&mciopenparms);/获取多媒体设备类型编号m_count=mciopenparms.wDeviceID;/歌曲播放支持类型mciplayparms.dwCallback=(DWORD)GetSafeHwnd();/cdlen的前三位是歌曲长度,以秒为单位cdlen=getinfo(MCI_STATUS_LENGTH);/设置播放完成所需要时间cdto=MCI_MAKE_HMS(MC

12、I_HMS_HOUR(cdlen),MCI_HMS_MINUTE(cdlen),MCI_HMS_SECOND(cdlen);mciplayparms.dwFrom=cdfrom;mciplayparms.dwTo=cdto;/向设备发送播放的消息mciSendCommand(m_count,MCI_PLAY,MCI_TO|MCI_FROM,(DWORD)(LPVOID)&mciplayparms);/设置及时系统,用于进度的随时显示SetTimer(0,1000,NULL);/设置进度条范围m_sl.SetRange(0,(cdlen/1000);/将信息显示到窗口UpdateData(FAL

13、SE);暂停:m_flag=TRUE;m_play.RedrawWindow();/取消计时器KillTimer(0);/获取当前状态DWORD dwsf=getinfo(MCI_STATUS_POSITION);/记录播放位置cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(dwsf),MCI_MSF_SECOND(dwsf),MCI_MSF_FRAME(dwsf);/向设备发送暂停请求mciSendCommand(m_count,MCI_CLOSE,0,NULL);void KuWfPlayerDlg:OnOpen()由于本例要从磁盘上选择文件,所以,函数中定义了一个问

14、价对话框的对象CFileDialog f(TRUE);用fileNmae表示读取文件的名字CString fileName;const int c_cMaxFiles = 100;const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1) + 1;f.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);f.GetOFN().nMaxFile = c_cMaxFiles;用pos表示位置POSITION pos=f.GetStartPosition();打开文件对话框f.DoModal()=

15、IDOK以下操作不再赘述。void KuWfPlayerDlg:OnTimer(UINT_PTR nIDEvent)由前面的函数可以看到本案例中调用了该函数,由于播放器的进度要随时显示到屏幕上,以获取最新的进度,所以必须要每个一定的时间来获取歌曲播放信息,所以用到了OnTimer(),在windows SDK编程中实现该功能是通过响应WM_TIMER来实现的,MFC中也不例外,所以为WM_TIMER添加消息响应函数后,MFC通过三个函数实现对时间的控制,分别为:SetTimer()KillTimer()OnTimer()来实现的,当程序调用函数SetTimer()时,OnTimer()开始执行

16、,当KillTimer()调用时,不再计时,以此实现对时间的控制。函数的内容不再赘述。void KuWfPlayerDlg:Thide()该函数用于实现程序的最小化,我们常见的许多程序,都有点击最小化按钮后最小化到托盘,本例中夜集成了该功能,下面是主要代码及解释:/创建任务栏图标对象NOTIFYICONDATA tnd;tnd.cbSize=sizeof(NOTIFYICONDATA);tnd.hWnd=this-m_hWnd;tnd.uID=IDR_MAINFRAME;tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;tnd.uCallbackMessage=M

17、Y_MESSAGE;tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME);下面是提示:lstrcpy(tnd.szTip,_T(Mp3 Player,单击图标弹出窗口); /向任务添加图标Shell_NotifyIcon(NIM_ADD,&tnd); void KuWfPlayerDlg:Tdehide()与上述函数类似void KuWfPlayerDlg:OnLButtonDown(UINT nFlags, CPoint point)该函数是为了发送鼠标左键按下的消息,以实现相应的事项PostMess

18、age(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y);LRESULT KuWfPlayerDlg:WindowProc(UINT message, WPARAM wParam, LPARAM lParam)消息处理函数,本例牵涉到消息的发送和处理,该处通过消息处理函数来接收并予以处理,其全部代码如下面/ TODO: Add your specialized code here and/or call the base classswitch (message)case MY_MESSAGE:if (lParam=WM_RBUTTO

19、NUP|lParam=WM_LBUTTONUP)ShowWindow(SW_SHOW);Tdehide();break;return CDialogEx:WindowProc(message, wParam, lParam);将原路径数组转移到临时路径数组中void KuWfPlayerDlg:forfor()临时路径转移到原路径数组中void KuWfPlayerDlg:forfor1()其他函数机制和实现都相对简单,只是做一些常见的操作,因此此处不再赘述.第二个类:CHyperLink 通过 public 从CStatic而来。是一个超链接类,为实现其功能,添加了以下必要的函数,其层次和成

20、员见UML图:下面介绍其主要函数:CHyperLink:CHyperLink()在构造函数中进行下列初始化,以保证类的对象创建时能够正确的初始化m_hLinkCursor = NULL;m_crLinkColour = RGB(0,20,238);m_crVisitedColour = RGB(85,26,239);m_crHoverColour = :GetSysColor(COLOR_HIGHLIGHT);m_bOverControl = FALSE;m_bVisited = FALSE;m_bUnderline = TRUE;m_bAdjustToFit = TRUE;m_strURL.

21、Empty();void CHyperLink:OnMouseMove(UINT nFlags, CPoint point)本函数用于检测鼠标的移动,由于本例要使用超链接,并且当鼠标滑动到鼠标上侧时,要做出相应的响应,因此,在类中添加了成员函数。首先调用父类的函数,如下:CStatic:OnMouseMove(nFlags, point);当鼠标目前处于url上方时,将鼠标指针设为手形m_hLinkCursor = LoadCursor( NULL , IDC_HAND ) ;SetLinkCursor(m_hLinkCursor);不在上方时CRect rect;GetClientRect(

22、rect);m_bOverControl=FALSE;ReleaseCapture();RedrawWindow();以此来实现鼠标的响应。void CHyperLink:PreSubclassWindow()PreSubclassWindow()函数里面对文本框执行的设置字体大小 创建静态文本框控件。BOOL CHyperLink:PreTranslateMessage(MSG* pMsg)此函数时时MFC的虚函数,此处进行了重写,仍然是为了实现函数的消息的响应。m_ToolTip.RelayEvent(pMsg);void CHyperLink:PositionWindow()在该函数中,

23、移动并重新绘制用户区窗口的大小,这样用户区和超链接文本就有相同的尺寸;而且可以防止空间不在文本上时,防止激活链接。下面是一些主要的代码:首先获取当前窗口位置CRect rect;GetWindowRect(rect);CWnd *pParent = GetParent();并判断是不是父窗口if (pParent)pParent-ScreenToClient(rect);获取当前窗口类型DWORD dwStyle = GetStyle();iLONG retval = RegOpenKeyEx(key,subkey,0,KEY_QUERY_VALUE,&hKey);获取成功后if (retva

24、l = ERROR_SUCCESS)long datasize = MAX_PATH;TCHAR dataMAX_PATH;RegQueryValue(hKey,NULL,data,&datasize);lstrcpy(retdata,data);RegCloseKey(key);将其返回return retval;void CHyperLink:ReportError(int nError)如果发送邮件不成功,如要处理错误的原因,此函数中通过对错误原因来进行逐个处理,以实现不成功时响应的操作,增强操作的安全性。此处使用的是switch语句进行判断:(str字符串的内容限于篇幅以省略)swit

25、ch (nError) case 0: str = ; break;case SE_ERR_PNF: str = ; break;case SE_ERR_FNF: str = ; break;case ERROR_BAD_FORMAT: str = ; break;case SE_ERR_ACCESSDENIED: str = ; break;case SE_ERR_ASSOCINCOMPLETE: str = ; break;case SE_ERR_DDEBUSY: str = ; break;case SE_ERR_DDEFAIL: str = ; break;case SE_ERR_DD

26、ETIMEOUT: str = ; break;case SE_ERR_DLLNOTFOUND: str = ; break;case SE_ERR_NOASSOC: str = ; break;case SE_ERR_OOM: str = ; break;case SE_ERR_SHARE: str = ;default: str.Format(_T(Unknown Error (%d) occurred.), nError); break;str =_T(Unable to open hyperlink:nn) + str;发送消息框提示:AfxMessageBox(str, MB_ICO

27、NEXCLAMATION | MB_OK);HINSTANCE CHyperLink:GotoURL( LPCTSTR url, int showcmd )该类的重量级成员函数,也就是前往链接,当一切工作做好以后,就是要打开对应的链接,下面着重分析代码及原理:TCHAR keyMAX_PATH+MAX_PATH;尝试使用ShellExecute()HINSTANCE result = ShellExecute(NULL,_T(open),url,NULL,NULL,showcmd);如果获取失败。则获取.htm注册键值并查找程序if (UINT)result=HINSTANCE_ERROR)i

28、f (GetRegKey(HKEY_CLASSES_ROOT,key,key),_T(.htm)=ERROR_SUCCESS)TCHAR *pos;pos=_tcsstr(key,_T(%1);/未发现引用%1if (pos=NULL)pos = StrStr(key, _T(%1); 如果还是空if (pos=NULL)pos=key+lstrlen(key)-1;else/删除参数*pos=0;else *pos=0;lstrcat(pos,_T( );lstrcat(pos,url);result=(HINSTANCE)WinExec(LPCSTR)key,showcmd);将结果返回r

29、eturn result;其余函数由于比较简单,所以此处不再解释,详细可参见代码。第三个类: CAboutDlg 通过 public 从CDialogEx而来。是一个对话框类,为实现其功能,添加了以下必要的函数,其层次和成员见UML图。该类的目的是调出ABOUT对话框,获取用户帮助信息,以及用户的反馈。都是基本函数。第四个类:CTESTApp :public CWinApp,MFC 中的主应用程序类封装用于 Windows 操作系统的应用程序的初始化、运行和终止。基于框架生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象。在创建窗口之前先构造该对象。至此,该类中主要的函数及实现机

30、制都已经介绍完了,限于篇幅原因,部分非重要简单函数并未介绍, 如有需要,可以参见后附录代码,或发送邮件给本人:zyqhi2010获取代码。 设计成果展示程序主界面如下图:播放按钮,选中播放列表内的文件按下按钮或双击,会开始播放,再次点击,歌曲暂停。:打开按钮,当需要向列表中添加文件时,按下该按钮,会打开问价对话框进行选择文件。:上一曲。:下一曲。:录制按钮,第一次按下时,歌曲开始录制,再次按下时播放录制的内容。:停止播放:最小化按钮,当按下时,程序最小化到托盘,如下图。:退出按钮,退出程序。:关于按钮,按下后,会弹出帮助对话框。点击对话框上的email链接,会条用outlook发送邮件。DEL

31、:按钮删除列表内的歌曲。POP: 该按钮是是窗口改变大小,隐藏列表,如下图:设计心得体会 通过几天的努力,终于把课题做出来,也算是本学期该课程的一个圆满结束,以前只是纯粹的为了写程序,从来没有针对性的做过某个课题或是实现某个软件的开发。总以为学好基础就万事大吉了,但此次才发现只是知道理论不会用对编程来说是毫无意义的,在操作中实践知识,理解知识,才是真正的编程之道,带着目的去实现才能够使努力有意义。初次看到课题时,没打算能做出来的,但最终还是完成了,一开始的时候,要实现播放器,只感觉很虚,因为我不知道windows如何实现音频播放,我不知道该如何设计程序的整个流程,也不知道MFC如何实现程序的编

32、写和控制,更不知该使用哪个类,哪个函数,以及为什么使用那个类,为什么调用那个函数。把MFC从头学过显然已经来不及了,即使那样,短时间内熟悉MFC的内部机制几乎也是不可能的,无奈之举,只有针对性的去借鉴别别人的程序,先知其然,后再探寻其所以然吧。一直不喜欢看别人的程序,感觉那样像是抄袭,即使不是抄袭,也似乎显得没有技术含量,不能张显自己的能力。即使有别人的程序作向导,但在实现的过程中由于操作平台的不同还是遇到了不少问题,搞得我头都晕了,当自己明明不知道,可竟然不知道自己那里不知道,以至于明明有问题,却没办法描述自己的问题,确实像哑巴吃了黄连,有苦说不出。一直以为没有不可能,所以从来不喜欢问自己会

33、不会,而是问自己愿不愿,因为只要愿意,就有解决问题的勇气和动力,无论如何,只要有问题,就会有解的,我不会只是代表暂时还没找到,只要我肯找,始终是会找得到的,我喜欢那种把问题解决带来的成就感,也喜欢独自把问题解决。以前问老师问题时,老师总是反问我有没有自己试着去解决过,说句实话,有时候确实没有,懒惰的驱使使得想得到现成的答案,可往往忽略了解决的过程才是最重要的,因为总有一天,我要独自去面对问题的,不能事事依赖别人,别人只能替我指路,却永远不能为我走路,走还是要靠自己的,很感谢老师,用问题回答我的问题,却让我找到所要的答案。有时候会问自己感不感觉很亏,把年轻的时间用在这些事上面,现在知道,非但没有

34、,而且还感觉很好,喜欢把编程当作打游戏。同学有时候邀我打游戏,总是回绝说已经戒了,现在写程序,看算法就像你的游戏,你的聊天一样,你从游戏中获得快乐,我从编程中寻找着成就,你有你的乐点,我有我的笑谈,我不否认你的错,你也不要指责我不对,我们同样是找寻着乐趣,只是用这不同的方式,没有所谓的对与错,只有适合与不适合,对我来说,这是适合的。总之,课程设计已经告一段落,本学期的的课程也已经结束,但愿没有白过,取得一个好的结果也算是对自己这学期的交代。希望老师客观公正的给出评价,那么我的努力也没有徒劳。最后,感谢老师的教导,我入门了,以后会好好修行的。2011/1/13周永强1. 80196单片机IP研究

35、与实现,TN914.42 2. AT89S52单片机实验系统的开发与应用,TG155.1 F406 3. 基于单片机的LED三维动态信息显示系统,O536 TG174.444 4. 基于单片机的IGBT光伏充电控制器的研究,TV732.1 TV312 5. 基于89C52单片机的印刷品色彩质量检测系统的研究,TP391.41 6. 基于单片机+CPLD体系结构的信标机设计,TU858.3 TN915.627. 基于单片机SPCE061A的汽车空调控制系统,TM774 TM621.3 8. 带有IEEE488接口的通用单片机系统方案设计与研究,TN015 9. 基于VC的单片机软件式开发平台,T

36、G155.1 F406 10. 基于VB的单片机虚拟实验软件的研究与开发,TG155.1 F406 11. 采用单片机的电阻点焊智能控制器开发,TG155.1 F406 12. 基于51系列单片机的PROFIBUS-DP智能从站研究,TG155.1 F406 13. 八位单片机以太网接入研究与实现,TG155.1 F406 14. 基于单片机与Internet的数控机床远程监控系统的研发,R319 TP319 15. 基于单片机和DSP控制的医用输液泵的研究,U467.11 16. 基于单片机控制新型逆变稳压电源的设计与仿真,F426.22 TP311.52 17. 基于8位单片机的摩托车发动

37、机电控单元软硬件的开发,TB61 18. 基于430单片机的变压器监控终端的研究,TG155.1 F406 19. 逆变点焊单片机控制系统研究,TG131 TG113.14 20. 单片机控制数字变量柱塞泵的研究,F426.22 TP311.52 21. 基于单片机控制的高通量药物筛选及检测系统开发,R730.55 R734.2 22. MCS8051以及DS80C320单片机软核的设计,TP391 23. 基于AVR单片机的应用设计实践,TN015 24. LPC2210单片机的KGW脉冲固体激光掩膜加工控制系统研究,TG131 TG113.14 25. 基于单片机控制的交流伺服系统的多梳栉

38、经编机的研究,TN916 TP317 26. 80C196单片机在铁路客车发电机控制系统中的应用研究,TP368.1 TP393 27. 基于单片机的工程车辆3参数自动换档技术研究,F426.22 TP311.52 28. 削方制材机摇尺机构单片机控制装置的研制,TH213.6 29. 8XC196单片机集成开发环境的研制,F426.22 TP311.52 30. 基于单片机与PC的光电靶测试系统研究,O536 TG174.444 31. 手机和单片机控制系统的理论与应用研究,TG155.1 F406 32. 基于单片机数控实验教学绘图仪研究,TN916 TP317 33. 基于单片机控制的脉

39、冲电化学齿轮修形研究,R319 TP319 34. 基于AT89S52单片机的三相电度表研究,TP274.2 35. 基于MSP430单片机的嵌入式网络终端,TH812 TP368.1 36. 基于MSP430单片机地下车库通风控制系统设计,TP273.2 TG333.26 37. 基于PIC单片机的血压测量计设计,TP311.5 TM910.6 38. 基于单片机的标记打印机的研究与开发,TP277 TG156.82 39. 基于C8051F单片机和CANbus的航空三轴伺服转台控制系统的设计与研究,TP368.1 V217.2 40. 基于单片机的全位置自动焊接控制系统的研究 项目论证,项

40、目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!毕业论文,毕业设计,毕业论文设计,商业计划、商业策划、大学生商业计划书、大学生商业策划书、大学生创业计划书,毕业论文,毕业设计,毕业论文设计,商业计划、商业策划、大学生商业计划书、大学生商业策划书、大学生创业计划书毕业论文,毕业设计,毕业论文设计,商业计划、商业策划、大学生商业计划书、大学生

41、商业策划书、大学生创业计划书毕业论文,毕业设计,毕业论文设计,商业计划、商业策划、大学生商业计划书、大学生商业策划书、大学生创业计划书项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服