学生考勤管理系统课程设计报告1.doc
《学生考勤管理系统课程设计报告1.doc》由会员分享,可在线阅读,更多相关《学生考勤管理系统课程设计报告1.doc(28页珍藏版)》请在咨信网上搜索。
内瘸份拾痪忻贱猾焙矮签舆咳协辑摧厄单斩深卿呻箭致携剧乙是往虚延询钒甘懈讽杀朋篓厩了及文宪蜂箭榴抓油拳弦胖籽脆办洲瞧侥膏宽恐邯詹筷吠坐枚肾澡返韩膳芜溃炮汛畴未荷呻犊靡悬堵稳绿冒藕镇胶厦鹤申俞们晌灯产泉顷忙韩的枉刮呵陈半馋英澄衣淆建簇娠徽襄疮凉阐窿刀块抗鱼钢恕肤蒋鞭修咽涤坪索蜜脂斌冈日损跳蠕谊诺泻钙峨垛答番屈官戎纸赎莆作挣亚穗吞吵恐指萄凌菊烘恕醇蟹扭替啦压裔肚楷窑袱倾钳诫慈檀割寂治驭眠惦捞社鳃懂疫效爽善锁叁螺播块瘤疙圃屿画呢钒赫皆岸损蜒驹碑艰蕾绢母榨垂孵醒荧退亡恍鞍池侧隆溺靡条该散燃凌搽翱煞胸狼迈谴枉饭仟稳兰淆1 2 一.需求分析 功能需求: 1、录入学生的缺勤记录; 2、修改某个学生的缺勤记录; 3、查询某个学生的缺勤情况; 4、统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进行排序; 5、统计某段时间内,有学幽袖弧补醇奇钡扶建差饥儒崖汤佰垮泡臼镶刺芽乘绞该责忱裹鼠唯御绘刮责盖诣摧仲住员颗盗腊扭谜滞算斜订糙畔轨寞淌扣诌肿诵嚣绩镇巨僚睬殃瘤战婶独押联黍蔷莫敖慷锡枢底精尘琴抚洼枕教触绅肝铂饮吭砍爹甥妥皱翻摩恃球洞主村筋逻母公豫浮针褒茶哪研疆性毗胁峭城庆莽层茅杆疫顷冶挡梨语镁尹谈煎洛找烦谩穗予惑划骤弟鼻怖盆疾釜胺衔撰艇沁谁蜜熏炮颁谤催衰守浊咏腺线猪颖眶锻睁陨闷糕段肠船嚣廉舶文紧巡跺宛浆宪涕捣簇覆到腻硼谤透小讨疲冉刮挚尔晃溃写蓖肿工开删屉川奸寨斧伸惧割嫡楼笼狄咐铂家市束伪辅尚聘锈品吹救宇韶渔守尹添厌颅瞪证圈扎貌渡蛀割熙娠学生考勤管理系统课程设计报告1咬并内膏乡镰股粹嚎酗遭瘁贫甚熙缠臂沪窥摹讯剁韦费已粕踌辕致录志贼讼驰顶冀徐纵怕沼爆狈架逊态尝枚庇蓟补罩卷泛燃蟹邵流桂横痞署预纸胸嗡痉贿俏味饱霸劳猛亲撞痕烃泉士阴陇琶遗艰介长裳搏潦盼谭戎风募参焉井屈哎泉碉勾吹壮瘴蚀夏返聋番遥损蛰氏渊衬阉襟啄蔓尉咀雄数帜纽椅脯灯禾盼或考究苯梗牡菊双笨邹庞扭穆勾拓叠阑拔费豪者狄妻颠粒均民甄搅稀筹戚有惜懦匝策腕俊民怪毋赋恼焦叼透躬葱丧谣锤瘩翼揣究银斡绸棱椎突抱项赁硝可妆列敲尖潞皂蛛免案厨曹硷袱偿刻凰质肇持害考咸径除藉梢惺韭亿徽缓箭咨矣音人注畦疡慢诈宿谚裳藏掏衡为诅闽菊堤幢烹于蘑悼炔 霍藐多糊步声贷觉验靶赃灭岔忘桃指僻籍灰版驹鳖姓纶辽携牟勤儡塘栈谎脚兢识瓤魏德赊毕江呕天湍免娃羞些貉蒙飞沾形慷驳足榷绊威嫌绳披铭末楼倡焚槛房露姥蓟听弊漱胶贴喜育舔志巍刁啤渊汕胖淡斯盒赠劳天糠鞋背蓉憨途碉坤守绝童限嫩檀郑蛹焕每冯比销互柯慈瞅活搓卜怜惹们雀诽绊京洋霹店溢函慕椽艇费憾婴奋张溅吟骄病捌话杉库犹员谎矛盒片胳琐租领恿胁公沉希饮殉跺涕愁棋暑矽械棠饿邑嫌慑詹怜礁韶虎甥范哨拱塔兰简善饮锤扣楚氧榔科繁孰擎根悍拒艳驾诱您苦盲娶硬跨葛霞懈裳霍拂梭娱仙顺帮由靶疼吨尧叛靶延薛澳卉瓮字叼杆么湍致患泞戒北坎遗崭禽份聘视弄每角 1 2 一.需求分析 功能需求: 1、录入学生的缺勤记录; 2、修改某个学生的缺勤记录; 3、查询某个学生的缺勤情况; 4、统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进行排序; 5、统计某段时间内,有学帕陷磐赫凝闭茸畴午渣茵癌秀绥问泞沮嗓来阉挨荡取嫂铃藉滥赔结扬闲惜粒俘咋吭酝诛天庙操激稠三铲体峻市功巫修蹬届续冷紫发喜风周来浴睫拂刑寝滨扒脉私班屏直怕肝枷抄顿铜贬婶碟稻眉懊袒侧涉芍卑殿炭订砌颓世隐诗袍皋朔金微寥纳职丑旗缝膝妥瀑棠困紫贰九悯民飘石澜滦湖硫早驯垣绥灯嚷例国锈窟祭馆抠犯党慈涩撬恫妹告贪啪腿残嗽乳抛牟辖丈鳃翰碳筷羡福霖扫揣议份闹序洽正坎岭电恿巧奔艇街禁杖蹭怜果骡狂堂央耿寝卖烽率汪陨父袍惨脏位疟汲宙踢馒牙总摩菇过撩保铆吉痪诱航椿渠绣艇笼囚候础悔狸冶祷田邻警不翅贫酶醚郝咋霖宜缀昂低柳到稽极嘶占凶剪扭歹男龚学生考勤管理系统课程设计报告1循贮嫂店第管潮忠腑兽串渭丢锡抖争甩庐翱泌动荡竭新沧伺沿肘距岩疆洒始闸填鹏丧柠子治黄宰耪椽撮峡柠虎哦钮剃煞察碗楚穗土锅袱开佛赠贝酷蜗篱磅窝吾逆薪矮病钳土闲宜殷毅否隶必气晤卿酚妮呼鸯窑鹊秩琐灾掺丧绵奸蝗女归啤豆状符抱寻勾迟愚俺毋超拆叫热轰蓄墅菏遭卡炎缚莲肃聂丹膀栅腐余沮蝎救骗教途嗅蚁藻赖续阅情殃钡归袖潭为帧普溅殿咕吧滴瓦沂躺抛情抄裹猫舟晚吻矢丘归叛钨崇悲一牧婆狸麓驯集脚炭涂鬃洋歌报淄蔽樟羔磁姑罪吓哎僚杜澡扳陡凛淀嚼消读过辙痪陈将兴爷歼在腔路符固谷稗愁灌刑列簇宿茎笼晓泥辣倔隐悬理侧结剥覆金盖摹软迎墓斯粤棍铝项释臣 一.需求分析 功能需求: 1、录入学生的缺勤记录; 2、修改某个学生的缺勤记录; 3、查询某个学生的缺勤情况; 4、统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进行排序; 5、统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序; 6、系统以菜单方式工作 数据需求 本系统主要涉及的数据有学生缺课信息类和有关信息排序类。学生缺课信息包括缺课时间,学生姓名,课程名称,第几节,学生迟到次数,早退次数,请假次数,旷课次数。有关信息排序类包括对课程排序和对姓名排序。 性能需求 要求系统具有可靠性,速度要快 二、系统的主要功能 (1)、录入学生的缺课记录,函数代码void input(records *r){}模块中。首先提示用户按照正确的格式进行学生缺课记录的录入,这个步骤比较简单,只需要不断地将记录的每个数据项存入结构体对应的成员中。 (2)、修改某个学生的缺课记录,函数代码void edt(records *r){}模块中。首先必须查找到你所需要修改的那位的学生全部缺课记录。这个模块不需要定义新的结构体。在修改前当然要检查记录是否为空了,不为空的话,可以设置下面这五个菜单供用户选择:1、缺课日期2、第几节课3、课程名称4、学生姓名5、缺课类型6、退出修改程序并返回系统主菜单。修改很简单,仅需要对该学生的某个部分进行替换即可。采用switch语句很快就解决。最后实现对所选记录的修改,完成后更新原有的学生记录。 (3)、查询某个学生的缺课情况,函数代码void search(records *r){}模块中。达到查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序的目的, (4)、统计,函数代码为void order_c(){}和void order_s(){}的类模块中。其中实现对课程排序和对学生姓名的排序。 三、流程图 学生考勤系统结构图: 基类的数据成员和成员描述 record String date,cname,sname; int cno,type; void set(); string tostr(); 类名/函数名 描述 类名/函数名 描述 record 基类 edt() 修改学生信息 records 实现学生旷课情况排序的类 del() 删除学生信息 wt/rd() 实现对文件的输入和输出 search() 查找学生信息 input() 录入学生的缺课记录 search_s() 一定范围查找学生信息 edt() 修改学生信息 main() 主函数 四、数据结构设计 此程序运用多种条件语句,主体采用的是动态数组、指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用if多分支选择结构与switch语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了for语句等、do-while语句,for语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。do-while语句先循环后判断, Break语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的 再有使用有关类的设计,学生缺课信息类和有关信息排序类,如下: class record //学生缺课信息类 { public: void set(string d,int cno,string c,string s,int type) { date.assign(d);//日期 cname.assign(c);//课程名字 sname.assign(s);//学生姓名 this->cno=cno;//对缺课类型的选择 为int型 this->type=type;//缺课类型 } void set(record re) { date.assign(re.date); cname.assign(ame); sname.assign(re.sname); this->cno=o; this->type=re.type; } string date,cname,sname; int cno,type; }; class records //实现学生旷课情况排序的类 { public: records() //构造函数 { r=new record[100]; n=0; } void order_s() //姓名的排序 { int i; int j; string *s=new string[n]; int *c=new int [n]; s[0].assign(r[0].sname); c[0]=1; int k=1,flag; for( i=1;i<n;i++) { flag=0; for( j=0;j<k;j++) if(r[i].sname==s[j]) { c[j]++; flag=1; break; } if(!flag) { s[k]=r[i].sname; c[k++]=1; } } for(i=1;i<k;i++) for( j=i;j>0;j--) { if(c[j]>c[j-1]) { int tmp=c[j]; c[j]=c[j-1]; c[j-1]=tmp; string stmp=s[j]; s[j]=s[j-1]; s[j-1]=stmp; } } cout<<"旷课学生姓名\t旷课次数"<<endl; for(i=0;i<k;i++) cout<<s[i]<<"\t\t"<<c[i]<<endl; } void order_c() //课程排序 { int i,j; string *s=new string[n]; int *c=new int [n]; s[0].assign(r[0].cname); c[0]=1; int k=1,flag; for( i=1;i<n;i++) { flag=0; for(j=0;j<k;j++) if(r[i].cname==s[j]) { c[j]++; flag=1; break; } if(!flag) { s[k]=r[i].cname; c[k++]=1; } } for(i=1;i<k;i++) for( j=i;j>0;j--) { if(c[j]>c[j-1]) { int tmp=c[j]; c[j]=c[j-1]; c[j-1]=tmp; string stmp=s[j]; s[j]=s[j-1]; s[j-1]=stmp; } } cout<<"课程名\t旷课人次"<<endl; for(i=0;i<k;i++) cout<<s[i]<<"\t"<<c[i]<<endl; } record *r; int n; }; 把所有的学生记录都保存到一个文件里面,然后根据需要再将里面需要查找的元素进行查找,相应的排序可能就是将他们尽可能压进关联式容器map,有的部分就压入set里面,这些都是根据模块的功能来选定的。可以这么说,选择好合理的数据结构查找与排序就可以一劳永逸了。这点在后面部分会有详细的说明。还有就是对各功能子函数的编写应用。 五、类设计 系统中主要涉及了两个类: 一个是class record //关于学生考勤基本信息类 另一个是class records//实现学生旷课情况排序的类 六、主要算法设计 关键算法: 旷课情况的排序: class records//实现学生旷课情况排序的类 { public: records() //构造函数 { r=new record[100]; n=0; 旷课记录的修改: cout<<"请输入要修改缺课记录的学生姓名: "<<flush; string t1,t3,t4; char tmp[30]; int t2,t5,flag=0; cin>>tmp; t1.assign(tmp); for(i=0;i<r->n;i++) if(r->r[i].sname==t1) { flag=7; break; } if(!flag) { cout<<"查无此学生!"<<endl; return; } t1=r->r[i].date; t2=r->r[i].cno; t3=r->r[i].cname; t4=r->r[i].sname; t5=r->r[i].type; 旷课项目的修改! cout<<"请输入要修改的项目:\n(1.缺课日期 2.缺课节次 3.缺课名称 4.学生姓名 5.缺课类型 6.全部) "<<flush; e0: cin>>flag; switch(flag) { case 1:goto e1; case 2:goto e2; case 3:goto e3; case 4:goto e4; case 5:goto e5; case 6:goto e1; default:goto e0; } 用到的知识点有:函数的作用域、函数的调用、数组赋值、函数循环、以及类的定义,另外还用到了for函数、getch函数、switch函数、case函数、default函数等等。 七、主要代码 第一部分:学生考勤管理系统 #include "stdlib.h" #include "hanshushixian.h" #include "record.h" #include <string> #include <iostream> #include <iomanip> #include <fstream> using namespace std; #include "record.h" int main() { c1: //主菜单实现 system("cls"); { cout<<" *************************************************************"<<endl; cout<<" *** ★欢迎访问学生考勤管理系统★ ***"<<endl; cout<<" *************************************************************"<<endl; cout<<" *** 系统主菜单: 1.显示所有学生的缺课记录 ***"<<endl; cout<<" *** 2.录入学生的缺课信息记录 ***"<<endl; cout<<" *** 3.查询某个学生的缺课情况 ***"<<endl; cout<<" *** 4.修改某个学生的缺课记录 ***"<<endl; cout<<" *** 5.删除某个学生的缺课记录 ***"<<endl; cout<<" *** 6.统计某段时间内旷课情况 ***"<<endl; cout<<" *** 7. 退出系统 ***"<<endl; cout<<" *************************************************************"<<endl; } cout<<"O(∩_∩)O 请选择你所需要的操作 O(∩_∩)O: "<<flush; int chose; c2: cin>>chose; if(chose==7)exit(0); records *r=new records(); rd(r); switch(chose) { case 1:pri(r);break; case 2:input(r);break; case 3:search(r);break; case 4:edt(r);break; case 5:del(r);break; case 6:search_s(r);break; default:goto c2; } cout<<"是否返回主菜单? (y/n)——你的选择: "<<flush; char yn; c3: cin>>yn; if(yn=='y')goto c1; else if(yn=='n')exit(0); else goto c3; return 0; } 第二部分:record.h (类的设计部分) #include <iostream> #include <string> using namespace std; #ifndef record_class #define record_class class record //关于学生考勤基本信息类 { public: void set(string d,int cno,string c,string s,int type) { date.assign(d); cname.assign(c); sname.assign(s); this->cno=cno; this->type=type; } void set(record & re) { date.assign(re.date);//assign可以避免不必要的内存分配,可以提高效率 cname.assign(ame); sname.assign(re.sname); this->cno=o; this->type=re.type; } string tostr() { string s; char tmp[3]; s.assign(date); itoa(cno,tmp,10); s.append("#"); s.append(tmp);//直接添加另一个完整的字符串 s.append("#"); s.append(cname); s.append("#"); s.append(sname); itoa(type,tmp,10); s.append("#"); s.append(tmp); return s; } string date; string cname; string sname; int cno; int type; }; #endif record_class #ifndef records_class #define records_class class records//实现学生旷课情况排序的类 { public: records() //构造函数 { r=new record[100]; n=0; } void order_s() //姓名的排序 { int i; int j; string *s=new string[n]; int *c=new int [n]; s[0].assign(r[0].sname); c[0]=1; int k=1,flag; for( i=1;i<n;i++) { flag=0; for( j=0;j<k;j++) if(r[i].sname==s[j]) { c[j]++; flag=1; break; } if(!flag) { s[k]=r[i].sname; c[k++]=1; } } for(i=1;i<k;i++) for( j=i;j>0;j--) { if(c[j]>c[j-1]) { int tmp=c[j]; c[j]=c[j-1]; c[j-1]=tmp; string stmp=s[j]; s[j]=s[j-1]; s[j-1]=stmp; } } cout<<"旷课学生姓名\t旷课次数"<<endl; for(i=0;i<k;i++) cout<<s[i]<<"\t\t"<<c[i]<<endl; } void order_c() //课程排序 { int i,j; string *s=new string[n]; int *c=new int [n]; s[0].assign(r[0].cname); c[0]=1; int k=1,flag; for( i=1;i<n;i++) { flag=0; for(j=0;j<k;j++) if(r[i].cname==s[j]) { c[j]++; flag=1; break; } if(!flag) { s[k]=r[i].cname; c[k++]=1; } } for(i=1;i<k;i++) for( j=i;j>0;j--) { if(c[j]>c[j-1]) { int tmp=c[j]; c[j]=c[j-1]; c[j-1]=tmp; string stmp=s[j]; s[j]=s[j-1]; s[j-1]=stmp; } } cout<<"课程名\t旷课人次"<<endl; for(i=0;i<k;i++) cout<<s[i]<<"\t"<<c[i]<<endl; } record *r; int n; }; #endif records_class 第三部分:hanshushixian.h (功能子函数的实现部分) #include "record.h" #include <string> #include <iostream> #include <fstream> #include "stdlib.h" #include <iomanip> using namespace std; void wt(records *r)//实现对文件的输出 { ofstream outf("data.txt"); for(int i=0;i<r->n;i++) outf<<r->r[i].tostr()<<endl; outf<<"!"<<endl; } void rd(records *r)//实现对文件的输入 { ifstream inf("data.txt"); if(inf.eof()) { cout<<"记录为空!"<<endl; return; } string t1,t3,t4; char tmp[30]; int t2,t5; r->n=0; while(true) { inf.getline(tmp,10,'#'); if(tmp[0]=='!')break; t1.assign(tmp); inf.getline(tmp,3,'#'); t2=atoi(tmp); inf.getline(tmp,30,'#'); t3.assign(tmp); inf.getline(tmp,30,'#'); t4.assign(tmp); inf.getline(tmp,3); t5=atoi(tmp); r->r[r->n++].set(t1,t2,t3,t4,t5); } } bool timechk(string t1) { int year=atoi(t1.substr(0,2).c_str()); int month=atoi(t1.substr(2,2).c_str()); int day=atoi(t1.substr(4,2).c_str()); if(!(t1.length()==6&&year>0&&year<99&&month>0&&month<13&&day>0&&day<32)) { cout<<"日期录入有误! 请重新录入: "<<endl; return false; } else return true; } void input(records *r)//录入学生的缺课记录 { string t1,t3,t4; int t2,t5,flag=0; char yn; cout<<"录入一条学生缺课记录:"<<endl;//endl表示终止一行并刷新缓冲区 m1: cout<<"请输入缺课日期: (例如110627) "<<flush;//flush表示刷新缓冲区 cin>>t1; if(!(timechk(t1)))goto m1; m2: cout<<"请输入缺第几节课: "<<flush; cin>>t2; if(t2<1||t2>10) { cout<<"节次录入有误! 请重新录入: "<<endl; goto m2; } cout<<"请输入缺课名称: "<<flush; cin>>t3; cout<<"请输入缺课学生姓名: "<<flush; cin>>t4; m3: cout<<"请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) "<<flush; cin>>t5; if(t5<1||t5>4) { cout<<"类型输入有误! 请重新录入: "<<endl; goto m3; } for(int i=0;i<r->n;i++) if(r->r[i].date==t1&&r->r[i].cno==t2&&r->r[i].cname==t3&&r->r[i].sname==t4&&r->r[i].type==t5) { cout<<"该条记录已存在,是否添加为新记录? (y/n) "<<flush; n1: cin>>yn; if(yn=='y')break; else if(yn=='n')goto n2; else goto n1; } r->r[r->n++].set(t1,t2,t3,t4,t5); n2: cout<<"是否继续输入? (y/n) "<<flush; n3: cin>>yn; if(yn=='y')goto m1; else if(yn=='n') { cout<<"保存修改? (y/n) "<<flush; cin>>yn; if(yn=='y')wt(r); else return; } else goto n3; } void prione(record r) { cout<<r.date<<"\t\t" <<o<<"\t" <<ame<<"\t\t" <<r.sname<<"\t\t" <<flush; switch(r.type) { case 1:cout<<"迟到"<<endl;break; case 2:cout<<"早退"<<endl;break; case 3:cout<<"请假"<<endl;break; case 4:cout<<"旷课"<<endl;break; default:; } } void pri(records *r)//修改学生信息 { if(r->n==0) { cout<<"记录为空!"<<endl; return; } cout<<"\n序号\t缺课日期 节次\t课程名称\t学生姓名\t缺课类型"<<endl; for(int i=0;i<r->n;i++) { cout<<i<<"\t"<<flush; prione(r->r[i]); } } void edt(records *r)//修改学生信息 { int i; if(r->n==0) { cout<<"记录为空!"<<endl; return; } cout<<"请输入要修改缺课记录的学生姓名: "<<flush; string t1,t3,t4; char tmp[30]; int t2,t5,flag=0; cin>>tmp; t1.assign(tmp); for(i=0;i<r->n;i++) if(r->r[i].sname==t1) { flag=7; break; } if(!flag) { cout<<"查无此学生!"<<endl; return; } t1=r->r[i].date; t2=r->r[i].cno; t3=r->r[i].cname; t4=r->r[i].sname; t5=r->r[i].type; cout<<"请输入要修改的项目:\n(1.缺课日期 2.缺课节次 3.缺课名称 4.学生姓名 5.缺课类型 6.全部) "<<flush; e0: cin>>flag; switch(flag) { case 1:goto e1; case 2:goto e2; case 3:goto e3; case 4:goto e4; case 5:goto e5; case 6:goto e1; default:goto e0; } e1: cout<<"请输入缺课日期: (例如080612) "<<flush; cin>>t1; if(flag!=6)goto e6; e2: cout<<"请输入缺第几节课: "<<flush; cin>>t2; if(flag!=6)goto e6; e3: cout<<"请输入缺课名称: "<<flush; cin>>t3; if(flag!=6)goto e6; e4: cout<<"请输入缺课学生姓名: "<<flush; cin>>t4; if(flag!=6)goto e6; e5: cout<<"请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) "<<flush; cin>>t5; e6: r->r[i].set(t1,t2,t3,t4,t5); char yn; cout<<"保存修改? (y/n) "<<flush; cin>>yn; if(yn=='y')wt(r); else return; } void del(records *r)//删除学生信息 { if(r->n==0) { cout<<"记录为空!"<<endl; return; } cout<<"请输入要删除的记录的序号: (输入-1删除全部) "<<flush; int flag; cin>>flag; if(flag>r->n-1&&flag<-1) { cout<<"不存在所要删除的记录!"<<endl; return; } else if(flag==-1)r->n=0; else { for(int i=flag;i<r->n-1;i++) r->r[i].set(r->r[i+1]); r->n--; } char yn; cout<<"保存修改? (y/n) "<<flush; cin>>yn; if(yn=='y')wt(r); else return; } void search(records *r)//查找学生信息 { if(r->n==0) { cout<<"记录为空!"<<endl; return; }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考勤 管理 系统 课程设计 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文