浅陋见解,仅供参考。抛砖引玉,多加指教!
石正
一个计算机技术爱好者! 虽然我拥有了系统分析师的证书,但我仍然是一个计算机技术爱好者!
posts - 119,comments - 73,trackbacks - 0
软件工作的基本方法之一:5分钟工作制

在软件工作中,遇到小难题(如:语法、简单算法等)时,如果自己5分钟内没有解决,则直接询问本小组的其他人员。

相关的一个基本工作方法:15分钟工作制
如果一个问题,本小组15分钟内无法解决时,则把本问题记录下来,留待明天(后续)解决。

以上2个方法,可以有效的保证工作的进度,保证工作的愉快程度。


相关的方法是:软件开发工作中的1030原则

2种方法的区别在2点:
1、时间长短不一,5分钟短,1030原则长一倍;
2、适用地方不一,5分钟适用于简单问题,1030适用于其他问题。
posted @ 2007-05-11 09:02 石正 阅读(190) | 评论 (0)编辑 收藏
我工作的计算机编号是51,现在才明白,是每天都是劳动节的意思! 劳动节快乐!天天快乐!
最近真忙啊!
posted @ 2007-04-29 16:15 石正 阅读(211) | 评论 (0)编辑 收藏
C++中,CTime 与  CString转换
CTime m_StartTime1 = CTime::GetCurrentTime();
CString csStartTime = m_StartTime1.Format( "%Y%m%d%H%M%S" );

 使用sprintf及sscanf函数进行CString与CTime之间的转换

 

一.将CString转为CTime的几种方法

CString   timestr   =   "2000年04月05日";  
  int   a,b,c   ;  
  sscanf(timestr.GetBuffer(timestr.GetLength()),"%d年%d月%d日",&a,&b,&c);  
  CTime   time(a,b,c,0,0,0);    


--------or - ---------------------

 CString   s("2001-8-29   19:06:23");  
  int   nYear,   nMonth,   nDate,   nHour,   nMin,   nSec;  
  sscanf(s,   "%d-%d-%d   %d:%d:%d",   &nYear,   &nMonth,   &nDate,   &nHour,   &nMin,   &nSec);  
  CTime   t(nYear,   nMonth,   nDate,   nHour,   nMin,   nSec);

---- or ------------------------
CString   timestr   =   "2000年04月05日";  
  int   year,month,day;  
  BYTE   tt[5];  
  //get   year  
  memset(tt,   0,   sizeof(tt));  
  tt[0]   =   timestr[0];  
  tt[1]   =   timestr[1];  
  tt[2]   =   timestr[2];  
  tt[3]   =   timestr[3];  
  year=   atoi((char   *)tt);  
   
  //get   month  
  memset(tt,   0,   sizeof(tt));  
  tt[0]   =   timestr[6];  
  tt[1]   =   timestr[7];  
  month   =   atoi((char   *)tt);  
   
  //get   day  
  memset(tt,   0,   sizeof(tt));  
  tt[0]   =   timestr[10];  
  tt[1]   =   timestr[11];  
   
  CTime   time(year,month,day,0,0,0);

从上面来看,很明显使用sscanf()函数的优势.

 

二.将CTIme转换为CString的方法:

CTime  tmSCan = CTime::GetCurrentTime();

CString szTime = tmScan.Format("'%Y-%m-%d %H:%M:%S'");

这样得到的日期时间字符串就是以"2006-11-27 23:30:59"的格式.这是不是很方便呢?

 //取得CTime中的日期
 CString cstrDate = tmScan.Format("%Y-%m-%d");

 //取得CTime中的时间
 CString cstrTime = tmScan.Format("%H:%M-%S");

          sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:

 

 更多更好的sprintf()函数说明参考:《spirntf,你知道多少?

http://blog.csdn.net/steedhorse/archive/2005/03/25/330206.aspx

 

 

time_t t = time(0);

      //产生"YYYY-MM-DD hh:mm:ss"格式的字符串。

 

char s[32];

strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));

sprintfMFC中也能找到他的知音:CString::FormatstrftimeMFC中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1417748

posted @ 2007-04-18 09:47 石正 阅读(12926) | 评论 (5)编辑 收藏
源代码格式不对,也是软件错误。

源代码是软件的一个重要的组成部分,源代码格式不对,换句话说,源代码错误,肯定是软件错误。所以,把源代码编译没有错误等价为源代码正确,是错误的,把运行没有错误,等价为源代码正确,是错误的。

源代码格式的几点应该注意的事项(常识):
1、源代码的书写格式,应该体现源代码内部的逻辑关系;
2、源代码内部最重要的代码行是:空行;空行把代码分成各个相对独立的组成部分;
3、源代码内部第二重要的代码行是:注释行;
4、源代码行内最重要的字符是:空格;空格把代码行分成各个相对独立的组成部分;
5、源代码行内第二重要的字符是:制表符(Tab),制表符是行首缩进使用的字符;
6、注释合格的标准是:同等级技术能力的技术人员,可用比较方便的看懂代码;或者,应该从事该工作的技术人员可以容易的看懂;
7、注释行数应该占到总代码行数的三分之一;
8、每个源代码文件头部都必须有说明本文件功能的注释;
9、自己定义的每个函数都必须有说明函数功能的注释;
10、自己定义的每个变量都必须有说明变量功能的注释;
11、注释应该使用自己的母语(汉语);
12、一句注释合格的标准是,表达了需要表达的内容,语法正确;
13、清楚的注释能够方便代码阅读者理解代码的逻辑关系和各个函数的功能;
14、键盘上最重要的键是空格键,空格占英文文章的比例是20%左右;写软件源代码时,空格的比例也很大;所以,键盘上面积最大的键是空格;
posted @ 2007-04-18 09:08 石正 阅读(496) | 评论 (1)编辑 收藏
引用自 http://www.91php.cn/trackback.php?tbID=88&extra=964ce999cp

SQL Server 2000中,当新建一个空的数据库后,在查询分析器中执行
sp_database 或select * from sysobjects where xtype = 'U'
都会得到dtproperties表,并显示为用户表, 可这个表我从没有创建过。但是在企业管理器中,dtproperties却显示为系统表。难道是bug ? 查看dtproperties,里面没有数据,是个空表。在SQL Server联机丛书里没有关于这个表的描述。

      dtproperties表在企业管理器中无法删除,但在查询分析器中 执行drop table dtproperties却可以删除。
手工建立一个表,表名就叫dtproperties,然后再查看,在企业管理器中赫然显示为系统表!!  看来Bug是一定的了。
    
    重新创建一个数据库,  写个触发器,让其在dtproperties表执行insert时执行,然后在SQL Server里随意操作,hehe,终于发现,在新建关系图时,dtproperties表被插入数据,看来它是用来存储数据关系图的。呵呵,想点办法,数据关系图以后也可以备份下来了。


     再用drop table dtproperties删除表dtproperties,[手工创建dtproperties ,结构任意,]    然后在企业管理器中新建数据关系图,呵呵,SQL Server报错!再次证实前面的猜想!


     SQL Server 2005中dtproperties 表不存在了,取而代之的是sysdiagram (记不住具体的名称了) ,这个bug也不存在了,SQL Server 2005中的系统表和SQL Server 2000有了很大的不同。

posted @ 2007-04-05 10:21 石正 阅读(804) | 评论 (0)编辑 收藏
posted @ 2007-03-30 09:51 石正 阅读(165) | 评论 (0)编辑 收藏
VC++6 写完的程序程编译链接通过后,点运行的时候出现one   or   more   files   out   of   date   or   not   exist,解决办法。

把所有日期大于当前系统日期的文件,打开后,添加一个空格,然后保存,即可。

可以对照文件的目录,按时间倒序排列后,逐个处理。
posted @ 2007-03-22 17:10 石正 阅读(1244) | 评论 (2)编辑 收藏

sysobjects

在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

列名 数据类型 描述
name sysname 对象名。
Id int 对象标识号。
xtype char(2) 对象类型。可以是下列对象类型中的一种:

C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程

uid smallint 所有者对象的用户 ID。
info smallint 保留。仅限内部使用。
status int 保留。仅限内部使用。
base_schema_
ver
int 保留。仅限内部使用。
replinfo int 保留。供复制使用。
parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。
crdate datetime 对象的创建日期。
ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。
schema_ver int 版本号,该版本号在每次表的架构更改时都增加。
stats_schema_
ver
int 保留。仅限内部使用。
type char(2) 对象类型。可以是下列值之一:

C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程

userstat smallint 保留。
sysstat smallint 内部状态信息。
indexdel smallint 保留。
refdate datetime 留作以后使用。
version int 留作以后使用。
deltrig int 保留。
instrig int 保留。
updtrig int 保留。
seltrig int 保留。
category int 用于发布、约束和标识。
cache smallint 保留。

posted @ 2007-03-21 10:16 石正 阅读(2407) | 评论 (0)编辑 收藏
系统表的应用

系统表用的不多,写几个常用的系统表
各个数据库中的系统表:
1.SysObject:
  存放数据库中的各个对象!
  最重字段
   1.1 Name,Id,Crdate,Xtype (U :用户表,V:视图,Tr:触发器,P:存储过程,S,系统表)

   1.2 常用函数 Object_ID('对象名'),Object_Name 
   此外我们如果想生成1,2,3,4,5这样的等差数列,可以这样做
   Select Identity(int,1,1) As Id Into # From SysObjects,SysColumns  
2.SysColumns
  存放各列的信息
  最重字段
   2.1 Name,Id,Colid--字段在表中存放的顺序
   设一个表中字段有很多,想列出某表除某字段外的所有字段,可以这样写
   Declare @Fields Varchar(5000)
   Select @Fields=@Fields+Name
   From SysColumns
   Where Id=Object_ID('Test') and Name Not In ('字段1','字段2')
   又如如何用列序号选择特定列
   Create Function F_ColumnOrder(@TableName Varchar(10),@Colid Int)
   Returns Table
   As
   Return
   Select Name From SysColumns
   Where ID=Object_ID(@TableName) And Colid=@Colid
--Try
Select * From Dbo.F_ColumnOrder('Users',2)
  
3.SysFiles
  如果我们想知道SQL的数据文件存放目录的话,可以用
  Select FileName From SysFiles
4.SysComments
  保存视图或存储过程的语句!
5.Sysforeignkeys
  fkeyid:外键表对象ID,rKeyid:主键表对象ID
有时我们想把数据库中的所有表都去掉,但是有约束的存在,有些表必须在主表前删除,否则就会报错,

这种情况下我们就通过该表来实现
**********************************************************
Master表中的系统表
SysDataBases
  重要字段
    1.1 Name,Dbid,Crdate
      常用函数 DB_ID('数据库名')
sysaltfiles
    保存各个数据库的MDF文件的物理地址
SysProcesses
    保存进程信息
    Kill  spid 杀掉某进程

5.注意sp_MsForEachTable函数
  删除某数据库中表
   Exec Sp_MsForEachTable 'Truncate Table ?'
   注意:有约束的不能删除,会出错的
6.如果想改系统表怎么办?
  2种方法
    1.通过查询分析器改
    用如下语句:
     Exec Sp_Configure 'allow updates',1--允计修改
     Reconfigure with override
    
     Exec Sp_Configure 'allow updates',0--不允计修改
     Reconfigure with override    
    2.通过企业管理器改
     在SQL实例上右键-属性-允计修改系统目录直接进行修改

posted @ 2007-03-21 10:12 石正 阅读(712) | 评论 (0)编辑 收藏
master--->数据库的核心库,存储很多系统的信息和登录的信息等  
  tempd--->存储了诸如临时表等信息  
  Northwind--->北风数据库,是个例子数据库,可以模拟很多操作,并且提供例子供参考 

名称                           地址                                   说明  
   
  sysaltfiles               主数据库                               保存数据库的文件  
  syscharsets         主数据库                               字符集与排序顺序  
  sysconfigures     主数据库                               配置选项  
  syscurconfigs     主数据库                               当前配置选项  
  sysdatabases       主数据库                               服务器中的数据库  
  syslanguages       主数据库                               语言  
  syslogins                   主数据库                               登陆帐号信息  
  sysoledbusers     主数据库                               链接服务器登陆信息  
  sysprocesses       主数据库                               进程  
  sysremotelogins主数据库                               远程登录帐号  
   
  syscolumns           每个数据库                           列  
  sysconstrains     每个数据库                           限制  
  sysfilegroups     每个数据库                           文件组  
  sysfiles               每个数据库                           文件  
  sysforeignkeys   每个数据库                           外部关键字  
  sysindexs             每个数据库                           索引  
  sysmenbers           每个数据库                           角色成员  
  sysobjects           每个数据库                           所有数据库对象  
  syspermissions   每个数据库                           权限  
  systypes               每个数据库                           用户定义数据类型  
  sysusers               每个数据库                           用户    
posted @ 2007-03-21 10:07 石正 阅读(393) | 评论 (0)编辑 收藏
仅列出标题
共12页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last 
浅陋见解,仅供参考。抛砖引玉,多加指教!