C语言大作业
本课程设计将通过设计和实现一个任务清单(To Do List)应用,对C语言程序设计课程中学习的选择结构、循环结构、数组等知识点进行综合运用;同时通过该应用的开发,对C语言程序
的设计与开发过程等做简要介绍。
课程设计
前言
本课程设计将通过设计和实现一个任务清单(To Do List)应用,对C语言程序设计课程中学习
的选择结构、循环结构、数组等知识点进行综合运用;同时通过该应用的开发,对C语言程序
的设计与开发过程等做简要介绍。
背景
任务清单通过将待做事项变成可以具体执行的行动,从而帮助你更好的管理、安排和执行你的
生活。简单来说,使用任务清单,就是写下你需要做的一切。但是对于那些虚无缥缈的想法或
项目,要把它们拆解成可执行的行动。例如你要完成一个宣传“时间管理”的演讲,这个项目本
身不可执行,因为你需要前期的准备才能宣传。所以你要写“1.收集演讲内容”、“2.完成演讲稿
和PPT文件”和“3.选定地点和演讲时间”。
1.显示菜单
我们使用命令行界面与应用的使用者(以下简称“用户”)进行交互,当应用运行时,系统应显
示出菜单,同时等待用户的输入,用户输入相应的指令后,应用根据用户输入的指令,执行相
应的操作。例如一个简单的菜单如下:
请输⼊指令:
1 添加新任务
2 查看现有任务列表
0 退出程序
提示:
菜单显示可以通过循环方式显示,用户输入退出程序的指令后,跳出循环。
较好的实现方法是定义一个单独的函数例如menu( )实现显示菜单的功能,主函数里调
用menu( )函数显示菜单。
2.定义数据结构
一个任务应该至少包括任务标题,任务具体的描述,任务的截止日期,任务的完成状态等信
息,我们采用结构体定义任务,使用字符串定义任务标题和任务的描述,使用整型定义任务截
止日期的年、月和日以及任务的完成状态。
我们使用数组表示任务列表,系统初始运行时,数组为空,用户输入一个新任务时,则在数组
中插入相应的元素,假设用户输入的任务数量总数不会超过100。
3.任务输入
用户在菜单选择页面输入相应的指令(例如输入1)后,应用输出提示信息,提示用户依次输
入新任务的标题、描述、以及截止日期等信息,并保存用户输入的信息(将用户输入的信息保
存在数组中)。
提示:
可以使用全局变量记录用户已经输入的任务个数(即数组中已经有内容的元素个数)。
可以使用switch语句实现用户输入相应指令后,执行不同的操作(例如输入1后,提示
用户进行输入;输入0后,退出程序)。
较好的实现方式是定义一个单数的函数例如add_task( )实现用户输入任务的功能,
menu( )函数中调用add_task( )。
4.显示任务列表
用户在菜单选择页面输入相应的指令后,应用输出现有任务列表。
提示:
输出时,应不仅输出数据信息(例如任务a等),还应输出这一列数据代表的含义(例
如任务标题等)。
较好的实现方式是定义一个单数的函数例如list_task( )实现显示任务列表的功能,menu(
)函数中调list_task( )。
5.完成任务
用户在菜单选择页面输入相应的指令后,应用输出现有任务列表,应用输出提示信息提示用户
输入要完成的任务编号,应用将该任务的任务完成状态改为已完成。
提示:
任务的完成状态数据类型为整型,可以用不同的数字代表不同的任务完成状态。例如0
表示项目未完成,1表示项目已完成等。
较好的实现方式是定义一个单数的函数例如finish_task( )实现完成任务的功能,menu( )
函数中调finish_task( )。
6.查找任务
用户在菜单选择页面输入相应的指令后,应用输出提示信息提示用户要查找的关键字,用户输
入要查找的关键字后,应用将现有任务列表中,任务标题及任务内容与要查找关键字相同的任
务列表输出。
提示:
比较字符串是否相等可以用strcmp( )函数。
较好的实现方式是定义一个单数的函数例如query_task( )实现查询任务的功能,menu( )
函数中调query_task( )。
7.任务排序
用户在菜单选择页面输入相应的指令后,应用输出提示信息提示用户要进行排序的字段名称
(例如任务标题、任务截止日期等),用户输入要排序的字段名称后,应用将任务列表的内容
根据用户所输入的字段名称排序后输出。
提示:
较好的实现方式是定义一个单数的函数例如sort_task( )实现任务排序的功能,menu( )函
数中调sort_task( )。
8.保存到文件
用户在菜单选择页面输入相应的指令后,应用将现有的项目列表的内容按照一定的格式输出到
文本文件(.txt)中。
9.其他功能 (20%)
增加你认为这个应用需要的其他功能,该部分占本次大作业分数的20%,将结合创意、功能实
用性、开发难度等综合进行评分。
提示:
可以参考的方向:
截止日期增加时间;
任务排序可以根据多个条件排序(例如以任务标题为第一关键字,任务内容为第
二关键字);
任务启动时,从保存的文件中读取之前保存的任务列表;
删除任务;
任务设置优先级;
任务的拆分和合并;