1上海应用技术学院课程设计2012-2013学年第二学期设计题目:日程管理21.课程设计任务书上海应用技术学院课程设计任务书课程名称程序设计语言课程设计课程代码B704010设计题目1.算术练习2.个人收支管理3.通讯录4.成绩记录簿5.图书借阅管理6.日程表管理题目序号6设计时间2013年7月1日——2013年7月12日系(院)计算机与信息工程学院专业班级一、课程设计任务(条件)、具体技术参数(指标)1.在指导书提供的课程设计题目中选择一题或自选(但需经过指导教师认可)2.每个题目限一人完成,题目选定后不可更换。3.用户提供的主操作界面应该方便用户的操作。4.最后提交的课程设计成果包括:a)课程设计报告电子稿。c)源程序文件。d)可执行程序文件。二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)1.分析课程设计题目的要求;2.写出详细设计说明;3.编写程序代码,调试程序使其能正确运行;4.设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5.设计完成后提交课程设计报告和源代码文件的电子文档。三、课程设计工作进度计划:第一天选择课程设计题目,分析课题的要求,确定设计方案;第二天总体设计,模块划分第三天绘制程序流程图;第四天按功能模块编写详细设计说明;第五天编写程序代码第六天设计用户界面;第七天运行与调试程序;第八天写课程设计报告;第九天完成软件的设计准备答辩第十天提交课程设计报告;面试或答辩。3四、主要参考资料[1]谭浩强.C程序设计(第三版).北京:清华大学出版社,2005[2]谭浩强.C程序设计题解与上机指导(第三版).北京:清华大学出版社,2005[3]HerbertSchildt.C语言大全(第四版).北京:电子工业出版社,2004[4]SamuelP.HarbisonⅢ,GuyL.Steele.C语言参考手册(第5版).北京:机械工业出版社,2003[5]程序设计语言课程设计指导书.指导教师(签名):教研室主任(签名):2013年7月1日2013年7月12日4目录:1.课程设计任务书**************22.目的及要求******************62.1课程设计目的2.2课程设计要求3.课程设计内容说明************73.1.程序功能介绍3.2程序设计整体设计说明3.3数据结构设计3.4程序结构设计3.41程序子程序及功能设计3.42函数主要调用关系图3.43各模块流程图4.运行结果*******************175.源程序代码分析*************316.课程设计感悟***************4252.目的及要求2.1课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言》课程后进行的一次全面的综合练习。本课程设计的目的和任务:1)巩固和加深学生对C语言课程的基本知识的理解和掌握;2)掌握C语言编程和程序调试的基本技能;3)利用C语言进行基本的软件设计;4)掌握书写程序设计说明文档的能力5)提高运用C语言解决实际问题的能力。2.2课程设计要求1)分析课程设计题目的要求;2)写出详细设计说明;3)编写程序代码,调试程序使其能正确运行;4)设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5)设计完成后提交课程设计报告和源代码文件的电子文档。63.课程设计内容说明3.1.程序功能介绍本系统的主要功能是实现日程表的管理,有添加日程,删除日程,查询日程,显示日程,设置日程,修改日程,日程排序,读取日程,保存日程的功能。每个日程的信息包括:日程时间,日程名称,日程详情,日程提醒,日程标记。3.2程序设计整体设计说明本系统的主函数是整个程序的核心,子函数之间也是有联系的,对日程的删除,查询,显示,修改,保存,必须是在添加了日程,或者读取了日程的情况下进行的。一些基本操作在子函数中多次重复使用,即可单独设定函数,多次调用即可。运行程序开始后进入主菜单,用户即可选择选择要进行的操作,例如,1为添加日程,用户需输入相应信息。选择2为删除日程,按照日期或者名称选中相应日程后,可以删除日程或者日程设置。等等功能。当选择不存在时提示用户选择错误并提示重新选择。3.3题目要求3.31.设计要求基本功能:添加日程信息;删除日程信息;查询管理;设置管理;拓展功能:日程信息的修改;设置修改;设置删除;创新(自拟)功能:程序实现的其它功能由个人自拟。3.32.设计要求具体说明7添加日程信息:需要输入日期、时间及相关的事件名称,并提示是否有时间冲突。删除日程信息:需要输入日期、时间后,显示相关的事件名称,由用户确认是否删除。查询功能:a)查询提前提醒事件,即提示将要发生的日程信息;b)查询某天的日程信息。对已经过去和将要发生的事件要区别显示。设置功能:a)可以设置提前提醒的时间。b)日程信息需写入文件,文件的建立自我定义。c)输入的日期、时间要进行合理性检查。d)设置提前提醒的时间,并进行合理性检查。拓展功能:a)能进行日程表信息的修改;b)设置信息的修改、删除。3.33.提示:定义合适的结构体类型,使用链表或数组的方式组织数据。3.4数据结构设计本系统包含的数据结构有:structDate_time//定义时间结构体;{intyear;intmonth;intday;inthour;intmin;};structricheng//定义日程结构体;{structDate_timedate;structDate_timeremind_date;charname[100];chardetail[200];structricheng*next;};83.5程序结构设计3.51程序子程序及功能设计intmain()//主函数charMenu();//显示菜单intrunnian(intyear);//判断是否闰年inttime_panduan(structDate_timetime);//检查输入时间是否合法intdate_panduan(intyear,intmonth,intday);//检查输入日期是否合法structricheng*select_name_program();//按照名称选择日程voidshow(structricheng*p);//显示指针指向的日程的信息voidset_remind_program(structricheng*p);//设置日程提醒的时间structricheng*select_program();//选择日程voidadd();//添加日程voiddelet_zhiding_richeng(structricheng*p);//删除指定日程voiddelet();//删除日程voidsearch_zhiding_richeng(charname[100]);//按名称查询指定日程voidsearch();//查询日程voidxiugai();//修改事日程信息voidread();//读取日程文件voidwrite();//写入日程文件93.52函数主要调用关系图103.53各模块流程图添加日程11删除日程12查询日程13显示日程14修改程序15读取日程16保存日程174.运行结果1.点击运行,出现如下界面,可根据提示,选择菜单,进行相关操作;添加日程功能2.选择菜单,输入1,进入添加日程功能,第一步:提示输入日程的时18间,第二步:提示输入日程的名称,第三步:提示输入日程的具体内容。第四步:进入设置界面,提示设置日程的提示时间。输入完成后回车,日程的添加功能就完成了。注意:在这个功能里,对于时间和日期的合法性都有检查,如果输入的时间有错误,那么就会自动提示输入的不正确,请重新输入。19保存日程的功能3.完成菜单一的添加日程功能后,按回车键返回主菜单,然后选择6,进入保存日程的功能,选择6后,点击回车,界面提醒“保存成功”,这时日程的保存就完成了,日程就保存在了“我的日程.txt”,文本文档里了。我们就完成了对日程的写入保存功能。20文件的读取功能4.完成日程的保存写入功能之后,就会自动返回主菜单,选择5,进入文件的读取功能,点击回车,屏幕上会显示已保存的日程的全部信息,包括日程日期,日程名称,详细信息,提醒时间;21进入查询日程功能5.完成读文件功能之后,点击回车,回到主菜单就可以选择其他功能进行操作,例如选择3,进入查询日程功能,界面自动提醒:1.查询指定日程,2.退出操作,选择1,查询指定日程,提示输入查询日程的名称。输入要查询的日程的名称后,关于这条日程的详细信息就会显示。然后选择0,退出查询功能,返回主界面。22注意;如果输入的日程名称不正确,系统会自动提醒,查找的日程不存在。23修改功能6.返回主菜单后选择4,进入日程的修改功能,然后提示输入要修改的日程名称,输入名称,进入修改界面,1.修改日程时间,2.修改日程名称,3.修改日程详情,4.修改日程提醒时间,0.退出。选择要修改的内容,如选择4修改日程的提醒时间,回车后,输入新的提醒时间,回车,选择0完成,回车,返回主菜单,然后选择6保存日程,再选择5,读取日程,界面就显示修改后的新日程的新信息了,这样的话,修改就成24功了。252627删除功能6.完成修改功能后,回车进入主菜单,选择2,进入删除功能,输入要删除的日程名称,回车进入删除界面,选择1,确认删除,删除后,界面显示删除成功。并返回主菜单。选择6,保存删除,选择5,读取日程,就看不到刚刚删除的那条日程信息了。2829305.源程序代码:#includestdio.h#includestdlib.h//stdlib头文件里包含了C语言的一些函数#includestring.h//字符串头文件#defineAsizeof(structricheng)//宏定义就是在程序编译前,用sizeof(structricheng)代替AstructDate_time//定义时间结构体;{intyear;intmonth;intday;inthour;intmin;};structricheng//定义日程结构体;{structDate_timedate;//包含了时间结构体structDate_timeremind_date;//提醒时间charname[100];chardetail[200];structricheng*next;}*head=NULL,*p0=NULL;//*head指向开头,*p0指向末尾charset[20];charMenu();//显示菜单intrunnian(intyear);//判断是否闰年inttime_panduan(structDate_timetime);//检查输入时间是否正确intdate_panduan(intyear,intmonth,intday);//检查输入日期是否正确voidshow(structricheng*p);//显示指针指向的日程事件信息structricheng*select_name_program();//按名称选择日程structricheng*select_program();//选择日程voidset_remind_program(structricheng*p);//设置日程提醒日期voidadd();//添加日程voiddelet_zhiding_richeng(structricheng*p);//删除指定日程voiddelet();//删除日程voidsearch_zhiding_richeng(charname[100]);//查询指定日程,按名称查询voidsearch();//查询日程voidxiugai();//修改事日程voidread();//读取日程voidwrite();//写入文件intmain()//主函数{structricheng*p;//定义了结构体日程的指针charx;31charfilename[100];do{x=Menu