C++源码_Tx

C++源码_Tx
C++源码_Tx

C++ Source Part One

DataTable.h: interface for the CDataTable class.

#include

#include "myfunction.h"

#if !defined(AFX_XpDATATABLE_XpH_Xp004123C0_XpC9E6_Xp4952_XpA5DA_Xp01AC AE1CD1A3_XpINCLUDED_Xp)

#define

AFX_XpDATATABLE_XpH_Xp004123C0_XpC9E6_Xp4952_XpA5DA_Xp01ACAE1CD1A3_ XpINCLUDED_Xp

#if _XpMSC_XpVER > 1000

#pragma once

#endif _XpMSC_XpVER > 1000

class CDataTable

{

public:

CDataTable();

virtual ~CDataTable();

public:

virtual bool IsCurValueIn()=0;

virtual bool DeleteCurValue()=0;

virtual bool InsertCurValue()=0;

virtual bool UpdateCurValue()=0;

virtual bool RefreshListView(CString sql);

virtual void SelectListCtrl(CListCtrl list);

virtual CString GetNameFromField(CString field);

virtual CString GetFieldFromName(CString name);

public:

data

field and name

CStringList m_XppstrlistFields_XpNames;

CListCtrl m_Xplist;

LRunSql m_Xprunsql;

表名

CString m_XpsTableName;

主键

CString m_XpsKeyField;

主键值

CString m_XpsKeyValue;

state

enum{WAITSTA TE=0,SELECTSTA TE=1,UPDATESTATE=2,INSERTSTATE=3,DELETES TA TE=4};

int state;

function+

};

#endif !defined(AFX_XpDATA TABLE_XpH_Xp004123C0_XpC9E6_Xp4952_XpA5DA_Xp0 1ACAE1CD1A3_XpINCLUDED_Xp)

C++ Source Part Two

mima.cpp : implementation file

#include "stdafx.h"

#include "khmanager.h"

#include "mima.h"

#include "ado.h"

#ifdef _XpDEBUG

#define new DEBUG_XpNEW

#undef THIS_XpFILE

static char THIS_XpFILE[] = _XpFILE_Xp;

#endif

mima dialog

mima::mima(CWnd pParent =NULL)

: CDialog(mima::IDD, pParent)

{

{{AFX_XpDATA_XpINIT(mima)

NOTE: the ClassWizard will add member initialization here

}}AFX_XpDATA_XpINIT

}

void mima::DoDataExchange(CDataExchange pDX)

{

CDialog::DoDataExchange(pDX);

{{AFX_XpDATA_XpMAP(mima)

DDX_XpControl(pDX, IDC_XpCOMBO1, m_Xpcom1);

DDX_XpControl(pDX, IDC_XpEDIT3, m_Xpedit3);

DDX_XpControl(pDX, IDC_XpEDIT2, m_Xpedit2);

DDX_XpControl(pDX, IDC_XpEDIT1, m_Xpedit1);

}}AFX_XpDATA_XpMAP

}

BEGIN_XpMESSAGE_XpMAP(mima, CDialog)

{{AFX_XpMSG_XpMAP(mima)

ON_XpBN_XpCLICKED(IDC_XpBUTTON2, OnButton2)

ON_XpBN_XpCLICKED(IDC_XpBUTTON1, OnButton1)

}}AFX_XpMSG_XpMAP

END_XpMESSAGE_XpMAP()

mima message handlers

BOOL mima::OnInitDialog()

{

CDialog::OnInitDialog();

ado rst;

rst.Open("select from tb_Xpuser",adCmdText);

int rstnum=rst.GetRecordCount();

int i;

for(i=1;i<=rstnum;i++)

{

this->m_Xpcom1.AddString(rst.GetFieldValue("user_Xpname"));

rst.Move(i);

}

rst.close();

return TRUE; return TRUE unless you set the focus to a control

EXCEPTION: OCX Property Pages should return FALSE

}

void mima::OnButton2()

{

this->EndDialog(true);

}

void mima::OnButton1()

{

ado rst;

CString edit1,edit2,edit3,name,mima,SQL,zz,TSQL;

this->m_Xpcom1.GetWindowText(name);

if(name.IsEmpty())

{MessageBox("请选择用户","提示");

return;}

SQL.Format("select from tb_Xpuser where user_Xpname = '%s'",name);

rst.Open(SQL,adCmdText);

zz=rst.GetFieldValue("user_Xpmm");

zz.TrimRight();

zz.TrimLeft();

this->m_Xpedit1.GetWindowText(edit1);

if(https://www.360docs.net/doc/891877658.html,pare(edit1))

{MessageBox("密码不正确","提示");

return;}

this->m_Xpedit2.GetWindowText(edit2);

this->m_Xpedit3.GetWindowText(edit3);

if(https://www.360docs.net/doc/891877658.html,pare(edit3))

{MessageBox("两次密码不同","提示");

return;}

TSQL.Format("UPDA TE tb_Xpuser set user_Xpmm='%s' where user_Xpname ='%s'",edit2,name);

rst.ExecuteSQL(TSQL);

rst.close();

MessageBox("修改成功","提示");

this->m_Xpcom1.SetWindowText("");

this->m_Xpedit1.SetWindowText("");

this->m_Xpedit2.SetWindowText("");

this->m_Xpedit3.SetWindowText("");

}

C++ Source Part Three

#if !defined(AFX_XpDLGTHECK_XpH_Xp182E7DA5_Xp8864_Xp413D_Xp85E4_XpBB03E6 FF2E9E_XpINCLUDED_Xp)

#define

AFX_XpDLGTHECK_XpH_Xp182E7DA5_Xp8864_Xp413D_Xp85E4_XpBB03E6FF2E9E_X pINCLUDED_Xp

#if _XpMSC_XpVER > 1000

#pragma once

#endif _XpMSC_XpVER > 1000

DlgTheCK.h : header file

CDlgTheCK dialog

class CDlgTheCK : public CDialog

{

Construction

public:

CDlgTheCK(CWnd pParent = NULL); standard constructor

Dialog Data

{{AFX_XpDATA(CDlgTheCK)

enum { IDD = IDD_XpDIALOG_XpCK };

CEdit m_XpeditName;

CComboBox m_XpcomboYg;

}}AFX_XpDATA

bool m_XpbAdd;

CString m_XpstrCkName;

CString m_XpstrCkAdmi;

Overrides

ClassWizard generated virtual function overrides

{{AFX_XpVIRTUAL(CDlgTheCK)

protected:

virtual void DoDataExchange(CDataExchange pDX); DDXDDV support

}}AFX_XpVIRTUAL

Implementation

protected:

Generated message map functions

{{AFX_XpMSG(CDlgTheCK)

virtual BOOL OnInitDialog();

virtual void OnOK();

}}AFX_XpMSG

DECLARE_XpMESSAGE_XpMAP()

};

{{AFX_XpINSERT_XpLOCA TION}}

Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif !defined(AFX_XpDLGTHECK_XpH_Xp182E7DA5_Xp8864_Xp413D_Xp85E4_XpB B03E6FF2E9E_XpINCLUDED_Xp)

C++ Source Part Four

#if !defined(AFX_XpKHB_XpH_XpD1953107_XpD882_Xp4F8B_XpAA4A_Xp50C3DEF34B D9_XpINCLUDED_Xp)

#define

AFX_XpKHB_XpH_XpD1953107_XpD882_Xp4F8B_XpAA4A_Xp50C3DEF34BD9_XpINCL UDED_Xp

#if _XpMSC_XpVER > 1000

#pragma once

#endif _XpMSC_XpVER > 1000

khb.h : header file

khb dialog

class khb : public CDialog

{

Construction

public:

CString edit1,edit2,edit3,edit4,edit5,edit6,edit7,edit8,

edit9,edit10,edit11,edit12,edit13,edit14,edit15,edit16,com1,

com2,com3,com4,com5;

khb(CWnd pParent = NULL); standard constructor

public:

void enableall(bool b);

void texttowin();

void wintotext();

void clearall();

Dialog Data

{{AFX_XpDATA(khb)

enum { IDD = IDD_XpKHBASE };

CEdit m_Xpedit9;

CEdit m_Xpedit8;

CEdit m_Xpedit7;

CEdit m_Xpedit6;

CEdit m_Xpedit4;

CEdit m_Xpedit3;

CEdit m_Xpedit5;

CEdit m_Xpedit2;

CEdit m_Xpedit16;

CEdit m_Xpedit15;

CEdit m_Xpedit14;

CEdit m_Xpedit13;

CEdit m_Xpedit12;

CEdit m_Xpedit11;

CEdit m_Xpedit10;

CEdit m_Xpedit1;

CComboBox m_Xpcom5;

CComboBox m_Xpcom4;

CComboBox m_Xpcom3;

CComboBox m_Xpcom2;

CComboBox m_Xpcom1;

}}AFX_XpDATA

Overrides

ClassWizard generated virtual function overrides

{{AFX_XpVIRTUAL(khb)

public:

virtual BOOL PreTranslateMessage(MSG pMsg);

protected:

virtual void DoDataExchange(CDataExchange pDX); DDXDDV support

}}AFX_XpVIRTUAL

Implementation

protected:

Generated message map functions

{{AFX_XpMSG(khb)

virtual BOOL OnInitDialog();

}}AFX_XpMSG

DECLARE_XpMESSAGE_XpMAP()

};

{{AFX_XpINSERT_XpLOCA TION}}

Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif !defined(AFX_XpKHB_XpH_XpD1953107_XpD882_Xp4F8B_XpAA4A_Xp50C3DEF 34BD9_XpINCLUDED_Xp)

C++ Source Part Five

#if !defined(AFX_XpCHECKINREGDLG_XpH_Xp79A26C36_Xp3B51_Xp4360_XpA8F3_Xp 49B4ECB59B6A_XpINCLUDED_Xp)

#define

AFX_XpCHECKINREGDLG_XpH_Xp79A26C36_Xp3B51_Xp4360_XpA8F3_Xp49B4ECB59 B6A_XpINCLUDED_Xp

#include "CheckinregSET.h"

#include "Roominfoset.h"

#if _XpMSC_XpVER > 1000

#pragma once

#endif _XpMSC_XpVER > 1000

Checkinregdlg.h : header file

CCheckinregdlg dialog

class CCheckinregdlg : public CDialog

{

Construction

public:

CCheckinregdlg(CWnd pParent = NULL); standard constructor CCheckinregSET mycheckinregset;

CRoominfoset myroominfoset;

void enable(bool bEnabled);

CString regnumber;

CString gustname;

CString gustaddr;

CString zhengjian;

CString zhengjian_Xpnumber;

CString checkinreg_Xpreason;

bool issave;

定义ADO连接、命令、记录集变量指针

_XpConnectionPtr m_XppConnection;

_XpCommandPtr m_XppCommand;

_XpRecordsetPtr m_XppRecordset;

CEdit m_Xproom_Xpmoney;

CEdit m_Xppre_Xphandinmoney;

Dialog Data

{{AFX_XpDATA(CCheckinregdlg)

enum { IDD = IDD_XpDIg_Xpcheckinreg };

CDateTimeCtrl m_Xpcheckindatectr;

CComboBox m_Xproomnumberctr;

CEdit m_Xproom_Xpmoney;

CString m_Xpregnumber;

CString m_Xpgustname;

CString m_Xpgustaddr;

CString m_Xpbeizhu;

float m_Xppre_Xpdiscount;

CString m_Xproomlevel;

CString m_Xpzhengjian_Xpnumber;

CString m_Xpcheckinreg_Xpreason;

CString m_Xpdiscount_Xpkind;

CString m_Xproomnumber;

CString m_Xpzhengjian;

CTime m_Xpcheckindate;

CTime m_Xpalarmdate;

CTime m_Xpalarmtime;

CTime m_Xpcheckintime;

CTime m_Xpcheckoutdate;

CTime m_Xpcheckouttime;

double m_Xpcheckdays;

double m_Xpdiscountnumber;

CString m_Xprealmoney;

CString m_Xppre_Xphandinmoney;

CString m_Xpshowuser;

}}AFX_XpDATA

Overrides

ClassWizard generated virtual function overrides

{{AFX_XpVIRTUAL(CCheckinregdlg)

public:

virtual BOOL PreTranslateMessage(MSG pMsg);

protected:

virtual void DoDataExchange(CDataExchange pDX); DDXDDV support

}}AFX_XpVIRTUAL

Implementation

protected:

Generated message map functions

{{AFX_XpMSG(CCheckinregdlg)

afx_Xpmsg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);

virtual BOOL OnInitDialog();

afx_Xpmsg void Oncheckreg();

virtual void OnOK();

afx_Xpmsg void OnChangeEDITcheckdays();

afx_Xpmsg void OnCloseupCOMBOroomnumber();

afx_Xpmsg void OnChangediscountnumber();

afx_Xpmsg void OnCancel_Xpregin();

}}AFX_XpMSG

DECLARE_XpMESSAGE_XpMAP()

};

{{AFX_XpINSERT_XpLOCA TION}}

Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif !defined(AFX_XpCHECKINREGDLG_XpH_Xp79A26C36_Xp3B51_Xp4360_XpA8F 3_Xp49B4ECB59B6A_XpINCLUDED_Xp)

19款最好用的免费数据挖掘工具大汇总

数据在当今世界意味着金钱。随着向基于app的世界的过渡,数据呈指数增长。然而,大多数数据是非结构化的,因此需要一个过程和方法从数据中提取有用的信息,并将其转换为可理解的和可用的形式。 数据挖掘或“数据库中的知识发现”是通过人工智能、机器学习、统计和数据库系统发现大数据集中的模式的过程。 免费的数据挖掘工具包括从完整的模型开发环境如Knime和Orange,到各种用Java、c++编写的库,最常见的是Python。数据挖掘中通常涉及到四种任务: 分类:将熟悉的结构概括为新数据的任务 聚类:在数据中以某种方式查找组和结构的任务,而不需要在数据中使用已注意的结构。 关联规则学习:查找变量之间的关系 回归:旨在找到一个函数,用最小的错误来模拟数据。 下面列出了用于数据挖掘的免费软件工具 数据挖掘工具 1.Rapid Miner

Rapid Miner,原名YALE又一个学习环境,是一个用于机器学习和数据挖掘实验的环境,用 于研究和实际的数据挖掘任务。毫无疑问,这是世界领先的数据挖掘开源系统。该工具以Java编程语言编写,通过基于模板的框架提供高级分析。 它使得实验可以由大量的可任意嵌套的操作符组成,这些操作符在xmxxxxl文件中是详细的,并且是由快速的Miner的图形用户界面完成的。最好的是用户不需要编写代码。它已经有许 多模板和其他工具,让我们可以轻松地分析数据。 2. IBM SPSS Modeler

IBM SPSS Modeler工具工作台最适合处理文本分析等大型项目,其可视化界面非常有价值。它允许您在不编程的情况下生成各种数据挖掘算法。它也可以用于异常检测、贝叶斯网络、CARMA、Cox回归以及使用多层感知器进行反向传播学习的基本神经网络。 3.Oracle Data Mining

全球10大开放源代码项目

全球10大开放源代码项目 下面是https://www.360docs.net/doc/891877658.html, 评选出的10大开放源代码项目。我打赌你们当中的绝大多数人对这些软件都并不陌生,也许曾经使用过,也许现在正在使用。噢,老天!请不要告诉我你从来都没有听说过这些软件,如果是这样的话,我强烈建议你马上下载其中的一些自己感兴趣的软件,感受一下开放源代码软件所具有的巨大魅力。感谢所有在这些开放源代码项目幕后默默奉献的人们。 不过在正式开始之前,让我们先了解一下有关与开放源代码运动的一些背景知识。 目录 ??背景知识 ??第10名:eMule ??第9名:Audacity ??第8名:知识共享协议 ??第7名:Ogg ??第6名:PHP ??第5名:Wiki ??第4名:Azureus ??第3名:https://www.360docs.net/doc/891877658.html, ??第2名:Linux ??第1名:Firefox ??后记:一些没有上榜,但依然值得一提的开源项目! 背景知识 一、什么是开放源代码(open source)? 开放源代码标识 开放源码软件(open source)是现在IT世界中最热门的词语之一。开放源代码促进会(Open Source Initiative,OSI)将其定义为“自身源代码可以被公众使用的软件;并且此软件的使用,修改和分发也不受许可证的限制”。 值得注意的是,开放源码软件通常是有版权(copyright)的。开放源码软件的许可证可能包含这样一些限制: 必须保护软件的开放源码状态;标明软件制作者的身份;或者对有关的开发行为进行限制。 开放源码软件主要被散布在全世界的数目庞大的软件开发者队伍所开发和维护,但是同时一些大学,政府机构承包商,协会和商业公司也开发它。开放源码软件在历史上曾经与UNIX,Internet联系的非常紧密。在这些系统中许多不同的硬件需要支持,而且源代码的分发是实现交叉平台可移植性的唯一实际可行的办法。 开放源代码(open source)不仅仅指开放源代码软件,它同时也是一种软件开放模式的名称。开放源代码开放模式的名字及其特点最早是由美国著名电脑黑客“埃里克·雷蒙(Eric Raymond)”在他的著作《大教堂与市集(The Cathedral and the Bazaar)》等一系列论文集中提

盘点最受程序员欢迎的个代码编辑器精编WORD版

盘点最受程序员欢迎的 个代码编辑器精编 W O R D版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

盘点最受程序员欢迎的13个代码编辑器 编写代码本身就是一种艺术。如今,开发人员可以使用大量的编程语言,从非常基本的汇编语言到Ruby和Python。尽管对于一个给定的项目可供选择的编程语言很多,但有一件事情是不变的——每个开发人员都需要一个称心的代码编辑器! 一个好的代码编辑器不仅仅是一个简单的文本编辑工具,它可以将书写的代码转化为项目的可行组件。鉴于这一重要性,程序员对代码编辑器非常挑剔。每个程序员都需要一个快速的,易于使用的代码编辑器并提供正确的功能。 由于每个代码编辑器都声称是最好的,所以我们必须听取开发人员的建议。近日,WordPress开发人员对常用的代码编辑器进行了评分: 第一名:VIM Vim是WordPress开发人员中最流行的代码编辑器。它是免费的,在Linux开发人员中享有良好的声誉。该编辑器是开放源码并高度可配置的,它提供了跨平台兼容性。此外,它可以在Dos中工作。 Vim可能不会在新用户中受到欢迎,因为它具有一定的学习曲线。以下是Vim附加的部分功能: ·整合UI ·超过200种语言的语法突出显示 第二名:LightTable

LightTable是一个免费开放源代码的编辑器,可以在Kickstarter(一个众筹网站,如果用户认可可以提供部分资金)找到超过300k的资金。该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。 使用LightTable,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。 第三名:Chocolat Chocolat本身是MacOSX的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat 为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。 其他一些功能是: ·广泛搜索和替换 ·错误检查 第四名:Notepad++ Notepad++有很好的理由成为许多WordPress开发人员的首选。这个轻量级的代码编辑器是开源的,可以自由使用。该编辑器最好的一点是,它是新手和专家的理想选择。 支持的语言列表包括WordPress开发人员在开发复杂项目过程中所需的一切。Notepad++的其他功能包括: ·重点语法突出

当前流行源代码管理工具介绍

人们在软件开发的最初阶段,往往借助于电子表格、白板和发布工程师(Release Engineer,在软件开发过程中跟踪软件版本发布信息的软件工程师)在软件开发过程中进行协调工作。发布工程师往往需要从一个地方跑到另一个地方,来跟踪开发者在进行哪个模块的开发,以及哪些bug 修复、发现和引入。不用说,这个过程充满了问题和错误。因此,源代码控制管理系统(Source Control Management,SCM)应需而生。 源代码控制管理系统是为软件开发团队准备的一套软件,通过它可以实现团队成员之间的协作和服务。 从其可以实现的最基本的功能来说,SCM提供文本管理和版本控制功能,这样团队成员不会互相改写对方的修改,只有最新版的文件被标记为操作使用中。但这只是基本功能。源代码控制系统还让开发者可以同时操作同一个文件,合并其他开发者所做的修改,跟踪并审计要求和已做出的修改,跟踪漏洞修复状态和执行发布。 在某些情况下,源代码控制系统还可以包含其他组件,来帮助开发者管理一个软件的整个生命周期的过程。源代码控制系统和应用程序生命周期管理系统之间的区别实际是一个语义上的不同,反映了系统中提供的工具的完全性。 2007年春天,著名调查公司Evans Data公司调查了不同源代码控制系统的用户。这些用户被要求对他们使用的源代码控制系统进行打分,打分从“优秀”到“尚需改进”。只有那些真正用过这些产品的IT经理和开发者对它们进行打分,而且他们只对当前正在使用的工具进行打分。此外,用户还要求根据一些属性的重要性进行打分,从而得出一个真正的评价。 在对这些源代码控制系统进行调查的过程中,可以很清楚地看到,每一个产品都有自己的内容、自己的吸引人的地方和缺点。 来自专有公司的源代码管理系统

外文翻译-----使用开放源码工具的专业便携式开发

Professional Portal Development with Open Source Tools Design Pattern Considerations in Your PortalClearly, there are many ways to implement a design that cannot be expressed adequately in this chapteralone. Hopefully, the introduction of high-level pattern constructs and brief discussion of the implementationof Java standards in this chapter can facilitate your design decisions on your portal deployments. Java language and implementation standards can also help control complexity so that consistent levels ofquality can be attained in your development activities. This in turn can lead to increased partner adoptionand portlet maintenance. Last, the adoption of design patterns should be applied so that best practices arepropagated in your portal deployment and development operations can be hastened. Much has been written during the last few years about design patterns and their use in Java development,so rather than go into great elaboration of their use, we felt that it would be more beneficial to providehigh-level concepts of patterns that might be used in your portal deployments and to encourage you toexplore them from the online Javaworld newsletter and from the Core J2EE Patterns book [ALUR]. Planning for Portal Deployment Using Java Standards For many mission-critical development portal efforts, decisions need to be made about expensive softwareprocurements to satisfy your development needs. In order to protect this investment, it is wise toconsider standards when you make your purchasing decision because there is nothing worse thandumping a lot of money into a particular framework only to learn after you have obtained it that it is aclosed, proprietary system that does not work well with other systems. To guarantee that this does nothappen to you, you should become familiar with software standards and other application frameworks’use of them. Regrettably, systems that do rely heavily on proprietary extensions often force your projectto hire expensive expertise to help you deploy your program with their framework. Figure 7.21 illustrates some of the Java standards that could be considered for portal development. It isimportant to remember that these need to be established prior to procuring a portal framework or integratingexisting applications into a homegrown portal application. Always be cognizant of the latest versionsof the standards listed in Figure 7.21, and the effects that newer versions of those standards mighthave on your design decisions.

源码管理工具比较

源码管理工具,svn,cvs,hg,git,VSS 什么是源码管理工具 简单地说,源码管理工具是一种记录代码更改历史,可以无限回溯,用于代码管理,多个程序员开发协作的工具. 常见的功能有: 1.更新到任意一个版本(不用担心代码的修改错误,和丢失等) 2.日志记录(说明修改目的) 3.分支,标签(用于协作开发,和便于阶段性产品发布) 4.合并,比较(用于多人,多分支之间的代码合并,比对等) 为什么要使用源码管理工具 你可能会想,需求出来了,老大把我要做的功能告诉我,我去写代码就行,完事了,我再打包发给他让他加入到整个代码中,然后测试.有问题再反馈回来,我再修改,再打包.这样不是也挺好吗? 当然我要说,这样当然是可以的,但是如果你们要修改同一个文件怎么办?你们还得事先商量确定某个时间某个人不能修改等等.或者新建不同的名字的文件,最后由一个人来合并. 如果你的团队不是3,5个人,而是30,50人呢?你这样的沟通和重复性工作的成本会有多高? 于是聪明的程序员便有了版本控制的设想,继而有了源码管理工具的不断推陈出新. 如果你稍微开发过一个正式的项目,想必你对cvs,svn,hg,git这些也一定有所耳闻. 下面就简单根据我个人的一些项目经验来介绍下2类的源码管理工具. 源码管理工具介绍 简单地可以将源码管理工具分为两类:svn这样的集中式的,和hg这样的分布式的. 因为我个人对svn和hg比较熟悉,所以下面就以这二种具体的工具为代表来说明二者的优劣. 第一次接触源码管理工具就是svn,想着那时对于什么增量修改,历史记录等概念不清楚时,也曾在写了2小时的代码后,提交svn时失误而导致文件被删除的悲惨历史.惨痛的教训让我开始了系统地学习svn的过程,一天后,我明白了它的原理,这时会很晰明确地知道每个命令的结果,也会很清楚地知道自己怎样做才是最合适的. 简单总结一些best practice: Check in early,Check in often(这个是很重要的,尤其是多个开发的团队,这样可以大大减少冲突的可能) 发现冲突第一时间解决(不能将冲突留给你的同事,发现了第一时间解决,如果需要要向冲突的相关同事沟通交流) 只提交需要提交的文件(一些临时文件不要提交,不能污染整个代码库) 熟悉常用的命令,如add/rm/up/ci/co/stat/merge/diff等 大致一个月后,我逐渐明白一个源码管理工具对于一个项目的意义和作用.自此后,我去公司实习我会第一时间询问他们是否使用源码管理工具,使用哪种工具.而对于自己的一些业余项目,我也通常是使用google code来管理起来,甚至当前的这些博客的源码(不过最近已经迁移到了hg的一个hosting service下,原因请参考下文). 到了去年的晚些时候,开始知道了分布式源码管理工具,了解了它与集中式工具的区别和优

项目管理工具软件介绍(含免费、开源)

你需要了解目前的项目管理趋势,使能够获得正确的执行。有很多类型的管理工具,源码管理、问题跟踪、基于web或桌面等等。下面提供了几大类的项目管理工具,你可以从中找到与你的业务需求匹配的管理工具。 开源项目管理工具。 Trac Open Source Project Trac是一个增强版的Wiki以及软件开发过程中的问题跟踪系统,采用Python 开发。 More Information On Trac Open Source Project Redmine Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。

More Information On Redmine Gantt Project Gantt Project 是一个使用 GPL 授权的开源项目管理软件,采用 Java 开发的桌面管理工具,支持 Windows、Linux 和 Mac OS X 系统,适合小型项目团队,包含进度管理和项目经理顾问功能。 More Information On Gantt Project

iTeamwork https://www.360docs.net/doc/891877658.html, 是个免费、基于web的团队项目管理应用,UI非常简洁。 More Information On iTeamwork phpCollab phpCollab是个开源的项目协作管理软件。对于类似咨询机构这样的主体,依赖于公司端和客户端分割的情况,非常适合使用phpCollab。

几款代码比较工具

1、自己开发的JSM Compare 和JSM Merge JSM Compare一款功能齐全的文件夹和文件对比工具,不比Beyond Compare差多少。用它能很方便的对比出两个文件夹或者文件的不同之处。支持多种规则对比,查看方便。 JSM Compare用来对比两个文件夹或者文件的不同之处,可以被用来做文件或目录的合并和同步。 JSM Merge(3-way merge)是三方代码合并工具。所谓三方代码合并,是指在进行代码合并时,不仅比较需要合并的两个文件,而且会将这两个文件与基础版本进行比较,一共有三个文件一起进行比较以决定如何进行合并,故称为三方代码合并。 JSM Compare 和JSM Merge还集成到在JSMSoft配置管理系统中,还可被用于工作量的统计。 JSM Compare 和JSM Merge在Redo/Undo的功能上优于Beyond Compare,不仅能按操作顺序进行Redo/Undo操作,还可以选择某个历史的操作进行Undo处理,这对于我们进行代码合并时帮助特别大。 在合并过程中,不仅可以批量更新,也可以逐行处理,这一点也比Beyond Compare好用。集成于JSMSoft配置管理系统中的JSM Compare 和JSM Merge,还有一项非常特别的功能:“锚点”,在代码对比和合并过程中,通过添加“锚点”为代码编写注释。这些注释可以被用来查询和定位。 目前JSM Compare 和JSM Merge只有Windows版本,并且依赖于.NET Framework 4.0。支持C#、https://www.360docs.net/doc/891877658.html,、VB、JAVA等源代码,并且支持多种规则对比。目前是免费使用的。 2、优秀的代码比较工具Beyond Compare 软件功能:用于比较和合并源代码 Beyond Compare 是一款不可多得的专业级的文件夹和文件对比工具。使用他可以很方便的对比出两个文件夹或者文件的不同之处。并把相差的每一个字节用颜色加以表示,查看方便。并且支持多种规则对比。对软件汉化者来说,这绝对是一款不可多得的工具。该工具有Windows和Linux下两个版本 3、TextDiff windows比较好的一个小巧的工具,只有几百kb. TextDiff 是一个开放源代码的文本比较工具,与商业或共享文本比较工具相比,虽然在功能上显得较弱,但是已经完全可以满足一般的源代码比较、修改的要求。另外,由于是开源软件,只要您愿意,可以完全按照自己的要求把它改造得更加强大。 4、WinMerge多语言版 当您有两个以上的内容相似的文字文件时,WinMerge就可以立刻派上用场,帮您检查两个文件里头不同之处。如您有写过程序就会了解,当您在改版时,在新的程序码与旧的程序码之间到底有哪些不同之处,的确会让您伤一些脑筋。或者您曾撰写两份以上的文字文件,内容稍有差异,但要从头查起,可能会相当累人,这时候就可以利用WinMerge来帮您自动比对。WinMerge会将两个文件内容做比对,并在相异之处以高亮度的方式显示,让使用者可以很快的查知,并且您可以直接让左方的文件内容直接覆盖至右方,或者反过来也可,这对需要常常修改文件内容的朋友来说,会是相当便利的一个功能。 以上几个软件都不错,不过我比较喜欢用JSM的软件,一方面是免费的,另一方面,操作

Netiffer网络抓包工具开放源码

Netiffer网络抓包工具开放源码 独乐乐不如众乐乐,先将Netiffer的源码开放给大家,鄙人水平有限,代码丑陋请多包涵! Netiffer网络数据包捕获查看工具, 支持如下数据包捕获方式: 1、Raw嗅探 2、Hook指定进程API,截获数据包 3、端口数据转发获取数据包 4、代理转发获取数据包 关联进程,显示数据包发送接收进程 支持JS脚本扩展;支持第三方插件分析处理; 简单功能介绍截图: https://www.360docs.net/doc/891877658.html,/yycblog/item/b03ae234b129c1322f0f81da Netiffer由三部分组成 主dll:Netiffer.dll 所有功能由此dll提供,包括混杂模式嗅探、hook截获数据包、端口转向获取数据包、代理截获数据包以及支持WinPcap获取数据包5种获取数据包模式。 其中hook api截获数据包采用微软detours.lib库。 开发环境 vs2008 源码目录结构说明: .\JS 支持js脚本;非必须; 此目录包含JS 1.7引擎源码 源文件中 JSEngineXXX为js引擎的调用封装;Netiffer采用显示调用js.dll方式,如果exe目录下有js.dll则支持js脚本处理。 .\winpcap 非必须; 如果机器安装了winpcap,则支持通过winpcap捕获数据包 cWinPcap.h/cpp为winpcap调用封装类;Netiffer采用显示调用wpcap.dll方式; .\Net4cpp21 很早以前封装的socket类库简化版;相对完整版可在我开源的rmtsvc代码中找到 .\Plugin 包含插件定义和调用类以及一个插件书写示例工程Netiffer_http UI界面: Netiffer.exe 开发环境VB6 主要功能就是调用Netiffer.dll,获取数据包数据显示 插件dll 实现特殊的协议分析插件,比如Nettiffer自带的Netiffer_dicom.dll用来解析显示DICOM通讯数据

开放原始码的Web的GIS工具:MapGuide的开放源码

开放原始码的Web的GIS工具:MapGuide的开放源码 前言 Autodesk公司是一家以生产制图产品而闻名的公司,其中最著名的产品即AutoCAD系列,广泛应用于设计、营建、工程等等相关领域,其用户遍及制造业、建筑业、政府单位等。 Autodesk于1966年收购了Argus公司,并将他们生产的MapGuide重新包装,成为网际网路地理资讯系统(Web-GIS)的先驱产品,能开发以网页浏览器介面来与用户互动的地理资讯系统,部署、管理、传播空间资料,并能设计客制化的应用程式,具有良好的效能。 虽然MapGuide产品在GIS的市场上取得了不错的成绩,但它仍有一些小小的限制,例如整个架构中使用了大量的用户端外挂(client plug-in),因此用户端必须要使用一些ActiveX控制项或Java Applet;而在伺服端所能使用的平台也只能限于微软的IIS伺服器。此外,由于Mapguide产品在Web-GIS系统中,属于侧重于用户端应用之系统,所有的空间分析并非直接后端的空间资料作控制,而是在用户端进行运算,因此,当用户端处理能力不足时,即可能造成运作缓慢之现象。 由于Web-GIS产品近年来的竞争逐渐激烈,Autodesk发展出新一代的Web-GIS 产品:Autodesk Mapguide Enterprise。过去需要在客户端层级执行的ActiveX 控制项,改用已PHP、ASP .NET或Java所撰写的新API,在伺服端来执行。 Autodesk 并体认到采用开放原始码的方式,能让产品协同合作开发更新更为快速,于是Autodesk赞助、协助成立了开放原始码地理资讯基金会(Open Source Geospatial Foundation),并于2005年释出了MapGuide产品中一部份的原始码予基金会,称之为MapGuide Open Source,并采用LGPL(较宽松公共许可证)的授权方式,而 原有的产品仍称为Autodesk MapGuide Enterprise。 MapGuide的开放源码简介 MapGuide Open Source(以下简称Mapguide)乃是执行于一个三层式架构,如【图1】。这些元件可以执行于任何单一的电脑、或是以分散式的架构横跨多台电脑,让使用者快速开发、部署网路地图应用及地理资讯服务的网路平台。 MapGuide可以在Linux跟Windows上使用;支援Apache以及IIS网路伺服器,提供以PHP、.Net、Java以及Javascript的APIs来开发应用程式,其所有设定是透过一组XML的资料档案来管理。此外,MapGuide支援读取了许多常用的地理资

经典的串口调试工具源代码(二)

经典的串口调试工具源代码(二) Private Sub cmdswitch_Click() On Error GoTo Err If MSComm.PortOpen = True Then ComSwitch = True Else ComSwitch = False End If If ComSwitch = False Then StatusBar1.Panels(1).Text = "Connected" mnuconnect.Caption = "Dis&connect" OpenCom ' 打开串口 ComSwitch = True Else CloseCom ' 关闭串口 ComSwitch = False StatusBar1.Panels(1).Text = "Disconnected" mnuconnect.Caption = "&Connect" StatusBar1.Panels(2).Text = "COM" & https://www.360docs.net/doc/891877658.html,mPort StatusBar1.Panels(3).Text = MSComm.Settings If (OutputAscii) Then

StatusBar1.Panels(4) = "ASCII" Else StatusBar1.Panels(4) = "HEX" End If End If Err: End Sub Private Sub Form_Load() On Error GoTo Err lblWEB.FontUnderline = True ' WEB上加下划线 lblWEB.ForeColor = vbBlue ' 蓝色显示WEB txtsend.Text = "" ' 载入发送信息 If MSComm.PortOpen = True Then MSComm.PortOpen = False ' 先判断串口是否打 开,如果打开则先关闭 ' 初始化串口Call Comm_initial(Val(Mid(cbocom.Text, 4, 1)), cbobaudrate.Text, Left(cboparitybit.Text, 1), cbodatabit.Text, cbostopbit.Text) ' 数据位载入 cbodatabit.AddItem "8" cbodatabit.AddItem "7" cbodatabit.AddItem "6" ' 停止位载入 cbostopbit.AddItem "1" cbostopbit.AddItem "1.5" cbostopbit.AddItem "2" Err: End Sub Private Sub hexReceive() On Error GoTo Err Dim ReceiveArr() As Byte ' 接收数据数组 Dim receiveData As String ' 数据暂存Dim Counter As Integer ' 接收数据个数计数器 Dim i As Integer ' 循环变量

项目经理推荐5个免费项目管理工具

推荐5个免费项目管理工具 本文介绍5个项目管理工具,老面孔多了点,具体列表如下: 1. Collabtive Collabtive是一个基于Web的项目管理系统,非常知名的项目管理软件。提供的功能包括:项目管理,即时聊天工具,任务、文件管理,时间跟踪,多语言支持。 2. Freedcamp

这是另外一个免费项目管理领域的重量级的工具,功能全面,易于使用,有漂亮的UI。号称客户遍布全球超3万,大学30所以上,是不是应该瞧瞧? 3. Project Pier ProjectPier 是一款开源的项目管理程序,基于 PHP+MySQL 架构。用户可以通过 ProjectPier 的 web 界面对任务、项目和团队进行管理。ProjectPier 支持多项目和多团队,它帮助团队进行沟通与协作,并通过任务设置、讨论版、里程碑、站内信息等功能使得项目管理更加透明和简单。 4. Achievo

Achievo 不像Freedcamp和Collabtive那么漂亮,但是这个开源软件具备独特之处,包括报告、CRM、HR管理、时间规划等。如果Freedcamp和Collabtive满足不了你,那么就尝试一下这个吧。 5. Redmine Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了,但想坚持一个自由和开放源码的解决方案,可能会发现Redmine是一个有用的Scrum和敏捷的选择。由于Redmine的设计受到Rrac的较大影响,所以它们的软件包有很多相似的特征。Redmine建立在Ruby on Rails的框架之上,他可以夸平台和数据库。

相关主题
相关文档
最新文档