程序设计综合实践
程序设计综合实践
2万+ 人选课
更新日期:2026/04/03
开课平台智慧树
开课高校杭州电子科技大学
开课教师林菲马虹李卫明
学科专业工学计算机类
开课时间2026/01/21 - 2026/07/20
课程周期26 周
开课状态开课中
每周学时-
课程简介
程序设计能力和系统设计能力(简称“双基“能力)不足是现在计算机类学生中普遍存在的问题。其中,程序设计能力薄弱,将导致后续课程难以达成预期的课程目标,无法培养国家和社会所需的专业人才。本课程主要培养同学们的计算思维和工程思维,使大家具备理论联系实际、分析问题和解决问题的能力,为后续专业课程的学习,打下坚实的基础。 本课程设置了基础算法、人工智能、游戏开发和管理信息系统四个大专题。人工智能、游戏开发和管理信息系统3个专题均以项目驱动方式,从实际问题出发,进行问题分析、算法设计、编码实现、测试和优化等实践过程,使同学们潜移默化地强化编程思维,巩固和提升使用计算机编程解决实际问题的能力;逐步建立从计算机视角来分析问题、解决问题的计算思维和工程思维,实现从“知识——能力——思维”的蜕变。弥补传统教学内容和模式导致学生复杂问题分析和设计能力、工程化思维、系统资源及第三方库调用能力不足的问题,并为后续人工智能、软件开发、游戏开发等能力培养奠定坚实的基础。 本课程配套教材《程序设计综合实践》(作者:林菲 马虹 李卫明,ISBN:978-7-5606-5996-1,西安电子科技大学出版社)是一本立体化教材,教材配有MOOC教学视频、电子教案、示例源代码等丰富的教学资源。同时,每章配套的实践练习和项目拓展训练,能帮助同学们巩固和强化所学内容,不断提升程序设计能力。
课程大纲

在线教程

章节简介教学计划
课程简介
登录后可预览视频
课程简介
林菲
线性结构
学习资料
线性表的概念
李卫明
算法和算法分析
李卫明
线性表的顺序存储
李卫明
线性表的链式存储
线性表的链式存储——单链表的概念
李卫明
线性表的链式存储——单链表基本操作的实现
李卫明
线性表的链式存储——单链表应用举例
李卫明
线性表的链式存储——双向链表应用举例
李卫明
学习资料
栈和队列
李卫明
递归程序设计
栈与递归
李卫明
分治法
李卫明
回溯法
回溯法——八皇后问题
李卫明
回溯法——01背包问题
李卫明
查找和排序
查找和简单排序
李卫明
归并排序和快速排序
李卫明
其它特殊排序方法
李卫明
简单房价预测项目
问题描述与解题思路
林菲
项目实现
林菲
鸢尾花分类项目
问题描述与解题思路
林菲
项目实现
全局变量与代码整体框架
林菲
数据读入与簇群初始化
林菲
Kmeans核心算法实现
林菲
波士顿房价预测项目
问题描述与解题思路
问题描述与分析
林菲
三层BP神经网络模型与神经元模型
林菲
神经网络前向与反向传播的计算过程
林菲
BP神经网络算法流程
林菲
项目实现
全局变量与代码整体框架
林菲
训练数据读入与神经网络初始化
林菲
神经网络训练与模型评估
林菲
贪吃蛇的控制台游戏
功能及业务流程介绍
林菲
项目实现
头文件与主程序文件代码实现
林菲
游戏各菜单界面实现
林菲
初始化地图与食物生成功能实现
林菲
蛇移动等功能实现
林菲
基于MFC的俄罗斯方块游戏
建立框架
李卫明
添加功能模块
李卫明
消息响应和界面绘制
李卫明
学生成绩管理系统
管理信息系统开发概述
马虹
系统功能和执行流程
马虹
预设项目基本信息
马虹
system函数
马虹
主函数框架
马虹
系统主菜单界面
马虹
编码实现系统主菜单界面
马虹
设置文字输出位置
马虹
输入学生信息
马虹
计算学生成绩
马虹
学生记录存盘
马虹
从磁盘读取学生记录
马虹
增加学生记录
马虹
按学号查询学生记录
马虹
按姓名查询学生记录
马虹
删除学生记录
马虹
修改学生记录
马虹
输出学生记录
马虹
按姓名对学生记录排序
马虹
按学号对学生记录排序
马虹
按成绩对学生记录升序排序
马虹
按总分对学生记录降序排序
马虹
学生成绩统计
马虹
退出系统
马虹
  • 绪章课程简介

    主要讲解课程定位、课程目标、课程内容安排、主讲教师团队及参考教材等,帮助同学更好地了解课程整体情况。

  • 0.1课程简介

    主要讲解课程定位、课程目标、课程内容安排、主讲教师团队及参考教材等,帮助同学更好地了解课程整体情况。

  • 第一章线性结构

    引入线性表、抽象数据类型、算法、算法评价等概念,介绍如何分别用顺序存储结构和链式存储结构实现抽象数据类型——线性表,讲述单链表和双链表的典型应用案例,引入栈和队列。

  • 1.1线性表的概念

    引入线性表、抽象数据类型概念,介绍抽象数据类型线性表定义。

  • 1.2算法和算法分析

    介绍算法和算法描述方法、算法评价,引入算法时间复杂度和空间复杂度。

  • 1.3线性表的顺序存储

    介绍如何通过顺序存储方式实现抽象数据类型线性表。

  • 1.4线性表的链式存储

    介绍通过链式存储结构实现抽象数据类型线性表,讲述单链表的概念、单链表基本操作实现、单链表和双链表的应用等知识。

  • 1.5栈和队列

    引入栈和队列的概念,讲述栈和队列的实现思路。

  • 第二章递归程序设计

    讲述递归程序设计方法,分析递归程序执行过程,通过无符号大数乘法、八皇后问题、0-1背包问题等经典案例,讲述分治法和回溯法两大算法设计方法,提高算法设计能力。

  • 2.1栈与递归

    以汉诺塔问题为例,讲述递归程序设计,分析递归程序执行过程,介绍非递归等效算法设计。

  • 2.2分治法

    通过无符号大数乘法讲述分治法,提高算法设计能力。

  • 2.3回溯法

    介绍回溯法思想和算法框架,通过八皇后问题、0-1背包问题讲述回溯法。

  • 第三章查找和排序

    介绍查找和简单排序算法,讲述高效的归并排序和快速排序,最后,介绍几种特殊的排序算法,与此同时,分析了这些算法的时间复杂度和空间复杂度。

  • 3.1查找和简单排序

    介绍查找、二分查找和简单排序算法,分析了这些算法的时间复杂度和空间复杂度。

  • 3.2归并排序和快速排序

    讲述高效的归并排序和快速排序,分析了它们的时间复杂度和空间复杂度。

  • 3.3其它特殊排序方法

    介绍几种适合特殊场合使用的排序算法以及这些算法的时间复杂度和空间复杂度。

  • 第四章简单房价预测项目

    通过一个简单房价预测问题,介绍一元线性回归方法,并通过C语言实现房价预测问题的求解。

  • 4.1问题描述与解题思路

    分析简单房价预测问题及其数据集特征,引入一元线性回归方法,并使用最小二乘法推导一元线性回归方程的参数求解公式。

  • 4.2项目实现

    借助Visual Studio集成开发工具,使用C语言通过一元线性回归方法实现简单房价预测项目。

  • 第五章鸢尾花分类项目

    通过无监督学习的鸢尾花分类问题,介绍K-Means聚类算法,并通过C语言实现鸢尾花分类问题的求解。

  • 5.1问题描述与解题思路

    分析鸢尾花分类问题及其数据集特征,引入K-Means聚类算法,并详细阐述了K-Means聚类算法流程。

  • 5.2项目实现

    借助Visual Studio集成开发工具,使用C语言通过K-Means聚类算法实现鸢尾花分类项目,包括全局变量定义、代码整体框架构建、训练数据读入、簇群初始化及KMeans核心算法实现等。

  • 第六章波士顿房价预测项目

    通过波士顿房价预测问题,介绍三层BP神经网络算法模型,引入更多维度特征,预测波士顿房价,最后通过C语言实现波士顿房价预测问题的求解。

  • 6.1问题描述与解题思路

    分析波士顿房价预测问题及其数据集特征,引入三层BP神经网络算法,详细阐述了前向传播和反向传播的计算过程,最终给出BP神经网络算法流程。

  • 6.2项目实现

    借助Visual Studio集成开发工具,使用C语言通过三层BP神经网络算法实现简单房价预测项目,包括全局变量定义、代码整体框架构建、训练数据读入、神经网络初始化、神经网络训练与模型评估等。

  • 第七章贪吃蛇的控制台游戏

    首先分析贪吃蛇游戏的功能结构和业务流程,然后使用C语言逐步实现基于控制台的贪吃蛇游戏。

  • 7.1功能及业务流程介绍

    详细介绍了贪吃蛇游戏的功能模块及业务流程设计。

  • 7.2项目实现

    借助Visual Studio集成开发工具,使用C语言开发基于控制台的贪吃蛇游戏代码,包括头文件与主程序文件代码实现、游戏各菜单界面实现、初始化地图与食物生成功能实现、蛇移动等功能实现。

  • 第八章基于MFC的俄罗斯方块游戏

    通过基于MFC的窗体式俄罗斯方块游戏开发案例,介绍面向对象的图形化程序开发和消息驱动程序开发。

  • 8.1建立框架

    介绍了利用Visual Studio搭建俄罗斯方块游戏界面框架过程。

  • 8.2添加功能模块

    介绍俄罗斯方块游戏中Tool类和Game类设计和实现。

  • 8.3消息响应和界面绘制

    介绍俄罗斯方块游戏画面绘制和消息响应实现,完成了俄罗斯方块游戏整体开发,在此基础上进一步拓展游戏。

  • 第九章学生成绩管理系统

    管理信息系统可以有效实现信息的采集、存储、处理和利用,显著提升管理的质量和效率。本章将基于C语言,介绍简易学生成绩管理系统的开发过程。

  • 9.1管理信息系统开发概述

    简要介绍管理信息系统开发的一般流程。

  • 9.2系统功能和执行流程

    深入分析学生成绩管理系统开发的基本要求,从而确定系统的功能和执行流程。

  • 9.3预设项目基本信息

    介绍预设项目信息的方法,通过预设项目信息,使程序具备更好的可读性和可维护性。

  • 9.4system函数

    介绍windows操作系统下system () 函数的使用方法,本程序要使用的主要命令。

  • 9.5主函数框架

    介绍本程序的主体框架。

  • 9.6系统主菜单界面

    介绍系统主菜单界面的设计,并介绍本系统的编程规范。

  • 9.7编码实现系统主菜单界面

    介绍系统主菜单界面的编码实现。

  • 9.8设置文字输出位置

    介绍如何使用SetPosition函数来对文字输出起始位置进行控制。

  • 9.9输入学生信息

    介绍从键盘手动输入学生信息的流程和代码实现。

  • 9.10计算学生成绩

    介绍如何进行学生成绩的计算。

  • 9.11学生记录存盘

    介绍如何将学生记录存盘,从而实现数据持久化的操作。

  • 9.12从磁盘读取学生记录

    介绍从磁盘读取学生记录的方法和代码实现。

  • 9.13增加学生记录

    介绍在已有记录的基础上学生记录的流程、实现方法及注意事项。

  • 9.14按学号查询学生记录

    介绍按学号查询学生记录的流程和编码实现。

  • 9.15按姓名查询学生记录

    介绍按姓名查询学生记录的流程、编码实现,并分析按姓名查找和按学号查找学生记录的区别。

  • 9.16删除学生记录

    介绍删除学生记录的流程、实现方法及注意事项。

  • 9.17修改学生记录

    介绍修改学生记录的流程、实现方法。

  • 9.18输出学生记录

    介绍如何输出学生记录以及对输出格式的控制。

  • 9.19按姓名对学生记录排序

    介绍如何使用冒泡法按姓名对学生记录排序。

  • 9.20按学号对学生记录排序

    介绍如何使用选择法按学号对学生记录排序。

  • 9.21按成绩对学生记录升序排序

    介绍如何使用选择法按成绩总分对学生记录进行排序。

  • 9.22按总分对学生记录降序排序

    介绍如何引入规则函数,实现按总分对学生记录进行升序或降序排序。

  • 9.23学生成绩统计

    介绍如何对学生成绩进行统计。

  • 9.24退出系统

    介绍如何实现退出系统的功能,并分析了本程序待优化和完善之处。

  • 开始学习
  • 绪章  作业测试
    绪章课程简介

    0.1 课程简介

    视频数1
  • 第一章  作业测试
    第一章 线性结构

    1.1 线性表的概念

    1.2 算法和算法分析

    1.3 线性表的顺序存储

    1.4 线性表的链式存储

    1.5 栈和队列

    视频数8
  • 第二章  作业测试
    第二章 递归程序设计

    2.1 栈与递归

    2.2 分治法

    2.3 回溯法

    视频数4
  • 第三章  作业测试
    第三章 查找和排序

    3.1 查找和简单排序

    3.2 归并排序和快速排序

    3.3 其它特殊排序方法

    视频数3
  • 第四章  作业测试
    第四章 简单房价预测项目

    4.1 问题描述与解题思路

    4.2 项目实现

    视频数2
  • 第五章  作业测试
    第五章 鸢尾花分类项目

    5.1 问题描述与解题思路

    5.2 项目实现

    视频数4
  • 第六章  作业测试
    第六章 波士顿房价预测项目

    6.1 问题描述与解题思路

    6.2 项目实现

    视频数7
  • 第七章  作业测试
    第七章 贪吃蛇的控制台游戏

    7.1 功能及业务流程介绍

    7.2 项目实现

    视频数5
  • 第八章  作业测试
    第八章 基于MFC的俄罗斯方块游戏

    8.1 建立框架

    8.2 添加功能模块

    8.3 消息响应和界面绘制

    视频数3
  • 第九章  作业测试
    第九章 学生成绩管理系统

    9.1 管理信息系统开发概述

    9.2 系统功能和执行流程

    9.3 预设项目基本信息

    9.4 system函数

    9.5 主函数框架

    9.6 系统主菜单界面

    9.7 编码实现系统主菜单界面

    9.8 设置文字输出位置

    9.9 输入学生信息

    9.10 计算学生成绩

    9.11 学生记录存盘

    9.12 从磁盘读取学生记录

    9.13 增加学生记录

    9.14 按学号查询学生记录

    9.15 按姓名查询学生记录

    9.16 删除学生记录

    9.17 修改学生记录

    9.18 输出学生记录

    9.19 按姓名对学生记录排序

    9.20 按学号对学生记录排序

    9.21 按成绩对学生记录升序排序

    9.22 按总分对学生记录降序排序

    9.23 学生成绩统计

    9.24 退出系统

    视频数24
  • 期末考试
App 下载
关注我们