第一篇:C++程序启动外部程序的方法总结
使用WinExec命令
⑴ 函数原型:
UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);
⑵ 参数:
lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。
uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。
⑶ 返回值:
若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:
① 0:系统内存或资源已耗尽。
② ERROR_BAD_FORMAT:EXE文件无效(非Win32.EXE或.EXE影像错误)。
③ ERROR_FILE_NOT_FOUND:指定的文件未找到。
④ ERROR_PATH_NOT_FOUND:指定的路径未找到。
虽然Microsoft认为WinExec已过时,但是在许多时候,简单的WinExec函数仍是运行新程序的最好方式。简单地传送作为第一个参数的命令行,还需要决定如何显示程序(该程序也许会忽视它)的第二个参数。通常,将其设置为SW_SHOW,也可尝试SW_MINIMIZED或SW_MAXIMIZED。WinExec不允许用CreateProcess获得的所有选项,而它的确简单。
使用ShellExecute命令
⑴ 函数原型:
HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);
⑵ 参数:
hwnd:指向父窗口的窗口句柄。此窗口接收应用程序产生的任何信息框。
lpOperation:一个空结束的字符串地址,此字符串指定要执行的操作。下面的操作字符串是有效的:
“open ” 此函数打开由参数lpFile指定的文件,此文件可以是一个可执行文件或文档文件,也可是一个文件夹。
“print ” 此函数打印由参数lpFile指定的文件,此文件应是一个文档文件,假如此文件是一个可执行文件,则打开此文件。
“explore ” 此函数搜索由参数lpFile指定的文件夹,此文件应是一个文档文件,此参数可以为空。这种情况下,函数用于打开由参数lpFile指定的文件。
lpFile:一个空结束的字符串地址,此字符串指定要打开或打印的文件或者是要打开或搜索的文件夹。
lpParameters:假如参数lpFile指定一个可执行文件,lpParameters则是一个空结束的字符串地址,此字符串指定要传递给应用程序的参数。假如lpFile指定一个文档文件,lpParameters应为空。
lpDirectory:一个空结束的字符串地址,此字符串指定默认目录。
nShowCmd:假如lpFile指定一个可执行文件,nShowCmd表明应用程序打开时如何显示。假如lpFile指定一个文档文件,nShowCmd应为空。
⑶ 返回值:
若函数调用成功,则返回值大于32,否则为一个小于等于32的错误值。
说明:可以用此函数打开或搜索一个外壳文件夹。打开文件夹可用下面任何一种形式:
ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL);
或
ShellExecute(handle,搜索文件夹,可用如下形式
“open ”, path_to_folder, NULL, NULL, SW_SHOWNORMAL);
ShellExecute(handle,ShellExecute命令虽已过时但易于得到。该命令向命令解释程序提出打开、浏览或打印文档或文件夹的请求,虽然可以用ShellExecute运行程序,但通常只发送文档名,而命令解释程序则决定要运行那个程序。另外在打开目录文件夹时,ShellExecute命令非常有用。
⑷ 程序示例
下面通过一个例子来说名WinExec和ShellExecute的使用。下面程序有控制台程序示例,其使用两种不同的方法,打开文本文件。下面程序使用WinExec,并明确指定使用记事本程序。然后,使用ShellExecute,打开文本文件。
程序清单
#include
void main(int argc,char *argv[]){
cout < <”Opening with WinExecn”;
if(WinExec(“notepad readme.txt”,SH_SHOW)<32)
MessagBox(NULL,”Can’t WinExec”,NULL,MB_OK);
cout < <”Press Entern”;
MessagBox(NULL,”Press OK to continue”,”Progrm Launched”,MB_OK);
cout < <”Opening with ShellExecuten”;if(ShellExecute
(NULL,”open”,”readme.txt”,NULL,NULL,SW_SHOW)<(HANDLE)32)
MessagBox(NULL,”Can’t ShellExecuten”,NULL,MB_OK);}
使用CreateProcess命令
⑴ 函数原型:
BOOL CreateProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,“explore ”, path_to_folder, NULL, NULL, SW_SHOWNORMAL);LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCTSTR lpCurrentDirectory,LPSTARTUPINFO lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);
⑵ 参数:
lpApplicationName:指向一个以空结尾的串,他指定了要执行的模块
lpCommandLine:指向一个以空结尾的串,该串定义了要执行的命令行。
lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。
lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。
bInheritHandles,:表明新进程是否从调用进程继承句柄。
dwCreationFlags:定义控制优先类和进程创建的附加标志。
lpEnvironment:指向一个新进程的环境块。
lpCurrentDirectory:指向一个以空结尾的串,该串定义了子进程的当前驱动器和当前目录。
lpStartupInfo:指向一个STARTUPINFO结构,该结构定义了新进程的主窗口将如何显示。
lpProcessInformation:指向PROCESS_INFORMATION结构,该结构接受关于新进程的表示信息。
⑶ 返回值:
若函数调用成功,则返回值不为0;若函数调用失败,返回值为0。
ShellExecute和WinExec命令用于简单的作业。如果要完全控制一个新进程,就必须调用CreateProcess。
在上述参数中,参数lpStartupInfo是STARTUPINFO结构。可以用来设置控台的标题,新窗口的的初始大小和位置,及重定向标准输入和输出。新程序通常可以忽略多数这些数据项,如果选择那样做的话。可以规定该结构体中的标志,已表明要设置的数据段。有时,不想设置任何信息,也必须传递一个有效的指针给空结构(确定设置大小到cb,及设置dwFlags成员为0)。参数lpProcessInformation返回进程和线程句柄,还包括进程和线程ID。这些句柄拥有在参数lpProcessAttributes和lpThreadAttributes中规定的访问。
要注意,针对CreateProcess的一些参数对控制台应用程序是特定的,而其它参数则对各种应用程序有用。大多数情况下,并不一定要填入STARTUPINFO结构,但无论如何必须提供它。其返回值是布尔型的,而真正感兴趣的返回值发生于作为参数传送的结构中(PROCESS_INFORMATION)。CreateProcess返回该结构中的进程ID及其句柄,以及初始线程ID及其句柄。可以将ID发送到其它进程,或使用句柄来控制新进程。
也可以考虑
C 函数:
system()
spawn()函数系列
exec()函数系列
c++ 启动exe(外部程序)收藏 关于三个SDK函数: WinExec,ShellExecute,CreateProcess 的其他注意事项: 【1】定义头文件
必须定义以下两个头文件:
#include
C++中所表示的路径要用 “ ”而不是平常所用的“ ”,所以以上三个函数表示路径都为:disk:Directory...File name WinExec(“D:Program FilesTestTest.exe”,SW_SHOWMAXIMIZED);ShellExecute(NULL,“open”,“C:Test.txt”,NULL,NULL,SW_SHOWNORMAL);
1、调用API: int system(const char *command);
你可以传入一命令,启动某个程序。如“ping www.xiexiebang.com”, “YourExe”等等
不过这里有几点要值得注意:
(1)、他不会立即返回,直到你启动的程序执行完成。
(2)、如果你启动是windows程序,它仍然会启动一个控制台,这就给人感觉太差劲了,但如果本身是控制台的,而且又需要等待它的完成,那这将是比较好的选择。
(3)、它的返回值代表是否执行成功以及程序的退出码。
(4)、不能运行*.txt文件或“www.xiexiebang.com”
2、调用API:
UINT WinExec(LPCSTR lpCmdLine, // command line
UINT uCmdShow // window style);
这个API与API:system同样的使用简单,同用是使用命令行型式。
不过它与API:system相比,有几个优点:
(1)、它将启动了一个新进程,并且立即返回,因此你的程序无需等待。
(2)、它的多了一个参数:uCmdShow,通过它你可以一定程度上控件窗体的显示,比如让它后台运行而不显示出来。
(3)、它无论启动控制台程序还是windows程序都只做你想要做的事。
它的不足之处:
(1)、它完全与本进程脱离,无法对做些必要的控制
(2)、无法得知启动的程序是否退出。
(3)、得不到启动的程序的退出码。
(4)、不能运行*.txt文件或“www.xiexiebang.com”
3、调用:
HINSTANCE ShellExecute(HWND hwnd,LPCTSTR lpVerb,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd);
它也有WinExec同样的缺点。
它虽然传回一个HINSTANCE,但他并不是真正的句柄,我们仅能拿它来做一些错误值检查。
但它的功能比前两者更强大,它执行系统的Shell命令。1、2中如果传入“XX.txt”,它们将不能成功执行,ShellExecute却能很好地执行,它将启动一个默认的文字处理程序来打开它。1、2中如果传入“www.xiexiebang.com”,将不能成功执行,而ShellExecute却能很好地执行,它将启动一个默认浏览器来打开这个网站。
参数讲解:
参数1 hwnd:一窗体句柄,将作为启动的程序的父窗体。
参数2 lpVerb:你想执行的操作(edit、explore、find、open、print、properties),你也可以传入NULL值,它将执行默认操作(win2000以前与以后处理略有差别,请见MSDN)。
参数3 lpFile:一文件名或操作的对象。
参数4 lpParameters:如果lpFile是一可执行文件,这个将作为它的参数。它的格式由执行的操作决定。而且当lpFile为一document文件时,此参数需为NULL。
参数5 lpDirectory:指定它的工作目录。
参数6 nShowCmd:窗体显示的控制。
以下是几个例子:
//启动一个Dos命令, 启动windows程序相同
::ShellExecute(this->GetSafeHwnd(), NULL, “ping”, “www.xiexiebang.com”, NULL, SW_SHOWNORMAL);
//打开一个文件
::ShellExecute(this->GetSafeHwnd(), “open”, “ReadMe.txt”, NULL, NULL, SW_SHOWNORMAL);
//上面的动词可传可不传,但如果“ReadMe.txt”为“ReadMe.bat”那就得指定,否则将会当命令执行,而不是打开它。
//可打开目录
::ShellExecute(this->GetSafeHwnd(), “open”, “c:”, NULL, NULL, SW_SHOWNORMAL);
//可打开网页
::ShellExecute(this->GetSafeHwnd(), “open”, “www.xiexiebang.com”, NULL, NULL, SW_SHOWNORMAL);
//浏览一个目录
ShellExecute(handle, “explore”, “c:”NULL, NULL, SW_SHOWNORMAL);
//查看一个文件或目录的属性
//使用ShellExecuteEx,实现请见所附源码对应部分
如果没有特殊的控制要求,它己能为我们做很了,但当我们一定要能控件这个启动的进程时,那我们就得使用第4点了。
4:调用API:
BOOL CreateProcess(LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information);
往往看到这个函数就让人生畏,它参数多,而且参数类型也如此莫生。是的,正是因为如此它才功能强大!
但不要怕,作为一般使用,非常简单!下面便是一个简单的例子(启动记事本):
STARTUPINFO StartInfo;PROCESS_INFORMATION pinfo;//对程序的启动信息不作任何设定,全部清0 memset(&StartInfo,0,sizeof(STARTUPINFO));StartInfo.cb = sizeof(STARTUPINFO);//设定结构的大小
BOOL ret=CreateProcess(NULL, //启动程序路径名
“notepad.exe”, //参数(当exeName为NULL时,可将命令放入参数前)
NULL, //使用默认进程安全属性
NULL, //使用默认线程安全属性
FALSE,//句柄不继承
NORMAL_PRIORITY_CLASS, //使用正常优先级
NULL, //使用父进程的环境变量
NULL, //指定工作目录
&StartInfo, //子进程主窗口如何显示
&pinfo);//用于存放新进程的返回信息
这样在创建成功这后我们就可以从pinfo中找到它的:进程句柄,线程句柄,进程ID,线程ID
在附件源码中演示了进程序的启动,停止。
实际上我们可以通过很多方式如内存共享、父进程窗体句体传入仍后从消息中获得子进程窗体句柄等,来实现更多的控制。
想很好地掌握CreateProcess,可参见人民邮电出版社出版的<< Windows系统编程 >>,它的“进程”部份作了很详尽的说明。
例程: #include
HWND handle;
printf(“Function
getchar();
printf(”Run a cmd command:ping www.xiexiebang.comn“);
ShellExecute(NULL, NULL, ”ping“, ”sina.com“, NULL, SW_SHOWNORMAL);
getchar();
printf(”打开目录n“);
ShellExecute(NULL, ”open“, ”c:“, NULL, NULL, SW_SHOWNORMAL);
getchar();
printf(”浏览目录n“);
ShellExecute(NULL, ”explore“, ”c:“, NULL, NULL, SW_SHOWNORMAL);
getchar();
printf(”文件属性n“);
ShellExecute(handle,”properties“,”C: est.txt“,NULL,NULL,SW_MINIMIZE);
printf(”%s",handle);
}
/*shellExecute的第二个参数为你想执行的操作(edit,explore,find,open,print,properties),也可为NULL*/ } /* SW_HIDE Hides the window and passes activation to another window.SW_MINIMIZE Minimizes the specified window and activates the top-level window in the system's list.SW_RESTORE Activates and displays a window.If the window is minimized or maximized, Windows restores it to its original size and position(same as SW_SHOWNORMAL).SW_SHOW Activates a window and displays it in its current size and position.SW_SHOWMAXIMIZED Activates a window and displays it as a maximized window.SW_SHOWMINIMIZED Activates a window and displays it as an icon.SW_SHOWMINNOACTIVE Displays a window as an icon.The window that is currently active remains active.SW_SHOWNA Displays a window in its current state.The window that is currently active remains active.SW_SHOWNOACTIVATE Displays a window in its most recent size and position.The window that is currently active remains active.SW_SHOWNORMAL Activates and displays a window.If the window is minimized or maximized, Windows restores it to its original size and position(same as SW_RESTORE).*/
第二篇:C++程序笔记
一:'CRecordset' : base class undefined
解决方法:在工程的StdAfx.h头文件中添加:#include
二: m_dlg.m_database.Open(_T(“addresslist”));// 这个在编译时会出现错误,解决办法:可以同上:#include
三:建了一个控件,但想在类向导里面定义该控件的函数时找不到控件ID号(原因:是因为修改了主对话框的ID号)
主对话框.h 中把emun{中改成相应的ID_Dlg}
四:设置窗体背景的颜色:
在主窗体APP文件里代码:SetDialogBkColor(RGB(200,223,200),RGB(0,0,255));
五:CAddressDlg::OnClose()
这个函数里面有KillTimer(0).六:连接数据库,m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);//从数据库中查找,输入的密码是否正确
七:当控件在类向导里没有显示其ID号时,将其属性里的组勾选即可~
说明:这里跟三不同
八:不能访问类查看信息文件 解决办法
解决办法为:删除掉目录中clw及ncb文件,再打开,就可以了。
九:当单击右键没看到“Add Windows Message Handler”时,更换.clw/.ncb文件即可
十:单步调试到RefreshData()时总是出现“FROM 语法错误”
解决办法:完成MainDlg()里面的显示工作区表格的代码后,这个问题没有了。
十一:Visual Assist X这是一个软件,可以帮助C++有个更友好的显示界面。
十二:实现窗体的伸缩功能:
OnRadioSearch();SizeWindow();
十三:Address工程里,当点击右边修改记录时,会出现系统报错
解决办法:
对修改记录所需弹出的窗口进行完整,像在类向导里面添加处理各种消息的函数
十四:AboutDlg弹出窗口设计一直说AboutDlg
最后新建了一个CAboutdlg1,并修改源代码,最后功能实现了
初步查找原因:元工程里面缺少的类CAboutDlg定义在AddressDlg.cpp里面,这才是原因,CAboutDlg应该需要定在Aboutdlg.h里面才行~
嗯!验证了,就是这个原因。
其实没有这么复杂:只要按照错误的提示建立自己的类啊、头文件啊、CPP文件就好了~~~
十五:AddInfo窗体录入数据出错:说“姓名一定要填写!然后出现系统错误”解决办法:
一下两个地方的 // NOTE: the ClassWizard will add member initialization here需要填写!!:
1.CAddInfoDlg::CAddInfoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAddInfoDlg::IDD, pParent)
2.void CAddInfoDlg::DoDataExchange(CDataExchange* pDX)
这里如果缺少1,会出现下面的系统错误:
由于将在索引、主关键字、或关系中创建重复的值,请求对表的改变没有成功。改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。
十六:模糊查询及精确查询均用不了:都显示“请输入关键字”
在差错过程中完整如下代码后出现系统错误
BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
十七:组合框设置默认值实现不了~
可实现的方法(但是在我的程序里没用!)
//默认“姓名”项被选中
m_ctrlfield.SetCurSel(0);
成功实现,关键:将SetCurSel()函数放在AddString()后面就可以了
十八:当加入DoDataExchange(CDataExchange* pDX)时中的代码时,运行报系统错误,编译没问题,已移植问题文件夹~
相关发现:在定义整形变量时有一种整形变量的description是:
int with validation(FOREIGN VALIABLE)这种变量的定义方法是
在DoDataExchange()函数中使用如下语句:
DDX_FieldText(pDX, IDC_CATNUM, m_pSet2->m_cat, m_pSet2);
当在CTestDBDoc.h文件中申明CMyRSet m_MyRSet;后便可以定义上述变量。
十八_2: DDX_FieldText()不知道怎么产生;
十九:ADOTest窗口弹不出来
解决方法:在建立MFC工程的时候将选项里的Base类由CView改为CFormView
二十:如何定义_ConnectionPtr型变量
在stdafx.h文件中加入代码:#import “c:program filescommon filessystemadomsado15.dll” no_namespace rename(“EOF”,“adoEOF”)
见博客:#post
二十一:当写到try{}是出现错误
解决方法:在后面添加catch{}代码,因为try与catch对应__try与__finally;try模块后面要跟上catch
二十二:ADOTest连接数据库失败
原因:ADOTest1.cpp中
hr = m_pConnection->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb”,“",”",adModeUnknown);///连接数据库
数据库test.mdb没有建立。
二十三:ADOTest删除按键为灰色框扭按不下去。无语了:原来是没有选中要被删除的选项
不过要将OnItemchangedUserlist()中的代码添加完全
二十四:Address的Login对话框类中的消息处理函数WM_Close有什么用WM_CLOSE是可选的,可以给你一个机会决定关不关
WM_DESTROY你没有得选择,因为DestroyWindow已经调用,窗口已经开始销毁。
二十五:使用CDataBase类定义对象时出现问题,原因是没有定义这个类在添加CPersonSet类后问题很多很多:有26个此类错误
见“一”
二十六:出现如:'m_database' : is not a member of 'CAddInfoDlg'的错误提示时应在CAddInfoDlg中定义m_database量
二十七:点击查询后没有反应,不管精确查询还是模糊查询
原来是OnRadio1()中的 m_bsearchflag没有赋值
第三篇:c++程序实习报告
针对我们这学期学的c++,假期进行了五天的实习。第一天听老师讲实习内容和提示的时候觉得思路挺明确的一个程序,哪有传说中的那么难。下午和同学讨论的时候觉得很有目的,只要按部就班的完成各步操作就可以了,有难度的也只是第二步。这一步要进行判断,这就需要多个输出函数;还要冒泡法给工作排序,工资的计算不是在类中完成的——挺棘手的一个问题。
第二天上机的时候也很快完成了第一步,觉得还行,慢慢来五天完全可以完成。后来也就没怎么好好思考,没想到第二天遇到麻烦了,编不出第二步了。第三天下午也没调试好,第一步输入的数据在第二步统计的时候怎么也数不出来,我从头至尾研究了多次,没发现一点问题,请舍友帮我检查也说没错,到了傍晚还是看不出来。哎!又找一个人给我看了看,竟然错得那么幼稚,类外定义了全局对象,在数据输入put()函数里又重新定义了对象,这样在put()输入的数据无法用到其他函数中,自然统计的时候都是默认值了。
就这么一个小小的错误整得我一天一晚上寝食难安。
编程序时深深感受到要不得半点马虎,有时少一个“}”或“<”都会导致程序语法错误;由于编程序经常要变换输入法,很容易输进中文字符,这也会导致语法错误;调用类里重名函数时要注明属于哪个类的。
第三天的时候第二步基本都编出来了,傍晚那时我没检查出错误来的时候,实在是把我急坏了,借了台电脑,在那安静专心的研究程序,舍友帮我检查出错误来之后,编程序有了感觉,那时已经22:00多了,竟然没有一丝睡意。
后来舍友们陆续睡觉了,可我就是不愿睡。可能是出于自尊心需要,别人都编出来了,自己编不出来,让我无法接受;也可能是第二步出来了急于尽快搞定。从19:00到凌晨4:00一直在那儿编程序了,一次次地听到铃声响竟然没有上床睡觉的冲动,满脑袋只有一个想法:认真编程序,争取晚上搞定。后来差不多了,只有备份不怎么完善,当时电脑已经用了好长时间了,实在不忍心一直用人家的电脑,只好关机睡觉了。
这几天可以说是两耳不闻窗外事,一心只顾编程序了,电话都懒得打,只想尽快把程序搞定,晚上没有电脑用,我们三个女生就去网吧,只是那儿没有vusual-c++,只好作罢。
虽然我们一直在编程序,觉得挺累的,其实还有比我们更累的——我们的老师。我们是每天只有半天的实习时间,可是老师却整天在机房里,看得出来,老师连坐下休息的时间都没有,刚要喝点水,立马就被一个同学叫去了,实习完那天下午看见老师都不想走路了。太累了,一天站7小时,还一直给别人检查程序,太忙了。想想老师这么认真,我们还有什么理由不认真呢?
只有五天的实习,却让我受益匪浅:这不仅是一次对我们的c++掌握和运用的熟练程度的检查,更是一次磨练我们耐性、培养认真态度的机会。这次实习让我深刻体会到“细节决定成败,态度决定一切”;更让我 从 老师身上学到了很多在以后工作中需要的优秀品质。相信这会在我今后的学习和以后的工作很有帮助。
通过完成本次面向对象程序设计的任务,使我熟练和掌握了上学期所学的有关visual c++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。
第一天上课时候听老师讲,第一反应是这可怎么做了。当时有些迷茫。但是事在人为,下午回去之后在宿舍苦心研究,终于在整体上有了一定的把握。我们可以先定义一个基类,再派生三个子类,然后在类外定义函数。有人数规定,我们就定义相应长度的对象数组,最后在实现程序功能时,用函数调用就行。
于是当晚很快就完成了第二天的预习报告,上机调试时也没什么大问题,就这样第二天顺利通过。
虽说接下来的统计没那么容易,但就顺着数据顺利输入的喜悦心情,我还是较好的完成了这个任务。在类外定义一个函数用来输出雇员的基本情况,表头,表尾直接在统计函数中输出,也就是在统计函数中调用函数。打印与统计有异曲同工之妙,所以在统计做出之后,打印自然而然的也就很快完成了。
接下来的数据备份中,遇到了一个小问题,一开始以为也是函数中调用打印函数中用的那函数。其实不然,如若那样,又变成了打印。那我们就直接输出,但详细资料是受保护的,不能直接输出,那还得调用函数。于是在每个类中的公共成员中定义了直接返回的函数,接下来顺利完成了备份。调用头文件
里的exit(int)函数,可以用if()语句进行判断是否确定退出。程序顺利完成。
面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。
此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。
当然,此次任务的完成,也体现出同学之间的团结精神。所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。
第四篇:启动仪式程序
“安全教育月”活动
启动仪式
主 持 人:刘洋 参加人员:全体师生 活动议程:
1、刘洋校长介绍到会领导,宣读活动议程。
2、马鹏主任宣读《东沙河镇学校、幼儿园秋季“安全教育月”活动方案》的通知。
3、马鹏主任宣读《堌堆小学小学“安全教育月”活动实施方案》。
4、少先队代表张睿作安全倡议书。
5、王德泉校长作安全教育月重要讲话。
6、刘洋校长作活动总结。
东沙河镇堌堆小学 二〇一七年二月
第五篇:启动仪式程序
新墩镇“学习雷锋好榜样 共建和谐新新墩”
启动仪式程序
(主持人介绍参加本次活动的领导)
1、镇中心学校负责人讲话(李校长)
2、青年志愿者代表宣读学雷锋活动倡议书(冯海睿)
3、镇中心学校闫书记安排三月份学雷锋活动实施方案
4、请镇政府代镇长宣布新墩镇学雷锋志愿服务月活动正
式启动。
5、举行“学习雷锋好榜样 共建和谐新新墩”签名活动(仪
式结束后,在镇政府门口志愿者集中服务点进行签名)
6、学雷锋主题活动开始(要求老师全程参与,负责活动过
程中的学生安全)