面向对象程序设计课程设计报告
(2011/2012学年第二学期)
题目名称 学生考勤管理程序
系 部
专 业
班 级
学 生
学 号
完成时间
指导老师
引 言
1.20世纪末,随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。学生考勤管理程序是信息管理系统的一个子系统,一个基于单机版的系统。因为随着计算机技术的不断进步与发展,计算机已经深入到人们日常生活的每个角落,例如:部门,企事业单位,学校等等。该系统开发功能主要包括:管理员可以通过计算机设置学生考勤管理程序,打印供学校及个人使用。
2.学风是高等学校办学思想、人才培养质量和管理水平的重要标志,也是学生思想品质、学习态度和综合素质的重要体现,是学生思想政治教育和校园精神文明建设及高校校风的重要组成部分。良好的学风对于提高教学水平和人才培养质量,促进学生的全面发展和健康成长有着十分重要的意义。学风建设是一个系统工程,是大学理念和大学精神的重要体现。为构建我系学风建设的长效机制,营造良好的学习氛围,创造良好的育人环境,提高教学质量及人才培养质量,促进学校教育事业的发展,充分发挥自律会组织的功能,根据《湖南农业大学学生手册》的相关规定以及本系的实际情况,特制定本学生考勤管理系统。
3.程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识,加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力。学生考勤管理程序是学校管理工作中一个比较重要的任务,过多的学生考勤管理程序工作给学校管理人员带来了很大麻烦的。虽然原始的记录方法在一定的程度上可以解决问题,可是现在计算机已经走到了我们的生活,它的不足之处就显而易见了。学生考勤管理程序,是一个对于学生考勤的管理系统, 不仅大大减少了考勤管理人员的大量的工作,而且还方便了班级和学校对学生出课率的查询,只要通计算机登入本系统就能及时修改、更正学生的考勤信息,使信息真实、有效。这样节省了大量人力物力,节省了宝贵的时间,大大提高了工作效率.用C语言进行了该系统的编写。操作上力争实现人性化、合理化,满足学校、老师、非计算机管理人员的使用和查看。
1.课程设计目的和意义
通过这次课程设计使学生达到熟练掌握c++语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的知识和技能,解决简单的面向对象程序设计问题。“学生考勤管理系统”要求实现---“学生考勤管理程序”记录学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。
1.录入学生的缺课记录;
2.修改某个学生的缺课记录;
3.查询某个学生的缺课情况;
4.统计某段时间内,某门课旷课学生姓名及旷课次数,按旷课次数由多到少排序;
5.统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序。
程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识, 加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力
学生考勤管理程序可以大大减缓学生考勤人员的工作量, 方便了平时上课学生的出勤率的管理。
2.详细设计
2.1需求描述
根据分析整个系统主要划分为7个功能模块,分别执行要求中的功能。数据管理中实现对学生的基本信息、课程的基本信息、学生缺课的查询、添加、删除和修改,以及具体缺课缺课内容,是迟到、早退、请假、旷课。查询管理通过根据学生姓名,课程姓名 时间段儿等信息,查询单个学生的缺课记录,单科课的旷课记录,单个学生的旷课记录。
此程序是过程性语言设计的。运用多种条件语句,主体采用的是链表指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用if多分支选择结构与switch语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了for语句等、do-while语句,for语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。do-while语句先循环后判断, Break语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的。
2.2功能描述
2.2.1 建立学生缺课记录子模块
要建立的学生人数,学生基本信息(包括缺课时间、学生姓名、课程名称、第几节、迟到次数、早退次数、请假次数、旷课次数)可用creat()
struct student *creat()
{
请输入要建立资料的学生人数:");
【输入格式:缺课时间(空格)学生姓名(空格)课程名称(空格)第几节(空格)迟到次数(空格)早退次数(空格)请假次数(空格)旷课次数】\\n");
请输入第1名学生信息:");
请输入第%d名学生信息:",i+1);
}
2.2.2修改学生缺课记录子模块
根据要修改的学生姓名以及科目名称找到相应的信息,再选择要修改的项目进行单项修改
struct student *xiugai(struct student *head)
{char xiugai_name[50];
请输入要修改的学生姓名与学科名称【格式:学生姓名(空格)学科名称】:");
没有学生信息\\n");
修改缺课时间
修改学生姓名
修改课程名称
修改第几节缺课
修改迟到次数
修改早退次数
修改请假次数
修改旷课次数
请输入新的缺课时间");
请输入新的学生姓名");
请输入新的课程名称");
请输入新的第几节缺课");
请输入新的迟到次数");
请输入新的早退次数");
请输入新的请假次数");
请输入新的旷课次数");
}
2.2.3修改学生缺课记录子模块
根据人名可以查出该学生的所有缺课记录
void chaxun(struct student *head)
{
请输入要查询的人名【若没有这个人则不显示】:");
联系人为空");
缺课时间:%ld 学生姓名:%s 课程名称:%s 第%d节 迟到次数:%d 早退次数:%d 请假次数:%d 旷课次 数:%d\\n",p->time,p->name,p->lesson_name,p->lesson_time,p->chidao_num,p->zaotui_num,p->qingjia_num,p->kuangke_num);
}
2.2.4查看单科旷课记录子模块
根据学科名称和时间范围查出所有在该范围内旷课的学生以及次数
struct student *tongji_lesson(struct student *head)
{
没有学生信息");
请输入要查看的学科名称:");
请输入要查看的时间范围【输入格式:时间(空格)时间】");
学生姓名%s 旷课次数%d\\n",p1->name,p1->kuangke_num);
}
2.2.5查看学生旷课记录子模块
根据要查询的学科名称及时间段查出在改时间段内该门课上旷课的人数
struct student *tongji_student(struct student *head)
{
没有学生信息");
请输入一共的学科数:");
请输入第%d个学科名称:",i+1);
请输入要查看的时间范围由小到大【输入格式:时间(空格)时间】");
学科名称%s 旷课人%d\\n",a[i].xueke_name,a[i].people_num);
}
2.2.6载入学生旷课记录子模块
可以载入实现储存在当前文件夹中txt文件中所储存的数据
struct student *zairu()
{struct student *p1=NULL,*p2=NULL,*head=NULL;
if((fp1=fopen("xueshengziliao.txt
}
2.2.7储存学生旷课记录子模快
进入系统界面,顺序的完成各项操作,进行数据的输入,信息的保存调用相应的函数打开相应的地址,查询各项信息。
void chucun(struct student *head)
{
fp1=fopen("xueshengziliao.txt
储存成功\\n");
}
2.3程序运行说明
附录1—用户手册
主菜单
图1 主菜单
1.建立学生缺课记录
图2建立学生缺课记录
2.修改学生缺课记录
图3修改学生缺课记录
3.查询学生缺课记录
图4查询学生缺课记录
4.查看单科旷课记录
图5查看单科旷课记录
5.查看学生旷课记录
图6查看学生旷课记录
6.储存学生旷课记录
图7储存学生旷课记录
7.载入学生旷课记录
图8载入学生旷课记录
8. 退出程序
图9退出程序
3.课程设计总结
3.1编程日志
2012年6月11日
在网上查找课程设计资料,了解C++课程设计的基本流程。询问同学具体操作过程。
2012年6月14日
课程设计已经进行了到第三天,规划出了课程设计的几大模块,大体上设计出了自己软件所有的功能。而后,开始分析和编写程序,用c-Free 5.0运行代码,错误很多。至此,课程设计前期工作已初具雏形,有了一个大概的整体结构。
2012年6月18日
开始调试程序,进行程序的修改和完善,运行之后,课程设计至此已经基本完善,所需系统已经出来并且可以运行了。
2012年6月22日
对设计报告进行图片剪切代码解释等整理,对报告的字体大小、页眉页脚等,进行修改和编辑,最后对报告和代码进行最后的检查。课程设计终于完成,在老师的指导下,对于报告又完善了不少。
3.2测试报告
程序编写完成后,我进行了程序调试。调试过程中,出现了以下问题:当录入学生缺课信息时,出现了无法退出录入函数的情况,主要原因是输入函数中while循环语句没有设置跳出循环的条件。我对修改函数进行了修改与完善。在该函数中,我设置了if语句用来判断系统中是否存在用户要修改的学生缺课信息。如果没有,则提示用户没有该学生的缺课信息,用户可以选择继续输入要修改的学生姓名或者退出修改环节,可以在循环语句中改变循环进行的条件从而终止循环。在调试过程中我出现的最严重的问题是函数形参引用对象数组,结果系统提示将近十几个错误,在我把函数形参改为对象数据后,错误一下子减少了很多。还有比较突出的问题是整个程序不知哪儿掉了个}号系统会提示有错,但就是不懂那专业术语是什么意思。由于程序的源代码是在记事本文本中复制到VC中的,有些printf后比较长的语句会被放到下一行,使程序出现多处类似的错误,经过在VC中的修改,程序得以正常的运行。
4.心得体会
课程设计顺利完成,题目所要求的功能也都一一实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。不过这个程序还有些不够完善,例如不能往当前文件夹中的txt文件中添加记录。
整个系统的设计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。使我体会到设置中每一步的重要性。所以在分析一个问题时,我们需要站在一个有远见的高度。
通过此次设计,我不但对C++语言编程有了更深刻的认识,积累了使用软件工程的思想来开发
虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统。同时设计的过程,本身就是对理论知识的回顾和对新知识的学习,大大强化了我们的理论基础;最后完善调试的过程,不但提升了我们调试程序的能力,更是培养了一种细心、严谨、不断追求完美的态度。我想这些都将会更好的服务于以后的工作,同时也为以后学习明确了方向,促使我们更全面更有效的学习。
最后我认为我们现在学的课本知识还比较浅,应多开设这样的课程设计,促使大家更深入的去学习,不断通过实践来强化,当然我想老师的正确引导是很重要的,可以提供一些灵活实用的资源。
5.参考文献
[1]. 谭浩强.C++语言程序设计(第三版).清华大学出版社
[2]. 林碧英.C++语言程序设计教程.中国电力出版社,2006
[3]. 美赫伯特.希尔特,王子恢等译.C++语言大全.电子工业出版社.2006
[4]. 姜灵芝,余健.C++语言课程设计案例精选.清华大学出版社,2008