c专业课程设计学生考勤标准管理系统报告.doc
《c专业课程设计学生考勤标准管理系统报告.doc》由会员分享,可在线阅读,更多相关《c专业课程设计学生考勤标准管理系统报告.doc(32页珍藏版)》请在咨信网上搜索。
信息科学和技术学院 程序设计基础课程设计汇报 题目名称: 学生考勤管理系统 学生姓名: 郭晨晨 学 号: 508093 专业班级: 13级计科(3)班 指导老师: 郭理 6月6日 目录 目录 1 1. 课程设计题目和要求 2 1.1 课题目标和要求 2 1.3 课题意义 2 2 总体设计 3 2.1功效模块设计 3 2.2系统设计方案 3 3 具体设计 4 3.1 数据结构设计 4 3.2 主模块设计 4 3.2.1建立学生缺课统计子模块 4 3.2.2修改学生缺课统计子模块 5 3.2.3修改学生缺课统计子模块 6 3.2.4查看单科旷课统计子模块 7 3.2.5查看学生旷课统计子模块 8 3.2.6载入学生旷课统计子模块 9 3.2.7储存学生旷课统计子模快 10 4. 运行结果 12 4.1运行 12 5. 课程设计总结 14 结束语 14 参考文件 15 附录:源代码 15 1. 课程设计题目和要求 1.1 课题目标和要求 设计目标:要求实现---“学生考勤管理程序”统计学生缺课情况,它包含:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。 1.2 设计要求: 1.录入学生缺课统计; 2.修改某个学生缺课统计; 3.查询某个学生缺课情况; 4.统计某段时间内,某门课旷课学生姓名及旷课次数,按旷课次数由多到少排序; 5.统计某段时间内,有学生旷课课程及旷课人次,按旷课人次由多到少排序; 6.系统以菜单方法工作。 1.3 课题意义 程序实践是本科生关键教学步骤之一。经过程序实践,强化学生计算机应用技能,使学生验证、巩固和充实所学理论知识, 加深对相关内容了解,拓宽知识面,培养学生创新精神和实践能力 学生考勤管理程序能够大大减缓学生考勤人员工作量, 方便了平时上课学生出勤率管理。 2 总体设计 2.1功效模块设计 依据分析整个系统关键划分为7个功效模块,分别实施要求中功效。数据管理中能够对学生基础信息、课程基础信息、学生缺课查询、添加、删除和修改。查询管理经过依据学生姓名,课程姓名 时间段儿等信息,查询单个学生缺课统计,单科课旷课统计,单个学生旷课统计。功效模块图图1所表示: 图1功效模块图 2.2系统设计方案 这个程序是过程性语言设计。利用多个条件语句,主体采取是链表指针。系统设计采取了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这么就使程序书写愈加简练。程序使用了布尔函数。选择语句多采取if多分支选择结构和switch语句。首先计算switch表示式,然后在caes子句中寻求值相等常量表示式,并以此为入口符号,由此开始次序实施。循环语句采取了for语句等、do-while语句,for语句用于已知循环次数循环结构,括号中三个量分别用来表示循环变量初值、循环终值和循环增量。do-while语句先循环后判定, Break语句在switch语句中,确保多分支情况正确实施,在循环语句中,强制终止本层循环。保留和读取函数是经典函数功效,一个程序是由若干个函数组成,保留和读取函数是和其它函数相互调用。 3 具体设计 3.1 数据结构设计 struct xueke {char xueke_name[50]; int people_num; }; 这是定义了一个xueke结构体,用来存放一个学科名及其对应旷课人数; struct student { char name[50]; long time; int lesson_time; char lesson_name[50]; int chidao_num; int zaotui_num; int qingjia_num; int kuangke_num; struct student *next; };这是定义了一个student结构体,用来存放一个学生考勤统计, 其中有,字符数组name[50],lesson_name[50],分别存放学生名字, 缺课课程名字;int型变量lesson_time,chidao_num,zaotui_num,qingjia_num, kuangke_num,分别来存放,缺课节次,迟到次数,早退次数,请假次数,旷课次数 long型变量time,统计时间。 3.2 主模块设计 3.2.1建立学生缺课统计子模块 要建立学生人数,学生基础信息(包含缺课时间、学生姓名、课程名称、节次、迟到次数、早退次数、请假次数、旷课次数)可用creat()函数图1. 图1 3.2.2修改学生缺课统计子模块 依据要修改学生姓名和科目名称找到对应信息,再选择要修改项目进行单项修改 图2 图2 3.2.3修改学生缺课统计子模块 依据人名能够查出该学生全部缺课统计 图3 图3 3.2.4查看单科旷课统计子模块 依据学科名称和时间范围查出全部在该范围内旷课学生和次数 图4 图4 3.2.5查看学生旷课统计子模块 依据要查询学科名称立即间段查出在改时间段内该门课上旷课人数 图5 图5 3.2.6载入学生旷课统计子模块 能够载入实现储存在目前文件夹中txt文件中所储存数据 图6 图6 3.2.7储存学生旷课统计子模快 进入系统界面,次序完成各项操作,进行数据输入,信息保留调用对应函数打开对应地址,查询各项信息。图7 图7 4. 运行结果 4.1运行 开始菜单 图1 开始菜单 主菜单 图2 主菜单 建立学生缺课统计 图2建立学生缺课统计 储存学生旷课统计 图3储存学生旷课统计 5. 课程设计总结 课程设计顺利完成,题目所要求功效基础实现,能够对学生缺课信息进行添加,修改,删除和查询显示。不过这个程序还不够完善,比如不能往目前文件夹中txt文件中添加统计。 结束语 整个系统设计过程对于我来说是个学习、探索过程,经过借鉴她人,学习设计程序,在整个设计过程中,出现过很多问题,很多繁琐东西全部需要反复修改,关键是因为前期学习不认真,对系统需求分析要求认识不清楚,使得在后边工作中不得不常常反复请教她人去修改。使我体会到设置中每一步关键性。所以在分析一个问题时,我们需要站在一个有远见高度。 经过此次设计,我对C++语言编程有了深刻认识,积累了使用软件工程思想来开发软件经验,更关键是学会了在对待问题时应该考虑到哪些方面和怎么处理问题。 即使时间紧迫但我学会了不少,感到本身知识贫乏,期望在以后主动学习并尝试努力中能做出完善系统。 参考文件 [1] 谭浩强.C++语言程序设计.清华大学出版社 [2] 求是科技.Visual C++ 6.0信息系统开发.人民邮电出版社 附录:源代码 #include<cstdio> //cstdio是将stdio.h内容用C++头文件形式表示出来 #include<iostream> #include<malloc.h> //malloc全称是memory allocation,汉字叫动态内存分配,当无法知道内存具体位置时候,想要绑定真正内存空间,就需要用到动态分配内存。 #include<cstring> //当调用库函数,用户程序提供是string类型参数,而库函数内部实现用是c-串,所以需要将string对象,转化为char*对象,而c_str()提供了这么一个方法,它返回一个用户程序可读不可改指向字符数组指针。 #include<iomanip> //I/O流控制头文件 #define NULL 0 #define guding 10 #define LEN sizeof(struct student) using namespace std; int student_num; FILE *fp1; struct xueke {char xueke_name[50]; int people_num; }; struct student { char name[50]; long time; int lesson_time; char lesson_name[50]; int chidao_num; int zaotui_num; int qingjia_num; int kuangke_num; struct student *next; }; void chaxun(struct student *head) { int i; char chaxun_name[50]; cout<<"请输入要查询人名:"; cin>>chaxun_name; struct student *p; if(head==NULL) cout<<"联络人为空"; p=head; for(i=0;i<student_num;i++) {if(strcmp(chaxun_name,p->name)==0) {cout<<"缺课时间:"<<p->time<<" 学生姓名:"<<p->name<<" 课程名称:"<<p->lesson_name<<" 节次:"<<p->lesson_time<<endl <<"迟到次数:"<<p->chidao_num<<" 早退次数:"<<p->zaotui_num<<" 请假次数:"<<p->qingjia_num<<" 旷课次数:"<<p->kuangke_num<<endl; } p=p->next; } } struct student *xiugai(struct student *head) {char xiugai_name[50]; char xiugai_xueke_name[50]; int k; cout<<"请输入要修改学生姓名和学科名称【格式:学生姓名(空格)学科名称】:"; cin>>xiugai_name>>xiugai_xueke_name; struct student *p1,*p2; p2=(struct student *)malloc(LEN); p1=head; if(head==NULL) {cout<<"没有学生信息\n"; return head; } while((strcmp(xiugai_name,p1->name)!=0||strcmp(xiugai_xueke_name,p1->lesson_name)!=0)&&(p1->next!=NULL)) p1=p1->next; if(strcmp(xiugai_name,p1->name)==0&&strcmp(xiugai_xueke_name,p1->lesson_name)==0) { cout<<"==================================== 修改信息 =================================\n"; cout<<" 1-修改缺课时间 \n"; cout<<" 2-修改学生姓名 \n"; cout<<" 3-修改课程名称 \n"; cout<<" 4-修改第几节缺课 \n"; cout<<" 5-修改迟到次数 \n"; cout<<" 6-修改早退次数 \n"; cout<<" 7-修改请假次数 \n"; cout<<" 8-修改旷课次数 \n\n"; cout<<"================================================================================\n"; cin>>k; switch(k) {case 1: cout<<"请输入新缺课时间:"; cin>>p1->time; break; case 2: cout<<"请输入新学生姓名:"; cin>>p1->name; break; case 3: cout<<"请输入新课程名称:"; cin>>p1->lesson_name; break; case 4: cout<<"请输入新缺课节次:"; cin>>p1->lesson_time; break; case 5: cout<<"请输入新迟到次数:"; cin>>p1->chidao_num; break; case 6: cout<<"请输入新早退次数:"; cin>>p1->zaotui_num; break; case 7: cout<<"请输入新请假次数:"; cin>>p1->qingjia_num; break; case 8: cout<<"请输入新旷课次数:"; cin>>p1->kuangke_num; break; } } return head; } struct student *creat() { int i,b; struct student *head,*p1,*p2; cout<<"请输入要建立资料学生人数:"; cin>>b; head=p2=NULL; p1=(struct student *)malloc(LEN); cout<<"【输入格式:缺课时间(空格)学生姓名(空格)课程名称(空格)第几节(空格)迟到次数(空格)早退次数(空格)请假次数(空格)旷课次数】\n"; cout<<"请输入第1名学生信息:"; cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num; head=p1; p2=p1; student_num+=1; for(i=1;i<b;i++) { p1=(struct student*)malloc(LEN); cout<<"请输入第"<<i+1<<"名学生信息:"; cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num; p2->next=p1; p2=p1; student_num+=1; } p2->next=NULL; return head; } void print(struct student *head) {struct student *p; p=head; if(p==NULL) cout<<"没有学生信息\n"; while(p!=NULL) { cout<<"缺课时间:"<<p->time<<" 学生姓名:"<<setw(10)<<p->name<<" 课程名称:"<<p->lesson_name<<" 节次:"<<p->lesson_time<<endl <<"迟到次数:"<<p->chidao_num<<" 早退次数:"<<p->zaotui_num<<" 请假次数:"<<p->qingjia_num<<" 旷课次数:"<<p->kuangke_num<<endl; p=p->next;} } struct student *tongji_lesson(struct student *head) { struct student *p1,*p2,*p3; char lesson[50]; long look_time1,look_time2; int xunhuan_num=0; p3=(struct student *)malloc(LEN); if(head==NULL) {cout<<"没有学生信息"; return(head); } p1=head; p2=p1->next; while(xunhuan_num<student_num) {while(p2!=NULL) { if(p2->kuangke_num>p1->kuangke_num) { p3->chidao_num=p2->chidao_num; p3->kuangke_num=p2->kuangke_num; p3->qingjia_num=p2->qingjia_num; p3->zaotui_num=p2->zaotui_num; p3->lesson_time=p2->lesson_time; p3->time=p2->time; strcpy(p3->lesson_name,p2->lesson_name); strcpy(p3->name,p2->name); p2->chidao_num=p1->chidao_num; p2->kuangke_num=p1->kuangke_num; p2->qingjia_num=p1->qingjia_num; p2->zaotui_num=p1->zaotui_num; p2->lesson_time=p1->lesson_time; p2->time=p1->time; strcpy(p2->lesson_name,p1->lesson_name); strcpy(p2->name,p1->name); p1->chidao_num=p3->chidao_num; p1->kuangke_num=p3->kuangke_num; p1->qingjia_num=p3->qingjia_num; p1->zaotui_num=p3->zaotui_num; p1->lesson_time=p3->lesson_time; p1->time=p3->time; strcpy(p1->lesson_name,p3->lesson_name); strcpy(p1->name,p3->name); } p1=p2; p2=p2->next; } p1=head; p2=p1->next; xunhuan_num++; } cout<<"请输入要查看学科名称:"; cin>>lesson; cout<<"请输入要查看时间范围【输入格式:时间(空格)时间】"; cin>>look_time1>>look_time2; p1=head; while(p1!=NULL) {if(strcmp(lesson,p1->lesson_name)==0&&look_time1<=p1->time&&p1->time<=look_time2) cout<<"学生姓名:"<<p1->name<<" 旷课次数:"<<p1->kuangke_num<<endl; p1=p1->next; } return head; } struct student *tongji_student(struct student *head) { struct xueke a[10]; int n,i,j,zhongjian; struct student *p1; char zhongjian_name[50]; long look_time1,look_time2; if(head==NULL) {cout<<"没有学生信息\n"; return head; } cout<<"请输入一共学科数:"; cin>>n; for(i=0;i<n;i++) {cout<<"请输入第"<<i+1<<"个学科名称:"; cin>>a[i].xueke_name; a[i].people_num=0; } cout<<"请输入要查看时间范围由小到大【输入格式:时间(空格)时间】"; cin>>look_time1>>look_time2; p1=head; for(i=0;i<n;i++) {while(p1!=NULL&&look_time1<=p1->time&&p1->time<=look_time2) {if(a[i].xueke_name==p1->lesson_name) a[i].people_num+=p1->kuangke_num; p1=p1->next;} p1=head; } for(j=0;j<n-1;j++) for(i=0;i<n-1-j;i++) {if(a[i].people_num<a[i+1].people_num) { zhongjian=a[i+1].people_num; a[i+1].people_num=a[i].people_num; a[i].people_num=zhongjian; strcpy(zhongjian_name,a[i+1].xueke_name); strcpy(a[i+1].xueke_name,a[i].xueke_name); strcpy(a[i].xueke_name,zhongjian_name);} else if(a[i].people_num==a[i+1].people_num&&strcmp(a[i].xueke_name,a[i+1].xueke_name)>0) { zhongjian=a[i+1].people_num; a[i+1].people_num=a[i].people_num; a[i].people_num=zhongjian; strcpy(zhongjian_name,a[i+1].xueke_name); strcpy(a[i+1].xueke_name,a[i].xueke_name); strcpy(a[i].xueke_name,zhongjian_name);} } for(i=0;i<n;i++) {cout<<"学科名称:"<<a[i].xueke_name<<" 旷课次数:"<<a[i].people_num<<endl; return head;} return head; } struct student *zairu() {struct student *p1=NULL,*p2=NULL,*head=NULL; struct student student_ziliao[100]; int i=0,n=0; if((fp1=fopen("xueshengziliao.txt","rb+"))==NULL) { printf("cannot open file\n"); return(head); } while(!feof(fp1)) {if(fread(&student_ziliao[i],LEN,1,fp1)!=1) {if(feof(fp1)) {fclose(fp1); break; } printf("file read error\n");} i++; } n=i; student_num=n; p1=p2=(struct student *)malloc(LEN); head=p1; for(i=0;i<n;i++) {p1->chidao_num=student_ziliao[i].chidao_num; p1->kuangke_num=student_ziliao[i].kuangke_num; strcpy(p1->lesson_name,student_ziliao[i].lesson_name); p1->lesson_time=student_ziliao[i].lesson_time; strcpy(p1->name,student_ziliao[i].name); p1->qingjia_num=student_ziliao[i].qingjia_num; p1->time=student_ziliao[i].time; p1->zaotui_num=student_ziliao[i].zaotui_num; p2->next=p1; p2=p1; p1=(struct student*)malloc(LEN); } p2->next=NULL; return(head); } void chucun(struct student *head) { struct student *p1; p1=head; fp1=fopen("xueshengziliao.txt","wb+"); while(p1!=NULL) {fwrite(p1,LEN,1,fp1); p1=p1->next; } fclose(fp1); cout<<" 储存成功\n"; } void main() { struct student *head; int a,b,c; zhuye: cout<<"$$$$$$$$$$$$$$$$$$$$$$ 欢迎使用学生考勤管理系统 V1.0.0 $$$$$$$$$$$$$$$$$$\n"; cout<<" 1_进入管理\n\n\n"; cout<<" 2_查看系统相关信息\n\n\n"; cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n\n\n\n"; cin>>a; if(a==1) { do { cout<<"********************************************************************************\n"; cout<<" 1_建立学生缺课统计\n"; cout<<" 2_修改学生缺课统计\n"; cout<<" 3_查询学生缺课统计\n"; cout<<" 4_查看单科旷课统计\n"; cout<<" 5_查看学生旷课统计\n"; cout<<" 6_载入学生旷课统计\n"; cout<<" 7_储存学生旷课统计\n"; cout<<" 8_退出考勤管理程序\n"; cout<<"********************************************************************************\n"; cin>>b; switch(b) { case 1: head=creat(); print(head); break; case 2: head=xiugai(head); print(head); break; case 3: chaxun(head); break; case 4: head=tongji_lesson(head); break; case 5: head=tongji_student(head); break; case 6: head=zairu();print(head); break; case 7: chucun(head); break;} }while(b!=8); } else {cout<<"******************************欢迎使用本系统 **************************************\n"; cout<<"******************************返回主页请按1*************************************\n"; cin>>c; if(c==1) goto zhuye; } }- 配套讲稿:
如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。
关于本文