当前位置:首页 >> 文学研究 >>

C++课程设计-学生考勤管理系统


滨江学院课程设计报告

面向对象课程设计
题 目 C++课程设计

学生考勤管理系统

院 专

系 业

学生姓名 学 号

指导教师

二0

年 月 日

面向对象课程设计指导书及评分标准
课程设计选题(1 学时) 由教师命题,学生自己选择课题,经教师调整审查后确定。 设计的课题以实用为主,反映新技术的发展情况,以获得更好的面向对象实践的训练。课题规模、 大小适当,具有一定复杂度,通过激发学生参加开发实践的积极性与创造性,达到综合应用所学知 识的目的。 学生可从下列题目中选择(也可以自己选择其它题目) : 1、人事管理系统 2、学生管理系统 3、学生成绩管理系统 4、图书借阅管理系统 5、超市收款管理系统 6、铁路售票管理系统 7、长途汽车售票管理系统 8、大剧院售票管理系统 9、运动会成绩及名次管理系统 10、仓库管理系统(小超市) 12、航空售票管理系统 13、汽车销售管理系统 14、电脑彩票销售及摇奖模拟系统 15、网上订票系统 16 房屋租赁管理系统 17、酒店客房管理系统 18、工资管理系统 19、考勤管理系统 20、员工培训管理系统

考核方式:程序演示效果+课程设计报告 评分标准:等级制(优秀、良好、中等、及格、不及格) 1、需求分析(10 分) 对系统的功能及性能要求进行分析,写出需求规格说明书(可行性分析报告、系统的分层 DFD 图、加工说明及数据词典)(业务逻辑正确,无原则性错误,结构图、流程图正确,数据字典完善。 。 )

2、软件总体设计(20 分) 确定系统总体设计方案,完成系统的模块结构图及模块的功能说明。 (模块结构图正确,模块说 明详细、完善、准确。 ) 3、软件详细设计(20 分) 对模块内部过程及数据结构进行设计等编写出该项目的详细设计报告。 (数据结构合适,能满足 系统需求。 ) 4、编码(35 分) 选择一种自己熟悉的面向对象程序设计语言,进行程序设计。 5、总结(5 分) 本次课程设计的收获,经验,启示等。 6、排版(10 分) 封面符合要求,内容排版规范,图、表规整,语言流畅,无错别字。 (A4 纸打印,上边装订)

课题:C++课程设计
学生考勤管理系统

(一) 、课程设计题目: C++课程设计 (二) 、目的与要求: 1、目的: (1)要求学生达到熟练掌握 C++语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及 C++的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三) 、设计方法和基本原理:

1、问题描述(功能要求) : 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续多节课用 begin-end 的形式表示)、课程名称(课程名称中不会出现空格) 、学生姓名、缺课类型(迟到、早退、请假及 旷课) 。试设计考勤管理系统,使之能提供以下功能: 1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时 可将数据存储在文件中,利用输入重定向功能读入) ,输入格式为: 缺课日期第几节课 课程名称学生姓名 缺课类型 每行一条纪录。 例如: 2008-04-29 3-4 C++程序设计实验 张三 迟到 2008-04-28 3-4 C++程序设计 李四 旷课 2).修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改 后的纪录。 3).查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时 间升序排序。 4).统计某段时间内(以天为单位) ,旷课学生姓名及旷课节数,查询结果先按旷课节数降 序排序,旷课节数相同的学生按姓名升序排序; 5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人 次相同的课程按课程名称升序排序; 6).系统以菜单方式工作。 (所谓菜单指用户可以自由选择所要执行的功能) 2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法) ; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告以及系统使用说明书





1.

系统需求分析................................................................................................................................. 1

2.

总体设计......................................................................................................................................... 1

3.

详细设计......................................................................................................................................... 2

4.

系统调试......................................................................................................................................... 7

5.

结果分析......................................................................................................................................... 7

6.

总结................................................................................................................................................. 8

附录:源程序清单

滨江学院课程设计报告

1.

系统需求分析 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用 begin-end 的形 式表示)、课程名称(课程名称中不会出现空格) 、学生姓名、缺课类型(迟到、早退、请假及 旷课) 。试设计考勤管理系统,使之能提供以下功能: 1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时 可将数据存储在文件中,利用输入重定向功能读入) ,输入格式为:缺课日期 第几节课 课程名 称学生姓名 缺课类型 每行一条纪录。 例如: 2009-04-29 2-4 中国近现代文学史 李云龙 迟到 2009-04-28 2-4 大学生社交礼仪 马志鹏 旷课 2).修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改 后的纪录。 3).查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时 间升序排序。 4).统计某段时间内(以天为单位) ,旷课学生姓名及旷课节数,查询结果先按旷课节数降 序排序,旷课节数相同的学生按姓名升序排序; 5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人 次相同的课程按课程名称升序排序; 6).系统以菜单方式工作。 (所谓菜单指用户可以自由选择所要执行的功能。学生可以通 过以上功能录入信息、修改信息、查询信息、整理统计出所要了解的信息,除了要实现上述的 基本功能之外,本系统还应该在细节上下工夫,使用户使用方便,在使用的过程中保持一个愉 快的心情。学生考勤管理系统有广大的用户群,这其中有老师、有教务处主任、有公司管理人 员,也可以供给一般用户使用。总之该系统可以满足用户需求,实现对其管理的人员的考勤工 作。

2.

总体设计 学生考勤管理系统包含五个大的功能,分别是:录入学生缺课信息、修改学生缺课信息、查询

某个学生的缺课情况、 统计某段时间内 (以天为单位) 旷课学生姓名及旷课节数和统计某段时间内, , 有学生旷课的课程及旷课人次。学生的缺课信息主要包含缺课日期,第几节课、课程名称,学生姓 名,缺课类型。 在录入学生缺课信息时根据系统提示逐一输入。 每输入完一条信息, 系统会提示是否继续输入, 用户可以选择继续或返回主菜单。 在修改学生缺课信息时,用户首先输入要修改的学生姓名,系统会检索如果系统中有该学生的 相关信息则系统首先会提示用户修改该学生的那一部分信息,用户可自行选择。如果系统中没有该

滨江学院课程设计报告

学生的相关信息,则系统会给相关提示,用户可以选择继续输入要修改的学生姓名或选择退出返回 主菜单。 在查询学生缺课信息时,用户先输入要查询的学生姓名,系统检索判断是否存在该 学生的信息然后做出相应的提示。总之,用户可以方便的在系统提示下进行使用。 学生考勤管理系统中功能模块图:

学生考勤管理系统

录 入 学生 的 缺课信息

修 改 某学 生 的缺课信息

查 询 某学 生 的缺课信息

统计某段时 间内旷课学 生姓名及旷 课节数

统计某段时间 内, 有学生旷课 的课程及旷课 人次

录 入 缺课 学 生 的 姓名 、

修 改 某学 生 的缺课日

查 询 某学 生 的缺课日

缺课日期、 缺课节次、 缺课课程 名称、 缺课 类型

期、 缺课节 次、 缺课课 程名称、 缺 课类型

期、 缺课节 次、 缺课课 程名称、 缺 课类型

按时间升 序显示旷 课学生姓 名及旷课 节数

按时间升 序显示有 学生旷课 的课程及 旷课人次

3. 详细设计 学生考勤管理系统中四个类的类层次图为:

Time 类

Xinxi 类

滨江学院课程设计报告

qstu 类

qkechen 类

图2

学生考勤管理系统中中四个类的类层次图

学生考勤管理系统中各功能模块的实现:

菜单

录入学 生的缺 课信息

修改某 学生的 缺课信 息

查询某 学生的 缺课信 息

统计某段时间 内旷课学生姓 名及旷课节数

统计某段时间内, 有学生旷课的课 程及旷课人次

图3

学生考勤管理系统中菜单函数的功能图

1、 学生缺课信息录用功能模块:

学生缺 课信息 录用功 能

录入学生缺课日期 录入学生缺课节次 录入学生缺课课程名称 录入缺课学生姓名 录入学生缺课类型

滨江学院课程设计报告

图4

学生缺课信息录入的功能

2、 修改某学生缺课信息功能的模块图 修改某 学生缺 课信息 功能 修改某学生的缺课日期 修改某学生的缺课节次 修改某学生的缺课课程 修改某学生的缺课类型

图 5 学生考勤管理系统修改学生缺课信息功能图 3 查询某学生缺课信息功能图: 输入要查询的学生姓名

查询某 学生缺 课信息 功能

显示要查询的学生缺课信息

继续查询或返回菜单

图 6 学生考勤管理系统查询学生缺课信息功能图 4、 统计某段时间内旷课学生姓名及旷课节数功能模块: 统计某段时间内旷课学生姓名及旷

统计某段 时间内旷 课学生姓 名及旷课 节数功能

课节数
显示某段时间内 旷课学生姓名及

旷课节数
返回菜单

图 7 统计某段时间内旷课学生姓名及旷课节数功能图

滨江学院课程设计报告

5、统计某段时间内,有学生旷课的课程及旷课人次功能模块

统计某段 时间内, 有 学生旷课 的课程及 旷课人次 功能

统计某段时间内, 有学生旷课的课程及 旷课人次 显示某段时间内,有学生旷课的课程及 旷课人次
返回菜单

图 8 统计某段时间内,有学生旷课的课程及旷课人次功能图

滨江学院课程设计报告

Tine -year:int -month:int -day:int +time() +~time()

基类

Xinxi -name[20]:char -kechen[10]:char

-jieci[3]:char - queke[10]:char -tm[3]:char -tiaoshu:int=0 +xinxi() +~xinxi() +setname(n:char*):void +settime(y:int, m:int,d:int):void +setqklx(qk: char*): void +setjieci(jc: char*):void +setkechen(kc: char*):void +getname():char* +getqklx():char* +getjieci():char* +getkechen():char* +gettime():int*

派生类

派 生 类

qstu

qkechen 派 生 类

-jieshu:int -qst:int +qstu() +~qstu() +print(st1:xinxi &):void +getjs( st1[]:xinxi,n:int, j:int):int +setjs(js:int=0):int +qstn[20]:char

-renci:int -kcshu:int=0 +qkechen() +~qkechen() +getrc(st1[]:xinxi,n:int ,j:int):int +qkn[20]:char

图 9

学生考勤管理系统中四个类的 UML 图

滨江学院课程设计报告

3.

系统调试 程序编写完成后,我进行了程序调试。调试过程中,出现了以下问题:当录入学生缺课信息时,

出现了无法退出录入函数的情况,主要原因是输入函数中 while 循环语句没有设置跳出循环的条件。 除此之外,修改某学生缺课信息时,如果没有该学生的缺课信息,系统没有提示要用户没有该学生 信息,也没有建议用户重新输入要修改的学生姓名。由此我发现了该系统修改学生缺课信息的不足。 于是,我对修改函数进行了修改与完善。在该函数中,我设置了 if 语句用来判断系统中是否存有用 户要修改的学生缺课信息。如果没有,则提示用户没有该学生的缺课信息,用户可以选择继续输入 要修改的学生姓名或者退出修改环节,可以在 循环语句中改变循环进行的条件从而终止循环。至

于在修改后显示该学生的缺课信息,运行时发现系统并没有做到这一点,对源代码检查之后发现是 修改函数中显示函数的调用出了点问题,显示函数的实参有误,应该把要修改缺课信息的学生所在 的信息类对象作为实参,然后用显示函数的形参引用实参对象,通过对象调用信息类的成员函数, 从而实现显示功能。至于该系统的查询功能的实现,在调试时发现还有欠缺,当随便输入一个学生 姓名时,系统没有显示该学生的缺课信息,也没有提示系统没有找到该学生的有关信息,经过在查 询函数 while 循环中加入一个 if 条件语句后, 系统实现了提示用户的功能,如果系统中没有你要

查询的学生缺课信息,系统将会提示用户,用户可以继续输入要查询的学生姓名也可以通过按系统 设置的退出键选择退出查询环节。至于两个统计功能至今没有完善,主要是特定时间学生缺课次数 和课程的缺课人次的统计问题尚待解决,现如今只完成了一两条学生缺课信息的统计。主要问题是 特定时间这个前提条件对我造成了一定的障碍。对系统中存储的信息进行查找和统计运用对象指针 比较方便,但我没有使用,也算有点遗憾。在调试过程中我出现的最严重的问题是函数形参引用对 象数组,结果系统提示将近几十个错误,在我把函数形参改为对象数组后,错误一下减少了很多。 还有比较突出的问题是整个程序不知哪掉了个 }号系统会提示有错,但就不懂那专业术语啥意思。 还有就是我以为派生类公有继承的基类的保护成员在派生类内为公有成员,可编译时才发现是不对 的。通过认真调试,我发现我有了收获。

5. 结果分析 这次的课设,我写的程序也没有什么独到之处,我觉得唯一可以从我的程序可以看出的是数组 用得比较多,反正是没啥特色,不仅如此,还写得功能不全,实在是惭愧。现在在这里也只能说说 它的不足之处了。

滨江学院课程设计报告

类层次不够清晰,纵观整个程序可以发现四个类之间的关系不甚恰当,我有这个感觉,但我不 知如何改进。 函数参数设定不够完美,整个程序中对指针的运用比较少。对于指针的巧妙运用把握得不够。 还有就是容易 missing;或者是},这都是些应该改掉的毛病。 除此以外,我对于怎样用文件保存数据还没深入了解,但我将数据保存到文件后又因文件打不 开而无法访问文件中的数据,对于动态链表,我不是很清晰,也就是说无法做到熟稔运用。在调试 过程中我发现在主函数中把字符数组名 name 赋值给字符指针 p 即 p=name;然后用 cout<<p;语句可以 输出字符数组里全部的内容,但利用函数返回指针值却不能做到这一点,在我思考一番后终于明白 了,这与内存中的地址值有关。具体为什么我是解释不清了 在调用系统的显示功能时,如果在 getname()函数前加一个*号输出的只是一个字符,不加反而 能输出所有字符。getname()函数的返回值为指针类型,但前面说过利用函数返回指针类型的值并不 能输出字符数组中所有的字符,为什么这里又可以呢?老天,这是为什么?我不知道这一知识,这 也算我的程序的不足之处吧! 对于两个统计函数的功能不全,我感到无能为力, 我为了这两函数苦思了两天,硬是没凑合来。 到后来,脑子里都乱了,运行时屏幕上尽是些乱七八糟的东西。老师帮我看看,看有没有什么简单 的方法一下搞定它。 结果不是很好,但过程够了就行。这也是自欺欺人的看法,让我再一次自责吧。

6.总结 这次的程序设计相对于上学期还是有了进步的。学生考勤管理系统要求至少要有四个类,在起 初,对于定义哪四个类我是不清楚的,通过仔细的研读问题描叙终于在脑海里确定了这四个类。既 然是学生考勤管理系统,那由学生缺课信息中的日期我想到了时间类,这是一个很简单的类。从系 统的几大功能我又想到了系统的基础就是缺课学生的缺课信息,于是我又想到了一个信息类,还有 两个类是根据两个统计功能想到的,在现在看来似乎有些不妥。通过这次的课程设计我明白了学习 程序设计语言必须要勤做实验,通过实验总结经验。平时遇到的一些小问题一定要重视,越是基础 的知识越要理解透彻。比如指针与数组方面的知识,一旦没有弄清楚,在设计程序时就会吃亏。 这次的课设中,我遇到了很多的问题,有的通过思考或查看书本解决了,有的还留在脑子里, 只有通过孜孜不倦的求索我们才会有进步,不懂得思考就不能真正的掌握一门知识。这次的实验给

滨江学院课程设计报告

以了我警示,它让我明白我所掌握的知识还很欠缺,对于继承与派生这一章的知识,我以为自己勉 强掌握了,这次实验后我发现我掌握得还不够。基类的保护成员公有继承到派生类,类外是否可以 通过对象来访问呢,原先我认为是可以的,经过这次程序设计,我知道我错了。 总之, 我觉得做学问不应该马虎, 对于所学一定要有深入的理解, 这也是我这次课设得到的启示。

附录:源程序清单 #include<iostream> #include<cstring> #include<windows.h> using namespace std; //时间类 class time {public: time(int y=0,int m=0,int d=0) {year=y;month=m;day=d;} ~time(){} protected:

滨江学院课程设计报告

int year,month,day; }; //信息类 class xinxi:public time { public: xinxi(){ tiaoshu++;} ~xinxi(){tiaoshu--;} void setname(char *n){strcpy(name,n);} void settime(int y,int m,int d){year=y;month=m;day=d;} void setqklx(char *qk){strcpy(queke,qk);} void setjieci(char *jc){strcpy(jieci,jc);} void setkechen(char *kc){strcpy(kechen,kc);} char *getname(){char *n;n=name;return n;} char *getqklx(){char *qk=queke;return qk;} char *getjieci(){char *jc;jc=jieci;return jc;} char *getkechen(){char *gk;gk=kechen;return gk;} int *gettime(); private: char name[20];//姓名 char jieci[3],kechen[10],queke[10]; int tm[3]; static int tiaoshu; }; int xinxi::tiaoshu=0; int *xinxi::gettime() { int *t; t=tm; tm[0]=year; tm[1]=month; tm[2]=day; return t; } //缺课课程类 class qkechen:public xinxi {public: qkechen(){kcshu++;} ~qkechen(){kcshu--;} int getrc(xinxi st1[],int n,int j); char qkn[20];//公有数据成员

滨江学院课程设计报告

private: int renci; static int kcshu;//静态数据成员 }; int qkechen::kcshu=0; int qkechen::getrc(xinxi st1[],int n,int j) { renci=0; renci++; for(int i=0;i<n;i++) if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)== *(st1[j].gettime()+2)) if(strcmp(qkn,st1[i].getkechen())==0) renci++; return renci; } //缺课学生类 class qstu:public xinxi {public: qstu(){qst++;} ~qstu(){qst--;} void print(xinxi &st1); int getjs(xinxi st1[],int n,int j); int setjs(int js=0) {jieshu=js;} char qstn[20]; private: int jieshu; static int qst; //静态数据成员 }; int qstu::qst=0; //类的实现 void qstu::print(xinxi &st1) { cout<<"| 缺课日期 |"<<" 第几节课 |"<<" 课程名称 |"<<" 缺课类型|"<<endl; cout<<"|"<<*st1.gettime()<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2)<<"|"<<st1.getjieci()<<"|" <<st1.getkechen()<<"|"<<st1.getqklx()<<"|"<<endl; } int qstu::getjs(xinxi st1[],int n,int j)

滨江学院课程设计报告

{ int i=0,js=0; xinxi min; if(*(st1[j].getjieci()+2)!='\0') js=+2; else js++; for(i=0;i<n;i++) if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==*(st1[j].gettime()+2)) if(strcmp(st1[i+1].getname(),qstn)==0) { if(*(st1[i].getjieci()+2)!='\0') js=+2; else js++; } jieshu=js; return jieshu; }

// 函数声明 int shuru(xinxi st1[]); void chaxun(xinxi st1[],qstu qt[]); void xiugai(xinxi st1[],int n); void tongji1(xinxi st1[],qstu qt1[]); void tongji2(xinxi st1[],qkechen qk1[]); void caidan(); void xiansi(xinxi &st1); void setqstn(xinxi st1[],qstu qt1[],int n); void setqkn(xinxi st1[],qkechen qk[],int n); //全局变量 int g,k=1,b=1; int q=-1; char name[20],kechen[10],queke[10],jieci[3]; int y,m,d; //主函数 int main() { xinxi tl[15];//定义 15 条信息类对象 qstu qt[10];

滨江学院课程设计报告

qkechen qk[6]; int ch; while(1) {cout<<"********欢迎进入学生考勤管理系统!*********"<<endl; caidan(); cout<<"--------请选择菜单项:"<<endl; cin>>ch; switch(ch) {case 1: g=shuru(tl); break; case 2: xiugai(tl,g); break; case 3: chaxun(tl,qt); break; case 4: tongji1(tl,qt); break; case 5: tongji2(tl,qk); break; case 6: exit(0); } } return 0; } //菜单函数 void caidan() { system("color A"); cout<<"*************************************************************"<<endl; cout<<"* 学生考勤管理系统 *"<<endl; cout<<"*************************************************************"<<endl; cout<<"1.-------------录入学生的缺课记录---------------------------*"<<endl; cout<<"2.-------------修改学生 的缺课记录---------------------------*"<<endl; cout<<"3.-------------查询学生的缺课情况---------------------------*"<<endl; cout<<"4.--------统计某段时间内旷课学生姓名及旷课节数--------------*"<<endl; cout<<"5.--------统计某段时间内旷课的课程及旷课人次----------------*"<<endl; cout<<"6.----------------退出系统----------------------------------*"<<endl; } //输入函数 int shuru(xinxi st1[]) { char a; cout<<"------输入开始!----"<<endl; do{ q++; cout<<"请输入学生姓名"<<endl; cin>>name; st1[q].setname(name); cout<<"请输入课程名称"<<endl; cin>>kechen;

滨江学院课程设计报告

st1[q].setkechen(kechen); cout<<"请输入缺课日期"<<endl; cin>>y>>m>>d; st1[q].settime(y,m,d); cout<<"请输入缺课类型"<<endl; cin>>queke; st1[q].setqklx(queke); cout<<"请输入缺课节次"<<endl; cin>>jieci; st1[q].setjieci(jieci); cout<<"是否还要继续输入:(y/n)"<<endl; cin>>a; }while(a=='y'); return q+1; } //修改函数 void xiugai(xinxi st1[],int n) { int k=1,j=0,a[10]; int flgh; int h; while(k==1) { cout<<"请输入你要修改缺课记录的学生姓名"<<endl; cin>>name; flgh=0; for(int i=0;i<n;i++) if(strcmp(name,st1[i].getname())==0) do{ a[j]=i; cout<<"1.修改日期 2.修改节次 3.修改课程名称 4.修改缺课类型"<<endl; cout<<"请输入要选择的数值(1,2,3,4)"<<endl; int b; cin>>b; if(b==1) { cout<<"请输入新日期"<<endl; cin>>y>>m>>d; st1[i].settime(y,m,d); } else if(b==2) {cout<<"请输入新节次"<<endl; cin>>jieci; st1[i].setjieci(jieci); } else if(b==3) {cout<<"请输入新课程名称"<<endl;

滨江学院课程设计报告

cin>>kechen; st1[i].setkechen(kechen); } else if(b==4) { cout<<"请输入新缺课类型"<<endl; cin>>queke; st1[i].setqklx(queke); } flgh=1;j++; }while(b<1||b>4); if(flgh==0) {cout<<"没有你要找的学生姓名,请重试要退出请按 0"<<endl; cin>>k; } else {cout<<"还要继续吗(1\0)退出请按 0"<<endl; cin>>k; } } for(int i=0;i<j;i++) { h=a[i]; xiansi(st1[h]); } }

// 查询函数 void chaxun(xinxi st1[],qstu qt[]) { char n='y'; int u[10]; while(n=='y') int j=0; cout<<"输入你要查询的学生姓名:"<<endl; cin>>name; int i=0; for(;i<g;i++) if(strcmp(name,st1[i].getname())==0) { u[j]=i; j++; } if(j==0) { cout<<"没有你所要的学生名字!";//没有找到 cout<<"是否退出退出请按 n\n";

{

滨江学院课程设计报告

cin>>n; } for(int a=0;a<j;a++) { //只有一条信息 if(j<2) { i=u[a]; cout<<"| 缺课日期 |"<<" 第几节课 |"<<" 课程名称 |"<<" 缺课类型|"<<endl; cout<<"| "<<*st1[i].gettime()<<"| "<<*(st1[i].gettime()+1)<<"| "<<*(st1[i].gettime()+2)<<"| "<<st1[i].getjieci()<<"| " <<st1[i].getkechen()<<"| "<<st1[i].getqklx()<<"| "<<endl; } //两条信息以上排序 else { i=u[a]; if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1)) qt[i].print(st1[i]); else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) qt[i].print(st1[i]); else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) if(strcmp(st1[i].getjieci(),st1[i+1].getjieci())==-1) qt[i].print(st1[i]); } cout<<"是否继续查询(y/n)继续请按 y 退出按 n"<<endl; cin>>n; } } } //统计某段时间内旷课学生姓名及旷课节数 void tongji1(xinxi st1[],qstu qt1[]) { int d1=0,js=0; xinxi min; if(g==0) cout<<"没有你要统计的学生信息请返回菜单录入学生缺课信息"<<endl; else if(g==1) { cout<<"姓名:"<<st1[0].getname()<<endl; if(*(st1[0].getjieci()+2)!='\0') js=+2; else js++; cout<<"节数:"<<js<<endl;

滨江学院课程设计报告

} else //信息按时间排序 {int i=0; for(;i<(g-1);i++) { if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) d1++; } for(int j=0;j<(g-d1);j++) { cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl; for(i=0;i<k;i++) { setqstn(st1,qt1,g); cout<<"姓名:"<<qt1[i].qstn<<endl; cout<<"节数:"<<qt1[i].getjs(st1,g,i)<<endl; } } } } //统计某段时间内旷课的课程及旷课人次 void tongji2(xinxi st1[],qkechen qk1[]) { int d1=0,rc=0; xinxi min; if(g==0) cout<<"没有你要统计的学生信息请返回菜单录入学生缺课信息"<<endl; else if(g==1) { cout<<"课程名:"<<st1[0].getkechen()<<endl; rc++; cout<<"人数:"<<rc<<endl; } else { int i=0; for(;i<g;i++)

滨江学院课程设计报告

{ if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) d1++; } for(int j=0;j<(g-d1);j++) { cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl; for(i=0;i<b;i++) { setqkn(st1,qk1,g); cout<<"课程名:"<<qk1[i].qkn<<endl; cout<<"人数:"<<qk1[i].getrc(st1,g,i)<<endl; } } } } //显示函数 void xiansi(xinxi &st1) { cout<<"| 缺课日期 |"<<" 第几节课 |"<<" 课程名称 |"<<" 学生姓名|"<<" 缺课类型 |"<<endl; cout<<"|"<<*(st1.gettime())<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2) <<"|"<<st1.getjieci()<<"|"<<st1.getkechen()<<"|"<<st1.getname()<<"|"<<st1.getqklx()<<"|"<<endl; } //设置缺课学生名 void setqstn(xinxi st1[],qstu qt1[],int n) { int i=0; for(;i<n;i++) {if(i==0) strcpy(qt1[0].qstn,st1[i].getname()); else if(strcmp(st1[i].getname(),st1[i+1].getname())!=0) {strcpy(qt1[i].qstn,st1[i].getname()); k++; } } }

滨江学院课程设计报告

//设置有缺课学生的课程名 void setqkn(xinxi st1[],qkechen qk[],int n) { int i=0; for(;i<n;i++) { if(i==0) strcpy(qk[0].qkn,st1[i].getkechen()); else if(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!=0) {strcpy(qk[i].qkn,st1[i+1].getkechen()); b++; } } }


相关文章:
c++课程设计学生考勤管理系统报告 (2)
c++课程设计学生考勤管理系统报告 (2)_管理学_高等教育_教育专区。学生考勤管理系统 2 总体设计 2.1 功能模块设计根据分析整个系统主要划分为 7 个功能模块, 分别...
C++学生考勤系统(含源代码)
C++学生考勤系统(含源代码)_计算机软件及应用_IT/计算机_专业资料。试设计考勤管理系统,使之能提供以下功能: (1).录入学生的缺课记录; (2).修改某个学生的...
C++课程设计-学生考勤
C++课程设计-学生考勤_计算机软件及应用_IT/计算机_专业资料。内蒙古科技大学C++...的《零起点学通 C++》里面的一个 范例--具有保存和读取功能的商品管理系统。...
学生考勤信息管理系统C++
课程设计成绩评价表课程名称 题目名称 学生姓名 序号 评价项目 工作量与工作 态度 学号 指 C++程序设计 学生考勤信息管理系统 指导教 师姓名 标 职称 满分 讲师 ...
C++学生考勤系统(含源代码)资料
计算机应用技术系课程设计报告书 C++语言程序设计 课程设计报告书 题目: 班级: ...试设计一考勤管理系统,使 之能提供以下功能: (1) .录入学生的缺课记录; (2...
c++课程设计学生考勤管理系统报告
百度文库 专业资料 IT/计算机 电脑基础知识c​+​+​课​程​设​计​学​生​考​勤​管​理​系​统​报​告...
学生考勤管理系统课程设计报告
合肥学院 计算机科学与技术系课程设计报告 2010~2011 学年第二期 课学学专指业导班教生姓 程名号级师 C++程序设计语言 学生考勤管理系统 王兵 1004032035 网络...
C语言课程设计学生考勤系统
C语言课程设计(班级考勤... 35页 免费 C++课程设计:学生考勤管... 23页 免费 学生考勤管理系统设计 13页 免费C​语​言​课​程​设​计​学...
数据库课程设计学生考勤系统
数据库课程设计学生考勤系统_工学_高等教育_教育专区。. 一、综合设计目的、...这样节省了大量人力物力,节省了宝 贵的时间,大大提高了工作效率.用 C++语言...
【最新版】人事考勤管理系统c++毕业课程设计文档_图文
【最新版】人事考勤管理系统c++毕业课程设计文档_管理学_高等教育_教育专区。毕业论文,单片机论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,硕士论文,研究生...
更多相关标签: