
作者:舒新峰主编
页数:288
出版社:清华大学出版社
出版日期:2020
ISBN:9787302543596
电子书格式:pdf/epub/txt
内容简介
本教材为使用C语言进行软件项目研发的案例教程。教材结合企业级案例“剧院票务管理系统”,系统介绍软件项目的开发流程,详细讲解面向过程分析、设计方法和主流的开发技术和工具,并展示企业级软件开发技术文档的内容组织和撰写方法。另外,为高校教师了使用C语言进行软件工程项目实践(集中实践)的整套教学组织、过程管理与考核的教学方案,并提供了相关的教学资源,为教师指导学生进行项目实践提供便利。
作者简介
1. 舒新峰 个人简介 舒新峰,男,博士,副教授,硕士生导师,西安邮电大学计算机学院软件工程系主任,陕西省精品资源共享课程“软件工程”课程负责人。2010年西安电子科技大学计算机应用专业博士毕业。主讲课程:软件工程、操作系统、软件项目管理、数据结构等。主要研究方向:软件工程、可信软件技术。长期从事软件工程相关课程的教学与科学研究工作,具备丰富的教学经验和软件项目研发经验,本教材相关的教学科研基础主要包括:
1)教学研究课题
(1) 2013-2015主持西安邮电大学教改项目:软件工程专业培养方案研究与应用。
(2) 2015-2017主持西安邮电大学教改项目:高素质应用型软件人才的系统化实践教学模式研究与实践。
(3) 2016-2018主持教育部高等学校计算机类专业教学指导委员会面向工程教育的本科计算机类专业课程改革项目:“软件工程”课程及教材资源建设。
(4) 2014-2016主要参与(排名第2)陕西省“软件工程专业综合改革试点项目”。
2)科学研究课题
(1) 2012-2013,主持横向课题”海量数据库访问中间件开发”;
(2) 2013-2014,主要参与(排名第2)横向课题“型号设计软件固
本书特色
以C语言实现一个企业级案例“剧院票务管理系统”。
目录
第1章概述/1
1.1从程序设计到软件开发1
1.1.1“做桌子”与“软件开发”1
1.1.2过程组织与管理4
1.1.3个人与团队6
1.2开发案例简介6
1.3如何使用本书7
1.4集中实践教学方案8
1.4.1实验目的8
1.4.2任务及要求8
1.4.3过程组织与管理9
1.4.4实践考核9
1.5本章小结11
第2章预备知识/12
2.1多源文件软件开发12
2.1.1函数声明与定义分离12
2.1.2静态变量与静态函数16
2.1.3内联函数17
2.1.4const变量与形参18
2.2宏函数19
2.3文件存储20
2.3.1文件操作流程及函数20
2.3.2文件格式设计25
2.3.3文件数据维护26
2.3.4多文件存储29
2.4动态内存管理36
2.4.1内存管理函数36
2.4.2动态数组38
2.4.3动态链表412.5TTMS的链表机制52
2.5.1数据结构定义52
2.5.2链表操作53
2.6TTMS的分页技术58
2.7本章小结62
软件项目综合实践教程——C语言篇目录第3章系统需求/63
3.1需求开发概述63
3.2项目背景64
3.3应用环境65
3.3.1软件环境65
3.3.2硬件环境65
3.4业务流程65
3.5功能需求66
3.5.1参与者定义67
3.5.2系统用例图67
3.5.3管理演出厅(TTMS_UC_01)67
3.5.4设置座位(TTMS_UC_02)69
3.5.5管理剧目(TTMS_UC_03)70
3.5.6安排演出(TTMS_UC_04)71
3.5.7生成演出票(TTMS_UC_05)71
3.5.8查询演出(TTMS_UC_06)72
3.5.9查询演出票(TTMS_UC_07)72
3.5.10售票(TTMS_UC_08)72
3.5.11退票(TTMS_UC_09)73
3.5.12统计销售额(TTMS_UC_10)73
3.5.13统计票房(TTMS_UC_11)74
3.5.14维护个人资料(TTMS_UC_98)74
3.5.15管理系统用户(TTMS_UC_99)74
3.6非功能需求75
3.6.1界面需求75
3.6.2其他需求75
3.6.3设计与实现约束76
3.7产品提交76
3.8本章小结76
第4章系统设计/77
4.1软件设计概述77
4.1.1数据结构设计77
4.1.2体系结构设计78
4.1.3接口设计78
4.1.4过程设计79
4.2设计决策79
4.3逻辑架构设计80
4.3.1管理演出厅(TTMS_UC_01)81
4.3.2设置座位(TTMS_UC_02)87
4.3.3管理剧目(TTMS_UC_03)92
4.3.4安排演出(TTMS_UC_04)98
4.3.5生成演出票(TTMS_UC_05)103
4.3.6查询演出(TTMS_UC_06)108
4.3.7查询演出票(TTMS_UC_07)111
4.3.8售票管理(TTMS_UC_08)112
4.3.9退票管理(TTMS_UC_09)116
4.3.10统计销售额(TTMS_UC_10)117
4.3.11统计票房(TTMS_UC_11)121
4.3.12维护个人资料(TTMS_UC_98)125
4.3.13管理系统用户(TTMS_UC_99)127
4.3.14主键服务133
4.4物理架构设计134
4.4.1工程目录结构134
4.4.2源代码文件135
4.4.3数据文件140
4.5详细设计140
4.5.1管理演出厅(TTMS_UC_01)140
4.5.2设置座位(TTMS_UC_02)147
4.5.3管理剧目(TTMS_UC_03)155
4.5.4安排演出(TTMS_UC_04)166
4.5.5生成演出票(TTMS_UC_05)171
4.5.6查询演出(TTMS_UC_06)175
4.5.7查询演出票(TTMS_UC_07)177
4.5.8售票管理(TTMS_UC_08)181
4.5.9退票管理(TTMS_UC_09)189
4.5.10统计销售额(TTMS_UC_10)190
4.5.11统计票房(TTMS_UC_11)194
4.5.12维护个人资料(TTMS_UC_98)198
4.5.13管理系统用户(TTMS_UC_99)199
4.5.14主键服务207
4.6本章小结209
第5章系统实现/210
5.1开发环境210
5.1.1开发工具210
5.1.2版本控制工具215
5.2测试驱动开发220
5.2.1测试驱动开发简介220
5.2.2测试驱动开发原则220
5.2.3测试驱动开发举例221
5.3系统测试226
5.3.1测试设计226
5.3.2测试报告228
5.4本章小结230
第6章项目验收/231
6.1验收流程231
6.2成绩评定233
6.2.1验收评定小组的成绩评定233
6.2.2教师的成绩评定235
6.3项目总结235
6.4本章小结237
第7章进一步学习/238
7.1C图形用户界面技术238
7.1.1图形用户界面简介238
7.1.2GUI开发技术与工具239
7.1.3Linux GTK+GUI开发241
7.1.4开发实例245
7.2数据库技术256
7.2.1数据库技术简介256
7.2.2SQL语言简介257
7.2.3MySQL数据库软件开发259
7.2.4开发实例265
7.3本章小结269
附录A开发计划/270
附录B开发日志/271
附录CC语言编程规范/272
C.1排版272
C.2注释273
C.3标识符、变量、宏、常量274
C.4函数276
附录D用户手册模板/278
节选
第5章系 统 实 现针对TTMS的软件系统需求及设计,本章介绍系统实现采用的开发环境Eclipse for C++及其相关组件的安装及配置、版本控制工具Git的安装及基本操作,给出测试驱动开发的基本方法及具体实例,以及系统测试的设计和测试报告撰写方法。
5.1开 发 环 境5.1.1开发工具开发工具可选用Eclipse for C++,对初学者来说,需要学会安装及配置方法。Eclipse for C++的安装及配置可按照以下步骤进行。
1. JDK环境
如果本机没有JDK环境,需要先安装JDK环境。
JDK下载地址为: http: //www.oracle.com/technetwork/java/javase/downloads/index.html。
选择相应的版本进行下载,此处以jdk1.8.0_91版本为例下载安装。下载完成后,即可进行安装,此时需要注意选择安装的路径,例如选择“C: Program FilesJava”。JDK安装完成之后,需要配置环境变量,配置环境变量方法如下。
选择“计算机”,单击鼠标右键,依次选择“属性”→“高级系统设置”→“高级”→“环境变量”,在“系统变量”下完成以下步骤:
(1) 单击“新建”按钮,新建一个环境变量JAVA_HOME,如图5.1所示。其值为前面JDK安装的目录,如“C: Program FilesJavajdk1.8.0_91”。
图5.1新建环境变量JAVA_HOME
(2) 选择Path变量,然后单击“编辑”按钮,如图5.2所示。在变量值栏最前面添加以下内容: %JAVA_HOME%bin;%JAVA_HOME%jrebin;注意: 最后的分号,用于将新添加的Java路径与后面的路径值分隔开,不能缺少。
图5.2编辑Path变量
(3) 单击“新建”按钮,新建一个环境变量CLASSPATH,如图5.3所示。其值为: .;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar。图5.3新建环境变量CLASSPATH
环境变量配置完成后,单击“确定”按钮,退出环境变量配置。在运行窗口输入cmd命令,在命令提示符下输入java 瞯ersion,如果出现Java正确版本号则表明JDK配置正确。软件项目综合实践教程——C语言篇第5章系统实现2. 安装Eclipse for C++
Eclipse for C++下载地址为: http: //www.eclipse.org/downloads/。
选择Eclipse IDE for C/C++ Developers进行下载。下载完成后直接解压即可,无须安装。单击解压目录中的eclipse.exe,就可以运行Eclipse for C++。
3. 安装MinGW
MinGW提供了一套简单方便的Windows下的GCC 程序开发环境。
下载地址为: https: //sourceforge.net/projects/mingw/files/?source=navbar。
下载完成之后,即可进行安装,选择安装目录“C: MinGW”,并按提示安装相关组件,如图5.4所示。因为只是进行C/C++编译开发环境的配置,所以这里只需要选择与C和C++ 有关的C Compiler和C++ Compiler的相关文件。选择完成之后,进行组件安装。
图5.4MinGW组件安装
4. 配置MinGW
新建系统变量MINGW_HOME,该变量的值设为MinGW安装目录,例如“C: MinGW”,如图5.5所示。
图5.5新建系统变量MINGW_HOME
在Path变量的最前面添加“%MINGW_HOME%bin;”,如图5.6所示。
图5.6设置Path变量
然后在Eclipse中进行配置。依次单击打开Window→Preferences→C/C++→New C/C++ Project Wizard,按照图5.7进行配置。
图5.7Eclipse 配置
单击OK按钮之后,弹出如图5.8的窗口,在该界面中选择Makefile Project,勾选“PE Windows Parser”,单击OK按钮保存(注意: 此设置过程意味着对所有C/C++工程都将应用此配置。如果只是想在单个工程中进行配置,可右击该项目,并依次选择Properties→C/C++ Build→Settings,在右侧选择Binary Parsers标签,并勾选PE Windows Parser即可,此设置过程只对当前选中的工程有效)。
图5.8Makefile Project配置
5. 环境测试
新建一个C++工程,选择Hello World C++ Project进行测试。
依次单击菜单栏File→New Project→C++ Project,输入工程名,例如“Hello”,在Project Explorer中右击工程hello,依次选择 Make Targets→Create,输入目标文件名hello,单击OK按钮,完成目标文件的创建。
在Project Explorer中右击工程hello.cpp,依次选择 Make Targets→Build,选择创建的目标文件,单击Build,完成hello工程的构建;在控制台显示如图5.9所示。
图5.9目标文件hello构建完成后控制台结果输出
接着单击Run运行程序,在控制台中显示如图5.10的输出结果,表明环境配置成功。
图5.10控制台输出结果
6. 导入已有工程
如果已经创建了一个工程,例如已创建剧院票务管理系统TTMS的工程文件,在使用eclipse时需要将该工程导入,可使用以下步骤:
(1) 单击菜单栏中File→Import,出现Import窗口。
(2) 在Import窗口中的General下选择“Projects from Folder or Archive”,单击Next按钮,出现“Import Projects”,该窗口给用户提供“Select a directory to search for existing Eclipse Projects”功能,选择“Select root directory”,单击Browse按钮,弹出选择工程位置的窗口。此处选择TTMS工程文件存储路径,然后单击Finish按钮,TTMS工程就添加到项目资源管理器中了。
5.1.2版本控制工具
Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。最初Git只能在Linux和UNIX系统上运行,现在通过移植,Git可以在Linux、UNIX、Mac和Windows这些平台上正常运行了。Git采用了分布式版本库的方式,不需要服务器端软件支持。
1. Git安装
Git在Linux和Windows操作系统中都可以使用,以下分别介绍在这两种系统中的安装方法。
(1) 在Linux操作系统上安装Git。在终端命令行输入以下命令后按回车键,就可以完成Git的安装:
$sudo apt瞘et install git
(2) 在Windows操作系统中安装Git。这里可以选择使用msysgit,它是 Git 版本控制系统在 Windows 下的版本。
msysgit下载地址为: https: //git瞗or瞱indows.github.io。下载后按默认选项安装即可。
安装完成后,在开始菜单里找到Git→GitBash,弹出一个类似命令行窗口,表明Git安装成功。
2. Git配置
Git提供git config工具,专门用来配置或读取相应的工作环境变量。这些环境变量,决定了Git在各个环节的具体工作方式和行为。在Linux操作系统中,这些变量可以存放在以下三个不同的地方:
(1) /etc/gitconfig文件: 系统中对所有用户都普遍适用的配置。若使用gitconfig时选用勃瞫ystem选项,读写的就是这个文件。
(2) ~/.gitconfig或~/.config/git/config文件: 只针对当前用户。可以传递勃瞘lobal选项让Git读写此文件。
(3) 当前项目的Git目录中的配置文件(也就是工作目录中的./gitconfig文件): 这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以./gitconfig里的配置会覆盖/etc/gitconfig中的同名变量。
在Windows操作系统中,Git会找寻用户主目录下的.gitconfig文件。主目录即$HOME变量指定的目录,一般是C: DocumentsandSettings$USER。
此外,Git还会尝试搜索/etc/gitconfig文件,Git安装在哪个目录下,就以此作为根目录来定位。
配置个人的用户名称和电子邮件地址: $git config –global user.name “runoob”
$git config –global user.email test@runoob.com如果使用了勃瞘lobal选项,那么更改的配置文件就是~/.gitconfig文件,所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电子邮件,只需去掉勃瞘lobal选项重新配置即可,新的设定保存在当前项目的.git/config文件里。
3. Git基本操作
(1) git init命令
功能: 在目录中创建新的Git仓库。
在目录中执行git init命令,就可以创建一个Git仓库。例如,创建test项目: $mkdir test
$cd test/
$git init
Initialized empty Git repository in /Users/u/test/.git/执行此操作后就可以看到在test中生成了.git这个子目录,该目录即为Git仓库,所有有关此项目的快照数据都存放在“/Users/u/test/.git/”中。
(2) git clone命令
功能: 复制一个Git仓库到本地,从而能够查看该项目,或者进行修改。
当需要与他人合作完成一个项目,或者查看项目的代码,就需要克隆该项目。执行以下命令可实现项目的复制: git clone [url]其中,[url]是需要复制的项目。默认情况下,Git会按照用户提供的URL所指示的项目名称创建一个本地项目目录,通常是该URL最后一个“/”后的项目名称。如果用户想要与目录不同的名字,则可以在该命令后加上新的名称。
例如,克隆Github上的项目: $git clone git@github.com:schacon/simplegit.git
Cloning into ‘simplegit’…
remote:Counting objects:13,done.
remote:Total 13(delta0),reused 0 (delta0),pack –reused 13
Receiving objects:100% (13/13),done.
Resolving deltas:100%(2/2),done.
Checking connectivity…done.克隆完成后,在当前目录下会生成一个simplegit目录: $cd simplegit/
$ls
README Rakefile lib上述操作将复制该项目的全部记录。
(3) git add和git status命令
功能: git add命令将文件添加到缓存;git status命令查看项目的当前状态。
例如,添加README和hello.php两个文件到缓存的方法如下。
创建README和hello.php文件: $touch README //创建README文件
$touch hello.php//创建hello.php文件
$ls
README hello.php查看项目当前状态: $git status -s
?? README
?? hello.php执行gitadd命令,添加文件到缓存中: $git add README hello.php执行git status: $git status -s
A README
A hello.php以上结果表明这两个文件已经添加到缓存中。修改README文件,输入以下命令: $ vim README在 README 文件中添加以下内容: # Runoob Git 测试保存退出。然后再执行 git status命令: $ git status -s
AM README
Ahello.phpAM状态表明README文件被添加到缓存之后进行了新的修改,需要再次执行git add 命令将其添加到缓存中: $ git add .
$ git status -s//查看添加之后的状态
AREADME
Ahello.php(4) git diff命令
功能: 比较两次修改的差异。
git diff命令显示已写入缓存的文件与已修改但尚未写入缓存文件的区别。不同的应用场景使用的命令不完全相同,主要有以下几种形式:
r git diff: 比较工作区文件与缓存区中的文件,当缓存区中没有文件时,比较的是工作区中的文件与上次提交到版本库中的文件;
r git diff –cached: 查看已缓存的改动;
r git diff HEAD: 查看已写入缓存的与未缓存的所有改动;
r git diff –stat: 显示摘要而非整个 diff。
例如,在 hello.php 文件中输入以下内容并执行后面的操作命令: $ git status -s
AREADME
AM hello.php
$ git diff
diff –git a/hello.php b/hello.php
index e69de29..69b5711 100644
— a/hello.php
+++ b/hello.php
@@ -0,0 +1,3 @@
+在以上代码中,git status 显示上次提交更新后的更改或者写入缓存的改动,而 git diff 一行一行地显示这些改动的具体内容。
(5) git commit命令
功能: 将缓存区内容添加到项目仓库中。
每一次提交Git都会记录提交者用户名和电子邮箱地址,因此首先需要配置用户名和邮箱地址,接着写入缓存,并提交在前面例子中对hello.php文件的所有改动。$ git add hello.php
$ git status -s
AREADME
Ahello.php
$ git commit -m ‘第一次版本提交’
[master (root-commit) d32cf1f] 第一次版本提交
2 files changed, 4 insertions(+)
create mode 100644 README
create mode 100644 hello.php通过这些操作就已经记录了快照,执行 git status命令,则结果如下: $ git status
# On branch master
nothing to commit (working directory clean)以上输出表明在最近一次提交之后,没有做任何改动。
如果在git commit命令中没有 瞞 选项,Git会尝试打开一个编辑器来填写提交信息,默认会打开 vim。屏幕会显示: # Please enter the commit message for your changes. Lines starting
# with ‘#’ will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use “git reset HEAD …” to unstage)
#
# modified: hello.php
#
~
~
“.git/COMMIT_EDITMSG” 9L, 257C(6) git rm命令
功能: 从当前的工作目录和文件缓存区中删除文件。例如,删除hello.php文件: $git rm hello.php
rm ‘hello.php’如果仅删除缓存区文件,保留当前目录下的文件,可以使用git rm –cached。例如:















