大一c/c++课程设计指南

y401990313 2023-07-14 18:15:44

前言

本篇文章旨在帮助各位刚刚进入大一的同学指导完成自己的第一份课程设计。在大一时期,对大部分同学来说课程设计都是一个新颖的词汇,有些同学可能认为课程设计与之前c或c++的课程一样,仅仅是写几行代码解决老师给出的特定问题。但实际上,课程设计是一个庞大的工程,是大学毕业设计的一次重要经验,也是日后工作竞赛诸多项目的基础。即使是对一些有过代码编写经验的同学来说,和同学合作完成一个大项目也是初次。因此,本文将给出项目编写中相对重要的点以及一些可能会用到的建议。

一、决定分工

1.找到适合你的队友:找到最适合你的几名队友。在项目开始前,我决定将项目分工这个最关键的点写在最前面。各位老师将课程设计设置为以小组为单位是有原因的,因此,请尽量不要自己一个人完成项目,即使你能。团队合作的经验对你将来的竞赛以及工作都有很大帮助。因此,请妥善选择与你一起制作该项目的团队,大部分同学会选择与自己关系较近的舍友,但如果因为一些原因,你想要与其他同学一起组队,请尽快主动询问,不要等到最后一天才去找。

2.组内分工:决定好组内的分工是什么。老师会给出约20个左右的项目。一个好的项目应包括如果你是组长,请尽快决定好你们想要制作的项目,并决定组员的分工情况:如界面、用户系统、管理员系统等;如果你是组员,请告诉组长你擅长或者想要尝试哪部分的制作。不要一个人承担80%的工作,也不要把一个人扔到一边让他去摸鱼,让每个人都参与进项目的制作。

3.沟通与协作:如果你是组长,请鼓励团队成员之间的良好沟通和协作,确保彼此之间的工作互补和进展顺利。

4.定期检查进度:设定里程碑并定期检查项目的进展。如果有某部分的工作超出了你的能力范围,请进行学习后再继续,或者重新调整分工。

5.最后,如果你没记住上面任何一句话,请至少记住一句:不要一声不响的摆烂,尊重你的组员,尊重你的老师。

二、代码整洁

接下来,则是老师考察项目的一个关键点,代码的规范程度。

1.命名规范:采用有意义且一致的命名规范,避免使用缩写和无意义的变量名。很多同学为了方便会选择使用a,b,c,d...因此,在很多项目中我们都能看到26个字母的组合在来回变换。虽然项目仍然能运行,但无论是对你的队友还是你的老师来说,这都极大的增加了阅读的难度。举个例子,如果你想要将你项目中的某个密码设置为变量,请直接写成Password,而不是aaaa或bbbb,这样你的队友就不会对着26个字母表发愁了。

2.适当注释:在关键代码块或难以理解的地方添加注释,解释代码的意图和实现方法。与前面的项目一样,注释对一个程序员来说是很重要的技能,试想一下吧,当你写了一长串代码后自豪的把它炫耀给其他人看,然而其他人却根本没心思去细细品味你那一长串连在一起的字母。也许你在之前的做题过程中并没有写过注释,那么,从现在开始,在你重要或复杂的代码后打上#,然后解释一遍你这串代码的意义。

3.模块化设计:将代码分为逻辑上相互独立的模块,提高代码的可维护性和重用性。与上面两项不同,模块化设计是为了节省你自己的时间,在一个项目中,你最好以类、结构体或代码的形式将一个功能实现。这样你就能在再次使用这部分功能时优雅的打上一个变量名,然后用省下的时间为自己倒一杯饮料庆祝一下,没错,你学会了模块的使用!

4.避免冗余代码:删除无用的代码和重复的功能实现,使代码更加简洁和高效。很多同学在写了一长串代码后,却懊恼的发现它根本不能运行,它的底层逻辑出现了错误,这个时候你不得不删掉它。但别急,在这串代码的前后分别加上#和#,这样它就会以一个注释的形式存在于你的代码中,而不参与任何的运行。在之后的编写过程中,你很可能会再次用到它。当你完成了全部代码后,别忘了删除这些多余的注释。

三、功能完善:

下面,则是一个项目中最重要的部分,在最后的答辩环节,老师或学长会检查你的项目并向你提问,而项目功能的完善程度直接决定了你课设分数的高低:

1.充分理解需求:确保对项目需求的全面理解,以避免功能缺失或误解。一个好项目的前提就是完成它原本的需求,在老师给你的主题中一般会伴随3-5个条件,在你为你的操作系统增加诸多复杂的功能前别忘了看看它们,如果你做的太嗨,也别忘了最后去完成它们。

2.动态链表的使用:在大一的项目中,动态链表相对于数组或列表来说是一种更高级的数据类型。即使你认为它写起来异常复杂,远远不如数组那样简单,但在一些合适的地方使用它会大大提高项目的运行效率,在老师或学长眼中,它也会是一个加分项。

3.错误处理:合理处理错误和异常情况,给出相应的提示信息或错误处理机制,提升用户体验。想一想,在你输入密码的地方会不会有人输入了1000个字符?在他打出了1000个字符之后你的项目是给出了一个提示错误窗口还是直接崩溃了?会不会有人在进入了你的系统后没法退出了?他是不是被丢进了一个叫SAO的....咳咳,让我们转回正题,上面所说的这些就是项目中的错误或者误差,你应该尽可能地想象一个笨拙的使用者会怎么玩弄你的程序,然后给他一个大大的提示窗口“嘿!你不应该在这地方输入这些东西!”

四、算法优化:

当你完成了你项目的大部分功能后,你就会发现它实在是太慢了,为此,你需要选择一些优质的算法来提升你项目的效率。因为每个项目所需要的算法都不尽相同,在此,笔者仅给出一些可以参考学习的书籍或网站,具体要使用哪些算法需要根据你自己的项目来决定:

1.MIT 的老教授 Gilbert Strang 的线性代数上课视频(没错,数学是算法的基础,尤其是线性代数):https://www.bilibili.com/video/BV18K4y1R7MP/

2.知乎上一位著名博主总结的算法合集:https://pan.baidu.com/s/12tbVrUF056pY7aCyMpgl1w?pwd=jack

3.《算法红宝书第四版》:这本书对每一个算法知识点讲得都很详细,同时不是很繁琐,比较容易上手。

4.《算法导论》:我们可以把《算法导论》当做算法中的字典来使用,在学完了基本的算法与数据结构,大家想对某一个知识深入学习或者复习的时候,这个时候可以查一查《算法导论》。

五、不要踏入的误区:

1.盲目追求复杂性:避免过度设计和过度复杂的解决方案,应该保持简洁和可理解性。有些同学做着做着会发现自己加入的功能实在太多,导致原本最基础的功能十分薄弱,别忘了你的项目究竟是要做些什么。

2.界面耗费精力过多:避免过于复杂耗费时间的界面设计。这门课程主要考察的是你项目的功能,而不是你的美术水平。因此,不要把界面做的过于复杂,虽然可视化界面与命令行界面之间的分数确实存在着差别,但若是为此去专门做一个flash动画也大可不必。

3.忽略代码复用性:避免每次都从头开始编写代码,应该鼓励代码的重用和模块化设计。当你写代码的时候,别忘了使用你队友已经写过的功能。重复一遍不仅会拖慢项目的进度,甚至可能导致意想不到的报错。

4.缺乏团队合作:缺乏有效的沟通和合作将影响项目的进展和质量。最后一点,也是我最开始所说的,多和你的队友沟通,分清各自的分工,然后一起将一个优秀的项目呈现给你的老师。

以上便是大一课设的一些经验,感谢大家的耐心观看,祝大家这两门课都能4.5!

 

...全文
137 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,116

社区成员

发帖
与我相关
我的任务
社区描述
东北大学计算机类专业社区
辽宁省·沈阳市
社区管理员
  • gibeonwu
  • Mr.Z2001
  • Yu_Des2023
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

自强不息,知行合一

试试用AI创作助手写篇文章吧