源程序

2024-04-20

源程序(共9篇)

篇1:源程序

附件:病房管理源程序

#include #include #include #include #define ok 1 #define error 0 #define TURE 1 #define FALSE 0 #define max_name 21

typedef struct bed{

int

number;

/*床位号*/ int

live;

/*是否有人*/

unsigned char name[max_name];

/*人名最长长度*/ struct bed

*next;

/*下一个床铺*/ }bed;

typedef struct sickroom { int

number;

/*病房号*/ int

bednum;

/*房内床位数*/ int

livenum;

/*已住人数*/ struct sickroom *next;

/*指向下一个病房*/

struct bed *firstbed;

/*指向第一个床位*/ }sickroom;

int roomnum(sickroom *q)/*返回医院中的房间的个数*/ {

int i;

for(i=0;q!=NULL;i++)q=q->next;return i;}

int Initialization(sickroom *H)/*初始化操作*/ {

int i,n,k;sickroom *q,*sq;bed *p,*bp;printf(“----------------------请输入病房个数:”);scanf(“%d”,&n);getchar();

int i,x,n,m,y;sickroom *q;bed *p;q=H->next;n=roomnum(q);

printf(“请输入您要入住的病房号(目前共有%d个病房):”,n);scanf(“%d”,&x);getchar();printf(“n”);while(x>n||x<1){

printf(“您输入的病房号错误,请重新输入:”);

scanf(“%d”,&x);

getchar();

printf(“n”);} for(i=1;inext;

/*q指向选择的病房*/ m=q->bednum-q->livenum;if(m==0){

printf(“-------------------------此病房已满。。(回车继续)-----------n”);

getchar();

printf(“n”);

return 0;} p=q->firstbed;printf(“空床铺有:”);for(i=1;i<=q->bednum;i++){

if(p->live==0)printf(“ %d号床铺”,i);

p=p->next;} printf(“n输入您要选择的床铺号:”);scanf(“%d”,&y);getchar();p=q->firstbed;for(i=1;inext;

/*指向所选床铺*/ if(p->live==1){

printf(“-------------------------输入错误!(回车继续)----------------------------n”);

getchar();

return 0;} p->live=1;

{

printf(“-------------------------查无此床(回车继续)-----------n”);

getchar();

return 0;

} } if(q->live==0){

printf(“-------------------------此床铺为空!(回车继续)-------------n”);

getchar();

return 0;} q->live=0;p->livenum--;H->livenum--;printf(“-------------------------”);printf(“%s”,q->name);printf(“已成功出院!n”);printf(“------------------------(回车继续)----------------n”);getchar();for(i=1;i<=21;i++)q->name[i-1]=0;return 1;}

int searchsickroom(sickroom *H)/*查找出医院内病房空床位*/ {

int i,m,z=0;

sickroom *q;

q=H->next;

for(i=1;q;i++)

{

m=q->bednum-q->livenum;

if(m>0)printf(“

%d号病房有%d个床位n”,i,m);

else printf(“

%d号病房已满n”,i);

q=q->next;

z+=m;

}

printf(“

院中还剩%d个床位(回车继续)。。n”,z);

getchar();

return 1;}

int n=0,m=0;

sickroom *q;

bed *p;

char a[max_name];

printf(“n请输入您要查找的人名(二十个字符以内,以空格结束):”);

scanf(“%s”,a);

getchar();

for(q=H->next;q;q=q->next)

{

for(p=q->firstbed;p;p=p->next)

{

if(p->live==1)

if(strcmp(a,p->name)==0)

{

n=q->number;

m=p->number;

}

}

}

if(m==0&&n==0)

{

printf(“-------------------------查无此人(回车继续)------------n”);

getchar();

}

else

{

printf(“

此人目前住在%d号房%d号床。。n”,n,m);

printf(“---------------------(回车继续)-----------------n”);

getchar();

}

return 1;}

int nowhospital(sickroom *H)/*显示目前医院的住院情况*/ {

int i;

sickroom *q;

bed *p;

i=0;

for(q=H->next;q;q=q->next)

{

printf(“n病房%d —>t”,q->number);

for(p=q->firstbed;p;p=p->next)

if(i==2)searchbed(H);

else

if(i==3)

searchpeople(H);

else

if(i==4)

nowhospital(H);

else

if(i==0);

else

{

printf(“输入错误!(回车继续)n”);

getchar();

}

}while(i!=0);

return ok;}

void main()/*主程序*/ {

int i;

sickroom H;

system(“CLS”);

printf(“********12**************14************12************14********12*********12 n”);

printf(“

_______________________________________________________

n”);

printf(“

n”);

printf(“

欢迎进入医院管理程序!!

n”);

printf(“

n”);

printf(“

请先对医院进行初始化。。(回车键继续)

n”);

printf(“

1_____________________________________________________ 2

n”);

getchar();

Initialization(&H);

printf(“n”);

do

{

system(“CLS”);

printf(“********12**************14************12************14********12******12********n”);

printf(“

_____________________________________

n”);

printf(“

n”);

printf(“

选择菜单:

n”);

printf(“

[1] 入院操作

n”);

printf(“

[2] 出院操作

n”);

printf(“

[3] 查询医院信息

n”);

printf(“

[0] 退出医院

n”);

篇2:源程序

一天下午,妈妈在教室里滔滔不绝地讲她的计算机课:“由制作网页的基础语言组成的程序,称为源程序。这里可以看到源程序……”为了让学生们能记住这个概念,妈妈特意在说“源程序”这三个字时,加重了语气。

“嘻嘻……”有学生在下面抿着嘴笑。

“……明白了吗?这就是我们所

说的源程序。”妈妈有点疑惑,不知道学生为什么笑。她怕他们不理解,就慎重地将源程序的概念又说了一遍。

“哈哈哈……”有学生忍不住笑出声来。

“请安静,不要笑!我说错了吗?源程序的`概念就是这样的!”妈妈刚说完,下面又传出了一串笑声。

妈妈神情茫然,一头雾水。

妈妈是个做事认真的人。为了验证自己的说法,她翻了好几本参考书,可没有发现不妥之处。妈妈犯愁了,上课时学生们奇怪的笑声和古怪的神情在她的脑海里挥之不去。我听她说完这事的始末后,也百思不得其解。

双休日,我们去奶奶家。我的几个表哥吵着要看“F4演唱会”。“F4!”我忽然想起“F4”中有一个成员叫言承旭,他是不少学生的偶像,会不会……

篇3:源程序间调用关系的分析软件

软件维护阶段在软件开发的全过程中占有举足轻重的地位。一个软件开发机构可能要把60%以上的精力用在维护已有的软件上。随着更多的软件被开发出来, 这个百分比会增大。这将束缚开发机构去生产新的软件。因此, 加速软件维护的进程是提高软件生产率的有效途径。

对大型项目来说, 软件开发过程产生的源程序有庞大的规模, 源程序间的调用关系复杂。对这种具有复杂结构的软件进行维护有相当大的难度, 要耗费相当多的人力、物力和财力。但是, 了解源程序间的调用关系后, 软件维护人员可以加速维护进程。

软件被交付使用后, 如果开发者维护它, 那么当然不会有很大的困难, 但是, 如果由其他人维护, 由于不了解该软件的结构之一――源程序间的调用关系, 维护工作就很难。然而, 即使非开发者维护, 借助于分析源程序结构的工具软件, 非开发者也能对软件有大致的认识。这样的维护工作比较容易。

为加速软件维护的进程, 开发了一种工具软件, 以下简称“分析软件” (源程序清单见附录一) 。该软件易于操作, 可被用于分析若干个DBase、Fox Base、Fox Pro源程序间的调用关系, 运行于Visual Fox Pro环境下。

2 数据库设计

分析软件是基于数据库管理系统 (DBMS) ――Microsof Fox Pro 6.0的软件, 该DBMS支持关系模型和过程化的程序设计。

根据数据的性质, 为分析软件的数据库分配两个工作区:1区和2区。各区存放不同的数据信息。

1区存放源程序的源代码信息。与之相应的数据表 (ZHK.DBF) 的每个记录存放一行源代码。该表的结构如表1所示。

2区存放反映源程序调用关系的数据信息。与之相应的数据表 (Result.DBF) 的结构如表2所示。

在各字段中, 数据的意义如表3所示。

3 分析软件的功能

3.1 录入与处理数据

用户按照屏幕提示输入数据后, 分析软件自动进行处理, 将处理后的数据存入数据表Result.DBF。

3.2 输出“调用关系”

分析软件可将指定源程序的调用关系输出到屏幕或打印机上。

4 分析软件的源程序

5 结语

用上述分析软件来维护他人开发的软件, 大大节省了维护时间, 提高了软件维护工作的效率。如果被维护的软件规模越大, 就越能体现出上述分析软件的高效性。

摘要:从设计与实现的角度阐述了一种用Visual FoxPro语言开发出的工具软件, 该软件可被用于分析若干个源程序间的调用关系。

关键词:Visual FoxPro语言,源程序分析,调用关系,软件维护

参考文献

[1]倪国熙.FoxPro入门.江西科学技术出版社, 2000.

[2]冯玉琳, 赵保华.软件工程.中国科学技术大学出版社, 2002.

篇4:算法与程序·程序框图

[开始] [产生0~1之间的两个随机数 分别赋给[xi,yi]] [输出[P]][结束] [是][否] [是]

A. [P=N1000] B. [P=4N1000]

C. [P=M1000] D. [P=4M1000]

2. 执行如图所示的程序框图,输出的[S]的值为( )

[开始] [输出[S]][结束] [否] [是]

A.1 B. [23] C. [1321] D. [610987]

3. 如图所示的程序框图中,令[a=x,b=-x,][c=12x+1],若给定一个[x]值,输出的结果仅仅适合[12x+1],则这样的[x]的取值范围是( )

[开始] [输出[a]][结束] [是][否] [输入[a,b,c]] [是] [否]

A. [-∞,-23] B. [-23,2]

C. [-23,2] D. [2,+∞]

4. 如图所示,程序框图的输出结果是( )

[开始] [输出[S]][结束] [否] [是]

A. [16] B. [2524] C. [34] D. [1112]

5. 执行如图所示的程序框图,如果输出的[S=3],那么判断框内应填入的条件是( )

[开始] [输出[S]][结束] [否] [是]

A. [K≤6] B. [K≤7]

C. [K≤8] D. [K≤9]

6. 执行如图所示的程序框图,如果输入的[N=10],那么输出的[S]的值为( )

[开始] [输出[S]][结束] [否] [是] [输入[N]]

A. [1+12+13+…+110]

B. [1+12!+13!+…+110!]

C. [1+12!+13!+…+110!+111!]

D. [1+12+13+…+110+111]

7. 如果执行如图所示的程序框图,输入正整数[N]([N]≥2)和实数[a1,a2,a3,]…,[aN],输出[A,B],则( )

A. [A+B]为[a1,a2,a3,]…,[aN]的和

B. [A+B2]为[a1,a2,a3,]…,[aN]的算术平均数

C. [A]和[B]分别是[a1,a2,a3,]…,[aN]中最大的数和最小的数

D. [B]和[A]分别是[a1,a2,a3,]…,[aN]中最大的数和最小的数

[开始] [输出[A,B]][结束][是][否] [输入[N1,a1,a2,a3,…,aN]] [是][否] [是][否]

8. 如图,[x1,x2,x3]为某次考试三个评阅人对同一道题的独立评分,[p]为该题的最终得分,当[x1=6,x2=9,p=8.5]时[x3]等于( )

[开始] [输出[p]][结束] [否] [是] [输入[x1,x2]] [输入[x3]] [是][否]

A. 11 B. 10 C. 8 D. 7

9. 执行如下图所示的程序框图,输入[l=2,][m=3,][n=5],则输出的[y]的值是 .

[开始] [输出[y]][结束] [否] [是] [输入非负整数[l,m,n]] [否][是]

篇5:简易水电费管理系统源程序代码

法一:

#include #include #include struct member {char no[100];char name[20];char password[20];float wfee;float efee;}memb;void newadd(int n){ int t,i;fseek(fp,0,SEEK_END);printf(“>>新添人数:”);scanf(“%d”,&t);for(i=0;i>输入卡号:”);scanf(“%s”,a);int i=0;rewind(fp);while(1)

{ fread(&memb,sizeof(struct member),1,fp);if(feof(fp)||memb.no==a)break;i++;} if(!feof(fp)){ printf(“>>卡号:”);printf(“%sn”,memb.no);printf(“>>姓名:”);printf(“%sn”,memb.name“);printf(”>>水费:“);printf(”%fn“,memb.wfee);printf(”>>电费:“);printf(”%fn“,memb.efee);

} else

printf(”>>查无此人n“);};void delete(int n){ char c[100];printf(”>>删除的卡号:“);scanf(”%s,“ c);if((fp1=fopen(”temp.bin“,”wb“))==NULL){

printf(”>>不能建立临时文件,无法删除n“);} rewind(fp);while(1){ fread(&memb,sizeof(struct member),1,fp);if(feof(fp))break;if(memb.no!=c)fwrite(&memb,sizeof(struct member),1,fp1);} fclose(fp1);fclose(fp);remove(”member.bin“);rename(”temp.bin“,”member.bin“);fp=fopen(”member.bin“,”rb++“);};main(){ char a[100];char b[20];FILE *fp;printf(”欢迎进入水电费管理系统n“)int i=0,sel=1;if((fp=fopen(”member.bin“,”wb++“))==NULL){ printf(”>>不能建立member.bin文件n“);return(0);} while(sel!=0){ printf(”| 1 | 2 | 3 | 4 |n“);printf(”|-----------------------------|n“);printf(”|新添成员

|查找个人信息

|删除成员

|退出

|n);fseek(fp,0,SEEK_END);scanf(“%d”,&sel);switch(sel){ case 1: newadd(sel);break;clscr();exit(0);case 2: printf(“请输入您的卡号:”);

printf(“%s”,a);printf(“请输入您的密码:”);puts(b);while(strcmp(a,memb.no)==0&&strcmp(b,memb.password)==0)look(sel);printf(“您的输入有误n”);break;clscr();exit(0);

case 3: delete(sel);break;clscr();exit(0);}

法二:

#include #include #include #include #include struct member {char no[100];char name[20];char password[20];float wfee;float efee;}memb;void newadd(int n){ int t,i;FILE *fp;fp=fopen(“e:member.bin”,“a”);fseek(fp,0,SEEK_END);printf(“>>新添人数:”);scanf(“%d”,&t);for(i=0;i

if(fp==NULL)printf(“****”);printf(“>>输入卡号:”);scanf(“%s”,a);i=0;rewind(fp);while(1)

{ fread(&memb,sizeof(struct member),1,fp);if(feof(fp)||strcmp(memb.no,a)==0)break;i++;} if(!feof(fp)){ printf(“>>卡号:”);printf(“%sn”,memb.no);printf(“>>姓名:”);printf(“%sn”,memb.name);printf(“>>水费:”);printf(“%fn”,memb.wfee);printf(“>>电费:”);printf(“%fn”,memb.efee);} else

printf(“>>查无此人n”);getch();fclose(fp);} void dele(int n){ char c[100];FILE *fp,*fp1;fp=fopen(“e:member.bin”,“rb”);printf(“>>删除的卡号:”);scanf(“%s” ,c);

if((fp1=fopen(“temp.bin”,“wb”))==NULL){

printf(“>>不能建立临时文件,无法删除n”);} rewind(fp);while(1){ fread(&memb,sizeof(struct member),1,fp);if(feof(fp))break;if(strcmp(memb.no,c)!=0)fwrite(&memb,sizeof(struct member),1,fp1);} fclose(fp1);fclose(fp);remove(“member.bin”);rename(“temp.bin”,“member.bin”);

fp=fopen(“member.bin”,“rb+”);} main(){ char a[100];char b[20];int i=0,sel=1;FILE *fp;printf(“欢迎进入水电费管理系统n”);if((fp=fopen(“e:member.bin”,“wb”))==NULL){ printf(“>>不能建立member.bin文件n”);return(0);} while(sel!=0){ printf(“| 1 | 2 | 3 | 4 |n”);printf(“|-----------------------------|n”);printf(“|新添成员

|查找个人信息

|删除成员

|退出

|n”);fseek(fp,0,SEEK_END);scanf(“%d”,&sel);printf(“sel=%dn”,sel);switch(sel){ case 1: newadd(sel);

system(“cls”);break;case 2: look(sel);system(“cls”);break;

case 3: dele(sel);system(“cls”);

break;

篇6:源程序

程序:(注 已完全经过调试,达到预期目的)

#include #define uchar unsigned char #define uint unsigned int uchar count=0;sbit LED=P1^0;

uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示数码管

0,1,3,4,5,6,7,8,9 uchar miao=0,fen=0,hour=0;

void delay(uint i)//延迟函数 { uint j;for(;i>0;i--)for(j=124;j>0;j--);}

void init(){ ET0=1;TMOD=0x51;//选定定时器0,1和中断0,1 TH0=(65536-25000)/256;TL0=(65536-25000)%256;//设定时器0时间为250ms一次

ET1=1;TH1=0xff;TL1=0xff;//定时器1为中断

EX0=1;IT0=1;//中断0开

EX1=1;IT1=1;//中断1开

TR0=1;//定时器0开 TR1=1;//定时器1开 EA=1;//总中断开 }

void display()//时钟显示函数 { P0=tab[hour/10%10];P2=0xfe;delay(1);P0=tab[hour%10];P2=0xfd;delay(1);P0=tab[fen/10%10];P2=0xfb;delay(1);P0=tab[fen%10];P2=0xf7;delay(1);P0=tab[miao/10%10];P2=0xef;delay(1);P0=tab[miao%10];P2=0xdf;delay(1);}

void main()//主函数 { init();LED=0;while(1){ display();}

}

void T0_int()interrupt 1 //{ TH0=(65536-25000)/256;TL0=(65536-25000)%256;count++;if(count==20){ count=0;miao= miao +1;LED=~LED;if(sec==60){ miao=0;

fen= fen +1;

定时器0函数

if(fen ==60)

{

fen =0;

hour=hour+1;

if(hour==24)

hour=0;

} } } }

void T1_int()interrupt 3 //{ TH1=0xff;TL1=0xff;miao=miao+1;if(miao ==60)miao =0;}

void I1_int()interrupt 2 //{ EX0=0;fen= fen +1;if(fen ==60)fen =0;EX0=1;}

void I0_int()interrupt 0 //{ EX1=0;hour=hour+1;if(hour==24)hour=0;EX1=1;}

篇7:党员发展程序-入党程序

一、入党申请书内容

1、对党的认识

2、入党动机

3、个人的现实表现

二、确立入党积极分子——预备党员可为其培养联系人

三、考察期为一年

一年的考察期从党支部将该生确立为入党积极分子算起。党支部可在半年时对该生进行考察,要求真实、具体、准确。

四、确定发展对象:听取各方面意见,在入党积极分子中确定入党积极分子。

五、入党前的培训:院、系级业余党校的学习

六、准备材料

1、入党申请书

2、个人自传

1本人简历

○2家庭主要成员及个人的政治状况

○3个人的现实表现及自我评价 ○

3、思想汇报

4、外调材料——政治审察,大是大非前的态度。材料中须出现本人、其直系亲属、主要社会关系的情况,若有父、母亡故或离异的要说明。

5、党外群众意见——群众评议的原始记录

6、两级业余党校结业证的复印件

7、党支部的综合考察意见

1被发展人的简历

○2本人及其亲属的政治审察结果

○3培养过程及现实情况

○4支部表决结果 ○

8、入党积极分子考察表

9、团总支意见(即团总支的介绍信,从团内推优入党的学生需此材料)

七、把材料报送党委组织部审察

八、领取、发放入党志愿书,确定介绍人。介绍人必须是正式党员:

1、要了解被介绍人情况,向介绍人宣讲党的知识

2、指导被介绍人填写入党志愿书,实事求是,表明立场

3、介绍人应向被介绍人说明,入党志愿书不能照搬,要表达当前对党的认识

九、支部大会:

1、由支部书记主持召开

1申请人汇报对党的认识

○2介绍人发表对被介绍人的入党意见

○3支部会议宣布考察材料

○4支部大会表决 ○

2、介绍人及被介绍人必须参会 支部大会决议:

1、何时召开大会,到会情况

2、大会的讨论情况

3、表决结果

4、支部书记签字

十、上级党支部委员与被发展人谈话并记录

十一、材料报送党委组织部

篇8:源程序与文档复制检测系统的研究

1 文本复制检测技术的发展

1.1 程序复制检测技术的发展

最早在20世纪70年代初就有学者研究阻止拷贝程序代码的技术和软件。Ottenstein在1976年首次提出了基于属性计数法(attribute counting)检测软件剽窃的方法。但是,单纯的属性计数法抛弃了太多的程序结构信息,导致错误率太高。Verco和Wise在1996年指出,对于仅仅使用属性计数法的检测算法,增加向量维数并不能改善错误率。改进属性计数法的措施就是加入程序的结构信息,结合结构量度(structure metrics)来检测剽窃。现在检测程序复制都是用属性计数和程序结构度量相结合的方法。

1994年由Alex Aiken开发的MOSS系统主要用于检测用C,C++,Java,Pascal,Ada,ML,Lisp,Scheme等编写的源程序的相似性。该系统以网络服务的形式供用户使用,主要用于检测程序设计类课程作业中的抄袭问题。用户将程序文件集提交给系统后,系统以HTML格式将相似的程序对返回给用户。Micheael Wise于1992年开发了YAP1,不久又开发了更优越一些的YAP2,1996年开发出了YAP的最终版本YAP3.YAP1和YAP2主要用于检测程序抄袭,YAP3不仅可以检测程序代码的抄袭,还可以检测自然语言文本间的相似性。JPlag是用Java语言编写的在互联网上提供服务的系统,使用的比较算法与YAP3相同,也是Greedy String Tiling但优化了YAP3的时间复杂度。JPlag支持Java,C,C++,Scheme编写的源程序和自然语言文本。SIM系统是Dick Grune开发的,该系统可用于检测程序或软件项目中的代码抄袭,它直接使用了用于检测DNA序列相似性的一种字符串排列程序,系统返回0.0到1.0作为两个程序相似度的度量值。

1.2 自然语言文本复制检测技术发展

自然语言文本复制检测技术的出现比程序复制检测晚了20年。1993年,ARIZONA大学的Manber提出了一个sif工具,用于在大规模文件系统中寻找内容相似的文件。1995年,Standford大学的Brin和Garcia-Molina等人在“数字图书馆”工程中首次提出了文本复制检测机制COPS系统与相应算法。Garcia-Molina和Shivakumar等人又提出了SCAM原型改进COPS系统。同期,贝尔实验室的Heintze开发了KOALA系统用于剽窃检测。香港理工大学的Si和Leong等人建立的CHECK原型采用统计关键词的方法来度量文本相似性。到了2000年,Monostori等人建立了MDR原型。2003年,西安交通大学宋擒豹等人提出了CDSDG系统,这是为了解决数字商品非法复制和扩散问题而开发的一个基于注册的复制检测原型系统。

2 文本复制检测方法

2.1 程序复制检测技术

2.1.1 属性计数法

Halstead提出的软件科学度量方法是最早和最典型的属性计数法。剽窃检测中常用的属性计数法度量指标主要有容量、控制流、结构、数据依赖、嵌套深度、控制结构,被Sallies等描述为一个“六元组”向量。使用属性计数法来进行源代码的剽窃检测时,首先对能表示程序特性的度量指标进行统计,生成其特征向量,然后可用向量空间模型的夹角余弦公式来度量向量之间的相似性。令P1表示候选程序,其词频向量为P1(ε1,ε2,…,εn),P2表示待检测程序,其词频向量为P2(ψ1,ψ2,…,ψn),其中εi1、ψi(1≤i

2.1.2 结构度量法

基于结构度量法的剽窃检测通过对程序的内部结构进行分析比较来判断其相似性。其过程主要有两个步骤:第一阶段,对程序代码进行词法或语法分析,产生标准化输出。对于程序的标准化意味着将同义词映射为统一的形式,将所有用户自定义标识符转换为特定的符号,删除空白和注释,将大写字母转化为小写等,即将源代码转化为标记(Token)串。第二阶段,采用字符串匹配技术两两比较各程序的标准化输出,求出其相似度。其过程如图1所示。

2.2 自然语言复制检测技术

2.2.1 基于字符串比较的方法

基于字符串比较的方法基本思想是:从文档中选取一些字符串作为“指纹”(也称特征),然后把这些“指纹”映射到Hash表中,一个“指纹”对应一个Hash值,待检测文档的Hash值与已注册文档的Hash值进行比较得出相似度。例如,当比较文档a与b时,先生成a和b各自的数字指纹,再对这些数字指纹进行匹配,根据a和b中指纹匹配的数量来计算其相似程度。

在这个过程中,有四个方面需要考虑:(1)从文档段落或语句生成指纹的Hash函数(即指纹的生成);(2)从文档中选取的段落或语句的长度(即指纹粒度);(3)体现文档特征所用指纹的数量(即指纹分辨率);(4)从文档中选取段落或语句的方法(即选取策略)这四个方面的不同会产生不同的指纹算法,得到不同的识别效果。

2.2.2 基于词频统计的相似度计算方法

基于词频统计的相似度计算方法是借鉴信息检索领域的向量空间模型(VSM)来进行文本表示,将自然语言文本表示成文本空间的一个向量,向量的每个元素是文档中提取的有代表性的特征项的权值,文本的特征项包括字,词语,句子等不同粒度的文本单位,通过计算向量的夹角余弦或距离来进行文本间的相似度。向量空间模型应用到文本复制检测,改变了以往的直接进行语句匹配的思想,从不同的粒度来进行文本复制,当文本的相似度大于一定阈值时就判断存在复制现象,从一定程度上避免了漏判的错误。

在此方法中,需要注意的问题是:(1)统计对象,词频统计应该统计的是能够表达篇章语义的实词,对于虚词,停用词,高频词等不应作为统计对象,这样可以提高计算效率。(2)统计范围,词频统计应统计整篇文章还是分别统计篇章中的各个部分,最后再将结果综合起来,需要试验来确定。(3)统计方法,词频统计使用什么样的方法对计算结果有很大的影响,应对不同的词赋予不同的权值,以此控制统计的准确率。

3 系统模块

该系统主要有以下几个模块构成:文档注册模块、数据库模块、复制检测模块等。(见图2)

3.1 注册模块

该模块负责向数据库中添加文档和程序,并对原始文档进行清洗和初步处理。经过该模块处理过的数据都是经过格式转换、分割文档、代码的预处理,过滤掉其中的注释和无用的空白。经过一系列的处理后,系统自动生成唯一的ID号,然后把ID号添加到映射列表中。

3.2 数据库模块

数据库模块中包含一些表,以支持一些必要的文档特征匹配操作以及用户信息。本系统采用SQL Server2005。

3.3 复制检测模块

该模块负责把待检测文档或程序生成的特征与数据库中已有文档和程序的特征进行比较,依据相似性公式,得出待检测文档和程序的相似度。最后,判断是否属于剽窃。如果相似度大于规定的阈值,就说明剽窃了数据库中已有的内容,不能注册到数据库中,并返回用户信息。

4 实验

服务器一台(Pentium E2140,2GB),客户端4台(P4 2.4GHz,512MB),在任意一台客户端上都可以进行检测并显示结果,见表1。

5 结束语

复制检测技术在保护知识产权和提高信息检索效率方面起着重要作用,程序复制检测技术研究始于20世纪70年代,自然语言文本复制检测技术研究始于20世纪90年代。初期的程序复制检测只用简单的属性计数法来检测程序,现在都需要综合属性计数和结构量度两方面的信息。文本复制检测有两类基本的检测方法,一类是基于字符串比较的方法,另一类是基于词频统计的方法。

通过本文提出的基于匹配方法的复制检测系统,可以有效地通过比较源程序段的特征来进行复制检测和中、英文档的复制检测。展望未来,复制检测技术将会得到广泛的应用,其技术的进步也会极大地保护数字文档的知识产权。

摘要:复制检测技术在知识产权保护和信息检索中有着重要应用。该文介绍了自然语言和程序代码复制检测技术的发展,构建了一个基于匹配方法的复制检测系统,在端正学术之风和防止程序代码抄袭等方面都起到了积极作用。

关键词:自然语言,源代码,复制检测,知识产权

参考文献

[1]鲍军鹏,沈钧毅,刘晓东,等.自然语言文档复制检测研究综述[J].软件学报,2003(10):95-102.

[2]史彦军.抄袭论文识别研究与进展[J].大连理工大学学报,2005(1):50-57.

[3]Halstead M H.Elements of software science[M].New York:North Holland,1977.

[4]Ottenstein,Karl J.An Algorithmic Approach to the Detection and Prevention of Plagiarism[J].ACM SIGCSE Bulletin,1976,8(4):30-41.

[5]Wise MJ.YAP3:Improved detection of similarities in computer programs and other texts.In:Proceedings of the SIGCSE'96.1996,130-134

[6]Shivakumar N,Garcia-Molina H.SCAM:A copy detection mechanism for digital documents.In:Proceedings of the 2nd InternationalConference in Theory and Practice of Digital Libraries(DL'95).1995.

篇9:从程序正义谈公司清算程序

【关键词】 公司清算程序 程序正义 立法完善

一、程序正义

1、程序正义的起源。程序正义最早起源于英国,最早见于1215年的英国《自由大宪章》,英国的程序正义体现了“任何人都不应该当成自己案件的法官”和“当事人有陈诉和被倾听的权利”。美国法的程序公平观念是围绕正当法律程序观念展开的,而这一观念源于英国。美国的程序性正当法律程序的目的是禁止政府未经正当的手续就剥夺公民的生命、自由和财产。

2、实体正义与程序正义的由来。亚里士多德曾把社会制度正义划分为“分配的正义”和“平均的正义”,“分配的正义”和“平均的正义”法律化、制度化,就产生了“实体正义”和“程序正义”。实体正义是社会“公正”的分配原则具体化为法律上的权利和义务,从而实现对资源、财富、权利和职责等进行权威性的“公正”的分配。程序正义也即诉讼的正义即运用平等、公正、正直的原则,设计获得正当性结果的步骤与方式,公正和平地解决社会纠纷和争端。前者是关于结果的正义,即结果是“每个人得到了他应当得到的”或“同等情况下的人们都得到了同等对待”,只要结果正确,无论过程、方法或程序怎样都无谓,就是实现了正义,后者是关系诉讼过程的正义,考虑程序自身的存在理由,以及正义的程序和非正义的程序,只要严格遵守了正当程序,结果就被视为是合乎正义的。程序正义是实现实体正义的前提,没有程序正义的保障就没有实体正义的实现。

3、程序正义的标准。程序正义属于程序的内在性价值。程序正义的标准应该包括以下几个方面:一是程序合理性。如果程序不合理,则通过该程序所产生的裁判也难以保证其公正性、正确性。程序正义不仅具有形式上的合理性,也具有实质上的合理性。程序正义在形式与实质、稳定与变化之间力求平衡的特点,可以称之为反思合理性。二是程序中立性。中立性是指程序主持主体在发生争议的各方参与者之间,应保持一种无偏袒的态度,而不得对任何一方存有偏见和歧视。此外,中立性还要求程序主持主体对有关的程序主持采取回避原则。三是程序平等性。平等性是指程序主持主体应对参与程序的主体的双方平等对待。四是公开性。公开性是指任何一个正义的程序,都应当以公开性为其基本的标准和要求。例如公开听证原则,这是英美普通法的一个重要原则,指任何权力必须公正行使,对当事人不利的决定必须听取他的意见。任何一种听证形式,都必须包含正当法律程序的核心内容:当事人有得到通知及提出辩护的权利。

4、程序正义价值。程序正义在法治实践中有重要的价值,主要体现在以下几个方面:一是程序正义对于权力具有制约作用。首先,程序正义对立法权的控制。程序正义对立法权的控制是通过设立选举程序、立法程序、司法审查程序等来进行的。其次,程序正义对行政权的控制。程序正义在对行政权的控制上的具体原则为程序公正原则,有关这方面的程序制度有听政制度、回避制度、行政公开制度、职能分离制度等。再次,程序正义对司法权的控制。程序正义对司法权的控制表现为诉讼中的独立审判原则、公开审判原则、回避原则、两审终审原则和相应的原则。二是程序正义对于保障和实现人权具有重要意义。程序正义是保障人权的基本手段,程序正义指导立法确认人权,并通过救济维护人权。程序正义体现了平等的参与性,法律面前人人平等。三是程序正义能更好地促进法律的实施和遵守。程序正义是看得见的正义,具有客观性,有利于消解社会矛盾,能强化法律的权威。四是程序正义有利于法制的进一步完善。程序正义可以推动民主政治建设,促进公权力和私权力的平衡,程序规则可以弥补实体规则的不足。程序正义可以消除一些不正义。

二、公司清算程序

我国实行的是“先解散后清算”制度,依导致公司解散的原因不同,可以将公司清算分为破产清算和解散清算,破产清算依据破产法程序进行,解散清算则须依公司法程序进行,在此所说的公司清算是指解散清算,并不涉及破产程序。公司清算程序属于公司的外部行为,外部行为的程序相对而言应当更具强制性,赋予公司选择的余地较小。

我国新《公司法》规定的公司清算,是为了保护股东和债权人的利益,除因合并、分立而解散外,其他原因引起的公司解散均必须经过清算程序将公司财产向债权人和股东分配。公司清算的目的是了结公司现存的各种法律关系,保护债权人和股东的合法利益,使公司的法人资格最终消灭。

我国新公司法规定的清算程序,是以普通清算为原则,法院主持的特别清算为补充的清算体系,即不论自行解散还是强行解散,均优先适用普通清算程序,由公司自行成立清算组;人民法院可以在公司逾期不进行清算的情况下,依债权人的申请,组织清算组进入特别清算程序。普通清算是指根据公司章程,或者公司股东、董事或公司股东大会的决定,由公司自行依法组织的清算组依法定程序自行进行的清算。特别清算是指由行政机关或法院介入的清算程序。

根据新《公司法》,公司清算程序具体为:第一,成立清算组。清算组是指在公司解散后从事公司的清算事务,处理公司财产和债权、债务关系的事务执行机关。各国一般规定的是清算人,而我国则规定的是清算组。第二,通知、公告债权人并进行债权登记。根据《公司法》第186条,清算组应当自成立之日起10日内通知债权人,并于60日内在报纸上公告,以催告债权人申报债权。债权人应当自接到通知书之日起30日内,未接到通知书的债权人自公告之日起45日内,向清算组申报债权。第三,清理公司财产。清算组负责清理公司财产,清算组在清理公司财产、编制资产负债表和财产清单后,发现公司财产不足清偿公司债务的,应当立即向人民法院申请宣告公司破产。第四,提出并确认清算方案。清算组在清理财产后应制定合理的清算方案,根据《公司法》第187条第1款,清算方案应报股东会、股东大会或者人民法院确认。第五,分配公司财产。清算的核心是分配财产,公司财产只能在清偿公司债务后,方可分配给股东,有限责任公司按股东的出资比例分配,股份有限公司按照股东所持股份比例分配。第六,清算程序完结。公司清算结束后,清算组应当制作清算报告,报股东会、股东大会或者人民法院确认,并报公司登记机关,申请注销公司登记,公告公司终止。

公司的清算程序可以实现对股东、债权人、公司职工甚至社会利益的维护和平衡,是程序正义的体现。新公司法进一步规范了公司的清算程序,例如建立了特别清算程序,赋予了法院对清算事务的司法干预权力,法院可以在债权人的申请下及时组织清算组。

三、程序正义在新《公司法》规定的公司清算程序中的体现

程序正义是我国法律逐步走向成熟与完善的标志,也是我国当前改革的一项重要内容。我国新公司法修改,进一步规范了公司的清算制度,明确了清算主体,强化了清算责任,并运用了程序正义来保障公平。

公司的解散和清算是现实中发生比较多的一类纠纷,并且往往相当复杂,不进行清算就擅自解散的公司相当普遍,对债权人的保护相当不利,基于这种局面,新公司法花了很大篇幅细化了公司的解散和清算制度,明确了清算主体,强化了清算责任,这些修改相对于旧公司法来说,是一个明显的进步。公司的清算问题的彻底解决对于公司建立合理、完善的清算制度和运作机制,避免清算之前之中之后的违法行为发生,使我国公司清算的风险甚至假解散真逃债的损害减小到最低,意义深远。正当的清算程序可以有效地保护债权人的利益,并维护清算主体作为企业开办的商业信誉。

公司清算程序的最大价值在于,通过该制度确保公平对待被清算法人的所有债权人,防止因为个别债权人利用先机主张先行给付,损害其他债权人的利益。我国的新《公司法》规定的公司清算程序体现了程序正义,公司清算程序反映了程序合理性、程序中立性、程序平等性、程序公开性、程序可操作性、程序时效性等。

1、体现了程序合理性的要求。增加了特别清算程序,赋予了法院对清算事务的司法干预权力,法院可以在债权人的申请下及时组织清算组,完善了原《公司法》中的“主管机关”的设计缺陷,原《公司法》规定“公司因主管机关行政处罚而强制解散时,则由主管机关组织成立清算组”,因“主管机关”概念不明确,造成了实践操作中的混乱的问题,按照新《公司法》的规定,行政机关不再负责公司的清算事务。

2、体现了程序中立性的要求。公司清算程序是为了保护公司债权人、公司股东、债务人以及公司的职员等多方主体的利益。在特别清算程序中,法院的职责是在债权人的申请下及时组织清算组,法院并非清算主体,而只是依法主导公司进入清算程序的机关,而不是代替公司进行清算。

3、体现了程序平等性的要求。法律面前人人平等意味着无差别对待,即不允许出现无义务的权利和无权利的义务。为了全面保护债权人的利益,防止清算组对个别债权人进行优先清偿,新《公司法》第186条还增加了“在申报债权期间,清算组不得对债权人进行清偿”的规定。公司清算是依法定程序清理公司债权债务,处理公司剩余财产并终止公司法律人格的行为。它牵涉对公司股东、公司的债权人、债务人以及公司的职员等多方主体利益,一旦公司解散,股东未依法清算,并借机私分和转移公司财产,利益相关者利益受损无从得到救济,会对整个市场秩序和经济运转都会构成隐患、危害。因此确定具有程序正义的公司清算程序格外重要。

4、体现了程序公开性的要求。新《公司法》第184条至190条对于公司清算程序有具体的规定。

5、体现了程序可操作性的要求。新《公司法》在清算程序完结程序中,规定“申请注销公司登记,公告公司终止”,删除了原《公司法》“不申请注销公司登记的,由公司登记机关吊销其营业执照,并予以公告”这一规定,这主要是针对实践中将吊销营业执照与注销公司登记相混淆的情况所作出的修订,实际上,吊销企业法人营业执照与注销企业法人登记的效力是有区别的,实践中因原《公司法》的规定,使对企业法人营业执照被依法吊销后,法人资格问题有争论。新《公司法》的修订,既使法律规定符合法理上对于营业执照效力的规定,同时也有利于对债权人及其他利益相关人的保护。

6、体现了程序时效性的要求。公司清算是清算主体的义务行为,当以科学的程序和方法予以规制。新《公司法》对清算的运行程序作了简化,如按第186条规定,清算组应当自成立之日起十日内通知债权人,并于六十日内在报纸上公告即可,不再强制要求必须三次。未接到通知书的债权人申报其债权的期限自公告之日起由90天改为45日内,有利于公司清算高效、便捷进行。此外,新《公司法》明确了清算组成立期限的起始日,原《公司法》第191条对于15日计算的起始日未作规定,给司法实践中确认是否逾期成立清算组带来了一定的困难。

公司清算程序,对于我国的法治发展具有极其重要的意义,公司的清算涉及到股东、债权人、公司职工等众多社会主体的利益,因此,为了维护社会的稳定,平衡各方利益,就必须保证清算的公正性,必须运用程序正义原则。

【参考文献】

[1] 乔裕:法理学教程[M].法律出版社,1997.

[2] 谷口安平:程序的正义与诉讼[M].中国政法大学出版社,1996.

[3] 杨一平:司法正义论[M].法律出版社,1999.

[4] 徐亚文:程序正义论[M].山东人民出版社,2004.

[5] 顾功耘:最新公司法解读[M].北京大学出版社,2006.

上一篇:七年级数学不等式试题下一篇:失望初三作文