1.课程定位
    培养学生程序设计和问题求解的基本能力。培养和拓展学生的思维能力,这与数学课程、物理课程的教学目的像类似,将学到计算思维的方法用于今后从事的其他工作。通过该课程激发学生对于计算机软件开发的兴趣,传播计算机科学的快乐、崇高和力量,致力于计算思维成为常识。

2.课程教学目标
    在程序设计中强化“计算思维能力”的培养,注意培养学生的抽象思维和逻辑思维能力,核心是培养学生的实际问题求解能力。通过本课程的学习,使学生全面、系统地掌握程序设计的基本原理和方法,具有一定的编程能力和分析问题、求解问题的能力,为后继计算机软件课程的学习打下必要的基础。

3.知识模块顺序及对应的学时
   
分为三个教学模块即理论教学、实践教学和课程设计。理论教学与实践教学均安排在一年级第一学期同步进行,理论教学进行一定内容后安排实践教学,对理论教学进行复习和巩固;课程设计安排在一年级第二学期进行,主要任务是让学生在老师的指导下独立完成一个具有一定复杂度的软件系统。各类型的教学内容和学时数如下表。
表1理论教学的教学内容和学时数
教学模块 教学内容 学时
专题一 C语言概述 2
专题二 算法 2
专题三 顺序程序设计 4
专题四 选择结构程序设计 4
专题五 循环控制 8
专题六 数组 8
专题七 函数 6
专题八 指针 8
专题九 结构体与链表 4
专题十 文件 2
合计 48
 













表2实验教学的教学内容和学时数
教学模块 教学内容 学时
实验一 C语言程序初步 2
实验二 基本数据类型、运算符和表达式 2
实验三 基本输入和输出 2
实验四 选择结构程序设计 2
实验五 循环结构程序设计 4
实验六 数组 2
实验七 字符数组及字符串应用 2
实验八 函数的基本应用 2
实验九 指针与结构体 4
实验十 链表 4
实验十一 文件 2
实验十二 综合性实验 4
合计 32

表3 课程设计的教学内容和学时数
教学内容 学时
选题并分析 2
需求分析并撰写文档 2
概要设计 2
详细设计 2
编码 2
测试 2
撰写课程论文 2
答辩、演示 2
合计 16
 
各个模块教学目的、内容、基本概念和知识点、问题与应用等具体介绍如下:
第一部份 理论教学和实践教学
专题一:C语言概述
一、目的与要求
    了解C语言的发展史和特点,以及C语言程序的基本框架;掌握运行C程序的步骤和方法。
二、教学内容
①C语言出现的历史背景
②C语言的特点
③简单的C语言程序介绍
④运行C程序的步骤和方法
三、基本概念和知识点
    程序与程序设计语言;低级语言和高级语言;C语言特点;C语言程序的基本框架;运行C程序的步骤与方法。
四、问题与应用(能力要求)
    熟练掌握CodeBlocks及VC++6.0开发环境
专题二:算法
一、目的与要求
    了解算法的概念和特性;掌握算法的表示方法,重点掌握传统流程图和N-S流程图;熟悉结构化程序设计方法。
二、教学内容
①算法的概念和算法举例
②算法的特性
③算法的表示
④结构化程序设计方法
三、基本概念和知识点
    算法;算法的特性;算法的表示方法:自然语言表示法、传统流程图法、N-S流程图法
    伪代码法;结构化程序设计方法
四、问题与应用(能力要求)
    课堂提问、课后思考(作业)
专题三:顺序程序设计
一、目的与要求
    熟悉掌握C语言的基本数据类型;常量与变量;运算符和表达式;C语句的作用和分类;输入和输出的概念;输入函数scanf()和输出函数printf();字符输入和输出函数:getchar()和putchar()。
二、教学内容
①顺序程序设计举例
②数据表现形式及其运算
③C语言语句的作用和分类
④数据的输入和输出
三、基本概念和知识点
    C语言的基本数据类型:整型、浮点型和字符型;运算符的结合性及其优先级;C语句的作用和分类;输入和输出的概念;四个常用输入输出函数scanf()、printf()、getchar()、putchar()
四、问题与应用(能力要求)
    课堂提问、课后思考(作业)
专题四:选择结构程序设计
一、目的与要求
    熟悉掌握if语句、if-else语句和switch语句的用法;理解并掌握关系运算和逻辑运算在选择结构的判断作用;掌握选择结构的嵌套使用。
二、教学内容
①选择结构和条件判断
②用if语句实现选择结构
③关系运算和关系表达式
④逻辑运算和逻辑表达式
⑤条件运算和条件表达式
⑥选择结构的嵌套
⑦用switch实现多分支选择结构
⑧选择结构应用举例
三、基本概念和知识点
    if语句的一般形式;关系运算和关系表达式;逻辑运算和逻辑表达式;条件运算和条件表达式;选择结构的嵌套;switch结构。
四、问题与应用(能力要求)
    课堂提问、课后思考(作业)
专题五:循环控制
一、目的与要求
    熟悉掌握三种基本循环结构及其用法; break和continue用法和区别;三种循环结构的嵌套使用。
二、教学内容
①用while语句实现循环结构
②用do-while语句实现循环结构
③用for语句实现循环结构
④循环嵌套
⑤三种循环比较
⑥改变循环状态
⑦循环结构应用举例
三、基本概念和知识点
    While语句及其用法;do-While语句及其用法;for语句及其用法;嵌套的概念及实现;三种循环的比较;break和continue用法和区别。
四、问题与应用(能力要求)
    课堂提问、课后思考(作业)
专题六:数组
一、目的与要求
    熟悉数组有关的几个基本概念,包括一维数组、多维数组、字符数组;熟练掌握一维及二维数组、字符数组的使用。
二、教学内容
①一维数组的定义和引用
②二维数组的定义和引用
③字符数组的定义和引用
④数组应用举例
三、基本概念和知识点
    一维数组、二维数组、多维数组、字符数组;数组的初始化和引用;字符数组的输入和输出
四、问题与应用(能力要求)
    课堂提问、课后思考题(作业)
专题七:函数
一、目的与要求
    熟悉和掌握函数的概念和作用;函数的声明、定义和调用;了解函数的嵌套和递归;熟练掌握数组作为函数参数的用法;理解变量的分类、生命周期和存储方式。
二、教学内容
①函数的概念和定义
②调用函数
③函数的声明和原型
④函数的嵌套调用
⑤函数的递归调用
⑥数组作为函数参数
⑦局部变量和全局变量
⑧变量的存储方式和生命期
三、基本概念和知识点
    函数的概念和作用;函数的声明、定义和调用;函数的嵌套调用和递归调用;数组元素和数组名分别作为函数参数的应用和区别;局部变量和全局变量的区别和用法;变量的4中存储方式和生命周期。
四、问题与应用(能力要求)
    课堂提问、课后思考(作业)
专题八:指针
一、目的与要求
    熟悉掌握指针的含义和作用、指针变量;掌握通过指针引用数组、引用字符串;理解字符指针变量和字符数组的区别;了解函数的指针和指针函数;熟悉指针数组和多重指针;掌握动态分配内存的方法。
二、教学内容
①指针的含义
②指针变量
③通过指针引用数组
④通过指针引用字符串
⑤指向函数的指针
⑥返回指针值的函数
⑦指针数组和多重指针
⑧动态分配内存和指向它的指针
三、基本概念和知识点
    变量、内存单元和地址之间的关系;指针的含义和作用;指针变量的定义和使用;通过指针来引用数组和字符串;指针作为函数的参数的作用;指针数组及多重指针;动态内存的分配、释放和更改。
四、问题与应用(能力要求)
    课堂提问、课后思考(作业)
专题九:结构体与链表
一、目的与要求
    熟悉结构体的概念和作用;掌握定义和使用结构体的方法;掌握结构体数组、结构体指针的用法;掌握链表的概念和作用、用结构体指针建立、访问链表;了解typedef的用法。
二、教学内容
①定义和使用结构体变量
②使用结构体数组
③结构体指针
④用指针处理链表
⑤枚举类型
⑥用typedef声明新类型
三、基本概念和知识点
    结构体的概念和作用;结构体与数组的差别;结构体的定义、初始化;结构体变量的引用;结构的嵌套定义。结构体变量作为函数参数的使用;结构体数组的定义和使用;结构体指针的定义和使用;链表的概念和作用;链表的建立、访问、排序、插入、删除、逆序等操作;枚举类型;typedef的用法。
四、问题与应用(能力要求)
    课堂提问、课后思考(作业)
专题十:文件
一、目的与要求
    理解文件的概念和作用;掌握文件的建立、访问和关闭。
二、教学内容
①C文件的有关概念、分类、文件指针
②打开和关闭文件
③顺序读写文件
④随机读写文件
⑤文件的读写出错检测
三、基本概念和知识点
    文件的概念和作用;文件的分类:文本文件和二进制文件;缓冲文件系统;文件结构和文件指针;文件的打开和关闭函数:fopen()和fclose();文件的读写函数:fputc()、fgetc()、fputs()、fgets()、fread()、fwrite()、fscanf()和 fprintf();文件的定位;文件的出错检测。
四、问题与应用(能力要求)
    课后思考
第二部份 课程设计部分
一、课程设计的目的
    高级语言程序设计课程设计的目的是培养学生综合运用高级语言程序设计课程中所学到的知识,编写程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。
通过课程设计训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C/C++语言程序的基本技巧,充分理解结构化程序设计的基本方法。
课程设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C/C++程序及编写实践报告。
二、课程设计的考核内容及考核方式
(1)考核内容
    学生综合解决问题的能力将反应在设计的程序和编写的课程设计报告中,因此本课程设计的考核内容包括2个部分:
①程序的编写,针对学生编写并提交的程序,考查下列内容:
    是否符合题目要求,是否完成了主要功能;
    是否存在语法错误、逻辑错误和运行错误;
    程序设计是否合理;
    程序是否具有良好的可读性和可靠性;
    是否符合结构化程序设计所提倡的基本理念;
    用户界面是否友好。
②课程设计报告的撰写,针对提交的报告,考查以下内容:
    程序设计报告的内容是否会面,观点是否正确;
    设计过程是否符合结构化程序设计的基本原则;
    层次是否清楚,语言是否通顺;
    各种图表是否规范;
    是否具有良好的程序设计习惯。
(2)考核方式和成绩评定
    课程设计采用2种方式结合的方式:
①评阅课程报告
②程序运行演示和回答问题
    成绩评定方法:每名同学提交最终课程设计报告后,按照安排的时间到实验室向指导老师演示程序并回答老师提出的问题,老师根据实际情况从如下6个方面给出成绩。
    功能是否满足要求(50分)、界面是否美观(10分)、所学知识在设计中的运用是否得当(10分)、对效率要求较高的部分是否有更深的思考与设计(10分)、答辩陈述是否清楚(10分)、答辩陈述是否完整(10分)
三、课程设计安排
(1)指导老师安排
    根据教学要求安排每个学生班的指导老师。
(2)分组安排
    课程设计采用1人1组方式进行,每题每班限5人报,多于5人抽签确定。
    每个学生必须独立完成选题、系统分析、设计、程序编写、课程报告撰写等各项任务。
四、 课程设计报告撰写要求
    参照华南农业大学本科毕业论文(设计)规范写作。
五、课程设计提交说明
文件夹结构:
高级语言程序课程设计(2012春)
+----2011级软件工程1班
+----学号1
| |---- 课程设计报告.DOC(WORD 2000/2003文档)
| |---- 课程设计源代码.ZIP
| |---- 课程设计附加说明.DOC(可选)
+----学号2
| ………
|---- 分组成绩单
说明:
1)课程设计报告撰写格式,见撰写说明。
2)附加说明报告(如:程序配置说明、操作注意事项等)
六、课程设计题目
    每名同学可以从下面给出题目中任选1题完成,每班选同一题的人数不得超过5人。
题目1:学生证管理程序
(1)题目描述
    设计一个学生证的管理程序。该程序具有以下功能:
①录入某位学生的学生证信息(学生证应该包括的内容请参看自己的学生证);
②给定学生的学号,修改该学生的学生证信息;
③给定学生的学号,删除该学生的学生证信息;
④根据输入的学生的学号,显示该学生的学生证信息;
⑤根据输入的班级的编号,显示该班所有学生的学生证信息;
⑥统计功能:提供一些统计各类信息的功能。
(2)题目要求
①按照分析、设计、编码、调试和测试过程完成应用程序;
②学习并使用流程图等工具,并在撰写报告中使用;
③程序的各项功能在程序运行时,以菜单方式选择并执行;
④要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等;
⑤所有的信息存储在一个文件或多个中,并实现文件读写操作;
⑥程序中用链表存放学生证信息并实现增删减功能。
(3)提示
①学生证信息可以设计一个结构体类型;
②自己构思并增加的除规定功能之外的新功能,酌情加分。

题目2:图书登记管理程序
(1)题目描述
    设计一个图书登记管理程序,该程序具有以下功能:
①录入某本图书的信息(图书信息包括的内容:ISBN号、书名、作者、出版社、出版日期、价格);
②给定图书ISBN编号,显示该图书信息;
③给定图书ISBN编号,修改该图书信息;
④给定图书ISBN编号,删除该图书信息;
⑤给定某个字符串,查找并显示所有书名中包括该字符串的图书的信息;
⑥给定出版社名称,查找并显示该出版社的所有图书的信息;
⑦统计功能:提供一些统计各类信息的功能。
(3)题目要求
①按照分析、设计、编码、调试和测试过程完成应用程序;
②学习并使用流程图等工具,并在撰写报告中使用;
③程序的各项功能在程序运行时,以菜单方式选择并执行;
④要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等;
⑤所有的信息存储在一个文件或多个中,并实现文件读写操作;
⑥程序中用链表存放图书信息并实现增删减功能。
(3)提示
①图书信息可以设计一个结构体类型;
②自己构思并增加的除规定功能之外的新功能,酌情加分。
 
题目3:通讯录程序
(1)题目描述
    设计一个通讯录程序,该程序具有以下功能:
①用户登录:输入用户名和密码,密码正确才允许登录。
②录入通讯信息;
③给定人名,修改该人的通讯信息;
④给定人名,删除该人的通讯信息;
⑤根据输入的人名或姓,显示查找到的相应通讯信息;
⑥根据输入的分类,显示该分类的所有人的通讯信息;
⑦统计功能:统计各分类的人数。
(2)题目要求
①按照分析、设计、编码、调试和测试过程完成应用程序;
②学习并使用流程图等工具,并在撰写报告中使用;
③程序的各项功能在程序运行时,以菜单方式选择并执行;
④要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等;
⑤所有的信息存储在一个文件或多个中,并实现文件读写操作;
⑥程序中用链表存放通讯信息并实现增删减功能。
(3)提示
①报告信息可以设计一个结构体类型;
②自己构思并增加的除规定功能之外的新功能,酌情加分。
 
题目4:商品进销存管理程序
(1)题目描述
    设计一个商品进销存管理程序,该程序具有以下功能:
①录入商品信息;
②给定商品编号,修改该商品信息;
③给定商品编号,删除该商品信息;
④录入商品的进货与销售信息;
⑤给定商品编号或商品名,查看该商品及库存信息;
⑥统计功能:提供一些统计各类信息的功能。
(2)题目要求
①按照分析、设计、编码、调试和测试过程完成应用程序;
②学习并使用流程图等工具,并在撰写报告中使用;
③程序的各项功能在程序运行时,以菜单方式选择并执行;
④要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等;
⑤所有的信息存储在一个文件或多个中,并实现文件读写操作;
⑥程序中用链表存放商品及进销存信息并实现增删减功能。
(3)提示
①提醒事件信息可以设计一个结构体类型;
②自己构思并增加的除规定功能之外的新功能,酌情加分。
 
题目5:教务信息管理系统
(1)题目描述
    设计一个教务信息管理系统,该程序具有以下功能:
①录入如下信息:
    学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。
    课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。
②录入选课信息
③录入学生成绩
④按班统计学生选课情况及考试成绩
⑤按课程统计学生名单及考试成绩
⑥统计并输出每个同学已修学分及不及级课程
(2)题目要求
①按照分析、设计、编码、调试和测试过程完成应用程序;
②学习并使用流程图等工具,并在撰写报告中使用;
③程序的各项功能在程序运行时,以菜单方式选择并执行;
④要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等;
⑤所有的信息存储在文件中,并实现文件读写操作;
⑥程序中用链表存放学生信息并实现增删减功能。
(3)提示
①学生基本信息可以设计一个结构体类型;
②自己构思并增加的除规定功能之外的新功能,酌情加分。
 
题目6:个人物品管理程序
(1)题目描述
    设计一个个人物品管理程序,该程序具有以下功能:
①用户登录:输入用户名和密码,密码正确才允许登录;
②录入个人物品信息;
③给定物品名或编号,修改该个人物品信息;
④给定物品名或编号,删除该个人物品信息;
⑤根据输入的物品名或编号,显示查找到的相应物品信息;
⑥根据输入的分类,显示该分类的所有物品信息;
⑦根据输入的时间,查询过期或3月内将过期的物品信息;
⑧统计功能:统计各分类的物品。
(2)题目要求
①按照分析、设计、编码、调试和测试过程完成应用程序;
②学习并使用流程图等工具,并在撰写报告中使用;
③程序的各项功能在程序运行时,以菜单方式选择并执行;
④要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等;
⑤所有的信息存储在文件中,并实现文件读写操作;
⑥程序中用链表存放物品信息并实现增删减功能。
(3)提示
①个人物品信息可以设计一个结构体类型;
②自己构思并增加的除规定功能之外的新功能,酌情加分。
 
题目7:班级财务管理程序
(1)题目描述
    设计一个班级财务管理系统,该程序具有以下功能:
①用户登录:输入用户名和密码,并判断是管理员还是普通成员,管理员和普通成员具有不同的功能选择界面。
②录入信息:各项财务信息(包括用途、收入、支出、收入(或支出)时间、总计、使用人等。);
③修改班级成员信息;
④删除班级成员信息;
⑤查询班级财务状况;
⑥统计班级财务情况:班级每月共收入、支出各多少,整个学期共收入、支出多少;
⑦分类统计:根据用途对支出进行统计排序输出。
(2)题目要求
①按照分析、设计、编码、调试和测试过程完成应用程序;
②学习并使用流程图等工具,并在撰写报告中使用;
③程序的各项功能在程序运行时,以菜单方式选择并执行;
④要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等;
⑤所有的信息存储在文件中,并实现文件读写操作;
⑥程序中用链表存放收入与支出等各项信息并实现增删减功能。
(3)提示
①班级成员收支信息和登录用户信息可以设计为结构体类型
②自己构思并增加的除规定功能之外的新功能,酌情加分。