集美大学 计算机 郑如滨

教学博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

课程设计自查表格

序号 项目 完成与否(完成打勾)
1 格式是否符合标准(缩进是否规范)
2 是否模块化设计(使用函数分解系统功能)
3 函数名否易懂(不得使用f1(int a1,int a2)这样的函数函数名、入参名,建议使用英文)
4 变量名是否规范(循环中次序变量一般使用i,j,k,计数建议使用count,其他建议使用英文或英文缩写,如avg, sum)
5 每个函数有无注释(包括函数功能、入参说明、返回参数说明)
6 函数名是否规范(建议使用英文)
7 是否滥用全局变量(建议不用)
8 除非你明确知道为什么使用goto语句,且明白goto语句的副作用。否则,不得使用goto语句
9 有无测试边界条件

表格使用说明:

For 老师:课程设计之前就将此表格分发。
For 学生:可以在程序编写完,再对照此表格进行重构。课程设计检查前请先按照此表格进行自查。该表格为基本要求,请务必按照此要求改正。

变量、函数命名建议:

使用驼峰法
void printStudentName(...) //打印学生姓名的函数, int addUser(User* user) //添加学生
avgScore //存放平均分变量,

常用变量名与函数名:
tmp 一般用于临时变量,
i, j, k 作为局部循环变量,不要用x,y,z或者a1,a2,a3作为局部循环变量。
add, sub, mult, div, count, avg, sum
day, month, year
flag 一般用于标志位
max(最大), min(最小)
num用于数字,如numStudents(学生数目)

指针类型变量:
ptr 一般用来代表指针 ,如ptrA
pre 代表指向前一个的指针, next 代表指向下一个指针, cur 当前一个的指针
p, q

常用单词(建议背下来):
search 搜索,get 获取,arr 数组,list 列表, file 文件, str 字符串,
len 长度,arrLen 数组长度,name 名称
add/remove,添加/移除 add/delete,添加/删除 insert/delete,插入/删除
start/stop,开始/停止 begin/end,开始/结束 send/receive,发送/接收
get/set,取出/设置 get/release,获取/释放 put/get,放入/取出
show/hide,显示/隐藏 open/close,打开/关闭
source/target,源/目标 increment/decrement,增加/减少
source/destination,源/目的地 也可以src/dst
create/destroy,创建/销毁, min/max,最小/最大 store/query,存储/查询

结构体首字母应用大写
struct Student{....}

常量名应用大写
#define MAX_NUM 10

范例程序

#include <stdio.h>
#include <stdlib.h>

#define YES 1
#define NO -1
#define ERROR -2147483000
#define ARR_LEN 5


/**********************************************************************************
Descriptions: 判断参数value是否在low(包含low)与high(包含high)之间
Input   para: value, 所要判断的数值
              low,  范围的下界
              high,  范围的上界
Return value: YES,   在范围内。NO, 不在范围内
***********************************************************************************/
int isBetween(int value, int low, int high)
{
    if(value >= low && value <= high)
        return YES;
    return NO;
}

/**********************************************************************************
Descriptions: 返回arr数组从下标0到len之间(不包括len)所有在low与high之间的值的和
Input   para: arr,  传入数组
              len, 数组长度
              low,  数值范围下界
              high, 数值范围上界
Return value: arr数组从下标0到len之间(不包括len)所有在low与high之间的值的和
***********************************************************************************/
int sumInArray(int arr[], int len, int low, int high)
{
    /*注意:每个函数的功能要简单,该函数只负责计算,不负责处理输入输出*/
    /*一般函数入口可以判断参数有效性*/
    if (low>high )
    {
        printf("参数无效!参数high必须大于low\n");
        return ERROR;
    }
    if (len<=0)
    {
        printf("参数无效!参数len必须大于0\n");
        return ERROR;
    }

    int sum = 0;
    int i;
    for(i = 0; i < len; i++)
    {
        if (isBetween(arr[i], low, high)==YES)
        {
            sum += arr[i];
        }
    }
    return sum;
}

/*每个函数的功能尽量简单,此函数只负责显示菜单和返回用户选择的值*/
char mainMenu()
{
    char choice;
    printf("\t\t*****欢迎进入XX系统*****\n");
    printf("\t\t*****1.选择1计算   *****\n");
    printf("\t\t*****2.选择2退出   *****\n");
    while (1)
    {
        scanf("%c",&choice);
        if (choice<'1' || choice>'2')
            printf("\t\t输入错误,重选1-2\n");
        else
            break;
        getchar();//消化输入缓冲区的回车换行符
    }
    return choice;
}

void calAndDisp(int arr[])
{
    int len, low, high;
    printf("请输入len、low与high(中间以空格分隔):");
    scanf("%d %d %d",&len, &low, &high);
    getchar();
    
    int result = sumInArray(arr, len, low, high);
    printf("输出结果:数组arr中,所有在%d与%d之间的值的总和为%d\n", low, high, result);
    
}


int main()
{
    int arr[ARR_LEN] = {-1,1,2,3,11};
    char choice;
    while(1)
    {
        choice = mainMenu();
        switch(choice)
        {
        case '1':
            calAndDisp(arr);
            break;
        case '2':
            printf("退出系统!");
            exit(0);
            break;
        }
    }
    return 0;
}

评分标准

基本考虑因素:

1.功能是否完整。
2.是否模块化设计?
3.实现难度如何?(如,使用链表实现相对数组实现难,起评分也应提高)。
4.有多少是自己做的?借鉴部分能否看懂代码?

其他考虑因素:

1.有无出错处理。
2.有无特别功能。
3.是否会使用调试技巧解决问题。

附件

C语言程序设计课程设计自查表格

posted on 2017-01-10 18:59  zhrb  阅读(1160)  评论(0编辑  收藏  举报