2012-2013学年第二学期《高级语言程序设计》课程设计报告题目:学生考勤管理系统专业:计算机科学与技术班级:12(2)班姓名:李天栋指导教师:孙淮宁成绩:计算机与信息工程系2013年6月30日目录1设计内容及要求 (3)设计内容 (3)设计任务及具体要求 (3)2概要设计 (4)该系统的功能简介 (4)总体程序框图 (4)各个模块之间的主要关系 (5)3设计过程或程序代码 (5)各个模块的程序流程图及运行界面 (5)对关键代码加以分析说明 (10)4程序调试分析 (14)5小结 (17)致谢 (17)参考文献 (17)附:源程序 (18)1 设计内容及要求设计内容学生考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用begin-end 的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。
设计任务及具体要求任务:(1)给出软件结构,说明各模块的功能。
(2)设计相关的类,并说明该类的作用。
特别要用图形说明类之间的继承关系。
(3)编写代码具体要求:(1)定义相关的数据,比如:学生学号学生姓名课程名称上课时间到课时间出勤状态 [旷课/病假/事假/迟到/早退](2)能够进行以下操作:A.能够对数据进行增、删、改、查操作。
B.能够按学号顺序列出某一课程的出勤状况2 概要设计系统的功能简介考勤管理系统,有以下功能:?(1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期?第几节课?课程名称学生姓名?缺课类型?每行一条纪录。
?例如:?(2)(3)(4)(5)各个模块之间的主要关系本程序用结构体新定义一种数据类型,系统包含一个主函数和6个子函数(insert(),check(),rivise(),Delete(),output(),deleteallchain()),6个子函数分别用来插入、查询、修改、删除、输出、收回动态分配的空间,在主函数中通过调用子函数来实现所需功能。
3 设计过程或程序代码各个模块的程序流程图及运行界面学生考勤管理系统中四个类的类层次图为:1 图4 学生缺课信息录入的功能 2、修改某学生缺课信息功能的模块图图5 学生考勤管理系统修改学生缺课信息功能图 345图 9 学生考勤管理系统中四个类的UML图对关键代码加以分析说明#include<>#include<>#include<>structchuqin{ ettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==*(st1[j].gettime()+2))if(strcmp(qkn,st1[i].getkechen())==0)renci++;return renci;}etjieci()+2)!='\0')js=+2;elsejs++;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;elsejs++;}jieshu=js;return jieshu;}etname(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;}etname())==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]);}}etname())==0){ u[j]=i;j++;if(j==0){ cout<<"没有你所要的学生名字!";ettime()<<"| "<<*(st1[i].gettime()+1)<<"| "<<*(st1[i].gettime()+2)<<"| "<<st1[i].getjieci()<<"| "<<st1[i].getkechen()<<"| "<<st1[i].getqklx()<<"| "<<endl;}ettime()+1)<*(st1[i+1].gettime()+1))qt[i].print(st1[i]);elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2))qt[i].print(st1[i]);elseif(*(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;}}}etname()<<endl;if(*(st1[0].getjieci()+2)!='\0')js=+2;elsejs++;cout<<"节数:"<<js<<endl;}elseettime()+1)<*(st1[i+1].gettime()+1)){min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}elseif(*(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];}elseif(*(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)<<endlfor(i=0;i<k;i++){ setqstn(st1,qt1,g);cout<<"姓名:"<<qt1[i].qstn<<endl;cout<<"节数:"<<qt1[i].getjs(st1,g,i)<<endl;}}}}etkechen()<<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];}elseif(*(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];}elseif(*(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;}}}}stn,st1[i].getname());else if(strcmp(st1[i].getname(),st1[i+1].getname())!=0){strcpy(qt1[i].qstn,st1[i].getname());k++;}}kn,st1[i].getkechen());else if(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!=0) {strcpy(qk[i].qkn,st1[i+1].getkechen());b++;}}}。