程序设计规范报告.docx

上传人:b****1 文档编号:1658318 上传时间:2023-05-01 格式:DOCX 页数:13 大小:35.31KB
下载 相关 举报
程序设计规范报告.docx_第1页
第1页 / 共13页
程序设计规范报告.docx_第2页
第2页 / 共13页
程序设计规范报告.docx_第3页
第3页 / 共13页
程序设计规范报告.docx_第4页
第4页 / 共13页
程序设计规范报告.docx_第5页
第5页 / 共13页
程序设计规范报告.docx_第6页
第6页 / 共13页
程序设计规范报告.docx_第7页
第7页 / 共13页
程序设计规范报告.docx_第8页
第8页 / 共13页
程序设计规范报告.docx_第9页
第9页 / 共13页
程序设计规范报告.docx_第10页
第10页 / 共13页
程序设计规范报告.docx_第11页
第11页 / 共13页
程序设计规范报告.docx_第12页
第12页 / 共13页
程序设计规范报告.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

程序设计规范报告.docx

《程序设计规范报告.docx》由会员分享,可在线阅读,更多相关《程序设计规范报告.docx(13页珍藏版)》请在冰点文库上搜索。

程序设计规范报告.docx

程序设计规范报告

程序设计规范报告

 

学院:

信息科学与工程学院

专业:

计算机科学与技术(软件外包)

班级:

计软1304

学号:

20131214

学生姓名:

 

一、程序设计规范及其示例

1.符号命名规则

符号名包括模块名、常量名、标号名、子程序名等。

这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。

命名采用匈牙利命名法。

规则如下:

(1)所有宏定义、枚举常数和const变量,用大写字母命名。

在复合词里用下划线隔开每个词。

(2)复合词中每个单词的第一个字母大写。

(3)类、类型定义和枚举型名的第一个字母大写。

(4)函数名是复合词的,第一个词采用全部小写,随后每个单词采用第一个字母大写,其它字母小写方式;如果是单个词的,采用全部小写方式。

(5)循环变量可采用i,j,k等,不受上述规则限制。

(6)类的成员变量应采用m_开头。

(7)全局变量词头为g_。

(8)临时变量词头为tmp_。

(9)对结构体内的变量命名,遵循变量的具体含义命名原则

(10)用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。

例:

编写一个简单的图书借阅程序。

structbook

{

charbooknum[20];//编号

charbookname[20];//书名

charpress[20];//出版社

charpresstime[20];//时间

charisborrow[2];//是否被借阅

};

2.名字的长度一般不要过长或过短。

过长的名字会增加工作量,使程序逻辑流程变得模糊;过短的名字无法表达符号的实际意义。

约定长度范围:

3-31。

dypedefstructstudent

{

charsno[10];

charsname[30];

intsage;

structstudent*next;

}stu;        //重命名为stu,减少工作量

3.程序注释

3.1程序注释是程序员与日后的程序读者之间通信的重要手段之一,注释分为文件注释、函数注释和功能注释。

3.2正规程序的注释应注意:

——注释行的数量占到整个源程序的1/3到1/2。

3.3文件注释位于整个源程序的最开始部分,注释后空两行开始程序正文。

它包括:

——程序标题。

——目的、功能说明。

——文件作者、最后修改日期等说明。

/*************************************************************** 文件名:

** 创建人:

** 日 期:

** 修改人:

** 日 期:

** 描 述:

** 版 本:

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

4.函数编写应尽可能短小精悍,一般不超过两屏,以便于调试和理解。

5.语句结构

为保证语句结构的清晰和程序的可读性,在编写软件程序时应注意以下几个方面的问题:

——在一行内只写一条语句,并采用空格、空行和移行保证清楚的视觉效果。

——每一个嵌套的函数块,使用一个TAB缩进(可以设定为4个空格),大括号必须放在条件语句的下一行,单独成一行,便于匹对。

错误:

1.if(n==1||n==2)

return1;

2.if(n==1||n==2){

return1;

正确的:

if(n==1||n==2)

return1;

6.程序编写首先应考虑清晰性,不要刻意追求技巧性而使得程序难以理解。

除非对效率有特殊要求,编写程序要作到清晰第一,效率第二。

voidmax(int*x)

{

inti,j,t;

for(j=0;j<9;j++)

{

for(i=0;i<9-j;i++)

if(x[i]

{

t=x[i];

x[i]=x[i+1];

x[i+1]=t;

}

}

}

语句嵌套不要超过五层。

7.尽量用公共过程或子程序去代替重复的功能代码段。

要注意,这个代码应具有一个独立的功能,不要只因代码形式一样便将其抽出组成一个公共过程或子程序。

voidmain()

{

intsu;

input(s);    

su=max(s);

printf("%s%0.f\n",s[su].name,s[su].sco);

}

intinput(structstu[])

{

for(inti=0;i

{

printf("输入人员信息包括学号、姓名、成绩\n");

scanf("%d%s%f",&s[i].num,s[i].name,&s[i].sco);

}

return0;

}

8.使用括号清晰地表达算术表达式和逻辑表达式的运算顺序。

如将x=a*b/c*d写成x=(a*b/c)*d可避免阅读者误解为x=(a*b)/(c*d)。

9.文件之中不得存在无规则的空行,比如说连续十个空行。

一般来讲函数与函数之间的空行为2-3行;在函数体内部,在逻辑上独立的两个函数块可适当空行,一般为1-2行。

10.避免采用过于复杂的条件测试。

 

二、实用程序设计示例

fun.h

#ifndefFUN_H

#defineFUN_H

structstu

{

charsno[10];

charsname[30];

intsage;

structstu*next;

};

#defineLENsizeof(structstu)

structstu*creat(void);

voidlist(structstu*head);

structstu*del(structstu*head,char*sno);

structstu*insert(structstu*head);

#endif

main.c

#include

#include

#include

#include"fun.h"

intmain()

{

structstu*head=NULL;

charsno[10];

charch='y';

head=creat();//建立链表

list(head);//输出链表

printf("进行结点的删除:

\n");

while(ch=='y')

{

printf("输入要删除的学生的学号\n");

scanf("%s",&sno);

getchar();

head=del(head,sno);

printf("继续删除其他学生的信息请输入'y':

");

ch=getchar();

getchar();

}

printf("删除后的学生的信息\n");

list(head);//链表输出

ch='y';

printf("进行结点插入操作\n");

while(ch=='y')

{

head=insert(head);

printf("继续插入学生信息请输入'y':

\n");

ch=getchar();

getchar();

}

printf("插入后学生的信息\n");

list(head);

return0;

}

creat.c

#include

#include

#include

#include"fun.h"

structstu*creat(void)//链表的建立

{

structstu*head=NULL,*p1,*p2;

inti=1;

charsno[10];

printf("输入第一个学生的学号,回车结束:

\n");

while(gets(sno)!

=NULL&&sno[0]!

='\0')//输入学号,如果学号不为空且输入不为回车

{

p1=(structstu*)malloc(LEN);//开辟一个新单元

strcpy(p1->sno,sno);

printf("输入名字:

\n");

gets(p1->sname);//输入名字

printf("输入年龄:

\n");

scanf("%d",&p1->sage);//输入年龄

p1->next=NULL;

if(head==NULL)

{

head=p1;

}

else

{

p2->next=p1;

}

p2=p1;//使p2指向刚才p1指向的结点

while(getchar()!

='\n');

i++;//用i记录输入的个数

printf("输入第%d个学生的学号,回车结束:

\n",i);

}

returnhead;

}

del.c

#include

#include

#include

#include"fun.h"

structstu*del(structstu*head,char*sno)//链表的删除

{

structstu*p1,*p2=NULL;

if(head==NULL)

printf("此链表为空\n");

else

{

p1=head;//指向第一个结点

while((strcmp(sno,p1->sno)!

=0)&&(p1->next!

=NULL))

{

p2=p1;

p1=p1->next;

}

if(strcmp(sno,p1->sno)==0)//找到结点,删除它

{

if(p1==head)

head=p1->next;

else

p2->next=p1->next;

free(p1);

printf("结点已经删除!

\n");

}

else

printf("链表中不存在该结点\n");

}

returnhead;

}

insert.c

#include

#include

#include

#include"fun.h"

structstu*insert(structstu*head)

{

intsno1;

structstu*p0,*p1,*p2;

p0=(structstu*)malloc(LEN);

p0->next=NULL;

printf("输入学号名字和年龄:

\n");

scanf("%s%s%d",&p0->sno,&p0->sname,&p0->sage);

getchar();

if(head==NULL)

head=p0;

else

{

p1=head;//使p1指向第一个结点

sno1=strcmp(p0->sno,p1->sno);//比较两个字符串的大小

while((sno1>0)&&(p1->next!

=NULL))

{

p2=p1;//使p2指向刚才p1指向的结点

p1=p1->next;//p1后移一个结点

}

if(sno1<=0)

{

if(head==p1)//插到原来第一个结点之前

{

head=p0;

}

else

p2->next=p0;//插到p2指向的结点之后

p0->next=p1;

}

else

p1->next=p0;

}

returnhead;

}

list.c

#include

#include

#include

#include"fun.h"

voidlist(structstu*head)//链表输出

{

structstu*p;

if(head==NULL)//原来的链表是空表

{

printf("itisNULL!

\n");

}

else

{

p=head;

printf("链表的信息为:

\n");

while(p!

=NULL)

{

printf("%s,%s,%d\n",p->sno,p->sname,p->sage);

p=p->next;//后移一个结点

}

}

}

三、总结

规范化程序设计的优点:

1、易维护

采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。

2、质量高

在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。

3、效率高

在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。

使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。

4、易扩展

由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2