当前位置:文档之家› 工程学院课程设计报告

工程学院课程设计报告

工程学院课程设计报告文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-1. 程序设计1.1程序设计目标参照GB50343-2010《建筑物电子信息系统防雷技术规范》相关公式内容编写,主要用于建筑物电子信息系统雷电防护等级的计算。

1.2 程序运行环境本软件在Visual C++ 6.0环境下运行 1.3 程序功能模块设计一、 程序功能模块划分1.系统功能模块框图图1 系统功能模块框图【最新资料,WORD 文档,可编辑修改】2.各功能的具体实现内容菜单栏:(1)文件:打开文件,浏览保存文本文档,方便查询历史信息;保存各项参数及结果于文本文档;退出程序(2)规范:提供与程序相关的规范,进行参考(3)帮助:程序的使用方法;程序编程说明;关于主界面:(1)参数输入:输入各项参数,并通过点击相应运算按钮进行计算(2)结果输出:输出防雷装置拦截效率(E),并显示雷电防护等级(3)信息提示:若参数输入缺少或错误在提示框内显示提示信息(4)重置:输入的各项参数全部清楚,恢复到默认状态二、功能实现流程图图2 系统主功能实现流程图2. 程序功能模块详细设计(源代码+程序说明)2.1客户端三、数据结构定义1.结构体struct NOne{double K; //校正系数 Kint Td; //年平均雷暴日,根据当地气象台、站资料确定 (d/a)double L; //建筑物的长 Ldouble W; //建筑物的宽 Wdouble H; //建筑物的高 Hdouble Ng; //建筑物所处地区雷击大地的年平均密度 Ng(次/km^2/a)double Ae; //与建筑物截收相同雷击次数的等效面积 Ae(km^2) double N1; //建筑物年预计雷击次数 N1(次/a)}nOne;struct NTwo{double ds; //埋地引人线线计算截收面积时的等效宽度。

单位为m,其数值等于土壤电阻率,最大值取500double L1; //低压架空电源电缆double L2; //高压架空电源电缆(至现场变电所)double L3; //低压埋地电源电缆double L4; //高压埋地电源电缆(至现场变电所)double L5; //架空信号线double L6; //埋地信号线double Ae1; //入户设施的有效截收面积 A'e(km^2)double N2; //人户设施年预计雷击次数 N2(次/a)}nTwo;struct NC{double C1; //C1 为信息系统所在建筑物材料结构因子double C2; //C2 为信息系统重要程度因子double C3; //C3 为电子信息系统设备耐冲击类型和抗冲击过电压能力因子double C4; //C4 为电子信息系统设备所在雷电防护区(LPZ)的因子double C5; //C5 为电子信息系统发生雷击事故的后果因子double C6; //C6 为区域雷暴等级因子double Nc; //建筑物电子信息系统设备,因直击雷和雷电电磁脉冲损坏可接受的年平均最大雷击次数最大年平均雷击次数 Nc(次/a)}nCe;struct LiPr{double N; //建筑物及人户设施年预计雷击次数(N)double E; //防雷装置拦截效率}lip;2.字符量及全局变量#define PI 3.1415926TCHAR strTime[256]; //x年x月x日 x:x:x3.函数定义1)调用的系统内部的函数2)自定义的函数void ButtonN1(HWND hwnd); //IDC_OKN1 运算按钮void ButtonN2(HWND hwnd); //IDC_OKN2 运算按钮void ButtonNc(HWND hwnd); //IDC_OKNc 运算按钮void ButtonLP(HWND hwnd); //IDC_OKLP 雷电防护等级按钮void SetOption(HWND hwnd); //设置下拉列表选项void SetZero(HWND hwnd); //置0,默认void OpenText(HWND hwnd); //打开void SaveText(HWND hwnd); //保存void SaveDate(HWND hwnd, TCHAR filename[MAX_PATH]);//保存数据void CALLBACK MyTimerProc(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime); //日期时间显示BOOL IsDigit(TCHAR* str); //判断输入是否合法四、算法设计void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){switch(id)/************************ 文件 ************************/ {case ID_MENUITEMOPEN: //打开{OpenText(hwnd);}break;case ID_MENUITEMSAVE: //保存{if(nOne.N1==0 || nTwo.N2 == 0 || nCe.Nc==0 || lip.N== 0) {MessageBox(hwnd, TEXT("参数不完整\r\n请继续输入\r\n谢谢合作"), TEXT("雷电风险评估"), MB_OK|MB_ICONQUESTION);return;}SaveText(hwnd);}break;case ID_MENUITEMCLOSE: //退出{if(IDYES==MessageBox(hwnd, TEXT("确定退出?"), TEXT("雷电风险评估"), MB_YESNO|MB_ICONQUESTION)){EndDialog(hwnd, 0); }}break;/************************ 帮助 ************************/ case ID_MENUITEMUSE: //使用说明{ShellExecute(NULL,"open","软件使用说明.doc", NULL ,NULL ,SW_SHOWNORMAL);}break;case ID_MENUITEMWRT: //编程说明{ShellExecute(NULL,"open","软件编程说明.doc",NULL,NULL,SW_SHOWNORMAL);}break;case ID_MENUITEMABOUT: //关于{HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_ABOUTDLG),hwnd,About Dlg_Proc,0);}break;/************************ 规范 ************************ ///新规范case ID_GB34310: //GB50343-2010{ShellExecute(NULL,"open","LPstandard\\GB50343-2010.pdf",NULL,NULL,SW_SHOWNORMAL);}break;case ID_GB5710: //GB50057-2010{ShellExecute(NULL,"open","LPstandard\\GB50057-2010.pdf",NULL,NULL,SW_SHOWNORMAL);}break;//旧规范case ID_GB34304://GB50343-2004《建筑物电子信息系统防雷技术规范》{ShellExecute(NULL,"open","LPstandard\\GB50343-2004.pdf",NULL,NULL,SW_SHOWNORMAL);}break;case ID_GB5794: //GB50057-94(2000) {ShellExecute(NULL,"open","LPstandard\\GB50057-94(2000).pdf",NULL,NULL,SW_SHOWNORMAL);}break;/************************ 主界面 ************************/ case IDC_RS: //重置按钮{if(IDYES==MessageBox(hwnd, TEXT("确定重置?"), TEXT("雷电风险评估"), MB_YESNO|MB_ICONQUESTION)){SetDlgItemText(hwnd, IDC_EDITFN, TEXT("\t欢迎您使用本程序."));SetZero(hwnd); }}break;case IDC_OKN1: //N1 运算按钮{ButtonN1(hwnd);}break;case IDC_OKN2: //N2 运算按钮{if(nOne.Ng){ButtonN2(hwnd);}else{SetDlgItemText(hwnd, IDC_EDITFN, TEXT("请您输入\r\n\t年平均雷暴日Td(d/a)\r\n(根据当地气象台、站资料确定)"));MessageBox(hwnd, TEXT("年平均雷暴日Td(d/a)\r\n并点击【运算(N1)】"), TEXT("请输入"), MB_OK|MB_ICONEXCLAMATION);} }break;case IDC_OKNc: //Nc 运算按钮{ButtonNc(hwnd);}break;case IDC_OKLP: //雷电防护等级按钮{if(nOne.N1 == 0 || nTwo.N2 == 0 || nCe.Nc == 0){MessageBox(hwnd, TEXT("参数不完整\r\n请继续输入\r\n谢谢合作"), TEXT("雷电风险评估"), MB_OK|MB_ICONQUESTION);}else{ButtonLP(hwnd);}}break;default:break; }}3. 程序功能演示和测试结果一、软件打开页面二、主界面要计算最终的雷电防护等级,主要分为三个部分的计算。

相关主题