学生考勤管理系统课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥学院

计算机科学与技术系

课程设计报告

2010~2011学年第二期

课程C++程序设计语言

课程设计名称学生考勤管理系统

学生姓名王兵

学号**********

专业班级网络工程(2)班

指导教师何立新、陈艳平

2011年7月

学生考勤管理系统

目录

一.需求分析 (3)

1.1 功能需求 (3)

1.2 数据需求 (3)

1.3 性能需求 (3)

二.算法设计............................. 错误!未定义书签。

2.1设计思想 (3)

2.2功能实现 (7)

三.用户手册 (7)

四. 调试及测试 (8)

五. 总结 (13)

六.参考文献 (14)

附录——源程序 (14)

一.需求分析

开发一个好的软件,进行深入细致的可行性研究是极其必要的,而且还必须做大量的,全面的需求分析,需求分析是软件定义时期的最后一个阶段,它更是开发一个好的软件的基础。它的基本任务是准确地回答“需要此软件的人都需要哪些功能?”这个问题。

需求分析的主要任务是确定系统必须完成哪些工作,也就是对目标系统提出完整的﹑准确的﹑具体的﹑清晰的要求,确定系统必须具有的功能和性能,系统要求的运行环境,以及预测系统发展的前景,并仔细分析系统中的数据,以便完善良好的软件环境。在需求分析阶段系统分析员将仔细研究软件所需要完成的具体功能。

1 功能需求:

1、录入学生的缺勤记录;

2、修改某个学生的缺勤记录;

3、查询某个学生的缺勤情况;

4、统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进行排序;

5、统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;

6、系统以菜单方式工作

2 数据需求

本系统主要涉及的数据有学生缺课信息类和有关信息排序类。学生缺课信息包括缺课时间,学生姓名,课程名称,第几节,学生迟到次数,早退次数,请假次数,旷课次数。有关信息排序类包括对课程排序和对姓名排序。

3性能需求

要求系统具有可靠性,速度要快

二、算法设计

1.设计思想

学生考勤系统结构图:

}

void set(record re)

{

date.assign(re.date);

cname.assign(ame);

sname.assign(re.sname);

this->cno=o;

this->type=re.type;

}

string date,cname,sname;

int cno,type;

};

class records //实现学生旷课情况排序的类{

public:

records() //构造函数

{

r=new record[100];

n=0;

}

void order_s() //姓名的排序

{

int i;

int j;

string *s=new string[n];

int *c=new int [n];

s[0].assign(r[0].sname);

c[0]=1;

int k=1,flag;

for( i=1;i

{

flag=0;

for( j=0;j

if(r[i].sname==s[j])

{

c[j]++;

flag=1;

break;

}

if(!flag)

{

s[k]=r[i].sname;

c[k++]=1;

}

}

for(i=1;i

for( j=i;j>0;j--)

{

if(c[j]>c[j-1])

{

int tmp=c[j];

c[j]=c[j-1];

c[j-1]=tmp;

string stmp=s[j];

s[j]=s[j-1];

s[j-1]=stmp;

}

}

cout<<"旷课学生姓名\t旷课次数"<

for(i=0;i

cout<

}

void order_c() //课程排序

{

int i,j;

string *s=new string[n];

int *c=new int [n];

s[0].assign(r[0].cname);

c[0]=1;

int k=1,flag;

for( i=1;i

{

flag=0;

for(j=0;j

if(r[i].cname==s[j])

{

c[j]++;

flag=1;

break;

}

if(!flag)

{

s[k]=r[i].cname;

c[k++]=1;

}

}

for(i=1;i

for( j=i;j>0;j--)

{

if(c[j]>c[j-1])

{

int tmp=c[j];

c[j]=c[j-1];

c[j-1]=tmp;

string stmp=s[j];

s[j]=s[j-1];

s[j-1]=stmp;

}

}

cout<<"课程名\t旷课人次"<

for(i=0;i

cout<

}

record *r;

int n;

};

把所有的学生记录都保存到一个文件里面,然后根据需要再将里面需要查找的元素进行查找,相应的排序可能就是将他们尽可能压进关联式容器map,有的部分就压入set里面,这些都是根据模块的功能来选定的。可以这么说,选择好合理的数据结构查找与排序就可以一劳永逸了。这点在后面部分会有详细的说明。还有就是对各功能子函数的编写应用。

相关文档
最新文档