学生考勤管理信息系统课程方案设计书.docx

上传人:b****5 文档编号:8026435 上传时间:2023-01-28 格式:DOCX 页数:29 大小:177.41KB
下载 相关 举报
学生考勤管理信息系统课程方案设计书.docx_第1页
第1页 / 共29页
学生考勤管理信息系统课程方案设计书.docx_第2页
第2页 / 共29页
学生考勤管理信息系统课程方案设计书.docx_第3页
第3页 / 共29页
学生考勤管理信息系统课程方案设计书.docx_第4页
第4页 / 共29页
学生考勤管理信息系统课程方案设计书.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

学生考勤管理信息系统课程方案设计书.docx

《学生考勤管理信息系统课程方案设计书.docx》由会员分享,可在线阅读,更多相关《学生考勤管理信息系统课程方案设计书.docx(29页珍藏版)》请在冰豆网上搜索。

学生考勤管理信息系统课程方案设计书.docx

学生考勤管理信息系统课程方案设计书

 

课程设计说明书

题目

学生考勤管理系统

系(部)

计算机科学与技术系

专业(班级)

10计科一班

姓名

学号

指导教师

起止日期

 

课程设计任务书

课程

数据结构课程设计

题目

序号

12

A

 

1.14周星期一:

选题、交分组名单和课程设计题目;收集资料、需求分析;确定目标、设计方案并选择方案;系统设计;

2.14周星期一至14周星期四:

程序设计;撰写课程设计报告;

3.14周星期五:

提交课程设计报告,汇报演示。

指导教师签字

2010年11月30日

教研室审定意见

签字

2010年11月30日

 

计划时间

指导老师

学生

课程设计的考核方式及评分方法

1)考核方式

⏹课程设计结束时,在机房当场验收。

⏹教师提供测试数据,检查运行结果是否正确。

⏹回答教师提出的问题。

⏹学生提交课程设计文档(A4纸打印)

2)评分方法

论文考核标准:

参考《计算机系课程设计任务书》

论文:

40%,软件:

40%,答辩:

20%

指导教师签名:

         日期:

        

教研室主任签名:

       日期:

        

系主任签名:

         日期:

        

长沙学院课程设计鉴定表

姓名

学号

专业

计算机科学与技术

班级

10计科

设计题目

指导教师

王俊

指导教师意见:

 

评定等级:

教师签名:

日期:

答辩小组意见:

 

评定等级:

     答辩小组长签名:

     日期:

    

教研室意见:

 

教研室主任签名:

日期:

 

系(部)意见:

 

系主任签名:

        日期:

     

说明

课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;

摘要

本次课程设计是Android文件管理器

本学生考勤管理系统利用C语言,采用了数据结构程序设计思想以及文件管理的使用。

拟一个简单的文件管理系统。

树型结构,目录下可以是目录,也可以是文件,文件系统采用二叉树型存储结构,目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开,可实现文件目录的创建,显示,删除,改变,文件的创建,删除。

对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。

用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。

从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

关键词:

文件管理,二叉树存储结构,函数实现

目录

1设计内容与要求…………………………………………………………………………7

2.设计说明…………………………………………………………………………………8

2.1问题描述与功能设计………………………………………………………………8

2.2算法与数据结构……………………………………………………………………9

2.3函数定义………………………………………………………………………………11

2.4测试……………………………………………………………………………………16

3总结……………………………………………………………………………………………18

参考文献………………………………………………………………………………………18

附录A源代码………………………………………………………………………………19

 

1设计内容与要求

设计题目:

Android文件管理器

 1.基本要求:

(1)要求用数据结构二叉树树形结构思想来完成设计;

(2)要求树型结构,目录下可以是目录,也可以是文件

(3)以树的形式显示所有的文件和文件

(4)通过输入文件名,实现文件搜索的功能

(5)在树中增加一个新文件,正确的显示出来

(6)在树中删除一个文件,正确的显示

(7)输入一个文件名,实现文件搜索功能

(8)程序调试通过后,完成程序文档的处理,加必要的注释

高级要求:

(1)显示文件的大小、创建日期,修改时间

(2)输入一个文件名,实现文件搜索功能

2.创新要求

在基本要求达到后,可以进行创新设计。

3.设计方法和基本原理

1)问题描述:

Android手机上默认没有文件管理器,因此需要设计一个文件管理器,要求以树形结构显示每个文件和文件夹,并且可以方便的对文件或文件夹进行增,删操作,此外还可以将文件移至任意文件夹中,请用C实现主要结构和算法

 2)设计思想

1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。

2.文件存储空间的分配采用显式链接分配。

为了实现创建和删除文件必须要有一棵初始的文件树存在,以便在文件树的根节点下实现创建和删除文件。

3.数据结构与树结构。

数据结构是计算机存储、组织数据的方式。

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。

树中每个分叉点称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。

结点的前趋结点称为该结点的"双亲",结点的后趋结点称为该结点的"孩子",同一结点的"孩子"之间互称"兄弟"。

4.文件目录结构采用多级目录结构。

为了简单起见,可以使用文件结构体,结构体内容包括:

文件名,文件目录识别标示,文件链接数,以及他的左孩子右孩子左兄弟右兄弟指

5.要有分解函数对输入的命令进行分解。

以识别那部分是哪部分是命令,哪部分是路径和文件名。

6.最后要有执行函数。

来执行输入的创建文件命令。

设计工作量:

(1)软件设计:

完成问题陈述中所提到的所有需求功能。

(2)论文:

要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。

工作计划:

13-14周

安排两周时间进行课程设计,软件开发步骤如下,第一周完成1~6,第二周完成7~10,论文同步进行;

(1)写出需求分析(做什么)

(2)分析系统中的各个实体之间的关系及其属性和行为

(3)设计系统的函数层次

(4)完成函数中函数的描述(包括属性和方法)

(5)完成类中各个成员函数的定义和实现

(6)代码编写

(7)功能调试

(8)撰写课程设计报告书

(9)答辩

 

2设计说明

2.1问题描述与功能设计

1)问题描述:

Android手机上默认没有文件管理器,因此需要设计一个文件管理器,要求以树形结构显示每个文件和文件夹,并且可以方便的对文件或文件夹进行增,删操作,此外还可以将文件移至任意文件夹中

2)功能设计:

1分析系统中的各个实体之间的关系及其属性和行为;

2设计系统的类层次,充分运用C++的复合、继承、多态等机制进行软件渐增式开发;

3完成类层次中各个类的描述(包括属性和方法)和具体实现用户界面需求

用户界面需求

对于一个好的软件有一个友好的用户界面是很重要的。

用户界面应尽量做得简单、层次清晰明了

对考勤管理系统应实现的功能描述如下:

1用户信息管理

用户信息管理的基本功能是添加、修改、删除、浏览用户详细信息。

2信息管理

包括缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)

3查询功能

考勤人员能够按学号、姓名查询某学生的考勤记录或按专业、班级查询某个班级的考勤记录

4统计功能

考勤人员可以统计学生的考勤记录

5修改功能

考勤人员具有修改学生考勤记录、如请假、旷课等记录

 

2.2算法与数据结构

 

2.3函数定义

//student.h文件中student类的定义

classStudent{

public:

//学生信息

charstuName[20];

intstuNum;

charstuClass[20];

//缺课信息

charcourseName[20];

intcourseNum;//第几节课

charcourseType[20];

//缺课日期

intyear;

intmonth;

intday;

/*

*创建链表用来存储学生信息

*/

boolCreateList(node&L)

{

L=newNode;//动态分配内存,创建链表头结点

if(!

L)

{

//内存分配失败

returnfalse;

}

L->next=NULL;//创建空链表成功,头结点指针域为空

returntrue;

}

//学生缺课类型

intchidaoCount=0;//迟到

intzaotuiCount=0;//早退

intkuangkeCount=0;//旷课

intqingjiaCount=0;//请假

char*queke[4]={"迟到","早退","旷课","请假"};

 

2.4界面设计

while

(1)

{

cout<<"===========欢迎进入学生考勤管理系统====================\n";

cout<<"1:

新增学生信息(非降序插入)2:

按学号删除学生信息\n";

cout<<"3:

按学号修改学生信息4:

输出学生信息列表\n";

cout<<"5:

按学号查询输出学生信息\n";

cout<<"6:

统计学生缺课信息列表\n";

cout<<"请选择要执行的功能指令:

(菜单指令如上)"<

cout<<"=======================================================\n";

cin>>order;

switch(order)

{

case1:

cout<<"==========新增学生信息面板(非降序插入)=============\n";

InputStu(stu);

InsertAscend(head,stu);

cout<<"是否返回系统菜单?

(是输入0,否输入1退出系统)\n";

cin>>k;

if(k)

{cout<<"您已退出学生考勤管理系统\n";

return0;

}

break;

case2:

cout<<"==========按学号删除学生信息=============\n";

cout<<"请输入要删除的学生的学号:

";

cin>>stuNum;

DelFromNum(head,stuNum);

cout<<"是否返回系统菜单?

(是输入0,否输入1退出系统)\n";

cin>>k;

if(k)

{cout<<"您已退出学生考勤管理系统\n";

return0;

}

break;

case3:

cout<<"==========按学号修改学生信息面板=============\n";

cout<<"请输入待修改的学生的工号:

";

cin>>stuNum;

FindFromNum(head,stuNum,preNode,curNode);

Modify(curNode->data);

cout<<"是否返回系统菜单?

(是输入0,否输入1退出系统)\n";

cin>>k;

if(k)

{

cout<<"您已退出学生考勤管理系统\n";

return0;

}

break;

case4:

cout<<"==========输出学生信息列表面板=============\n";

OutputStu(head);

cout<<"是否返回系统菜单?

(是输入0,否输入1退出系统)\n";

cin>>k;

if(k)

{

cout<<"您已退出学生考勤管理系统\n";

return0;

}

break;

case5:

cout<<"==========按学号查询输出学生信息=============\n";

cout<<"请输入要查询的学生的学号:

";

cin>>stuNum;

FindFromNum(head,stuNum,preNode,curNode);

cout<

<

<

print(curNode->data);

cout<<"是否返回系统菜单?

(是输入0,否输入1退出系统)\n";

cin>>k;

if(k)

{

cout<<"您已退出学生考勤管理系统\n";

return0;

}

break;

case6:

cout<<"=========统计学生缺课信息列表面板==========\n";

preNode=head;

while(preNode)

{

curNode=preNode->next;

if(curNode&&!

strcmp(curNode->data.courseType,queke[0]))

chidaoCount++;

if(curNode&&!

strcmp(curNode->data.courseType,queke[1]))

zaotuiCount++;

if(curNode&&!

strcmp(curNode->data.courseType,queke[2]))

kuangkeCount++;

if(curNode&&!

strcmp(curNode->data.courseType,queke[3]))

qingjiaCount++;

preNode=curNode;

}

cout<<"迟到的学生有"<

"<

cout<<"早退的学生有"<

"<

cout<<"旷课的学生有"<

"<

cout<<"请假的学生有"<

"<

cout<<"是否返回系统菜单?

(是输入0,否输入1退出系统)\n";

cin>>k;

if(k)

{

cout<<"您已退出学生考勤管理系统\n";

return0;

}

break;

default:

cout<<"输入不合法\n";

cout<<"是否返回系统菜单?

(是输入0,否输入1退出系统)\n";

cin>>k;

if(k)

{

cout<<"您已退出学生考勤管理系统\n";

return0;

}

break;

}

}

}

return0;

return0;

}

 

2.5测试

输入学生信息

录入学生信息

 

查询学生信息

修改学生信息

统计学生信息

 

3总结

  本次实验是我上大学以来做的第二个课程设计,虽然平时也做过许多的实验,但是题目刚拿到手时仍然是手足无措,不知从何下手,首先面对的是编写程序的问题,面向对象的程序设计思想是我们这学期C++课程的主要内容,但我的底子薄,掌握的不是很好,所以运用起来有些困难;其次是以前没做过课程设计,有关课程设计方面的一些问题,例如,课程设计都包括哪些内容,需要写些什么,我都不是非常清楚。

后来在老师、同学以及班导的帮助下,才对此有了一定的了解,有了属于自己的看法,不过程序编写过程中我也遇到了许多的麻烦,例如链表的使用,是上个学期最后的内容,不是很熟悉,经过反复的看书,终于得到了解决!

这次的课程设计是我真正发现在课堂上听懂是一回事,而当自己真正动手做时又是另外一回事。

虽然最后问题都得到的解决,但未能实现保存文件,没能达到老师的要求,这也是本次课程设计的不足之处。

通过本次的课程设计,使我能够进一步掌握用程序设计语言解决实际问题的方法,在操作当中把所学到的用于实际的编程里去。

使我能够提高分析问题、查阅资料、吸收新知识的能力,在分析解决问题时比以前有了很大的进步,一些常用的知识和一些常规的错误都能够解决。

我认为实践周的程序设计是给我们学习的一个大好机会,使我们在这样的机会里学到了一定的知识,毕竟理论要通过实践来锻炼,也只有自己参与了这样的一个锻炼,才能更好的发现自己的不足并加以改进和完善!

我清楚的认识到自己在这方面的不足之处,在这方面可以说欠缺的知识还很多很多,不能编出完全符合要求的程序。

在以后的学习中我会更加努力,争取能编出更加符合要求的程序,给自己的课程设计交上一份满意的答卷,也给自己一点小小的信心!

最后感谢老师、同学、班导、学长的帮助,谢谢你们!

 

参考文献

[1]钱能.C++程序设计教程[M].北京:

清华大学出版社,2005:

315-324,415-418,423.

[2]刘瑞新.VisualC++面向对象程序设计教程[M].北京:

机械工业出版社,2005.

 

附录A源代码

//student.h文件

#include

classStudent{

public:

//学生信息

charstuName[20];

intstuNum;

charstuClass[20];

//缺课信息

charcourseName[20];//缺课名称

intcourseNum;//第几节课

charcourseType[20];//缺课类型

//缺课日期

intyear;

intmonth;

intday;

Student()

{

memset(stuName,0,sizeof(stuName));

stuNum=0;

memset(stuClass,0,sizeof(stuClass));

memset(courseName,0,sizeof(courseName));

courseNum=0;

memset(courseType,0,sizeof(courseType));

year=0;

month=0;

day=0;

}

~Student()

{

}

};

//studentManage.h文件

#include"Student.h"

#include

#include

//定义结点类型

structNode

{

Studentdata;

Node*next;

};

typedefNode*node;//类型定义node为指向Node结构的指针类型

/*

*创建链表用来存储学生信息

*/

boolCreateList(node&L)

{

L=newNode;//动态分配内存,创建链表头结点

if(!

L)

{

//内存分配失败

returnfalse;

}

L->next=NULL;//创建空链表成功,头结点指针域为空

returntrue;

}

//定义输入学生信息的方法

voidInputStu(Student&stu)

{

cout<<"请输入学号:

";

cin>>stu.stuNum;

cout<<"请输入学生姓名:

";

cin>>stu.stuName;

cout<<"请输入学生班级:

";

cin>>stu.stuClass;

cout<<"请输入学生缺课名称:

";

cin>>stu.courseName;

cout<<"请输入学生缺的第几节课:

";

cin>>stu.courseNum;

cout<<"请输入学生缺课类型:

";

cin>>stu.courseType;

cout<<"请输入学生缺课日期:

"<

cout<<"请输入年:

";

cin>>stu.year;

cout<<"请输入月:

";

cin>>stu.month;

cout<<"请输入日:

";

cin>>stu.day;

}

//添加结点,非降序插入学生的信息

voidInsertAscend(nodeL,Studentstu)

{

nodepreNode=L;//preNode指向链表L的头结点

nodecurNode=L->next;//curNode指向链表L的第一个结点

//第一个结点不为空,且worker.num大于curNode->data.num,则执行循环

while(curNode&&(stu.stuNum>curNode->data.stuNum))

{

preNode=curNode;

curNode=curNode->next;

}

//插入新结点

preNode->next=newNode;

preNode->next->data=stu;

preNode->next->next=curNode;

}

//打印一个student的信息

voidprint(Studentstu)

{

cout<

<

<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1