收藏 分销(赏)

学生考勤管理系统课程设计.doc

上传人:丰**** 文档编号:3992239 上传时间:2024-07-24 格式:DOC 页数:21 大小:95.04KB 下载积分:10 金币
下载 相关 举报
学生考勤管理系统课程设计.doc_第1页
第1页 / 共21页
学生考勤管理系统课程设计.doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
计算机与信息工程系 《高级语言程序设计》课程设计报告 学号 2012-2013学年 第二学期 1208010217 《高级语言程序设计》 课程设计报告 题目: 学生考勤管理系统 专业: 计算机科学与技术 班级: 12(2)班 姓名: 李天栋 指导教师: 孙淮宁 成绩: 计算机与信息工程系 2013年6月30日 目录 1设计内容及要求。。.。.。.。.。。.。。。。..。。。。..。。.。..。。。.。。.。。。.3 1。1设计内容.。。。.。。。。。。.。。。。...。。。。.。。。.....。。.。。。。。。。.。.。.。。。。。.3 1。2设计任务及具体要求。。。。.。。。.。.。..。。..。.。。。.。.。.。。。。。。。.。.。。。。.3 2概要设计。。。.。..。..。.。。.。。..。。。.。。..。..。。。。。.。。。。。。.。。。。。。。。。。.。。.4 2。1该系统的功能简介..。。。..。。。.。..。..。。。。..。。。。。.。.。...。..。.。。。..4 2。2 总体程序框图。。。。。。.。。..。。.。。。..。...。。。..。。。。。.。。。。。。....。。。。.4 2.3各个模块之间的主要关系。。。.。..。。..。。.。。。.。.。。.。。.。。。。。。。..。。..。5 3设计过程或程序代码。。。。。。。。.。.。。。..。.。..。。。。。.。。...。.。...。。。。。.5 3.1各个模块的程序流程图及运行界面。。。.。.。..。。.。。。.。.。.。。..。.。。。。..5 3。2对关键代码加以分析说明.。.。。.。。.。.。.。...。。.。..。...。。。.。。。。。...10 4程序调试分析.。。。。。....。。.。。。。。。。。。。.。。..。。。。。。.。。。..。.。。.。..。。。.。14 5小结。。。.。。。...。.。。。..。。。。....。。.。。。.。。。。。。..。。。.。.。。。.。..。.。。。。。。17 致谢.。。.。。.。。..。。。。。。。。。。。...。。。。..。。。。.。..。。。。...。。.。.。...。.。.17 参考文献.。.。。...。。.。。。。.。。.。。..。。。。.。.。...。。。。。。。。...。。。。。..。.。。。。。17 附:源程序.。。...。。。。..。。.。。。。。。.。..。。。。。。.。。.。。。。....。.....。。。。..。。.18 1 设计内容及要求 1.1设计内容 学生考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用begin—end的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。 1.2设计任务及具体要求 任务:(1)给出软件结构,说明各模块的功能。 (2)设计相关的类,并说明该类的作用。特别要用图形说明类之间的继承关系。 (3)编写代码 具体要求:(1)定义相关的数据,比如: 学生学号 学生姓名 课程名称 上课时间 到课时间 出勤状态 [旷课/病假/事假/迟到/早退] (2)能够进行以下操作: A.能够对数据进行增、删、改、查操作. B.能够按学号顺序列出某一课程的出勤状况 2 概要设计 2.1系统的功能简介 考勤管理系统,有以下功能:  (1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期 第几节课 课程名称学生姓名 缺课类型 每行一条纪录. 例如:  2013-04—29 2—4 中国近现代文学史 李云龙 迟到 2013-04-28 2—4 大学生社交礼仪 马志鹏 旷课  (2).修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录.  (3).查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。  (4).统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;  (5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序.   2.2 总体程序框图 修改某学生的缺课信息 查询某学生的缺课信息 统计某段时间内旷课学生姓名及旷课节数 统计某段时间内,有学生旷课的课程及旷课人次 录入学生的缺课信息 学生考勤管理系统 录入缺课学生的姓名、缺课日期、缺课节次、缺课课程名称、缺课类型 修改某学生的缺课日期、缺课节次、缺课课程名称、缺课类型 查询某学生的缺课日期、缺课节次、缺课课程名称、缺课类型 按时间升序显示旷课学生姓名及旷课节数 按时间升序显示有学生旷课的课程及旷课人次 2.3各个模块之间的主要关系 本程序用结构体新定义一种数据类型,系统包含一个主函数和6个子函数(insert(),check(),rivise(),Delete(),output(),deleteallchain()),6个子函数分别用来插入、查询、修改、删除、输出、收回动态分配的空间,在主函数中通过调用子函数来实现所需功能. 3 设计过程或程序代码 3。1各个模块的程序流程图及运行界面 学生考勤管理系统中四个类的类层次图为: 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* qkechen -renci:int -kcshu:int=0 +qkechen() +~qkechen() +getrc(st1[]:xinxi,n:int ,j:int):int +qkn[20]:char qstu -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 基类 派生类 派生类 派生类 图 9 学生考勤管理系统中四个类的UML图 3.2对关键代码加以分析说明 #include〈iostream.h〉 #include〈string。h〉 #include<iomanip。h> struct chuqin{ //用结构体定义一个新的数据类型出勤chuqin char name[10],number[20],subject[15],time1[15],time2[15],zhuangtai[10]; chuqin *next; }; //--—————————---—--———--—--——————-———-———-—-—--————————--—-—-—--—-—-—-—-———-———-—————— void insert(chuqin* &head1)//创建单向链表并插入数据 { chuqin *n;//定义一个chuqin类型指针n while(1)//一个死循环 { n=new chuqin;//用new运算符动态分配一个chuqin空间给指针n cout〈〈”请依次输入姓名、学号、课程、上课时间、到课时间、出勤状态(第一个字母输入N表示结束插入):\n”;//输出提示信息 cin>〉n—>name;//输入姓名 if(n—〉name[0]=='N’) //判断刚才输入的第一个字母是否为N { delete n;//若输入的第一个字母为N,则用delete运算符收回刚才动态分配的空间 break;//跳出死循环,结束插入 } cin>〉n-〉number〉〉n—>subject>>n-〉time1>>n->time2〉>n—〉zhuangtai;//若条件不满足,则继续输入学号、课程、上课时间到课时间等 if(!head1) head1=n,n—>next=NULL;/*假如head指针为空,则直接让head指针指向n指向的存储空间(head=n),将n-〉next赋值为空,即不指向任何存储空间*/ else n—〉next=head1,head1=n;//若head指针非空,则将n指向的存储空间插在最前面 } } //-———-——--——--——-————--——-————-———-------——-—-———————---——-————--———-————-——------—-- void check(chuqin *head)//子函数实现查询功能 { char number1[10];//定义一个字符串数组name1临时存放要查询的姓名 int flag=1; cout〈〈”请输入要查询的学号:";//输出提示信息 cin>〉number1;//输入要查询的学号 while(head)//用while循环检索查询是否有匹配的姓名 { if(strcmp(number1,head-〉number)==0) //用函数strcmp()判断是否有匹配姓名 { if(flag) { cout<〈"找到!\n”〈<setw(12)〈<”姓名”<<setw(12)<〈”学号”〈<setw(12)〈〈”课程”; cout〈<setw(12)〈〈"上课时间”〈〈setw(12)<〈”到课时间”〈〈setw(12)〈〈”出勤状态\n”; }/*若条件为真,则输出提示信息*/ cout〈<setw(12)〈〈head->name〈〈setw(12)〈<head-〉number〈〈setw(12)<〈head—〉subject; cout<〈setw(12)<<head—〉time1〈〈setw(12)〈〈head—〉time2〈<setw(12)<〈head->zhuangtai<<endl; flag=0; } head=head—〉next;//更新head指针,是它指向下一个chuqin类型的存储空间 } if(flag) cout〈〈”未找到!";//假如flag值为1,则输出”未找到!” } //—-—-—--—————————---——-—-—-———--—----——————-—------——————--—-———-——--—-—--—--——-——--— void rivise(chuqin *head)//定义子函数实现修改功能 { char name1[10];//定义一个字符串数组name1临时存放要修改的姓名 cout〈<”请输入修改的姓名:”;//输出提示信息 cin〉>name1;//输入要查询的姓名 while(head) { if(strcmp(name1,head—〉name)==0) { cout<〈”找到此人!\t”〈<"请输入此人新的信息(依次为:课程、上课时间、到课时间、出勤状态)\n”; cin〉>head—〉subject〉>head—〉time1〉〉head—〉time2〉〉head—〉zhuangtai;//输入新的课程、上课时间、到课时间 break; } head=head->next; } if(head==NULL) cout〈<"未找到此人!无法修改!\n”; } //-—-————---—————--——--———-———--—-——-—-—————-—--———--—-—-—-—-——————-———-——-——-————-—-- void Delete(chuqin* &head)//定义子函数实现删除功能 { char name1[10]; int flag=1; chuqin *p1=NULL,*p2,*p3=head; cout<<"请输入要删除的姓名:"; cin〉〉name1; while(head) { if(strcmp(name1,head—>name)==0) { cout〈〈”找到此人!\t将此人的全部信息删除\n”; if(p1==NULL) { p1=head; head=head—>next; delete p1; } else if(p2->next==NULL) { p1—>next=NULL; delete p2; head=p3; } else { p1—〉next=p2-〉next; delete p2; head=p3; } flag=0;break; } p1=head; head=head—〉next; p2=head; } if(flag) { cout〈<”未找到此人!无法删除!\n”; } } //-——————-——————-——-—-———--——-—————-—-—--——-—-——--—-—-—-——-——-—-—————-————-—-——-—----— void output(chuqin *head)//定义子函数实现输出功能 { if(head==NULL) cout〈〈"记录为空!"; else { cout〈〈”所有的记录依次为:\n”〈〈setw(12)〈<”姓名”〈〈setw(12)<〈"学号"<〈setw(12)〈〈"课程"; cout〈〈setw(12)<<”上课时间"<〈setw(12)<〈”到课时间”<〈setw(12)〈〈”出勤状态\n”; } while(head) { cout〈<setw(12)〈<head—>name〈〈setw(12)〈〈head-〉number<〈setw(12)〈<head-〉subject; cout<<setw(12)〈<head—〉time1〈〈setw(12)〈〈head-〉time2〈<setw(12)〈〈head—〉zhuangtai<<endl; head=head—>next; } } //——--——-———--—-—-----——--—————-———-—-—-—————-——————-—--———-————-————--—-——-—---—-—---—-————-—-—— void deleteallchain(chuqin *head)//定义子函数来收回所有动态分配的存储空间 { chuqin *p; while(head) { p=head; head=head—>next; delete p; } } //—-———-----—--——————-—————-——--—————-————-—-----——--—--—-———-———-——-——-—-———————-—-—— void main()//主函数 { int a;//定义一个整型变量 chuqin *head ;//定义一个head指针 head=NULL; while(1)//死循环 { cout〈〈"请输入一个数字(1表示插入,2表示查询,3表示修改,”; cout〈<"4表示删除,5表示输出,6表示跳出整个程序)\n”;//输出提示信息 cin>〉a;//输入一个整型值 if(a==6) break;//若该值为6则跳出整个循环 switch(a)//若a值不为6,执行一下程序 { case 1: insert(head);break; case 2: check(head);break; case 3: rivise(head);break; case 4: Delete(head);break; case 5: output(head);break; default: cout<〈”输入有误,请重新输入\n”;/*若输入的a值不符合要求,则输出提示信息*/ } } deleteallchain(head);//调用函数deleteallchain()收回所有动态分配的存储空间 } 4 设计结果与分析 系统调试 程序编写完成后,我进行了程序调试。调试过程中,出现了以下问题: 当录入学生缺课信息时,出现了无法退出录入函数的情况,主要原因是输入函数中while循环语句没有设置跳出循环的条件。除此之外,修改某学生缺课信息时,如果没有该学生的缺课信息,系统没有提示要用户没有该学生信息,也没有建议用户重新输入要修改的学生姓名。由此我发现了该系统修改学生缺课信息的不足。 于是,我对修改函数进行了修改与完善.在该函数中,我设置了if语句用来判断系统中是否存有用户要修改的学生缺课信息。如果没有,则提示用户没有该学生的缺课信息,用户可以选择继续输入要修改的学生姓名或者退出修改环节,可以在 循环语句中改变循环进行的条件从而终止循环。 至于在修改后显示该学生的缺课信息,运行时发现系统并没有做到这一点,对源代码检查之后发现是修改函数中显示函数的调用出了点问题,显示函数的实参有误,应该把要修改缺课信息的学生所在的信息类对象作为实参,然后用显示函数的形参引用实参对象,通过对象调用信息类的成员函数,从而实现显示功能。 5 小 结 这次的课设,我写的程序也没有什么独到之处,函数参数设定不够完美,整个程序中对指针的运用比较少。对于指针的巧妙运用把握得不够.还有就是容易missing;或者是},这都是些应该改掉的毛病。 除此以外,我对于怎样用文件保存数据还没深入了解,但我将数据保存到文件后又因文件打不开而无法访问文件中的数据,对于动态链表,我不是很清晰,也就是说无法做到熟稔运用.在调试过程中我发现在主函数中把字符数组名name赋值给字符指针p即p=name;然后用cout〈〈p;语句可以输出字符数组里全部的内容,但利用函数返回指针值却不能做到这一点,在我思考一番后终于明白了,这与内存中的地址值有关。 致谢 在这次C语言课程设计中,我不仅参考了大量资料和翻阅了图书馆内的相关书籍,而且我的老师和同学给了我及大的帮助.特别是我的指导老师孙淮宁老师和徐宁.在此,我对他们表示感谢,感谢他们在我面对学习上的困难时给了我帮助和支持.也感谢那些给我帮助的所有同学! 参考文献 [1] 刘维富 陈建平 葛建芳 王春明,《C++程序设计》,北京,清华大学出版社,2007 [2] 张岳新,《Visual C++程序设计》,苏州,苏州大学出版社,2002 [3] 和克智,《C++程序设计》(第二版),西安,西安交通大学出版社,1999 [4] 王挺 周会平 贾丽丽 徐锡山,《C++程序设计》,北京,清华大学出版社,2005 附录:源程序清单 #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]); elseif(*(st1[i].gettime()+1)==*(st1[i+1]。gettime()+1)&&*(st1[i]
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服