Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
魔法少女赵志辉
ap2021a-project
Commits
00c187f5
Commit
00c187f5
authored
Aug 31, 2021
by
魔法少女赵志辉
🍊
Browse files
Add hyperlinks.
parent
a968bddf
Changes
2
Hide whitespace changes
Inline
Side-by-side
project0/project0.pdf
0 → 100644
View file @
00c187f5
File added
project0/project0.tex
View file @
00c187f5
...
...
@@ -4,9 +4,10 @@
\def\CC
{
{
C
\nolinebreak
[4]
\hspace
{
-.05em
}
\raisebox
{
.4ex
}{
\small\bf
++
}}
}
\title
{
%
\vspace{-
3
0pt}
\vspace
{
-
5
0pt
}
\textbf
{
\Huge
Project0
}
\\
\textbf
{
\huge
《高级程序设计》课程项目说明
}
\textbf
{
\huge
《高级程序设计》课程项目说明
}
\\
\small
Version 1.1.0
}
\author
{
刘添翼
\thanks
{
\href
{
mailto:tyi.liu@outlook.com
}{
tyi.liu@outlook.com
}}}
...
...
@@ -71,7 +72,7 @@
\item
实现一个
\textbf
{
高级
}
的学生信息管理系统。
\end{itemize}
通常来说,每个学期会同时发布三个以上的项目,
每
位同学可以任意选择一个并坚持完成。如果想要选择其他自定义的项目,可以联系助教。
通常来说,每个学期会同时发布三个以上的项目,
各
位同学可以任意选择一个并坚持完成。如果想要选择其他自定义的项目,可以联系助教。
\section
{
关于GUI
}
\subsection
{
一些传统
}
...
...
@@ -80,15 +81,25 @@
传统上,课程设计的前两个阶段被限定成项目中不能带有GUI,而第三个阶段的任务通常是为前面完成的项目加上GUI。我(们)觉得没有必要严格保持这个传统。
\subsection
{
图形库推荐
}
如果对
\CC
{}
的图形库并不熟悉,这里我们从简单到复杂给出三个库供参考:
\begin{
itemize
}
\item
FLTK
\item
wxWidgets
\item
Qt
\end{
itemize
}
\begin{
description
}
\item
[\href{https://www.fltk.org}{FLTK}]
是一个相当轻量级的
\CC
{}
图形库。
\item
[\href{https://www.wxwidgets.org}{wxWidgets}]
是一个相对轻量级的
\CC
{}
图形库。
\item
[\href{https://www.qt.io}{Qt}]
是非常流行的
\CC
{}
图形应用开发框架。
\end{
description
}
其中的每一个都有足够多的文档和示例程序,互联网上也有足够多的讨论内容,可供学习使用。
\subsection
{
图形库的安装
}
我们强烈建议,没有经验的同学在第一时间下载、安装这些库并且实际体验。安装过程可能会极端地痛苦和使人困惑,尤其是对于没有经验的同学来说。如果你遇到这方面的问题,欢迎向助教寻求帮助。
对于FLTK,
Windows用户可能需要安装
\href
{
https://www.msys2.org
}{
MSYS2
}
才能从中得到预编译的库;
大部分的Linux发行版通过自己的包管理系统提供打包好的库和头文件;
macOS用户可以使用
\href
{
https://brew.sh
}{
Homebrew
}
作为自己的包管理器。
当然,总是可以直接下载它的源代码然后自行编译——这其实不是一件困难的事情,但是想要完全理解整个过程,需要综合运用各位同学在计算机系的专业课(主要是
\emph
{
计算机系统基础
}
)上学到的知识。
对wxWidgets和Qt而言,在主流的操作系统下都有打包好的安装程序。
\section
{
关于开发环境
}
课程项目本身并不限定开发环境。但是《高级程序设计》的OJ的评分服务器运行Linux操作系统,使用gcc 4.9.2作为编译器套件,使用
\CC
{}
11作为
\CC
{}
语言的标准。这一点是无法更改的。
...
...
@@ -109,18 +120,20 @@ Windows是非常流行的操作系统,传统上它对开发者不是很友好
\subsection
{
集成开发环境
}
\subsubsection
{
Visual Studio
}
Visual Studio是Windows上非常流行的IDE(
\textbf
{
I
}
ntegrated
\textbf
{
D
}
evelopment
\textbf
{
E
}
nvironment,集成开发环境),它可以用来开发
\CC
{}
程序。不过它默认使用的编译器,MSVC,和gcc/clang的行为存在一定差异(尽管我们可以通过设置项目的编译选项让MSVC的行为和标准尽可能一致,或者在稍新一些的Visual Studio中选择使用clang作为编译器)。总之,如果对自己写的程序是否符合
\CC
{}
标准没有信心,我们建议不要使用Visual Studio作为课程的主力开发环境,这可能会损害各位同学的OJ体验(比如在本地写的程序可以欢乐地跑起来,但是一传到OJ上就不能正常工作)。
\subsubsection
{
Visual Studio Code
}
Visual Studio Code是非常流行的代码编辑器。通过加入一些插件,它可以很好地胜任《高级程序设计》课程中的开发工作。
\subsubsection
{
Qt Creator
}
Qt Creator本来是为开发使用Qt库的
\CC
{}
程序而设计(在这门课里让我们忽略QML吧)。但它也可以被当作是通常的
\CC
{}
的IDE来使用,或许有些同学会喜欢它。
\subsubsection
{
CLion
}
CLion也是可用的
\CC
{}
IDE。
\subsubsection
{
IDE推荐
}
如果对其他
\CC
{}
的IDE感兴趣,可以尝试下面列出的这些:
\begin{description}
\item
[\href{https://code.visualstudio.com}{Visual Studio Code}]
是非常流行的代码编辑器。通过加入一些插件,它可以很好地胜任《高级程序设计》课程中的开发工作。
\item
[\href{https://www.qt.io/product/development-tools}{Qt Creator}]
本来是为开发使用Qt库的
\CC
{}
程序而设计(在这门课里让我们忽略QML吧)。但它也可以被当作是通常的
\CC
{}
的IDE来使用,或许有些同学会喜欢它。
\item
[\href{https://www.jetbrains.com/clion/}{CLion}]
是JetBrains公司出品的著名系列IDE中的一个。你需要使用南京大学的学生邮箱来得到教育版本的许可证。
\end{description}
\subsection
{
其他有用的工具
}
\begin{description}
\item
[Address Sanitizer]
是一个开箱即用的内存安全错误检查工具。它对于找出
\CC
{}
程序中的内存错误很有帮助。
\item
[clang-format]
是一个代码排版工具。可以使用它把
\CC
{}
代码排版成自己喜欢的样式。
\item
[
clang-tidy
]
是一个代码风格检查工具。它可以就代码的不良风格给出警告。
\item
[\texttt{-Wall}]
是gcc/clang编译器的编译选项。开启它将得到更多来自编译器的警告,这有助于在编写代码的过程中尽早发现问题。类似的选项还有很多。
\item
[
\href{https://github.com/google/sanitizers/wiki/AddressSanitizer}{
Address Sanitizer
}
]
是一个开箱即用的内存安全错误检查工具
,它被集成在包括MSVC在内的所有主流编译器中
。它对于找出
\CC
{}
程序中的内存错误很有帮助。
\item
[
\href{https://clang.llvm.org/docs/ClangFormat.html}{
clang-format
}
]
是一个代码排版工具。可以使用它把
\CC
{}
代码排版成自己喜欢的样式。
\item
[
\href{https://clang.llvm.org/extra/clang-tidy/}{clang-tidy}
]
是一个代码风格检查工具。它可以就代码的不良风格给出警告。
\item
[\texttt{-Wall}]
是gcc/clang编译器的编译选项。开启它将得到更多来自编译器的警告,这有助于在编写代码的过程中尽早发现问题。类似的选项还有很多
,可以参考
\href
{
https://stackoverflow.com/questions/5283894/recommended-w-flags-for-building-c-with-gcc
}{
这里
}
或者查询编译器的在线手册(manual)
。
\end{description}
\section
{
关于
\CC
{}}
...
...
@@ -130,5 +143,5 @@ CLion也是可用的\CC{}IDE。
\item
[\emph{Programming -- Principles and Practice Using \CC{}}]
适合编程基础薄弱的同学。这本书的优势在于,它以FLTK为基础,介绍了图形库的基本思想。
\item
[\emph{\CC{} Primer}]
适合基础相对薄弱的同学。这本书写得很详细,适合作为入门读物。
\end{description}
除此之外,也可以参考互联网上的一些资料,比如
\emph
{
\CC
{}
Core Guidelines
}
。
除此之外,也可以参考互联网上的一些资料,比如
\
href
{
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-abstract
}{
\
emph
{
\CC
{}
Core Guidelines
}
}
。
\end{document}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment