c课程设计学生考勤管理系统报告_第1页
c课程设计学生考勤管理系统报告_第2页
c课程设计学生考勤管理系统报告_第3页
c课程设计学生考勤管理系统报告_第4页
c课程设计学生考勤管理系统报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息科学与技术学院程序设计基础课程设计报告题目名称:学生考勤管理系统学生姓名:郭晨晨学 号:二专业班级:13 级计科(3)班指导教师:郭理2013年6月6日目录目录 错误!未指定书签。1 .课程设计题目与要求 错误!未指定书签。1.1 课题目的和要求 错误!未指定书签。1.3 课题意义 错误!未指定书签。2总体设计 错误!未指定书签。2.1 功能模块设计 错误!未指定书签。2.2 系统设计方案 错误!未指定书签。3详细设计 错误!未指定书签。1.1 数据结构设计 错误!未指定书签。1.2 丰模块设计 错误!未指定书签。1.2.1 建立学生缺课记录子模块 错误!未指定书签。1.2.2 修改学生缺

2、课记录子模块 错误!未指定书签。1.2.3 修改学生缺课记录子模块 错误!未指定书签。1.2.4 查看单科旷课记录子模块 错误!未指定书签。1.2.5 查看学生旷课记录子模块 错误!未指定书签。1.2.6 载入学生旷课记录子模块 错误!未指定书签。1.2.7 储存学生旷课记录子模快 错误!未指定书签。4 .运行结果 错误!未指定书签。4.1 运行 错误!未指定书签。5 .课程设计总结 错误!未指定书签。结束语 错误!未指定书签。参考文献 错误!未指定书签。附录:源代码 错误!未指定书签。1. 课程设计题目与要求1.1 课题目的和要求设计目的:要求实现一 “学生考勤管理程序”记录学生的缺课情况,

3、 它包括: 缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷 课)。1.2 设计要求:1 .录入学生的缺课记录;2 .修改某个学生的缺课记录;3,查询某个学生的缺课情况;4 .统计某段时间内,某门课旷课学生姓名及旷课次数,按旷课次数由多到少排序;5 .统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由 多到少排序;6 .系统以菜单方式工作。1.3课题意义程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识,加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力学生考勤管理程序可以大大减缓学生考勤人员的

4、工作量, 方便了平时上课学生的出勤率的管理。2 总体设计2.1 功能模块设计根据分析整个系统主要划分为 7 个功能模块,分别执行要求中的功能。数据管理中可以对学生的基本信息、课程的基本信息、学生缺课的查询、添加、删除和修改。查询管理通过根据学生姓名,课程姓名 时间段儿等信息,查询单个学生的缺课记录,单科课的旷课记录,单个学生的旷课记录。功能模块图如图 1 所示:图 1 功能模块图2.2 系统设计方案这个程序是过程性语言设计的。运用多种条件语句,主体采用的是链表指针。系统的设计采用了数组语句、选择语句和循环语句 , 在需要处理大量同类数据时 , 这样就使程序书写更加简洁。程序使用了布尔函数。选择

5、语句多采用 if多分支选择结构与switch 语句。首先计算switch 表达式,然后在caes 子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了 for 语句等、 do-while 语句, for 语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。 do-while语句先循环后判断, Break 语句在 switch 语句中, 保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个 程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的。3 详细设计3.1 数据结构设计s

6、truct xuekechar xueke_name50;int people_num;这是定义了一个xueke 结构体,用来存放一个学科名及其相应的旷课人数;struct student char name50;long time;int lesson_time;char lesson_name50;int chidao_num;int zaotui_num;int qingjia_num;int kuangke_num;struct student *next; 这是定义了一个student 的结构体,用来存放一个学生的考勤记录,其中有,字符数组name50 , lesson_name50

7、, 分别存放学生名字,缺 课 课 程 名 字 ; int 型 变lesson_time,chidao_num,zaotui_num,qingjia_num,kuangke_num,分别来存放,缺课节次,迟到次数,早退次数,请假次数,旷课次数 long 型变量 time ,记录时间。3.2 主模块设计要建立的学生人数,学生基本信息(包括缺课时间、学生姓名、课程名称、节次、迟到次数、早退次数、请假次数、旷课次数)可用 creat ()函数如图 1.图1根据要修改的学生姓名以及科目名称找到相应的信息,再选择要修改的项目进行单项修改如图2根据人名可以查出该学生的所有缺课记录如图3图3如图4根据学科名称

8、和时间范围查出所有在该范围内旷课的学生以及次数根据要查询的学科名称及时间段查出在改时间段内该门课上旷课的人数 如图5可以载入实现储存在当前文件夹中txt文件中所储存的数据 如图6进入系统界面,顺序的完成各项操作,进行数据的输入,信息的保存调用相应的函数打开相应的地址,查询各项信息。如图 7图74. 运行结果4.1 运行开始菜单图 1 开始菜单主菜单图 2 主菜单建立学生缺课记录图 2 建立学生缺课记录储存学生旷课记录图 3 储存学生旷课记录5. 课程设计总结课程设计顺利完成,题目所要求的功能基本实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。不过这个程序还不够完善,例如不能往当前

9、文件夹中的 txt 文件中添加记录。结束语整个系统的设计过程对于我来说是个学习、探索的过程,通过借鉴别人,学习设计程序,在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是因为前期的学习不认真,对系统的需求分析的要求认识不清楚,使得在后边的工作中不得不经常反复请教别人去修改。使我体会到设置中每一步的重要性。所以在分析一个问题时,我们需要站在一个有远见的高度。通过此次设计,我对C+吾言编程有了深刻的认识,积累了使用软件工程的思想来开发软件的经验,更重要的是学会了在对待问题时应该考虑到哪些方面和怎么解决问题。虽然时间紧迫但我学会了不少 , 感到自身知识的贫乏, 希望在日后积极

10、学习 并尝试努力中能做出完善的系统。参考文献谭浩强.C+语言程序设计.清华大学出版社求是科技.Visual C+ 6.0信息系统开发.人民邮电出版社附录:源代码#include<cstdio> / cstdio是将stdio.h的内容用C+头文件的形式表示出来#include<iostream>#include<malloc.h> / malloc 的全称是 memory allocation ,中文叫动态内查分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。#include<cstring> /当调用库函数,

11、客户程序提供的是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 xuekechar xueke_name50;int people_num;struc

12、t student char name50;long time;int lesson_time;char lesson_name50;int chidao_num;int zaotui_num;int qingjia_num;int kuangke_num;struct student *next;);void chaxun(struct student *head) int i;char chaxun_name50;cout<<"请输入要查询的人名:"cin>>chaxun_name;struct student *p;if(head=NULL)c

13、out<<"联系人为空"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<<&q

14、uot; 迟到次数:"<<p->chidao_num<<"早退次数:"<<p->zaotui_num<<”请假次数:"<<p->qingjia_num<<” 旷课次数:"<<p->kuangke_num<<endl;)p=p->next; )struct student *xiugai(struct student *head)char xiugai_name50;char xiugai_xueke_name50;int

15、 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->l

16、e sson_name)!=0)&&(p1->next!=NULL)p1=p1->next;if(strcmp(xiugai_name,p1->name)=0&&strcmp(xiugai_xueke_name,p1->lesson_na me)=0)cout<<"= 修改 信息n"cout<<"1-修改缺课时间2-修改学生姓名3-修改课程名称 修改第几节缺课5-修改迟到次数6-修改早退次数7-修改请假次数8-修改旷课次数n"cout<<"n"

17、cout<<"n"cout<<"4-n"cout<<"n"cout<<"n"cout<<"n"cout<<"nn"cout<<"= =n"cin>>k;switch(k)case 1:cout<<"请输入新的缺课时间:"cin>>p1->time;break;case 2:cout<<”请输入新的学生

18、姓名:"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<<"请输入新的早退次数:&q

19、uot;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<<" 请输入要建立资料的学生人数

20、: "cin>>b;head=p2=NULL;p1=(struct student *)malloc(LEN);cout<<" 【输入格式:缺课时间 (空格 )学生姓名 (空格 )课程名称(空格 )第几节( 空格 ) 迟到次数 ( 空格 ) 早退次数 ( 空格 ) 请假次数 ( 空格 ) 旷课次数】 n"cout<<" 请输入第 1 名学生信息 :"cin>>p1->time>>p1->name>>p1->lesson_name>>p1->

21、;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->

22、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<&

23、lt;" 没有学生信息 n"while(p!=NULL) cout<<" 缺课时间 :"<<p->time<<" 学生姓名 :"<<setw(10)<<p->name<<"课程名称 :"<<p->lesson_name<<" 节次 :"<<p->lesson_time<<endl<<" 迟 到 次 数 :"<<

24、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 lesson50;long look_t

25、ime1,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-&

26、gt;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_n

27、um;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->qi

28、ngjia_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<<" 请输入要查看的学科名称: "

29、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->nam

30、e<<"旷 课 次数:"<<p1->kuangke_num<<endl;p1=p1->next; return head;struct student *tongji_student(struct student *head) struct xueke a10;int n,i,j,zhongjian;struct student *p1;char zhongjian_name50;long look_time1,look_time2;if(head=NULL)cout<<" 没有学生信息 n"r

31、eturn head;cout<<" 请输入一共的学科数: "cin>>n;for(i=0;i<n;i+)cout<<" 请输入第 "<<i+1<<" 个学科名称: "cin>>ai.xueke_name;ai.people_num=0;cout<<" 请输入要查看的时间范围由小到大【输入格式: 时间 ( 空格 ) 时间】 "cin>>look_time1>>look_time2;p1=head;for

32、(i=0;i<n;i+)while(p1!=NULL&&look_time1<=p1->time&&p1->time<=look_time2)if(ai.xueke_name=p1->lesson_name)ai.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(ai.people_num<ai+1.people_num) zhongjian=ai+1.people_num;

33、ai+1.people_num=ai.people_num;ai.people_num=zhongjian;strcpy(zhongjian_name,ai+1.xueke_name);strcpy(ai+1.xueke_name,ai.xueke_name); strcpy(ai.xueke_name,zhongjian_name); elseif(ai.people_num=ai+1.people_num&&strcmp(ai.xueke_name,ai+1.xueke _name)>0) zhongjian=ai+1.people_num;ai+1.people_n

34、um=ai.people_num;ai.people_num=zhongjian;strcpy(zhongjian_name,ai+1.xueke_name);strcpy(ai+1.xueke_name,ai.xueke_name); strcpy(ai.xueke_name,zhongjian_name); for(i=0;i<n;i+)cout<<" 学 科 名 称 :"<<ai.xueke_name<<" 旷 课 次 数:"<<ai.people_num<<endl;return

35、head; return head;struct student *zairu()struct student *p1=NULL,*p2=NULL,*head=NULL;struct student student_ziliao100;int i=0,n=0;if(fp1=fopen("xueshengziliao.txt","rb+")=NULL) printf("cannot open filen");return(head); while(!feof(fp1)if(fread(&student_ziliaoi,LEN,1

36、,fp1)!=1)if(feof(fp1)fclose(fp1);break; printf("file read errorn");i+;n=i;student_num=n;p1=p2=(struct student *)malloc(LEN);head=p1;for(i=0;i<n;i+)p1->chidao_num=student_ziliaoi.chidao_num;p1->kuangke_num=student_ziliaoi.kuangke_num;strcpy(p1->lesson_name,student_ziliaoi.lesson_name);p1->lesson_time=student_ziliaoi.lesson_time;strcpy(p1->name,student_);p1->qingjia_num=student_ziliaoi.qingjia_num;p1->time=student_ziliaoi.time;p1->zaotui_num=student_ziliaoi.zaotui_num;p2->next=p1;p2=p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论