C语言课程设计学生考勤系统.docx
《C语言课程设计学生考勤系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生考勤系统.docx(15页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生考勤系统
C语言程序设计
课程设计报告
设计题目:
学生考勤系统设计
专业微电子科学与工程
班级微电131
学生赵杨怡
指导教师
年学期
设计任务:
C语言课程设计任务书10
题目:
学生考勤系统设计
功能:
学生考勤系统应包含各班学生的全部信息。
每个学生是一条记录,包括姓名、性别、学号、日期、节次、出勤情况等信息。
本系统可以模拟考勤过程、记录考勤结果,并能在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。
要求:
1、用C语言实现程序设计;
2、利用结构体进行相关信息处理;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
平时成绩:
验收答辩成绩:
设计报告成绩:
总评成绩:
指导教师:
一、总体设计
1.程序的总体设计
◎确定界面,使用户可选择操作项目(录入,修改,查询,评分)。
◎录入功能:
使用结构体,要求用户输入姓名、性别、学号、日期、节次、当前出勤情况等信息,并写入文件。
◎修改功能:
使用户输入学号,姓名其中一项可以修改考勤其信息。
对于修改功能的实现,是先将所有文件内容读入到内存中,然后修改考勤值,最后再重新覆盖写入文件。
◎查询模块:
使用字符串比较函数,利用循环找到对应结构体数组元素,然后输出需要信息。
对于查询功能的实现,同修改,是先将所有文件内容读入到内存中,然后查找到其中某项,最后输出到屏幕。
◎评分模块:
系统根据总的应道考勤数按照百分制,求出每个学生的分数,并输出到屏幕。
2.数据结构
学生信息用结构体记录,包括姓名(字符数组)、性别(字符型)、日期(年月日三个字符数组)、节次(整型)、出情况(整型)。
3.函数原型声明
voidmain()生信息及考勤情况录入◇\n");
printf("●●\n");
printf("◇2.学生信息及考勤情况修改◇\n");
printf("●●\n");
printf("◇3.学生信息及考勤情况查询◇\n");
printf("◎◎\n");
printf("●4.学生考勤总评分数查询●\n");
printf("◇◇\n");
printf("★◇★□★◇★□★◇★□★◇★□★◇★□★\n");
input()函数
voidinput()
{
inti,j=0,jx=1;
printf("************************学生基本信息录入*****************************\n");
if((fp=fopen("","w"))==NULL)
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;jx==1;i++)ame);
printf("请输入第%d个学生的学号",i+1);
gets(stu[i].number);
printf("请输入第%d个学生的性别(男:
m女:
f)",i+1);
stu[i].sex=getchar();
printf("请输入第%d个学生的生日(格式:
年月日)",i+1);
scanf("%d%d%d",&stu[i].year,&stu[i].month,&stu[i].day);
printf("请输入第%d个学生的当前考勤次数",i+1);
scanf("%d",&stu[i].kq);
printf("您输入的信息为姓名%s学号%s性别%c生日%d年%d月%d日\n0重输1确认",stu[i].name,stu[i].number,stu[i].sex,stu[i].year,stu[i].month,stu[i].day);
scanf("%d",&j);change()函数
voidchange()
{inti=0,j=0,sway,t,x;
charname[10],number[10];
printf("**********************学生考勤修改**************************\n");
if((fp=fopen("","r"))==NULL)ame,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
printf("是否修改该生考勤信息0否1是");q);umber,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
printf("是否修改该生考勤信息0否1是");q);search()函数
voidsearch()
{inti=0,j=0,sway,t,x;
charname[10],number[10];
printf("***********************学生信息查询***************************\n");
if((fp=fopen("","r"))==NULL)ame,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
}
printf("是否继续查询其他学生信息0否1是");
scanf("%d",&x);
if(x==1)search();
}
/**********************按照姓名查找结束*************************umber,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
}
printf("是否继续查询其他学生信息0否1是");
scanf("%d",&x);
if(x==1)search();
}
/**********************按照学号查找结束*************************evaluate()函数
voidevaluate()
{inti=0,j=0,sway,t,x;
floatscore;
charname[10],number[10];
printf("***********************学生考勤分数计算**************************\n");
if(kqcs==0)
{
printf("请输入应到考勤总数");ame,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
score=(stu[j-1].kq)/kqcs*100;
printf("该生当前考勤分数为%",score);
}
printf("是否继续计算其他学生考勤分数0否1是");
scanf("%d",&x);
if(x==1)evaluate();
}
/**********************按照姓名查找结束*************************umber,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
score=(stu[j-1].kq)/kqcs*100;
printf("该生当前考勤分数为%",score);
}
printf("是否继续计算其他学生考勤分数0否1是");
scanf("%d",&x);
if(x==1)evaluate();
}
/**********************按照学号查找结束*************************生信息及考勤情况录入◇\n");
printf("●●\n");
printf("◇2.学生信息及考勤情况修改◇\n");
printf("●●\n");
printf("◇3.学生信息及考勤情况查询◇\n");
printf("◎◎\n");
printf("●4.学生考勤总评分数查询●\n");
printf("◇◇\n");
printf("★◇★□★◇★□★◇★□★◇★□★◇★□★\n");ame);
printf("请输入第%d个学生的学号",i+1);
gets(stu[i].number);
printf("请输入第%d个学生的性别(男:
m女:
f)",i+1);
stu[i].sex=getchar();
printf("请输入第%d个学生的生日(格式:
年月日)",i+1);
scanf("%d%d%d",&stu[i].year,&stu[i].month,&stu[i].day);
printf("请输入第%d个学生的当前考勤次数",i+1);
scanf("%d",&stu[i].kq);
printf("您输入的信息为姓名%s学号%s性别%c生日%d年%d月%d日\n0重输1确认",stu[i].name,stu[i].number,stu[i].sex,stu[i].year,stu[i].month,stu[i].day);
scanf("%d",&j);ame,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
printf("是否修改该生考勤信息0否1是");q);umber,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
printf("是否修改该生考勤信息0否1是");q);ame,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
}
printf("是否继续查询其他学生信息0否1是");
scanf("%d",&x);
if(x==1)search();
}
/**********************按照姓名查找结束*************************umber,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
}
printf("是否继续查询其他学生信息0否1是");
scanf("%d",&x);
if(x==1)search();
}
/**********************按照学号查找结束*************************ame,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
score=(stu[j-1].kq)/kqcs*100;
printf("该生当前考勤分数为%",score);
}
printf("是否继续计算其他学生考勤分数0否1是");
scanf("%d",&x);
if(x==1)evaluate();
}
/**********************按照姓名查找结束*************************umber,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j
score=(stu[j-1].kq)/kqcs*100;
printf("该生当前考勤分数为%",score);
}
printf("是否继续计算其他学生考勤分数0否1是");
scanf("%d",&x);
if(x==1)evaluate();
}
/**********************按照学号查找结束*************************///
printf("0返回主菜单\n");
getchar();
a=getchar();
getchar();
if(a=='0')main();
}
///*****************************************计算考勤分数函数内容结束**********************************************//