C语言课程设计学生考勤系统Word格式.docx
《C语言课程设计学生考勤系统Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生考勤系统Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
《学生考勤系统》主要源程序代码
#include<
>
"
/*头文件。
*/
intSIZE;
/*宏定义。
intCLASS;
structstudent/*定义一个结构体数组,包含学生信息。
{
charname[9];
charsex[4];
}
intnumber;
intcount;
intscore;
}stu[300];
voidmain()/*主函数,选择界面。
voidstart();
printf("
\n"
);
^
######################################\n"
#学生考勤系统#\n"
#欢迎您#\n"
~
\t请输入班级人数:
scanf("
%d"
&
SIZE);
\t请输入课程节数:
CLASS);
;
start();
voidstart()/*主函数的辅助函数——start函数。
{
charx;
voidfound();
voidsearch();
voidadd();
voidmark();
#请选择所需功能,输入对应数字:
#\n"
#1.建立学生列表#\n"
#2.查找学生信息#\n"
#3.模拟考勤过程#\n"
#4.计算考勤分数#\n"
#5.退出#\n"
##\n"
%S"
x);
switch(x)/*利用switch函数实现子函数的选择功能。
case'
1'
:
found();
break;
2'
search();
3'
add();
4'
mark();
5'
default:
printf("
****输入有误,请重输:
start();
}
voidfound()/*第一个子函数——found函数,用于建立学生列表。
inta;
—
####################\n"
开始建表。
FILE*fp;
for(a=0;
a<
SIZE;
a++)/*运用for循环,逐次输入学生信息。
请输入第%d个学生的个人信息:
a+1);
姓名:
%s"
stu[a].name);
性别:
stu[a].sex);
学号:
stu[a].number);
stu[a].count=0;
stu[a].score=0;
|
fp=fopen("
stud"
"
w"
/*新建一个文件,运用for函数将学生信息写入文件。
a++)
if(fwrite(&
stu[a],sizeof(structstudent),1,fp)!
=1)
文件输入错误。
fclose(fp);
建表如下:
r"
/*读取新建的文件,并输出。
姓名\t性别\t学号\t缺课数\t考勤分数\n"
----------------------------------------------\n"
fread(&
stu[a],sizeof(structstudent),1,fp);
%s\t%s\t%d\t%d\t%d\n"
stu[a].name,stu[a].sex,stu[a].number,stu[a].count,stu[a].score);
]
#######################################\n"
#记录完毕#\n"
#欢迎下次再来。
/*返回主函数的辅助函数,即主菜单。
voidsearch()/*第二个子函数——search函数,用于查询学生信息。
charb;
voidsearch1();
voidsearch2();
****************************************\n"
请选择:
1.按姓名查找。
2.按学号查找。
b);
switch(b)/*运用switch函数,构成选择结构,可供选择查询类型。
search1();
/*进入第1种查询类型的函数。
search2();
/*进入第2种查询类型的函数。
****输入有误,请重输:
#
#查找完毕#\n"
voidsearch1()/*第1种查询类型的函数。
intc;
charstudent_name[9];
/*打开已建立的文件并将其输出到屏幕上。
《
for(c=0;
c<
c++)
stu[c],sizeof(structstudent),1,fp);
stu[c].name,stu[c].sex,stu[c].number,stu[c].count,stu[c].score);
*
请输入要查询学生姓名:
student_name);
·
c++)/*运用for循环和strcmp函数逐个比较输入的姓名与列表中学生的姓名,找到相同的后输出该学生的信息。
if(strcmp(student_name,stu[c].name)==0)
printf("
已查到*******************************************\n"
%s性别:
%s学号:
%d缺课数:
%d\n"
stu[c].name,stu[c].sex,stu[c].number,stu[c].count);
voidsearch2()/*第2种查询类型的函数。
intd;
请输入要查询学生学号:
d);
%
c++)/*同第1种查询类型的函数,用for循环逐个比较输入的学号与列表中学生的学号,找到相同的后输出该学生的信息。
if(d==stu[c].number)
已查到*********************************************\n"
、
voidadd()/*第三个子函数——add函数,用于模拟考勤过程。
inte,f,y;
structname/*再建立一个叫name的结构体数组。
charnam[9];
}na[300];
for(e=0;
e<
e++)
stu[e],sizeof(structstudent),1,fp);
stu[e].name,stu[e].sex,stu[e].number,stu[e].count,stu[e].score);
***************************\n"
模拟考勤开始。
CLASS;
e++)/*运用for循环的嵌套,向name结构体中输入姓名,再依次与列表中的学生姓名逐个比较。
请输入第%d节课未到的学生姓名并以“over”结束:
e+1);
for(y=0;
y<
=SIZE;
y++)
na[y].nam);
for(f=0;
f<
f++)
{
if(strcmp(na[y].nam,stu[f].name)==0)/*如果输入的姓名与某个学生姓名相同,在其count的信息中加1。
stu[f].count++;
if(strcmp(na[y].nam,"
over"
)==0)/*循环结束,遇到
"
,退出循环。
break;
/*将新的列表数据写入原文件中。
stu[e],sizeof(structstudent),1,fp)!
'
模拟考勤完毕,结果如下:
/*打开更新的文件并将其输出到屏幕上。
姓名\t性别\t学号\t缺课数\n"
:
-------------------------\n"
stu[f],sizeof(structstudent),1,fp);
%s\t%s\t%d\t%d\n"
stu[f].name,stu[f].sex,stu[f].number,stu[f].count);
【
#考勤完毕#\n"
/*返回主函数的辅助函数。
[
voidmark()/*第四个子函数——mark函数,用于计算考勤分数。
intg;
r+"
姓名\t性别\t学号\t缺课数\n"
for(g=0;
g<
g++)
stu[g],sizeof(structstudent),1,fp);
stu[g].name,stu[g].sex,stu[g].number,stu[g].count);
】
********************************\n"
评分开始。
g++)/*用for循环实现评分过程。
stu[g].score=(100-stu[g].count*5);
/*缺一节课扣五分。
if(stu[g].score<
0)
stu[g].score=0;
/*将更新的学生列表信息写入原文件中。
stu[g],sizeof(structstudent),1,fp)!
结果如下:
stu[g].name,stu[g].sex,stu[g].number,stu[g].count,stu[g].score);
#评分完毕#\n"