学生考勤管理信息系统课程方案设计书_第1页
学生考勤管理信息系统课程方案设计书_第2页
学生考勤管理信息系统课程方案设计书_第3页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书题目学生考勤管理系统系(部 )计算机科学与技术系专业(班级)10计科一班姓名学号指导教师起止日期课程设计任务书课程数据结构课程设计题目序号12主 要 内 容A要求工 作 计 划 及 进 度1. 14周星期一:选题、交分组名单和课程设计题目;收集资料、需求分析;确定目标、设计方案并选 择方案;系统设计;2. 14周星期一至14周星期四:程序设计;撰写课程设计报告;3. 14周星期五:提交课程设计报告,汇报演示。指导教师签字2010年11月30日教研室审定意 见签字2010 年 11 月 30 日计划时间指导老师学生课程设计的考核方式及评分方法1)考核方式课程设计结束时,在机房当场验

2、收。教师提供测试数据,检查运行结果是否正确。回答教师提出的问题。学生提交课程设计文档(A4纸打印)2)评分方法论文考核标准:参考计算机系课程设计任务书论文:40% 软件:40% 答辩:20%指导教师签名: 日期:教研室主任签名: 日期:系主任签名: 日期:第3页共26页长沙学院课程设计鉴定表姓名学号专业计算机科学与 技术班级10计科设计题目指导教师王俊指导教师意见:评定等级:教师签名:日期:答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名:日期:系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;摘要本次课程设计是An dro

3、id文件管理器本学生考勤管理系统利用C语言,采用了数据结构程序设计思想以及文件管理的 使用。拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文 件,文件系统采用二叉树型存储结构,目录名和文件名支持全路径名和相对路径 名,路径名各分量间用“ /”隔开,可实现文件目录的创建,显示,删除,改变, 文件的创建,删除。对合法的命令,执行相应的处理程序,否则输出错误信息, 继续等待新命令,直到键入EXIT退出为止。用高级语言编写和调试一个简单的 文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执 行过程有比较深入的了解。关键词:文件管理,二叉树存储结构,函数实现目录1设计

4、内容与要求 72.设计说明 82.1 问题描述与功能设计 82.2 算法与数据结构 92.3 函数定义 112.4 测试 163总结 18参考文献 18附录A源代码 191设计内容与要求设计题目:Android文件管理器1. 基本要求:(1)要求用数据结构二叉树树形结构思想来完成设计;(2)要求树型结构,目录下可以是目录,也可以是文件(3)以树的形式显示所有的文件和文件(4)通过输入文件名,实现文件搜索的功能(5)在树中增加一个新文件,正确的显示出来(6)在树中删除一个文件,正确的显示(7)输入一个文件名,实现文件搜索功能(8)程序调试通过后,完成程序文档的处理,加必要的注释高级要求:(1)显

5、示文件的大小、创建日期,修改时间(2)输入一个文件名,实现文件搜索功能2. 创新要求在基本要求达到后,可以进行创新设计。3. 设计方法和基本原理1)问题描述:An droid手机上默认没有文件管理器,因此需要设计一个文件管理器,要求 以树形结构显示每个文件和文件夹,并且可以方便的对文件或文件夹进行 增,删操作,此外还可以将文件移至任意文件夹中,请用C实现主要结构和算法2)设计思想1 .在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单 的单用户文件系统。2 .文件存储空间的分配采用显式链接分配。 为了实现创建和删除文件必须 要有一棵初始的文件树存在,以便在文件树的根节点下实现创建和

6、删除文件。3.数据结构与树结构。数据结构是计算机存储、组织数据的方式。数据 结构是指相互之间存在一种或多种特定关系的数据元素的集合。 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结 点)按分支关系组织起来的结构,很象自然界中的树那样。树中每个分叉点 称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点 下面不再有分枝称为树叶。结点的前趋结点称为该结点的"双亲",结点的后趋结点称为该结点的"孩子",同一结点的"孩子"之间互称"兄弟"。4 文件目录结构采用多级目录结构。为了简单起见,可

7、以使用文件结构体,结构体内容包括:文件名,文件目录识别标示,文件链接数,以及他的左孩 子右孩子左兄弟右兄弟指5. 要有分解函数对输入的命令进行分解。以识别那部分是哪部分是命令,哪 部分是路径和文件名。6. 最后要有执行函数。来执行输入的创建文件命令。设计工作量:(1) 软件设计:完成问题陈述中所提到的所有需求功能。(2) 论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。工作计划:13-14周安排两周时间进行课程设计,软件开发步骤如下,第一周完成16,第二周完成710,论文同步进行;(1) 写出需求分析(做什么)(2) 分析系统中的各个实体之间的关系及其属性和行为(3) 设计系

8、统的函数层次(4) 完成函数中函数的描述(包括属性和方法)(5) 完成类中各个成员函数的定义和实现(6) 代码编写(7) 功能调试(8) 撰写课程设计报告书(9) 答辩2设计说明2.1问题描述与功能设计1)问题描述:An droid手机上默认没有文件管理器,因此需要设计一个文件管理器,要求以树形结构显示每个文件和文件夹,并且可以方便的对文件或文件夹进行增,删操作,此外还可以将文件移至任意文件夹中2)功能设计:1分析系统中的各个实体之间的关系及其属性和行为;2设计系统的类层次,充分运用C+的复合、继承、多态等机制进行软件渐增式开发;3完成类层次中各个类的描述(包括属性和方法)和具体实现用户界面需

9、求用户界面需求对于一个好的软件有一个友好的用户界面是很重要的。用户界面应尽量做得简单、层次清 晰明了对考勤管理系统应实现的功能描述如下:1用户信息管理用户信息管理的基本功能是添加、修改、删除、浏览用户详细信息。2信息管理包括缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)3查询功能考勤人员能够按学号、姓名查询某学生的考勤记录或按专业、班级查询某个班级的考勤记录4统计功能考勤人员可以统计学生的考勤记录5修改功能考勤人员具有修改学生考勤记录、如请假、旷课等记录F lowChar 匸仝tnrix*rnl>ilFlowchart 玄prNoJr-L,uucNoJe-p

10、reNtxl - -.returntrue;rNodt,rcnimtalse;2.2算法与数据结构2.3函数定义/student.h文件中student类的定义class Stude ntpublic:/学生信息char stuName20;int stuNum;char stuClass20;/缺课信息char courseName20;in t courseNum; /第几节课char courseType20;/缺课日期int year;int mon th;int day;/*创建链表用来存储学生信息*/ bool CreateList (node &L) L = new No

11、de; /动态分配内存,创建链表头结点if(!L)/内存分配失败 return false;创建空链表成功,头结点指针域为空迟到早退旷课请假L-> next = NULL; / return true;/学生缺课类型int chidaoCo unt = 0;/ int zaotuiCo unt = 0; / int kua ngkeCo unt = 0; / int qin gjiaCo unt = 0; / char *queke4 = " 迟到","早退","旷课","请假"2.4界面设计while(1)

12、 cout<<"= 欢迎进入学生考勤 管理系统=n";cout<<"1 :新增学生信息(非降序插入)2:按学号删除学生信息n"cout<<"3 :按学号修改学生信息4 :输出学生信息列表n"cout<<"5 :按学号查询输出学生信息n"cout<<"6 :统计学生缺课信息列表n"coutvv"请选择要执行的功能指令:(菜单指令如上)"<<endl;cout<<"=n"Jci

13、n>> order;switch(order)case 1:cout<<"=新增学生信息面板(非降序插入)=n"In putStu(stu);In sertAsce nd(head, stu);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n"cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 2:cout<<"=按学号删除学生信息=n" coutvv"请输入要删除的学生的学号:&quo

14、t;cin> >stuNum;DelFromNum(head, stuNum);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n"cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 3:coutvv"=按学号修改学生信息面板=n";coutvv"请输入待修改的学生的工号:"cin> >stuNum;Fin dFromNum(head, stuNum, preNode, curNode);Modify(curN

15、ode->data);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n" cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 4:cout<<"=输出学生信息列表面板=n"OutputStu(head);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n"cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 5:co

16、utvv"= 按学号查询输 出学生信息 =n"coutvv"请输入要查询的学生的学号:"cin> >stuNum;Fin dFromNum(head, stuNum, preNode, curNode);coutvvsetw(10)vv"学号"vvsetw(10)vv"姓名"vvsetw(10)vv"班 级"vvsetw(10)vv" 课程名 "vvsetw(10)vv" 第几节 "vvsetw(10)vv"缺课类型"vvs

17、etw(18)vv"日期"vvendl;prin t(curNode->data);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n"cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 6:coutvv"=统计学生缺课信息歹y表面板 =n" preNode = head;while(preNode)curNode = preNode->n ext;if(curNode && !strcmp(curNode

18、->data.courseType,quekeO)if(curNodequeke1)chidaoCo un t+;&& !strcmp(curNode->data.courseType,if(curNodequeke2)zaotuiCo un t+;&& !strcmp(curNode->data.courseType,if(curNodekua ngkeCo un t+;&& !strcmp(curNode->data.courseType,queke3)qin gjiaCo un t+;preNode = curNod

19、e;cout«"迟到的学生有"vvchidaoCount<<"个! "<<endl; cout«"早退的学生有"vvzaotuiCount<<"个! "<<endl;cout«"旷课的学生有"<<kuangkeCount<<"个! "<<endl; cout«"请假的学生有"<<qingjiaCount<<&q

20、uot; 个! "<<endl;coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n" cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;default:coutvv"输入不合法n"coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n" cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;return 0; return 0; 一新増

21、蛍生信息妇蓉序插入3:修改学生洁总5:接*号查询输岀学生信息6:蔬计孝生缺课伯盒列表第16页莆选择要执行的功能扌旨令; 菜单指令如上共26页2.5测试输入学生信息弋=学生考勤管理系统Debug生考勒管理系统.eze-统按叫2i生生生生2退退 息12科早课早 信11四计:节: 的即李10称几型期 生1B名星日 学20名级课的课谍11 个:姓鶴缺缺缺20生曇生垢 si2 32an BT息c 嗫.一生歹匕in 的入屠害豈 生进妇生出信眉 学迎息学输课机 个欢信改询缺祇賜科迟课迟11三计:节:02张10称几型期10 名戛日旧学20名级课的專11:姓班衣缺缺U201号生生生生生生:入入入入入入人A-入入

22、入入人人A-入入入入入入入入1 到:到 榨迟课迟苗请请请咤息序录入学生信息查询学生信息日期2011年2月3日=按甲号查询輸出学生信息 请输入曇嘗询曲学勰學号;010021H2 率四 leif:曰匚' 4*=2010021112瞬课輕第乜缺课蠶否返回系统菜单?是输入叭咨输入1退由系统n:"表统按札勤>菜 进罚生出信眉 迎息学输课W 欢信改询缺 一一生修查生节 =TNT学i修改学生信息響入步勤管理系统学生1戸旺1:5:按学号查询输岀学生信息"6:统计学生缺课信盧列表请选择要执行的功能指令:(菜单指令如上:sW果1果gif:il i科旷常 改的11一一讦:节: 修生

23、02张10称几型期 号学10.:名;日 篇20名级课的课课11 按改.姓專缺缺缺2023 一一修口星生生生生生系 一一待wwwmM日回 一一入攻攻攻攻攻返 一一请请请请请请请请请请请是是<-?单菜统统计学生信息I 赶 缺<1 K-个个个餐 1110 航有有有4 空咗生生生系 "WW回 一-的的的的返 -星早旷请是3总结本次实验是我上大学以来做的第二个课程设计,虽然平时也做过许多的实 验,但是题目刚拿到手时仍然是手足无措, 不知从何下手,首先面对的是编写程 序的问题,面向对象的程序设计思想是我们这学期 C+课程的主要内容,但我的 底子薄,掌握的不是很好,所以运用起来有些困难

24、;其次是以前没做过课程设计, 有关课程设计方面的一些问题,例如,课程设计都包括哪些内容,需要写些什么, 我都不是非常清楚。后来在老师、同学以及班导的帮助下,才对此有了一定的了 解,有了属于自己的看法,不过程序编写过程中我也遇到了许多的麻烦, 例如链 表的使用,是上个学期最后的内容,不是很熟悉,经过反复的看书,终于得到了 解决!这次的课程设计是我真正发现在课堂上听懂是一回事, 而当自己真正动手做 时又是另外一回事。虽然最后问题都得到的解决,但未能实现保存文件,没能达 到老师的要求,这也是本次课程设计的不足之处。通过本次的课程设计,使我能够进一步掌握用程序设计语言解决实际问题 的方法,在操作当中把

25、所学到的用于实际的编程里去。使我能够提高分析问题、 查阅资料、吸收新知识的能力,在分析解决问题时比以前有了很大的进步,一些 常用的知识和一些常规的错误都能够解决。 我认为实践周的程序设计是给我们学 习的一个大好机会,使我们在这样的机会里学到了一定的知识, 毕竟理论要通过 实践来锻炼,也只有自己参与了这样的一个锻炼,才能更好的发现自己的不足并 加以改进和完善!我清楚的认识到自己在这方面的不足之处, 在这方面可以说欠 缺的知识还很多很多,不能编出完全符合要求的程序。在以后的学习中我会更加 努力,争取能编出更加符合要求的程序,给自己的课程设计交上一份满意的答卷, 也给自己一点小小的信心!最后感谢老师

26、、同学、班导、学长的帮助,谢谢你们! ! !参考文献1 钱能 C+程序设计教程M.北京:清华大学出版社,2005:315-324,415-418,423.2 刘瑞新 Visual C+面向对象程序设计教程M.北京:机械工业出版社,2005.附录A源代码/stude nt.h文件#i ncludevstri ng.h> class Stude nt public:/学生信息char stuName20;int stuNum;char stuClass20;/缺课信息char courseName20; 缺课名称in t courseNum; / 第几节课char courseType20;

27、缺课类型/缺课日期int year;int mon th;int day;Stude nt()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;mon th = 0;day = 0;Stude nt();/stude ntMa nage.h 文件#in clude

28、"Stude nt.h"#i nclude <iostream.h>#i nclude <ioma nip.h>/定义结点类型struct NodeStude nt data;Node *n ext;;typedef Node *node; /类型定义node为指向Node结构的指针类型/*创建链表用来存储学生信息*/bool CreateList (node &L)L = new Node; /动态分配内存,创建链表头结点if(!L)/内存分配失败return false;L-> next = NULL; /创建空链表成功,头结点指针

29、域为空return true;/定义输入学生信息的方法void InputStu(Student &stu)coutvv"请输入学号:"cin> >stu.stuNum;coutvv"请输入学生姓名:"cin> >stu.stuName;coutvv"请输入学生班级:"cin> >stu.stuClass;coutvv"请输入学生缺课名称:"cin> >stu.courseName;coutvv"请输入学生缺的第几节课:"cin> &

30、gt;stu.courseNum;coutvv"请输入学生缺课类型:"cin> >stu.courseType;coutvv"请输入学生缺课日期:"vvendl;coutvv"请输入年:"cin> >stu.year;coutvv"请输入月:";cin> >stu. mon th;coutvv"请输入日:"cin> >stu.day;/添加结点,非降序插入学生的信息void In sertAsce nd(node L, Stude nt stu)n

31、ode preNode = L; / preNode 指向链表L的头结点node curNode = L->next; / curNode指向链表 L 的第一个结点/ 第一个结点不为空,且 worker.num大于curNode->data.num,则执行循 环while(curNode && (stu.stuNum > curNode->data.stuNum)preNode = curNode;curNode = curNode->n ext;/插入新结点preNode->n ext = new Node;preNode->n ex

32、t->data = stu;preNode->n ext- >n ext = curNode;/打印一个student的信息void prin t(Stude nt stu)stuClassu.courseType<<$6上可(10)<<$怕$6&<<"年"<<stu.month<<"月"wstu.dayw"日"<<e ndl;/输出学生信息列表void OutputStu (node L)node tmp = L->n ext;c

33、outvsetw。)*"学号"<<$6上可(10)<<"姓名"<<$6上可(10)<<"班级" <<$6上可(10)<<"课程名"<<56上可(10)<<"第几节"<<56上可(10)<<"缺课类型" <<$6上可(18)<<"日期"<<endl;while(tmp)pri nt(tmp->dat

34、a); tmp = tmp->n ext;/按学号号查找,用curNode返回查找到的结点的指针/ preNode指向curNode所指向的结点的前面一个结点bool Fin dFrom Num(node L, int stuNum, node &preNode, node &curNode)preNode = L;while(preNode)curNode = preNode->n ext;/链表是按学号号非降序添加结点建立的/ curNode->data.num 大于num则不需要再往后遍历 if(curNode && (curNode-&

35、gt;data.stuNum > stuNum) break;if(curNode && (stuNum = curNode->data.stuNum) /找到匹配的结占八、return true;preNode = curNode; / preNode 指向下一个结点return false;/按学号号删除结点bool DelFrom Num(node L, i nt stuNum)node preNode, curNode;用curNode返回要删if(Fi ndFromNum(L, stuNum, preNode, curNode) / 除的结点/删除结点pr

36、eNode->n ext = curNode->n ext;delete curNode;return true;return false;/修改学生信息第23页共26页void Modify(Stude nt & stu)In putStu(stu);/按学生缺课类型查找,用curNode返回查找到的结点的指针node/ preNode指向curNode所指向的结点的前面一个结点bool FindFromName(node L, char courseType, node &preNode,& curNode)preNode = L;while(preNo

37、de)curNode = preNode->n ext;if(curNode && !strcmp(curNode->data.courseType, courseType) / 找到与courseType匹配的结点return true;preNode = curNode;return false;/stude ntMa nage.cpp 文件#in clude "Stude ntMa nage.h"int main()int n, i, k;int stuNum; / 学号char stuName20;char stuType20;node

38、head, preNode, curNode;Stude nt stu;int order;int chidaoCo unt = 0;int zaotuiCo unt = 0;int kua ngkeCo unt = 0;int qin gjiaCo unt = 0;char *queke4 = " 迟到","早退","旷课","请假"if(CreateList(head)cout<<"请输入待输入信息的学生个数: cin>>n;for(i=0; i<n; i+)coutvv

39、"请输入第"<<i+1<<"个学生的信息n"In putStu(stu);In sertAsce nd(head, stu);coutvv"您输入了 "<<n<<"个学生的信息n"while(1)cout<<"= 欢迎进入学生考勤 管理系统 =n"cout<<"1 :新增学生信息(非降序插入)2:按学号删除学生信息n"cout<<"3 :按学号修改学生信息4 :输出学生信息列表n&q

40、uot;cout<<"5 :按学号查询输出学生信息n"cout<<"6 :统计学生缺课信息列表n" coutvv"请选择要执行的功能指令:(菜单指令如上)"<<endl;cout<<"=n"Jcin>> order;switch(order)case 1:cout<<"=新增学生信息面板(非降序插入)=n"In putStu(stu);In sertAsce nd(head, stu);coutvv"是否返回系统菜

41、单?(是输入0,否输入1退出系统)n"cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 2:coutvv"=按学号删除学生信息=n" coutvv"请输入要删除的学生的学号:"cin> >stuNum;DelFromNum(head, stuNum);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n"cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"retur

42、n 0;break;case 3:cout<<"=按学号修改学生信息面板=n"coutvv"请输入待修改的学生的工号:"cin> >stuNum;Fin dFromNum(head, stuNum, preNode, curNode);Modify(curNode->data);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n" cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 4:coutvv"=输出学生信息列表面板=n"OutputStu(head);coutvv"是否返回系统菜单?(是输入0,否输入1退出系统)n" cin> >k;if(k)coutvv"您已退出学生考勤管理系统n"return 0;break;case 5:coutvv"= 按学号查询输 出学生信息=n"coutvv&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论