实训报告学 号:2编 号:B04731017教 学 院 计算机 课程名称 大型软件项目实训专 业 网络工程 班 级 二班 姓 名何娟2016 年 9 月 20 日便、能实时记录学生考勤信息的学生考勤管理系统迫在眉睫。
2.2处理流程和数据流程人工的考勤系统主要包括请假系统,考勤系统,管理中心,主要供学生,辅导员,任课老师,班主任所使用。
如下为系统流程图:在请假系统中,学生想要请假需要向辅导员老师写请假条并说明原因,获得辅导员的同意才能请假成功,否则失败。
而学生的请假情况记录在请假条的存根上,在向任课老师请假时也需自己或请同学向老师出示请假条并说明原因,由任课老师在学生名单上记录为“请假”。
辅导员、任课老师、学生只有通过查询请假条的存根或考勤表才可知道请假情况。
2.3局限性该系统会浪费很多的时间而且会很麻烦,当学生需要请假时必须找到辅导员写请假条才行,另外课堂上由于是由任课老师通过点名的方式考勤所以会造成混乱不清更问题。
因此,开发一个新的高校学生考勤管理系统迫在眉睫,同时,我们的系统也应运而生。
3.功能需求这是一个记录学生上课情况的一个考勤系统,方便记录、查询、统计学生考勤信息。
学生考勤管理系统用于记录学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、学号、缺课类型(迟到、早退、请假及旷课)。
优化界面使学生使用更加便捷,在保证信息共享的同时又注重了信息的安全性而不被篡改。
该系统除了用于学生课堂的考勤,还可用于学生出早操情况的考核,开会出勤情况的考核等。
而且可以进一步开发,与教务处学生成绩数据库相连接,将考勤结果作为平时成绩或期末成绩及评优的参考。
另外该系统还可作为请假系统代替传统写请假条请假的问题。
在安全方面,登陆系统时,需验证身份和密码,只有通过验证的身份才能进入系统进行相关的操作。
系统间信息的传递也需要进行安全设置,以防止学生的考勤信息被恶意篡改。
主要分为6大模块,分为录入学生的缺课记录、修改某个学生的缺课记录、查询某个学{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_s(name, n); }void settime(int y, int m, int d){ year = y; month = m; day = d; } void setqklx(char *qk){ strcpy_s(queke, qk); }void setjieci(char *jc){ strcpy_s(jieci, jc); }void setkechen(char *kc){ strcpy_s(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;};这是一个信息类,用来记录学生的姓名,以及上课课程名,还有缺课课程名和节次,以供后期查询。
//缺课课程类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; //静态数据成员};/菜单函数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]);}}1.刚进入系统时界面这是开启系统时的进入界面,用户可以根据要求选择不同的菜单项,输入对应的数字即可,然后再根据提示进行信息录入。