当前位置:文档之家› 怎样使你的软件界面更漂亮(加代码)

怎样使你的软件界面更漂亮(加代码)

怎样使你的软件界面更漂亮(加代码)
怎样使你的软件界面更漂亮(加代码)

我们使用过很多的软件,给我们留下印象很深的是那些界面漂亮且迷人的软件,国外的软件象QuickTime,国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本人跟据自已的经验和大家探讨一下软件的漂亮界面实现的原理并提供DEMO程序。本人经验不多,经常从https://www.doczj.com/doc/f217335578.html,吸取知识,共同学习,如有不足之处,请指正!也欢迎和我联系。下面就开始吧!

一、漂亮界面实现的原理

用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解? ,呆会我会告诉你你如何去教美工画.请先仔细看下图。

明白了吧,被红线包括的部分都是要画的图象。画得好不好会直接影响你的软件界面。

二、原理说玩了,来说一下实现的基本知识

1、VC软件绘图技术:

双击代码全选

1 2 3 4 5 6 7 8 9 10 CBitmap* pBitmap = new CBitmap;

BITMAP BmpInfo;

CBitmap* pOldBitmap;

CDC* pDisplayMemDC=new CDC;

pDisplayMemDC->CreateCompatibleDC(pDC);

pBitmap->LoadBitmap(IDB_TITLE_LEFT);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);

pBitmap->GetBitmap(&BmpInfo);

// x,y为绘图位置,必要时此语句要有For(..;..;..)控制

pDC->BitBlt(x,y, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);

11

12

13

14

15

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

ReleaseDC(pDisplayMemDC);//记得执行以下的语句

delete pDisplayMemDC;

delete pBitmap;

2、坐标的概念:点、窗口坐标和屏幕坐标及转换,很重要!如不清楚请先复习相关知

识。

下图是我写在一个界面,就是基于上述原理实现的:

下面介绍软件如何实现的:

①、重载对话框的消息函数:

双击代码全选

1 void OnNcLButtonDown(UINT nHitTest, CPoint point);

//单击标题栏时是响应

双击代码全选

1 void OnNcMouseMove(UINT nHitTest, CPoint point);

//Mous 在标题移动时响应

双击代码全选

1 LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)

②、添加关键成员函数为:BOOL DrawTitleBar(CDC *pDC)

③、添加完消息涵数后,在.cpp中实现它们的代码:

双击代码全选

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43 void CTitleBarDlg::OnNcMouseMove(UINT nHitTest, CPoint point) {

CDC* pDC = GetWindowDC();

CDC* pDisplayMemDC=new CDC;

pDisplayMemDC->CreateCompatibleDC(pDC);

CBitmap* pBitmap = new CBitmap;

CBitmap* pOldBitmap;

CRect rtWnd, rtButton;

if (pDC)

{

CString StrTemp = "";

GetWindowRect(&rtWnd);

//mouse坐标转化为本窗口坐标重要

point.x = point.x - rtWnd.left;

point.y = point.y - rtWnd.top;

//判断mouse是否移到系统按钮上

if (m_rtButtExit.PtInRect(point))

{

pBitmap->LoadBitmap(IDB_EXIT_FOCUS);

StrTemp = _T("关闭");

}

else

{

if(m_rtButtMin.PtInRect(point))

{

pBitmap->LoadBitmap(IDB_MIN_FOCUS);

StrTemp = _T("最小化窗口");

}

else

{

if(m_rtButtMax.PtInRect(point))

{

pBitmap->LoadBitmap(IDB_MAX_FOCUS);

if(IsZoomed())

{

StrTemp = _T("还原窗口");

}

else

{

StrTemp = _T("最化大窗口");

}

}

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

else

{

pBitmap->LoadBitmap(IDB_NORMAL);

}

}

}

rtButton = m_rtButtMin;

BITMAP BmpInfo;

pBitmap->GetBitmap(&BmpInfo);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);

pDC->BitBlt(rtButton.left-6,

rtButton.top-2,

BmpInfo.bmWidth,

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

CRect ShowTipRec;

ShowTipRec = m_rtButtMin;

if(!StrTemp.IsEmpty())

{

//ScreenToClient(&ShowTipRec);

//m_ToolTip.AddToolTip(IDD_TITLEBAR_DIALOG,&ShowTipRec,StrTemp);

//m_ToolTip.SetDelayTime(200);

}

}

ReleaseDC(pDisplayMemDC);

ReleaseDC(pDC);

delete pDisplayMemDC;

delete pBitmap;

CDialog::OnNcMouseMove(nHitTest, point);

}

//此为关键函数

void CTitleBarDlg::DrawTitleBar(CDC *pDC)

{

if (m_hWnd)

{

CBrush Brush(RGB(0,100,255));

88

89

90

91

92

93

94

95

96

97

98

99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 CBrush* pOldBrush = pDC->SelectObject(&Brush);

CRect rtWnd, rtTitle, rtButtons;

GetWindowRect(&rtWnd);

//取得标题栏的位置

rtTitle.left = GetSystemMetrics(SM_CXFRAME);

rtTitle.top = GetSystemMetrics(SM_CYFRAME);

rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME); rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);

//计算最小化按钮的位置,位图大小为15X15

rtButtons.left = rtTitle.right-60;

rtButtons.top= rtTitle.top+2;

rtButtons.right = rtTitle.right-42;

rtButtons.bottom = rtTitle.top+20;

m_rtButtMin = rtButtons;

//计算最大化按钮的位置,位图大小为15X15

m_rtButtMax.left = m_rtButtMin.left + 18;

m_rtButtMax.top = m_rtButtMin.top;

m_rtButtMax.right = m_rtButtMin.right + 16;

m_rtButtMax.bottom = m_rtButtMin.bottom;

m_rtButtExit.left = m_rtButtMax.left + 18;

m_rtButtExit.top =m_rtButtMax.top;

m_rtButtExit.right = m_rtButtMax.right + 16;

m_rtButtExit.bottom = m_rtButtMax.bottom;

//准备

CBitmap* pBitmap = new CBitmap;

BITMAP BmpInfo;

CBitmap* pOldBitmap;

CDC* pDisplayMemDC=new CDC;

pDisplayMemDC->CreateCompatibleDC(pDC);

//重画Caption

POINT DrawPonit;

DrawPonit.x =rtTitle.left-4;

DrawPonit.y =rtTitle.top-4;

pBitmap->LoadBitmap(IDB_TITLE_LEFT);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap); pBitmap->GetBitmap(&BmpInfo);

pDC->BitBlt(rtTitle.left-4,

rtTitle.top-4,

BmpInfo.bmWidth,

132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

DrawPonit.x = DrawPonit.x + BmpInfo.bmWidth; pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

pBitmap->LoadBitmap(IDB_TOP);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap); pBitmap->GetBitmap(&BmpInfo);

while(DrawPonit.x<= m_rtButtMin.left-66)

{

pDC->BitBlt(DrawPonit.x,

DrawPonit.y,

BmpInfo.bmWidth,

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

DrawPonit.x = DrawPonit.x + BmpInfo.bmWidth;

}

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

pBitmap->LoadBitmap(IDB_TITLE_RIGHT);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap); pBitmap->GetBitmap(&BmpInfo);

pDC->BitBlt(DrawPonit.x,

DrawPonit.y,

BmpInfo.bmWidth,

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 //重画最小化button

rtButtons = m_rtButtMin;

pBitmap->LoadBitmap(IDB_NORMAL);

pBitmap->GetBitmap(&BmpInfo);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);

pDC->BitBlt(rtButtons.left-6,

rtButtons.top-2,

BmpInfo.bmWidth,

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

int nOldMode = pDC->SetBkMode(TRANSPARENT);

COLORREF clOldText=pDC->GetTextColor();

CFont titleFont;

titleFont.CreateFont( 12, // nHeight

8, // nWidth

0, // nEscapement文本行逆时针旋转角度

0, // nOrientation字体角度

FW_BOLD, // nWeight字体粗细程度

FALSE, // bItalic

FALSE, // bUnderline

0, // cStrikeOut 删除线

ANSI_CHARSET, // nCharSet

OUT_DEFAULT_PRECIS, // nOutPrecision

CLIP_DEFAULT_PRECIS, // nClipPrecision

DEFAULT_QUALITY, // nQuality

DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

_T("隶书"));// lpszFac pDC->SelectStockObject(SYSTEM_FIXED_FONT); CFont *OldFont;

OldFont = pDC->SelectObject(&titleFont);

CString m_StrTitle;

GetWindowText(m_StrTitle);

pDC->SetTextColor(RGB(80,255,25));

if(m_ShowTitle)

{

pDC->TextOut(65,10,m_StrTitle);

}

else

{

220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263

m_StrTitle = m_StrTitle.Left(6);

m_StrTitle += "...";

pDC->TextOut(30,10,m_StrTitle);

}

pDC->SetBkMode(nOldMode);

pDC->SetTextColor(clOldText);

pDC->SelectObject(OldFont);

//pDC->TextOut(60,60,m_StrTitle);

//重画左边框

pBitmap->LoadBitmap(IDB_LEFTDOWN);

pBitmap->GetBitmap(&BmpInfo);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap); int i ;

for (i= 20;i<=rtWnd.bottom;i=i+BmpInfo.bmHeight-3)

{

pDC->BitBlt(0, rtButtons.top+i,

BmpInfo.bmWidth,

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

}

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

//重画右边框

pBitmap->LoadBitmap(IDB_RIGHTDOWN);

pBitmap->GetBitmap(&BmpInfo);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap); GetClientRect(&rtWnd);

for (i= 25;i<=rtWnd.bottom+27;i=i+BmpInfo.bmHeight-3)

{

pDC->BitBlt(rtWnd.right, i,

BmpInfo.bmWidth,

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

}

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307

//重画底边框

pBitmap->LoadBitmap(IDB_DOWN);

pBitmap->GetBitmap(&BmpInfo);

pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);

GetClientRect(&rtWnd);

for (i= 9; i<=rtWnd.right; i=i+2)

{

GetClientRect(&rtWnd);

pDC->BitBlt(i,rtWnd.bottom+26,

BmpInfo.bmWidth,

BmpInfo.bmHeight,

pDisplayMemDC,

0,

0,

SRCCOPY);

}

pDisplayMemDC->SelectObject(pOldBitmap);

pBitmap->DeleteObject();

ReleaseDC(pDisplayMemDC);

delete pDisplayMemDC;

delete pBitmap;

}

}

void CTitleBarDlg::OnNcLButtonDown(UINT nHitTest, CPoint point)

{

CRect rtWnd;

GetWindowRect(&rtWnd);

//mouse坐标转化为本窗口坐标重要

point.x = point.x - rtWnd.left;

point.y = point.y - rtWnd.top;

//检测各按钮是否按到

if (m_rtIcon.PtInRect(point))

AfxMessageBox("界面软件设计者:朱一松EMail:Song_0962@https://www.doczj.com/doc/f217335578.html,");

else

{

if (m_rtButtHelp.PtInRect(point))

{

SendMessage(WM_HELP);

}

else

308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351

{

if (m_rtButtExit.PtInRect(point))

{

SendMessage(WM_CLOSE);

}

else

{

if (m_rtButtMin.PtInRect(point))

{

m_ShowTitle = FALSE;

SendMessage(WM_SYSCOMMAND,

SC_MINIMIZE,

MAKELPARAM(point.x, point.y));

}

else

{

if (m_rtButtMax.PtInRect(point))

{

m_ShowTitle = TRUE;

if (IsZoomed())

SendMessage(WM_SYSCOMMAND,

SC_RESTORE,

MAKELPARAM(point.x, point.y));

else

{

SendMessage(WM_SYSCOMMAND,

SC_MAXIMIZE,

MAKELPARAM(point.x, point.y));

Invalidate();

}

}

else

{

if (!IsZoomed())

{

Default();

}

}

}

}

}

}

}

//******************************************************

352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371

LRESULT CTitleBarDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) {

LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);

if (!::IsWindow(m_hWnd))

return lrst;

if (message==WM_MOVE||

message==WM_PAINT||

message==WM_NCPAINT||

message==WM_NCACTIVATE||

message == WM_NOTIFY)

{

CDC* pWinDC = GetWindowDC();

if (pWinDC)

DrawTitleBar(pWinDC);

ReleaseDC(pWinDC);

}

return lrst;

}

好了运行你的程序,即可出现漂亮的界面。说明在设计对话框时最好只选上Title Bars,

其它不要.消息函数要手动添加。只本程序是在VC++6.0 +WinXP环境下完成的。

经过实践证明,仅仅画一个窗口很容易,多窗口程序软件实现统一风格很难。如若有机会的话,我会和大家继续探讨如何将设计好的漂亮窗口子类化,让程序所有的窗口有统一风格,美化窗口的其它控件并可自动随窗口改变而调整大小。我想那才是我们大家关心的。对不?

本文示例代码或素材下载

一、统一风格漂亮界面设计的理论与实现

a.窗口和对话框

Windows操作系中窗口和对话框在我们看来是一样的,就是一个四边形,有标题栏、系统按钮,边框等,可移动和可变大小。实际上窗口和对话框是有的区别的。在创建对话框窗口时的工作中要发生两个主要过程:对话框的过程和其窗口过程。Win32 SDK对话框使用了系统提供的对话框窗口的窗口过程和对话框过程,对话框过程将被窗口过程调用。在MFC 下,所有的窗口类都使用了同一个窗口过程,对话框类也一样。MFC对话框过程只处理WM_INITDIALOG消息,其余都让窗口过程处理,我们只能在函数OnInitDialog()中有唯一机会处理我们的对话框的初始化工作。因而我们设计界面时要在窗口过程处理中相关消息实现我们的界面。

b. 几个有关对话框窗口消息的处理

1.WM_NCPAINT:重画非客户区消息

重载此消函数,可以标题栏上为所欲为。

2. WM_NCLBUTTONDOWN:在非客户区上按下鼠标左键消息

要想在标题栏相应鼠标左键,可重载此消函数

3.WM_NCMOUSEMOVE:在非客户区上移动鼠标会产生此消息

4.WM_SIZE:在窗口改变大小后产生此消息。

为了使软件更专业,调整对放框大小时,里面的各控件也应合理调整位置和大小,

重载此消函数可实现目的。还有很几个,其它的不介绍了。

c. 统一的界面风格实现

如何运用上述知识请参考我的前一文《让你的软件界面更漂亮(一)》中有介绍并有源程序。漂亮界面的统一风格是如何实现的将是本文要讨论主要内容。

我们知道Windows操作系统窗口风格基本上是一致的,微软的应用软件程序也和操作系统风格基本是统一的。所以使我们的CDialog 也跟其一样,要改变它的界面风格很困难。除非你对MFC了如指掌,甚至要了解操作系统内核。本人在摸索过程中经过无数次碰壁后,终于找到了希望。

请看下面两幅图:

图一

图二

看了上面两图你是不是对VC有信心了?Visual C++ 可实现你想要的统一风格界面。请看如何实现:

1.首先要建立漂亮界面主窗口。它也是一个对话框,方法前文有介绍。

2.处理漂亮界面主窗口的OnInitDialog()函数。很重要!!

双击代码全选

1 2 3 4 5 6 7 8 9

10

11

12

13

14 BOOL CTitleBarDlg::OnInitDialog()

{

//此处不能修改和添加代码!因为其它对话框的OnInitDialog()要用到m_ToolTip.Create(this,TTS_ALWAYSTIP);//Create提示

m_ReSizeFlag= TRUE;

CRect rtWnd;

GetClientRect(&rtWnd);

m_OldWidth = rtWnd.Width();

m_OldHeight = rtWnd.Height();

OldPoint.x = rtWnd.Width();

OldPoint.y = rtWnd.Height();

if(!m_BaseFlag)

{

m_BaseFlag = TRUE;

15

16

17

18

19

20

21

22

CDialog::OnInitDialog();

//************************************

你只能在处修改和添加你所需主窗口初始化的代码

……

//************************************

}

return TRUE;

}

3.建立你的对话框和对话框类。

用对话框资源编辑器完成对话框模板。用ClassWizard生成CyourDlg类此时基类只能为

CDialog。

4.修改基类CDialog为漂亮界面类(CtitleBarDlg)

yourDlg.h yourDlg.cpp 内的CDialog都要改,用Edit/Replace功能快些且安全。

在yourDlg.h还要包括TitleBarDlg.h

注意:对话框构造函数第一个参数CtitleBarDlg nID 要删除。否则通Build通不过。

5. 显示你的窗口

双击代码全选

1 2 3 4 5 //显示代码

CyouDlg *pMyDlg;

pMyDlg = new CyouDlg;

pMyDlg->Create(IDD_YOUR_DLG);

pMyDlg->ShowWindow(SW_SHOW);

这种代码要在适当的时候delete pMyDlg,防内存泄露。由于pMyDlg没有定义为全局,

处理它有一定难度。如果是用DoModal()显示就好了,大家可以去试一下。解决了告诉我!

6. 完成编译运行。你的对话框的风格是不是和主窗口一样,有没显示出来?

二.说明

统一风格的漂亮界面基本达到了目的。但同样也存在几个问题:

1.漂亮界面界必须是主窗口。我还没有想出方法能让它独立出来。

2.显示其它子窗口只能是非模式对话框窗口方式。我尝试DoModal显示但没有成功。但我分析MFC后找到了笨方法,MFC也是这么做。

3.基于述原因,我建立了统一的界面风格的开发模板,只有在此模板上开发就能实现软件漂亮统一的界面风格。需要可和我联系! 若有机会我会和大家继续探讨漂亮界面的实现的其它难点。

实现令人满意的风格统一的软件界面确实很难,象网友提到的MessageBox、FileDialog、FontDialog、目录选择对话框等MFC内部甚至系统DLL内的对话框,要想让它变脸可不容易。有人说HOOK技术可以,HOOK技术确实可以,HOOK可以说是无孔不入,但HOOK的使用效率却是令人难以满意的,从目前大多数采HOOK技术的换肤软件使用情况来看,完全可以证明这一点。今天我们将讨论另外一技术来实现FileDialog的变脸,这种技术叫替换窗口过程法(注:本人杜撰)。

窗口过程函数是大多窗口都有的,它处理窗口中(包括子窗口)的每一个事件,替换窗口过程法与HOOK技术比起来孰强誰弱是很显然的,因为同一个HOOK只能拦截一个事件,处

理起来相当费时,HOOK也有它的优势,但不是本文要讨论的。这里先让大家眼见为实,请看下图:

一、原理说明:

替换对话框的窗口过程要用到这个函数SetWindowLong()其原型如下:

双击代码全选

1 2 3 4 LONG SetWindowLong(HWND hWnd, int nIndex ,long dwLongNewProc)

hWnd为指定窗口的句柄,

nIndex为GWL_WNDPROC时才可设定新的窗口过程

dwLongNewProc为指定新的窗口过程函数地址

反回值为一个long的数值,此值为旧的窗口过程函数地址。

如果要替换某个窗口的窗口过程函数,首先要想法弄到它的窗口的句柄,当然还得有窗

口过程。

二、CFileDialog文件对话框界面设计

a. 从CFileDialog派生类CMyFileDialog;

b. 添加Protected 型虚成员函数:OnInitDone();

此函是实际上是CFileDialog一个虚函数,它在文件对话框创后建后被调用,它给我们留下了一个入口,因些重载现实替换其窗口过程函数;

c. 添加成员函数MyWindowProcNew()

双击代码全选

1 2 3 4 static LRESULT CALLBACK WindowProcNew(HWND hwnd,

UINT message,

WPARAM wParam,

LPARAM lParam);

在这函数实现的时候你可大显身手,处理得好不好决定你是否能变脸成功。d. 实现代

码及说明如下:双击代码全选

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18 WNDPROC m_MyWndProc; //定义全局变量保存旧的窗口过程函数地址

void CMyFileDialog::OnInitDone()

{

CWnd* pDialog = GetParent();

m_MyWndProc=(WNDPROC)SetWindowLong(pDialog->m_hWnd,GWL_WNDPROC,(long)MyWindowProcNe }

LRESULT CALLBACK CMyFileDialog::MyWindowProcNew(HWND hwnd,

UINT message,

WPARAM wParam,

LPARAM lParam)

{

switch (message)

{

case WM_NOTIFY:

case WM_MOUSEMOVE:

case WM_MOVE:

break;

case WM_NCACTIVATE:

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

break;

case WM_NCPAINT:

break;

case WM_NCMOUSEMOVE:

break;

case WM_PAINT:

break;

case WM_COMMAND:

break;

case WM_SIZE:

break;

case WM_XX:

default:

break;

}

//这时要恢复调用旧的窗口函数,当然必时可要忽略它

return CallWindowProc(m_MyWndProc, hwnd, message, wParam, lParam);

}

这个函数CallWindowProc()用来恢调用复旧窗口过程函数,当然这并不意味取消了新

的窗口过程。你也可跳过它不去执行,那为什要恢复旧的窗口过程函数?因为旧的窗口过程函数它处理了太多的事件,而新窗口过程函数只处理我们关心的事件,如果你乐意的话你完全可不要调用旧的窗口过程函数,那可是要付出大的代价的。具体细节请大家去实现,可参“让你的软件界面更漂亮(一)”。

三、CMyFileDialog的用法

我把CMyFileDialog写成一个DLL,有Debug和Release两个版,请用时分别选择a.先把.lib .dll .h 文件持拷到工程目录。在要使用处加如代码:

双击代码全选

1 2 #include "MyFileDialg.h"

#pragam comment(lib,"user.lib")

b.显示文件对话框:

双击代码全选

1 2 3 4 CMyFileDialog MyFileDlg(TRUE, 1, _T("对话框标题"));

MyFileDlg.DoModal();

CString FileName = MyFileDlg.GetPathName()

FileName是反回的结果

c. CMyFileDialog有一个超值的功能,不知有没有从上图看出来?它能够用来代替

SHBrowseForFoler 作为目录选择对话框。这也是我写CMyFileDialog的初终。构造函数第一个参数和CfileDialg 一样,第二个参数为TRUE时可作为目录选择对话框,此时第一个参数可BOOL的任意值建议设为TRUE,第三个参数为对话框标题,如为NULL则显示默认标题,其它参数和CFileDialog一样。

本文示例代码或素材下载

漂亮界面的软件应该有漂亮的菜单,大家对Windows XP 的开始菜单肯定不陌生吧,那

种菜单独具风格。于是去研究了一下,发现其实它并不是真CMenu也不是其派生类,分析其结构发现其主要是两个ListView、一个ToolBar、一个Button 组成的。于是也写了个菜单类,但我并没有用ListView 去实现,虽然不敢和Windows XP相比,但我认为其是一种有个性的菜单,拿出和大家分享! 希望大家能写出有创新和自主产权的菜单。哈哈……。当然要先眼见为实如下图。

一、实现原理

用CWnd 和CButton 来实现。主要的类文件为Cyisong Menu.cpp CyisongMenu.h。

二、菜单使用方法说明

类public 变量定义:

双击代码全选

1 2 CYisongMenu m_GroupMenu; CYisongMenu m_SubGroupMenu;//子菜单设置头像和添加菜单项:

双击代码全选

1 2 3 4 5 6 7 8 9

10

11

12

m_GroupMenu.SetMenuHeader("我的主菜单",IDI_QQ, TRUE );

m_GroupMenu.AppendMenuItem("退出系统",

IDC_SUBITEM, //菜单ID

IDI_ICON1, // 图标

NULL, //子菜单指针

MENU_NORMAL|MENU_FONTBOLD//风格参数

);

m_GroupMenu.AppendMenuItem("功能菜单2",

IDC_SUBITEM+1,

IDI_ICON2,

NULL,

MENU_NORMAL );

继续用AppendMenuItem 添加菜单项,

完成创建

双击代码全选

1 m_GroupMenu.CreateGroupMenu(this,CRect(0,0,150,300),IDC_MENU,1,1);

至此基本完成创建工作,如果还要创建创子菜单用,请回到a处。

显示菜单项

在点(x,y)处显示菜单

双击代码全选

1 m_GroupMenu. ShowMenuPos(x,y, LEFTBOTTOM);

第三个数指定(x,y)为菜单的四个角点中的一个。如LEFTBOTTOM即为菜单左下角处在(x,y)

的位置。

响映菜单项命令

在.cpp 中添加:

双击代码全选

1 ON_COMMAND_RANGE(IDC_SUBITEM,IDC_SUBITEMMAX,OnMenuCommand) //消息映射函数

并在.h 中声明为:

双击代码全选

1 void OnMenuCommand(UINT nID)

在cpp 中的函数实现代码为:

双击代码全选

1 2 3 CString StrSelect;

StrSelect.Format("你选择了第%I功能",nID-IDC_SUBITEM + 1);

MessageBox(StrSelect,"执行结果");

三、主要函数说明

原型:void SetMenuHeader(CString StrTitle ,UINT nID , BOOL bShowHead)

参数:StrTitle :头标题,nID :图标ID, bShowHead:如要显菜单头则为TRUE

原型:AppendMenuItem(CString StrTitle, int nID, int nIconID, CWnd* pSubMenu, DWORD dwStyles, CString strTip)

参数:

StrTitle:头标题,

nID:菜单项ID,

nIconID:图标ID,

pSubMenu:如有子菜单// pSubMenu为其指针,否则为NULL;

dwStyles:MENU_NORMAL // 一般菜单项;

MENU_FONTBOLD // 菜单项字体为粗体;

MENU_BORDLINE // 为分界线;

MENU_SUBITEM// 菜单项有子菜单;

MENU_CHECKBOX // 菜单有CHECK标志;

原型:CreateGroupMenu(CWnd *pParent, CRect rcClient, UINT nID, BOOL bShowHead,int

nModeIcon)

参数:

pParent:父窗口指针

rcClient:显示位置

nID:窗口ID

bShowHead:是否显示菜单头

nModeIcon:菜单项图标大小:1:16x16; 2:32x32; 3:48x48

此菜单类可应还可用于其它场合,如主菜单,托盘菜单,右鍵快捷菜单等!欢迎批评指

正并提出意见!

本文示例代码或素材下载

类WindowXp 开始菜单到现在基本上是完美实现,在功能上基本和WindowXp 与Vista 操作系统的开始菜单一样,界面当然漂亮,通过编程能实现风格多样,具有个性化的功能菜单。为了方便使用,本人对其进行了封装,库名曰:完美类WindowXp 开始菜单。

1、完美类WindowXp 开始菜单(CYisongStartMenu)有如下主要特点:

a. 在C++环境实现,界面风格可实现自定义;

b. 不仅适用Mouse 操作,还支持响应方向按键,快捷键功能;

c. 可增加和删除菜单中的子项;

d. 可显示Left Bar 并定义其风格;

e. 可自定义焦点亮条的风格;

f. 可设置菜单子项为Check Option 风格

2、完美类WindowXp 开始菜单的用途:

a. 可实现WindwXp 的两种菜单,经典菜单和分组菜单,非常适在大型应软件。象QQ 的主菜单就是其中之一的分组菜单

b. 托盘菜单、右键快捷菜单等应用。

一、编程指南

1.文件说明

类文件:YisongStartMenu.dll YisongStartMenu .lib (开始菜单库)

其它文件:MyStartMenuLib.h,MyStartMenu.h ,CmyToolTipCtrl.h

2.CYisongStartMenu 用法

a. 先把上述文件拷贝到工程目录下

b. #include MyStartMenuLib.h ,只要把MyStartMenuLib.h 文件包括到工程文件中就OK

c. 定义一变量:CYisongStartMenu m_StartMenu;

d. 在.cpp 文件中现实代码

双击代码全选

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35 //主菜单初始化过程

_TextInfo textInfo; //定义主菜顶部文本信息结构

m_StartMenu.GetUserPaneT extInfo(textInfo);//获取文本信息的初始属性

textInfo.clrShadow = GetSysColor(COLOR_BTNSHADOW);//设文本信息的主要属性

textInfo.nOffsetX = 1;

textInfo.nOffsetY = 1;

textInfo.logFontUserText.lfItalic = TRUE;

m_StartMenu.SetUserPaneTextInfo(textInfo); //使设置有效

m_StartMenu.SetUserPaneText(_T("WindowXp Menu")); //设置主菜顶部标题

m_StartMenu.SetUserPaneIcon(IDI_ICON_QQ,CSize(48,48)); //设置主菜顶部显示图标//设置主菜顶部显示图形

m_StartMenu.GetUserBitmap(0,".skin1.bmp");

m_StartMenu.GetUserBitmap(1,".skin2.bmp");

m_StartMenu.GetUserBitmap(2,".skin3.bmp");

//实现菜单菜项的添加(左边主程序项的添加)

m_StartMenu.AppendProgItem(_T("Internet/nInternet Explorer"), ID_PROGLIST_IE,0, MENU_DEFAULT,IDI_ICON_IE,NULL,_T("联接国际互际联网页"));

m_StartMenu.AppendProgItem(….)

….

m_StartMenu.AppendProgItem(_T("所有程序"),IDR_MENU_TEST,0,

MENU_BOTTOM|MENU_POPUP,0,NULL,NULL,&m_wndSubMenu);

// m_wndSubMenu 为“所有程序”菜单项的下拉子菜单

//实现菜单项的添加(分组菜单右边的菜单子项的添加)

//和上面方法一样,只不过是用函数AppendProgItem()

m_StartMenu. AppendPlaceItem(_T("My Documents"),

ID_PLACELIST_MYDOCUMENT,0,MENU_DEFAULT,

IDI_ICON_MYDOCUMENT);

…..

m_StartMenu. AppendPlaceItem(….);

//设置菜单子项文本颜色, PLACELIST_TYPE 指Place List 子项颜色//PROGLIST_TYPE指Prog List(左边列表)子项颜色

m_StartMenu.SetItemTextColor(PLACELIST_TYPE,RGB(0,255,0));

//设置子项有焦点时,其显示的亮条图形,不设置亮条为蓝色

m_StartMenu.SetItemFoucsBitmap(PLACELIST_TYPE,".skinOverFoucs.bmp")

//设置菜单底部属性

信息系统软件开发流程管理规范_初稿

软件开发流程管理规范

一、概述 随着公司规模的扩大、各部门对软件需求的激增、提高效率的工作要求,IT 部门承接的软件开发项目越来越多,而与之相对应的就是软件开发流程不明确,软件项目的随意性较大、可追溯性较差、可统计性模糊、可预测性不足是摆在我们面前最直接的问题。为了适应公司的发展,IT 部软件开发项目特制订本流程。 二、流程 由上图可以得出以下几个关键步骤: 一、需求部门: I、需求部门首先需要填写《软件需求申请表》,说明需要开发的软件具体用途径、目前工作模式、工作不方便之处、基本功能等信息; II、待 IT 部门评审通过后,通知需求部门,填写《软件开发申请表》,具体列明需要实现的功能、目前工作流程、使用系统后需

要达到的状态,可节省的人力、物力,调高的效率等信息; III、软件开发测试完成之后,接受 IT 部门的软件使用培训,并填写《参与培训确认单》; IV、软件试用结束后,填写《软件验收表》,完成软件项目的开发流程; V、在开发测试过程中,遇到开发风险增加、需求变更等,都需要配合 IT 软件开发人员 填写相关的《项目风险管理表》和《项目 变更管理表》。二、IT 部门: I、积极对需求部门提出的《软件需求申请表》进行评审、审批,限 3 个工作日完成, 及时反馈结果给需求部门;

II、指导需求部门填写各类表格; III、积极评审需求部门填写的表格、积极沟通,有效获得相对准确的需求,并填写完善, 让需求部门签字确认; IV、进入开发流程后,积极填写《项目成员组成表》、《项目策划任务书》、《WBS 表》、 《项目进度计划表》等(具体见附件); V、积极开展人员培训和软件试用工作,编写完善的《XXX 软件试用说明书》,并要求相关人员签字确认,并存档处理。 三、附件附件一、编码规范1、 命名空间 1. 公共类库(公司功能业务): (1)全局公共类库: 例:生成 dll 文件,添加至最小应用库可全程序引用 (2)局部公共类库(主要区分公司),命名方式为专有业务场景+专有业务名+具体类名:例:(总部)/In(国内市场)/Rb(生产)注:(公共类库)信息登记、评审、信息共享,命名空间最多三层2. 项目程序文件:项目文件名,以核心功能的英文名称为准,格式:ECO_英文名词首字母大写 2、命名规则 文件夹及相关文件命名规则 a) 文件夹:功能文件夹,采用驼峰形式,首字母大写全称 b) 窗体文件:采用驼峰形式,首字母大写全称

系统界面设计规范

B/S 系统界面设计规范 1.引言 界面美观、操作易用性、维护成本低是评价B/S系统的关键。本规范参考了一些成熟产品科学的开发方法,将开发过程中的方式、规则等强行的约束。希望藉此来提高用户操作感受,提升B/S产品的质量。 1.1. 编写目的 广义的界面概念包含了除页面布局设计之外,交互性的设计,及人体工程学方面的研究。本规范制订的依据从广义概念出发,总结以往项目的成败经验,目的是从整体上提升公司B/S类产品的质量、开发效率。从以技术为中心发展为以客户为中心,将类似项目成功的经验继承和积累下来,将B/S系统与C/S系统开发过程上的区别降低到仅显示控制的极小的层面。新的开发方式强调分层,规范出界面设计人员做什么,服务器编程人员做什么,这样就把页面和控制代码两个层面清晰的分开。 1.2. 背景 B/S模式系统以其易部署、易扩展、能够高度集成各种技术的特点,在公司产品线中占越来越大的比重,.Net、J2ee等技术的发展更是将B/S系统的开发和桌面应用程序开发的工程方法统一起来,突出服务器端技术,这些变革要求界面设计人员和服务器端编程人员可以应用更加科学的方法合作,团队的合作方式甚至决定了一个系统开发的成败。目前公司较多的服务器端编程人员仍然处于“后ASP 时代”的开发方式,表现为前台页面仍然与服务器代码高度的关联,带来的后果是重复建设、高昂的维护成本或失去控制的项目,没有充分的发挥出集成开发工具的优势。在以往的开发方式下界面设计侧重在静态页面的建设上,每个页面作为一个独立的模块来处理,在页面交互中则是程序员根据自己的习惯来控制,程序对个人的编程风格的依赖很强,这些在以往开发WEB站点的方式扩展到B/S系统有时是不正确的,甚至是背道而弛的,当然也不利于规模化的团队合作。 1.3. 定义 术语定义: 效果图:由界面设计人员设计的页面效果图,综合了概要设计的业务需要和整个站点的风格,它规定了页面布局上的每个细节。 容器:即HTML 标记的嵌套结构,如在表格->行->单元格内放置图片,那么可以认为单元格是放置图片的容器。 样式表:即级联式样式表CSS,它是W3C机构在HTML标记语言上扩展的格式语言。 非标准交互控件:是通过标准控件组合、扩展等方法以提高特定业务执行效率而进行封装的控件,或概括为用户根据以往的操作经验不能够直接领会出操作方式的交互控件。 2. 界面设计规范细则 总体目标 以规范作为基本原则,在此框架内进行合理的扩展和变化,将站点内的每个模块服从于整个站点,模块页面与“高内聚”的控制代码紧密的结合在一起,同时对应于应用程序基于系统的架构分析。 2.1. 通用原则 1 界面色彩要求:计算机屏幕的发光成像和普通视觉成像有很大的不同,应该注意这种

软件开发流程管理制度

软件开发流程管理制度 (讨论稿) 为加强对定制软件开发工作管理,缩短开发周期,提高软件开发质量,降低开发成本,提高定开发效率和效益,特制定软件开发流程管理制度。 第一章、总则 为保证日常工作正常有序的进行,让开发中各个环境更紧凑,更可控,需要尽可能实现项目管理的正规化,工作过程的流程化,以便提高软件质量,按期交付。 1、软件开发总体遵循项目管理和软件工程的基本原则。 2、项目管理涉及项目立项、项目计划和监控、配置管理。 3、软件工程涉及需求分析、系统设计、软件实现、系统测试、用户测试、试运行、系统验收、系统上线和数据迁移、产品维护。 第二章、阶段成果 根据软件工程的过程,制定以下工作流程,并规定了各个重要环节需要提交的交付物。各阶段需提交的文档: 1、立项:项目申请表,软件需求报告或设计方案。 2、需求分析:项目研发主计划、需求规格说明书 3、总体设计:概要设计说明书或功能模块描述 4、详细设计:详细设计说明书,包括软件接口说明、单元测试计

划。 5、软件实现:软件功能说明、源代码说明或者注释 6、产品测试:测试报告 7、产品发布:产品说明书、使用手册 8、产品维护:问题反馈记录 9、项目总结:提交客户方的项目总结和公司项目汇报的PPT。软件过程成果表:

第三章、岗位设置 根据公司目前的开发过程主要分为分析、开发、测试三个阶段。分析阶段完成用户需求文档的编写,系统总体设计的编写;开发阶段完成设计文档的编写,代码的编写、代码的维护。测试阶段完成系统的测试,测试文档及其他材料。通过逐渐的调整岗位,明确工作职责,逐步实现项目经理,软件设计师,程序员,测试工程师的岗位设置。

软件界面设计要求规范_v0-视觉部分

软件界面设计规范 1概要 界面设计中一定要保持界面的一致性。 一致性既包括使用标准的控件,也指使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面确保一致。 界面力求简洁明了,保证系统功能设计的合理与明确,布局明确、交互操作合理、协调统一。功能要表现清楚,分类清晰有条理,避免过多的控件嵌套导致的视觉混乱;单一功能的操作目的明确,符合易用性原则,避免不必要的信息显示而对用户造成视觉干扰;力求操作简单,简单的功能一步完成,比较复杂的功能三步之内,复杂的功能操作使用操作向导来辅助客户完成。 2色调风格 2.1色调: 软件界面设计中常用的主色调包括:蓝色、红色、绿色、黑色 蓝色:运用的行业较为广泛,如通讯、电子、房产、钢铁、生产管理等行业大部分以蓝色为主色调来设计软件。 红色:在政府单位运用比较多。 绿色:一般运用于教育、医疗、农林等行业。 黑色:能源、石油、房地产行业有时候会用中性的黑色作为主色调。

表现区:通常用浅色,如:白色、淡灰、或者淡蓝之类,因为大面积的文字信息在浅色上便于长时间阅读,不容易形成视觉疲劳。 2.2风格: 软件界面的风格通常比较简约。不同行业,使用的环境不同稍有差异。 3登录界面 基本元素:logo、系统名称、输入框、提交按钮。如下: 4页面逻辑结构 功能页面功能页面 弹出页面弹出页面弹出页面

软件界面通常是上面这样的逻辑结构 首页:宏观预览各项设备管理数据,快速访问期望的数据功能 功能页面:查看某一功能模块的全部数据,查看某一对象的各类相关数据 弹出页面:填写和提交表单,对功能中的某一单项数据进行增加/删除/查询/修改/审核/打印/导出等功能操作。 5页面的基本属性 页面宽度:属性值为auto,最小值1024像素。默认状况下无横向滚动条。 注意:宽度、位置、边距为不可变数据 背景:页面整体为白色背景#FFFFFF 或者浅灰、浅蓝等,总之是非常接近白色的颜色。 注:白色为常用色值,对于特殊个性化页面可根据特殊要求变更色彩;背景色彩尽量少用饱和度高的颜色, 页面位置:居中 页面边距:上 0px;下 0px;左 0 px;右 0 px; 注意:有时候会专门设置一定数值的边距,这时通常 与模块间的间距相同,如上下左右都是5px。

软件工程用户界面设计报告书

软件工程用户界面设计报告书

目录 0. 文档介绍3 0.1 文档目的3 0.2 文档范围3 0.3 读者对象3 0.4 参考文献3 0.5 术语与缩写解释4 1. 应当遵循的界面设计规范4 2. 界面的关系图和工作流程图9 3. 主界面 10 4. 子界面 A 12 5. 子界面 B 13 6. 美学设计13 7. 界面资源设计错误!未定义书签。 8. 其它错误!未定义书签。

文档介绍 0.1 文档目的 界面设计是为了满足软件专业化标准化的需求而产生的对软 件的使用界面进行美化优化规范化的设计分支。界面设计文档能 够让用户对软件产品有了更直观的了解,而且了解各个模块的设计及用意。 0.2 文档范围 文档包括公用界面设计,学生用户界面设计,教师用户界面设计,其中各个界面包括框架设计,编程设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计。 0.3 读者对象 登陆网站的游客、注册成会员的学生、教师以及管理员。 0.4 参考文献 提示:列出本文档的所有参考文献(能够是非正式出版物),格式如下: [1] 张海藩,<软件工程导论(第5版)>,清华大学出版社,19 01月 [2] 杨培添,<软件界面设计>,电子工业出版社, 02月 [3] 林锐,,电子工业出版社, 5月 [4] 吴士力,汪孝宜,胡俦,<网络系统开发实例精粹(JSP版)>,电 子工业出版社, 8月 [5] 黄艳群,黎旭,李荣丽,<设计·人机界面>,北京理工大学出版社, 5月

0.5 术语与缩写解释 缩写、术语解释 SPP 精简并行过程,Simplified Parallel Process SD 系统设计,System Design 1. 应当遵循的界面设计规范 软件界面的设计,既要从外观上进行创意以到达吸引眼球的目的,还要结合图形和版面设计的相关原理,从而使得软件设计变成了一门独特的艺术。软件用户界面的设计应遵循以下几个基本原 则: 用户导向原则: 明确到底谁是使用者,要站在用户的观点和立场上来考虑设计软件。要作到这一点,必须要和用户来沟通,了解她们的需求、目标、期望和偏好等。网页的设计者要清楚,用户之间差别很大,她们的能力各有不同。比如有的用户可能会在视觉方 面有欠缺(如色盲),对很多的颜色分辨不清;有的用户的听觉也会有障碍,对于软件的语音提示反映迟钝;而且相当一部分用户

软件用户界面设计规范

软件用户界面设计规范 1.导言 1.1 目的 为开发人员提供界面设计和开发的指南,引导开发人员设计简洁美观的用户界面; 1.2 适用范围 适用于xxxxxx。 2.软件界面设计的重要性 2.1 发展趋势 软件用户界面的发展经历了从简单到复杂、从低级到高级的过程,用户界面在软件系统中的价值比重越来越高。 2.2 开发竞争 得益于互联网的发展和普及,软件开发的技术门槛在不断下降,大部分软件企业的技术手段也趋向于雷同,“软件设计”变得越来越重要。当大家都掌握了相似的技术和需求信息后,企业之间的开发竞争“比的就是设计”。 –软件用户界面设计要综合考虑“易用性设计”、“艺术设计”和“技术实现”,很有挑战性。 2.3 用户挑剔 用户界面在很大程度上影响着软件的命运,因为广大用户对软件的评价主要来源于他们操作用户界面的感受。同类软件越多,选择余地越大,购买者对软件

用户界面就越挑剔。 3.软件界面设计的现状、问题及原因 3.1 不容乐观的现状 尽管国内有很多技术出色、聪明过人的软件工程师,但是不少人开发出来的软件产品却既难用又难看,客户很不满意。导致经常要修改软件的用户界面,造成极大的生产力浪费。 到处是用户界面设计缺陷: –界面措辞含糊,甚至有错别字。连简单的消息框都设计不好,可能存在文不对题的语病。 –界面布局混乱,缺乏逻辑,凡是能放的东西都堆集上去,让用户不知从何下手。–没有防错处理,不对用户输入的数据进行检验,不根据用户的权限自动隐藏或者禁用某些功能。执行破坏性的操作之前,不提醒用户确认。 –不提供进度条、动画来反映正在进行的比较耗时间的过程,对于重要的操作也不返回结果,让用户干着急。 3.2 问题和原因之一 由于国内没有开设软件界面设计的课程,大家对这部分知识没有深刻的意识,只是在工作中凭着个人的经验与感觉设计软件的用户界面,这样产生的界面往往得不到大众用户的认可。 3.3 问题及原因之二 开发人员在设计用户界面方面不仅存在先天的教育缺陷,更加糟糕的是还常常“错位”的毛病。他以为只要自己感觉用户界面漂亮、使用起来方便,那么用户也一定会满意。 3.4 问题及原因之三

软件开发流程规范-详细流程

软件开发流程规范 目录 目录 0 一、概述 (2) 二、开发流程规范 (3) 2.1系统软硬件开发环境 (3) 2.2系统架构(系统组成) (5) 2.3系统功能模块设计 (6) 2.4系统功能开发流程图 (7) 2.5开发修改记录 (8) 三、开发代码规范 (9) 3.1文件结构 (9) 3.1.1 文件信息声明 (10) 3.1.2头文件的结构 (12) 3.1.3定义文件的结构 (15) 3.1.4 头文件的作用 (17) 3.1.5 目录结构 (18) 3.2命名规则 (18) 3.2.1 共性原则 (19) 3.2.2 Windows变量命名规则 (21) 3.3程序风格 (24) 3.3.1 空行 (25) 3.3.2代码行 (26) 3.3.3代码行内的空格 (29) 3.3.4 对齐 (31) 3.3.5 长行拆分 (33) 3.3.6修饰符的位置 (35) 3.3.7 注释 (35) 3.4函数设计 (40) 3.4.1 参数的规则 (40) 3.4.2返回值的规则 (42) 3.4.3函数内部实现的规则 (47) 3.4.4其它建议 (50) 3.4.5使用断言 (50) 3.4.6 引用与指针的比较 (52) 3.5变量类型定义 (56)

四、软件测试规范 (56) 4.1单元测试 (57) 4.2 系统测试 (57) 4.6 业务测试 (59) 4.7 验收测试 (59) 4.8 用户现场测试 (59) 五、软件版本管理 (60) 4.1 版本管理的必要性 (60)

、概述 本文制定烟台开发区德联软件有限责任公司计算机软件开发规范文档。本规范的目的是使公司软件开发项目阶段清晰、要求明确、任务具体、编写的代码规范,使之规范化、系统化和工程化,向公司内从事软件开发的工程师和管理人员提出一系列规范和要求,从而有利于开发过程的控制和管理,提高所开发软件系统的质量,缩短开发时间,减少开发和维护费用,以保证项目高质量、顺利进行。 本规范包含:开发流程规范和开发代码规范等,开发流程规范需要技术开发人员编写相关内容,希望每个技术人员形成习惯,如有新的内容更新会及时通知大家,如有好的规范要求也可通知编制人员及时更新。 本规范为烟台开发区德联软件有限责任公司内部材料,严禁其他商业应用。

软件界面设计规范_V1.0 - 视觉部分

软件界面设计规范_V1.0 1概要 界面设计中一定要保持界面的一致性。 一致性既包括使用标准的控件,也指使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面确保一致。 界面力求简洁明了,保证系统功能设计的合理与明确,布局明确、交互操作合理、协调统一。功能要表现清楚,分类清晰有条理,避免过多的控件嵌套导致的视觉混乱;单一功能的操作目的明确,符合易用性原则,避免不必要的信息显示而对用户造成视觉干扰;力求操作简单,简单的功能一步完成,比较复杂的功能三步之内,复杂的功能操作使用操作向导来辅助客户完成。 2色调风格 2.1色调: 软件界面设计中常用的主色调包括:蓝色、红色、绿色、黑色 蓝色:运用的行业较为广泛,如通讯、电子、房产、钢铁、生产管理等行业大部分以蓝色为主色调来设计软件。 红色:在政府单位运用比较多。 绿色:一般运用于教育、医疗、农林等行业。 黑色:能源、石油、房地产行业有时候会用中性的黑色作为主色调。 表现区:通常用浅色,如:白色、淡灰、或者淡蓝之类,因为大面积的文字信息在浅色上便于长时间阅读,不容易形成视觉疲劳。

2.2风格: 软件界面的风格通常比较简约。不同行业,使用的环境不同稍有差异。 3登录界面 基本元素:logo、系统名称、输入框、提交按钮。如下: 4页面逻辑结构 软件界面通常是上面这样的逻辑结构 首页:宏观预览各项设备管理数据,快速访问期望的数据功能 功能页面:查看某一功能模块的全部数据,查看某一对象的各类相关数据 弹出页面:填写和提交表单,对功能中的某一单项数据进行增加/删除/查询/修改/审核/打印/导出等功能操作。

微软软件界面设计规范

假如你在Windows环境下开发,微软定义了一套称为“用户体验”的参考规范(当然,“用户体验”的内容已经超出了狭义的“用户界面”)。这个规范对菜单、按钮、图标、窗体、快捷键、消息框和文本等界面元素的设计,给出了一整套建议。倘若不是编写游戏之类的东西,就没有理由不参照这个规范。 以下是我见过的一些糟糕的用户界面风格: 过份使用各种奇形怪状、五颜六色的控件。这些界面往往出自充满激情和想法的新手。它很容易使人想起过去农村穿着红褂子、绿裤子的小 媳妇,或者今天城市街头画着大花脸的扭秧歌的大妈。 界面元素比例失调。我见过按钮巨大无比,其尺寸甚至超过显示重要内容的文本框的界面。 界面元素凌乱。比如说,按钮和文本框摆放地点随意,相当于客厅当卧室,卫生间当厨房。 违背使用习惯。你按下F1,它没有弹出帮助,却执行了一件绝对出乎你意料的动作。 消息框信息含糊、混乱。下面是某软件弹出的消息框。把“确定”和“取消”改为“是”和“否”会不会更清晰一些?就事论事,假如干脆自己做个form,改成“想”和“不想”,那更好。 还有一种糟糕的用户界面,乍一看很厉害,实际上完全是缺乏规划的结果。 这种软件本身的确提供了比较复杂的功能,但对于哪些是常用功能,哪些是很少用到的高级功能,缺乏评估。什么功能都往界面上挤,占地方不说,用户会厌烦,弄不好还会被吓跑。 对于这种软件来说,默认界面只应该显示目标用户最常使用的功能,至于不常用到的高级功能,可以“隐藏”起来,比如说,放到菜单里,不要都做成按钮摆到界面上。果真需要需要这些高级功能的话,用户自然会到菜单里去找的。 在这方面,微软Office软件堪称楷模。比如Word,从编写“代办文凭”这样的电线杆上的“狗皮膏”,到排版严肃的长篇巨著,都游刃有余。对于低级用户来说,它简单易用,对于高级用户来说,要的功能都有。这个软件界面做得就非常有水平。就象那些高级数码相机一样,操作之简单可以和“傻瓜”相机媲美。按一个按钮就可以使你心想事成,恰恰说明它聪明得可以。 一句话,你愿意使用界面上摆满了各种让人眼花缭乱的玩意儿,左看右看也不知道从哪儿下手的软件吗? 软件界面设计相关的各项介绍

软件工程用户界面设计报告.doc

目录0. 文档介绍 4 文档目的4 文档范围4 读者对象4 参考文献4 术语与缩写解释4 1. 应当遵循的界面设计规范 5 ; 2. 界面的关系图和工作流程图5 3. 主界面5 4. 子界面A 5 5. 子界面B 5 6. 美学设计 6 7. 界面资源设计6 8. 其他6

文档介绍 , 文档目的 界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。界面设计文档可以让用户对软件产品有了更直观的了解,并且了解各个模块的设计及用意。 文档范围 文档包括公用界面设计,学生用户界面设计,教师用户界面设计,其中各个界面包括框架设计,编程设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计。 读者对象 登陆网站的游客、注册成会员的学生、教师以及管理员。 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下: ¥ [1] 张海藩,《软件工程导论(第5版)》,清华大学出版社,1900年01月 [2] 杨培添,《软件界面设计》,电子工业出版社,2007年02月 [3] 林锐,《Web软件用户界面设计指南》,电子工业出版社,2005年5月 [4]吴士力,汪孝宜,胡俦,《网络系统开发实例精粹(JSP版)》,电子工业出版社, 2006年8月 [5] 黄艳群,黎旭,李荣丽,《设计·人机界面》,北京理工大学出版社,2007年5月 术语与缩写解释 %

1. 应当遵循的界面设计规范 软件界面的设计,既要从外观上进行创意以到达吸引眼球的目的,还要结合图形和版面设计的相关原理,从而使得软件设计变成了一门独特的艺术。软件用户界面的设计应遵循以下几个基本原则: 用户导向原则: 明确到底谁是使用者,要站在用户的观点和立场上来考虑设计软件。要作到这一点,必须要和用户来沟通,了解他们的需求、目标、期望和偏好等。网页的设计者要清楚,用户之间差别很大,他们的能力各有不同。比如有的用户可能会在视觉方面有欠缺(如色盲),对很多的颜色分辨不清;有的用户的听觉也会有障碍,对于软件的语音提示反映迟钝;而且相当一部分用户的计算机使用经验很初级,对于复杂一点的操作会感觉到很费力。另外,用户使用的计算机机器配置也是千差万别,包括显卡、声卡、内存、网速、操作系统以及浏览器等都会有不同。设计者如果忽视了这些差别,设计出的网页在不同的机器上显示就会造成混乱。 … KISS原则: KISS原则就是"Keep It Simple And Stupid"的缩写,简洁和易于操作是网页设计的最重要的原则。毕竟,软件建设出来是用于普通网民来查阅信息和使用网络服务。没有必要在网页上设置过多的操作,堆集上很多复杂和花哨的图片。该原则一般的要求,网页的下载不要超过10秒钟(普通的拨号用户56 Kbps网速);尽量使用文本链接,而减少大幅图片和动画的使用;操作设计尽量简单,并且有明确的操作提示;软件所有的内容和服务都在显眼处向用户予以说明等。 布局控制: 关于网页排版布局方面,很多网页设计者重视不够,网页排版设计的过于死板,甚至照抄他人。如果网页的布局凌乱,仅仅把大量的信息堆集在页面上,会干扰浏览者的阅读。一般在网页设计上所要遵循的原理有: Miller公式。根据心理学家George 的研究表明,人一次性接受的信息量在7个比 特左右为宜。总结一个公式为:一个人一次所接受的信息量为7±2 比特。这一原 理被广泛应用于软件建设中,一般网页上面的栏目选择最佳在5~9个之间,如果 软件所提供给浏览者选择的内容链接超过这个区间,人在心理上就会烦躁,压抑, 会让人感觉到信息太密集,看不过来,很累。例如的栏目设置:Main、MyAol、 Mail、People、Search、Shop、Channels和Devices共八个分类。的栏目设置:MSN Home、My MSN、Hotmail、Search、Shopping、Money和People & Chat共七项。 然而很多国内的软件在栏目的设置远远超出这个区间。 (2)分组处理。上面提到,对于信息的分类,不能超过9个栏目。但如果你的内容实在是多,超出了9个,需要进行分组处理。如果,你的网页上提供几十篇文章的链接,需要每隔7篇加一个空行或平行线做以分组。如果你的软件内容栏目超出9个,如微软公司的软件,共有11个栏目,超过了9个。为了不破坏Miller公式,在设计时使用蓝黑两种颜色分开,具体可以访问视觉平衡: 网页设计时,也要各种元素(如图形、文字、空白)都会有视觉作用。根据视觉原理,图形与一块文字相比较,图形的视觉作用要大一些。所以,为了达到

软件界面设计规范

软件界面设计规范 1.界面规范 .总体原则以用户为中心。 设计由用户控制的界面,而不是界面控制用户。清楚一致的设计。所有界面的风格保持一致,所有具有相同含义的术语保持一致,且易于理解拥有良好的直觉特征。以用户所熟悉的现实世界事务的抽象来给用户暗示和隐喻,来帮助用户能迅速学会软件的使用。较快的响应速度。简单且美观。 .原则详述 1.2.1.用户控制用户界面设计的一个重要原则是用户应该总是感觉在控制软件而不是感觉被软件所控制。操作上假设是用户--而不是计算机或软件--开始动作。用户扮演主动角色,而不是扮演被动角色。在需要自动执行任务时,要以允许用户进行选择或控制它的方式来实现该自动任务。提供用户自定义设置。因为用户的技能和喜好各不相同,因此他们必须能够个性化界面的某些方面。Windows为用户提供了对许多这方面的访问。您的软件应该反应不同的系统属性--例如颜色、字体或其他选项的用户设置。采取交互式和易于感应的窗口,尽量避免使用模态对话框,而使用"非模式"辅助窗口。"模式"是一种状态,它排除一般的交互,或者限制用户只能进行特定的交互。当最好使用一个模式或该模式只是可替换的设计时--例如,用于在一个绘图程序中选定一个特定感觉--请确保该模式是显然的、可见的,是一个明确的用户选定的结果,并且容易取消。在后台运行长进程时,保持前台式交互。例如,当正在打印一个文档,即使该文档不能被改变,用户也应该可以最小化该窗口。谅解。用户喜欢探索一个界面,并经常从尝试和错误中学习。一个有效的界面允许交互式的发现,它只提供一组合适的选择,并在用户可能破坏系统或数据的情况时发出警告。如果可行,还应提供可逆转或可还原的操作。即使在设计得很好得界面中,用户也可能犯错误。这些错误既可以是物理上得(偶然地指向了错误的命令或数据),也可以是逻辑上的(对选定哪一个命令或哪些数据做出了错误的决定)。有效的设计避免很可能导致错误的情况。它还包容潜在的用户错误,并且使用户易于还原。 1.2.2.清楚一致的设计一致允许用户将已有的知识传递到新的任务中,更快地学习新事物,并将更多的注意力集中在任务上。这是因为他们不必花时间来尝

软件开发管理办法

软件开发管理办法 第一章总则 第一条为规范公司的开发管理流程,使各开发项目的管理进行标准化管理,特制定本管理办法。 第二条本管理办法详细规定软件开发程的各个阶段及每一阶段的任务、要求、交付文件,使整个软件开发过程阶段清晰、要求明确、任务具体,实现软件开发过程的标准化。 第三条本管理办法适用于计算机的自主软件开发项目。适用对象:软件开发管理人员,软件开发人员,软件维护人员,系统管理人员。 第二章组织机构与职责 第四条软件开发管理人员职责: 第五条软件开发人员职责: 第六条软件维护人员职责: 第七条系统管理人员职责: 第三章软件开发环境管理 第八条软件建设环境根据项目不同的时期,需要搭建生产运行环境、系统测试环境、系统开发环境三种不同的软硬件网络环境,便于生产、开发、测试等工作的安全、顺畅的进行。 第九条生产环境为系统维护管理人间管理的范畴,是系统正式运行,提交给各业务科室的正式环境,包括系统运行的硬件、网络等设备和进行集群处理的软件系统。 第十条测试环境为测试人员提供功能测试、性能测试的运行环境,包括运行环境模拟、测试工具服务器、测试工具客户端。 第十一条开发环境为系统开发人员提供系统开发需要的软件硬件环境,包括数据库服务器、应用服务器、开发工具客户端。 第十二条生产环境、测试环境、开发环境都存在自己独立的数据库服务器、应用服务器、客户端。在开发环境完成内部测试后,提交发布版本到测试环境中,由专门的测试人

员进行集成测试和功能测试。并进行一定的压力性能测试。在测试环境通过的版本在发布到生产环境。 第十三条生产环境与测试环境、开发环境需要物理隔离,保障生产环境的安全。 第四章开发过程管理 第十四条项目开发流程根据软件工程的流程,分为可行性研究与计划、需求分析、总计设计、详细设计、代码开发、系统测试五个阶段。 第十五条可行性研究与计划 1实施要求 1.软件开发部分析人员进行市场调查与分析,确认软件的市场需求 2.在调查研究的基础上进行可行性研究,写出可行性报告 3.评审和审批,决定项目取消或继续 4.若项目可行,制订初步的软件开发计划,建立项目日志 5.根据市场环境、公司软硬件情况预测十大风险因素 2交付文档 1.可行性研究报告* 2.初步的软件开发计划 3.十大风险列表* 4.软件项目日志* 第十六条需求分析 1实施要求 1.调查被开发软件的环境 2.软件开发提出的需求进行分析并给出详细的功能定义 3.做出简单的用户原型,与用户共同研究,直到用户满意 4.对可利用的资源(计算机硬件、软件、人力等)进行估计,制定项目进度计划(可 有相应的缓冲时间) 5.制定详细的软件开发计划 6.测试人员制订质量控制计划和测试计划 7.编写初步的用户手册 8.进行需求方案评审 2交付文档 1.软件需求说明书 2.更新后的软件开发计划 3.项目进度计划 4.计划

软件开发过程规范

软件开发过程规范 版本 <1.0> 修订历史纪录

目录 1.前言 (3) 1.1 目的 (3) 1.2 对象 (3) 1.3 要求 (3) 1.4 适用范围 (3) 1.5 软件开发过程模型 (3) 1.6 开发过程划分 (3) 2.技术过程规范部分 (3) 2.1 概述 (3) 2.2 业务建模阶段 (4) 2.3 需求阶段 (5) 2.4 分析设计阶段 (6) 2.5 实现阶段 (7) 3.管理过程规范部分 (7) 3.1 概述 (7) 3.2 接受项目 (8) 3.3 重新评估项目范围和风险(对于较大项目) (8) 3.4 制定开发计划 (8) 3.5 迭代开发管理 (9) 3.6 监控项目的实施 (9) 3.7 结束项目 (10)

软件开发过程规范 1. 前言 1.1 目的 本规范的目的是使整个软件产品开发及项目工程阶段清晰,要求明确,任务具体,便于规范化、系统化及工程化。有利于提高软件生命周期的控制及管理,提高所开发软件的质量,缩短开发时间,减少开发和维护费用,使软件开发活动更科学、更有成效。 1.2 对象 本规范面向产品生命周期的所有相关人员,包括管理人员、开发人员、质管人员。 1.3 要求 具有软件开发管理职能的人员要求熟知项目开发的各阶段过程和各阶段过程相应的规范。 1.4 适用范围 适用于产品开发生命周期中的除产品提交外的其他全部过程;规范分为两部分:技术过程规范和管理过程规范,分别适用于软件开发过程中的技术性活动和管理性活动。 1.5 软件开发过程模型 本规范所采用的软件开发过程模型为简化的RUP开发过程模型;软件开发过程是体系结构为中心,用例驱动和风险驱动相结合的过程迭代。 1.6 开发过程划分 开发过程包括多次迭代,每次迭代的目标和侧重点不同;较早的迭代侧重于业务建模和需求建模;而后的迭代则侧重于分析设计和编码。 2. 技术过程规范部分 2.1 概述 本规范中将软件开发的整个技术过程分为四个顺序实施的阶段,分别为业务建模阶段、需求阶段、分析设计阶段和实现阶段。在对技术过程规范的描述,按阶段内部的活动和产物对四个阶段分别说明。 在本规范中对阶段内活动的说明,是按顺序性活动和持续性活动两类分别进行说明。对于顺序性活动是按该阶段中活动的总体顺序进行的描述,而在实际工作中,从各活动的具体实施的细节来看,各活动之间的顺序是不断交叉变化的。对于持续性活动主要是对贯穿该阶段过程始终的技术活动进行说明。

软件开发标准化工作流程V10

目录 软件开发标准化工作流程 1引言 1.1编写目的 说明编写这份软件开发标准化工作流程的目的,指出预期的读者。 1.2适用范围 互联网开发中心所有项目。 1.3定义 列出本文件中用到的专门术语的定义、外文首字母组词的原词组。

1.4流程图 2需求调研 2.1概述 需求调研对于一个应用软件开发来说,是一个系统开发的开始阶段,需求调研的质量对于一个应用软件来说,是一个极其重要的阶段,它的质量在一定程度上来说决定了一个软件的交付结果。怎样从客户中听取用户需求、分析用户需求就成为调研人员最重要的任务。

2.2需求调研 总体而言,需求调研可按照业务流程、业务规则、表单数据、贯穿系统的关系四个方向来进行调研。 ●业务规则 各个流程、功能点等事项的办理,都会有相关约束或条件,那么需要对其前置条件、后置条件、数据验证、条件判断等进行分析调研。调研对象一般为操作员。 ●表单数据 对各个功能点的业务数据、数据项、表单格式、查询条件以及其它相关数据进行明确的分析调研。调研对象一般为操作员。 ●贯穿系统的关系 各个模块或科室之间的数据交换、传递以及数据共享等,需要我们调研人员与各个模块或科室的相关负责人进行多方沟通,确定一个多方满意的需求调研结果。 2.3注意事项 ●调研过程中,用户说的很快,不可能等我们全部记录之后, 再讲下一个问题。因此,只能在笔记本上速记,有时只能记录1、2个关键字。因此,每天调研结束之后,当天晚上必须整理当天的调研情况,写成一份调研日记。整理当天的调研记录时,还要整理出待明确的问题,下一次再找机会与用户再沟通、确认。

●调研的各个阶段,必须出具相关文档或文件,比如调研计划、 流程图、表单样式、报表格式、背景图片、数据项列表、讨论记录、问题列表等。 ●所有疑问必须等到明确的答复,不能出现相互矛盾、似是而 非的需求。需准确理解客户的讲解,如果有问题的先做记录,之后将整理的问题向客户询问,得到明确的结果。需求必须是客户接受和确认的,不能有臆测的需求。 ●要合理安排好时间和进度。有时候客户还有自己要做的事情, 不一定能及时相应。所以必须提前预约好时间,保证整个需求调研的进度。 ●能积极引导客户。当客户出现疑虑,而调研人员能明白且能 做好客户想要的东西的时候,调研人员能及时积极引导客户,详细讲解我们所知道的东西,并能让客户接受与确认。 ●如遇公司有相关原型或产品,调研人员需先详细了解公司的 相关原型和产品,根据成品,找出本地化的差异化需求。 3可行性分析 这个阶段要回答的关键问题:“对于上一个阶段所确定的问题有行得通的解决办法吗?”为了回答这个问题,系统分析员需要进行一次大大压缩和简化了的系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。 可行性研究应该比较简短,这个阶段的任务不是具体解决

软件工程之软件设计方法

软件工程之软件设计方法 简介 您是如何开始一个新工程的?是不是跳到计算机前,打开您喜爱的RAD工具开始输入代码?有没有想过程序会执行些什么或者系统是如何操纵数据的?有没有想过要记下些东西来帮助提醒您或阐明您已经开发的代码的逻辑实现?如果您对第一个问题答"不",而其他问题答"是"的话,您可以跳过这篇文档。否则的话,请好好读读这篇文章。您应该有个计划、蓝图,并且在手边有个对您的问题解决方案的简明安排。"您必须知道您要去哪儿得到一切!"让我们来看看开发一个能实现您所设计的功能的程序时,什么最棘手。 (软件)设计是什么? E.S. Taylor给设计下的定义是: "…the process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization. " "…应用各种各样的技术和原理,并用它们足够详细的定义一个设备、一个程序或系统的物理实现的过程。" 对任意的工程产品或系统,开发阶段绝对的第一步是确定将来所要构建的制造原型或实体表现的目标构思。这个步骤是由多方面的直觉与判断力来共同决定的。这些方面包括构建类似模型的经验、一组引领模型发展的原则、一套启动质量评价的标准、以及重复修改直至设计最后定型的过程本身。计算机软件设计与其他工程学科相比还处在幼年时期,仍在不断变化中,例如更新的方法、更好的算法分析、以及理解力的显著进化。软件设计的方法论的出现也只有三十年多一点,仍然缺乏深度、适应性和定量性质,通常更多的与经典工程设计学科相联系。尽管如此,现今的软件技术已经存在、设计质量的标准也可使用、设计符号亦可以应用。带着这些意见,我们一起来看看什么有助于程序员们找到他们的软件涅盘(天堂的意思)。 (软件)设计过程 软件的设计是一个将需求转变为软件陈述(表达)的过程。这种陈述给我们一个对软件的全局观点。系统通过逐步求精使得设计陈述逐渐接近源代码。这里有两个基本步骤;第一步是初步设计Preliminary design ,关注于如何将需求转换成数据和软件框架。第二步是详细设计Detail design ,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计这一清晰的行为来结合起来。界面设计Interface design 建立程序布局和人机交互机制。贯穿设计过程的质量由一系列的正式技术评定formal technical reviews 或设计排演design walkthroughs 来评价。良好的设计规范必须建立在对设计陈述(表达)的评估之上,以下是一些指导方针: 1. 设计应该展现层次结构使得软件各部分之间的控制更明智。 2. 设计应当模块化;这就是说,软件应在逻辑上分割为实现特定的功能和子功能的部分。 3. 设计应当由清晰且可分离的数据和过程表达来构成。 4. 设计应使得模块展现独立的功能特性。 5. 设计应使得界面能降低模块之间及其与外部环境的连接复杂性。 6. 设计应源自于软件需求分析期间获得的信息所定之可重复方法的使用。 要拥有良好的设计特征不是靠碰运气,而在设计过程中通过综合运用基础设计原理、系统方法论、彻底的评定回顾可以有助于良好的设计。软件设计方法每天都在进化,作为已经经过

软件开发流程规范方案

软 件 开 发 流 程 规 范 V1.0 德联软件有限责任公司

编制人:侯秀美审核人:2015 年8 月19 日

目录 目录 0 一、概述 (2) 二、开发流程规范 (3) 2.1 系统软硬件开发环境 (3) 2.2 系统架构(系统组成) (5) 2.3 系统功能模块设计 (6) 2.4 系统功能开发流程图 (6) 2.5 开发修改记录 (7) 三、开发代码规范 (8) 3.1 文件结构 (8) 3.1.1 文件信息声明 (8) 3.1.2 头文件的结构 (10) 3.1.3 定义文件的结构 (11) 3.1.4 头文件的作用 (12) 3.1.5 目录结构 (13) 3.2 命名规则 (13) 3.2.1 共性原则 (13) 3.2.2 Windows变量命名规则 (14) 3.3 程序风格 (17) 3.3.1 空行 (17) 3.3.2 代码行 (18) 3.3.3 代码行内的空格 (19) 3.3.4 对齐 (21) 3.3.5 长行拆分 (22) 3.3.6 修饰符的位置 (23) 3.3.7 注释 (23) 3.4 函数设计 (26) 3.4.1 参数的规则 (26) 3.4.2 返回值的规则 (27) 3.4.3 函数内部实现的规则 (30) 3.4.4 其它建议 (32) 3.4.5 使用断言 (32) 3.4.6 引用与指针的比较 (33) 3.5 变量类型定义 (35) 四、软件测试规范 (36) 4.1 单元测试 (36) 4.2 系统测试 (37) 4.6 业务测试 (38)

4.7 验收测试 (38) 4.8 用户现场测试 (39) 五、软件版本管理 (39) 4.1版本管理的必要性 (39)

系统界面设计规范标准

B/S 系统界面设计规 1.引言 界面美观、操作易用性、维护成本低是评价B/S系统的关键。本规参考了一些成熟产品科学的开发方法,将开发过程中的方式、规则等强行的约束。希望藉此来提高用户操作感受,提升B/S产品的质量。 1.1. 编写目的 广义的界面概念包含了除页面布局设计之外,交互性的设计,及人体工程学方面的研究。本规制订的依据从广义概念出发,总结以往项目的成败经验,目的是从整体上提升公司B/S 类产品的质量、开发效率。从以技术为中心发展为以客户为中心,将类似项目成功的经验继承和积累下来,将B/S系统与C/S系统开发过程上的区别降低到仅显示控制的极小的层面。新的开发方式强调分层,规出界面设计人员做什么,服务器编程人员做什么,这样就把页面和控制代码两个层面清晰的分开。 1.2. 背景 B/S模式系统以其易部署、易扩展、能够高度集成各种技术的特点,在公司产品线中占越来越大的比重,.Net、J2ee等技术的发展更是将B/S系统的开发和桌面应用程序开发的工程方法统一起来,突出服务器端技术,这些变革要求界面设计人员和服务器端编程人员可以应用更加科学的方法合作,团队的合作方式甚至决定了一个系统开发的成败。目前公司较多的服务器端编程人员仍然处于“后ASP 时代”的开发方式,表现为前台页面仍然与服务器代码高度的关联,带来的后果是重复建设、高昂的维护成本或失去控制的项目,没有充分的发挥出集成开发工具的优势。在以往的开发方式下界面设计侧重在静态页面的建设上,每个页面作为一个独立的模块来处理,在页面交互中则是程序员根据自己的习惯来控制,程序对个人的编程风格的依赖很强,这些在以往开发WEB站点的方式扩展到B/S系统有时是不正确的,甚至是背道而弛的,当然也不利于规模化的团队合作。 1.3. 定义 术语定义: 效果图:由界面设计人员设计的页面效果图,综合了概要设计的业务需要和整个站点的风格,它规定了页面布局上的每个细节。 容器:即HTML 标记的嵌套结构,如在表格->行->单元格放置图片,那么可以认为单元格是放置图片的容器。 样式表:即级联式样式表CSS,它是W3C机构在HTML标记语言上扩展的格式语言。 非标准交互控件:是通过标准控件组合、扩展等方法以提高特定业务执行效率而进行封装的控件,或概括为用户根据以往的操作经验不能够直接领会出操作方式的交互控件。 2. 界面设计规细则 总体目标 以规作为基本原则,在此框架进行合理的扩展和变化,将站点的每个模块服从于整个站点,模块页面与“高聚”的控制代码紧密的结合在一起,同时对应于应用程序基于系统的架构分析。 2.1. 通用原则 1 界面色彩要求:计算机屏幕的发光成像和普通视觉成像有很大的不同,应该注意这种

相关主题
文本预览
相关文档 最新文档