C语言课程设计任务(学生考勤系统)

#include
#include
#include

FILE *fp;
char a;
float kqcs=0;
struct student
{
char name[10];
char number[11];
char sex;
int year;
int month;
int day;
int kq;
}
stu[100]; //定义储存学生信息的结构体数组
//********************************************主 函 数 开 始************************************************
void main()
{
void look(); //系统界面颜色设置函数
void record(); //录入数据函数
void amend(); //修改数据函数
void search(); //查询数据函数
void goal(); //计算总评函数
char item;
printf(" ※※※※※※※※※※※※※※※※※※※※※\n");
printf(" ※ ※\n");
printf(" ※ 学 生 考 勤 管 理 系 统 ※\n");
printf(" ※ ※\n");
printf(" ※ 刘玉柱 河南科技学院 农学122 ※\n");
printf(" ※ ※\n");
printf(" ※※※※※※※※※※※※※※※※※※※※※\n");
printf(" ※ ※\n");
printf(" ※ 1.学生信息及考勤情况录入 ※\n");
printf(" ※ ※\n");
printf(" ※ 2.学生信息及考勤情况修改 ※\n");
printf(" ※ ※\n");
printf(" ※ 3.学生信息及考勤情况查询 ※\n");
printf(" ※ ※\n");
printf(" ※ 4.学生考勤总评分数查询 ※\n");
printf(" ※ ※\n");
printf(" ※ 5.系统界面设置 ※\n");
printf(" ※ ※\n");
printf(" ※※※※※※※※※※※※※※※※※※※※※\n");
printf("\n");
printf(" 请选择您需要的操作\n");
scanf("%c",&item);
switch(item)
{
case '5': look();break;
case '1': record();break;
case '2': amend();break;
case '3': search();break;
case '4': goal();break;
}
}
//**************************************************主 函 数 结 束**************************************************

///*****************************************录入数据函数内容开始***********************************************************
void record()
{
int i,j=0,jx=1;
printf(" ************************学 生 基 本 信

息 录 入*****************************\n");
if((fp=fopen("date.txt","w"))==NULL)
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;jx==1;i++) //输入信息循环
{
for(;j==0;) //输入确认循环
{
getchar();
printf("请输入第%d个学生的姓名 ",i+1);
gets(stu[i].name);
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日\n 0 重输 1 确认",stu[i].name,stu[i].number,stu[i].sex,stu[i].year,stu[i].month,stu[i].day);
scanf("%d",&j); //输入确认
}
j=0;
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("文件写入错误\n"); //写入文件
printf(" 是否继续输入下一个学生信息 0 终止 1 继续\n");
scanf("%d",&jx); //继续输入选择
}
fclose(fp);
printf("0 返回主菜单\n");
getchar();
a=getchar();
getchar();
if(a=='0') main(); //返回主菜单
}
///*****************************************录入数据函数内容结束***********************************************************

///*****************************************修改数据函数内容开始***********************************************************
void amend()
{
int i=0,j=0,sway,t,x;
char name[10],number[10];
printf(" **********************学 生 考 勤 修 改**************************\n");
if((fp=fopen("date.txt","r"))==NULL) //将文件内容读入内存
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;feof(fp)==0;i++) fread(&stu[i],sizeof(struct student),1,fp); //读取文件内容
fclose(fp); //关闭文件
printf("选择查找方式 1 按照姓名查找 2 按照学号查找");
scanf("%d",&sway);
/**********************按照姓名查找开始*************************///
if(sway==1)
{
printf("请输入需要修改学生的姓名 ");
scanf("%s",name);
for(j=0;t!=0;j++)
{
t=strcmp(stu[j].name,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j{
printf("您查找的学生信息如下\n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);
printf("是否修改该生考勤信息 0 否 1 是"); //选择是否修改考勤
scanf("%d",&x); //输入选择变量值
if(x==1)
{
printf("请

输入新的考勤值 ");
scanf("%d",&stu[j-1].kq); //输入新的考勤值
if((fp=fopen("date.txt","w"))==NULL) //以只写方式打开文件
{
printf("文件打开失败\n");
exit(0);
}
for(j=0;jfclose(fp); //关闭文件
}
}
printf("是否继续修改其他学生考勤 0 否 1 是");
scanf("%d",&x);
if(x==1) amend();
}
/**********************按照姓名查找结束*************************///

/**********************按照学号查找开始*************************///
if(sway==2)
{
printf("请输入需要修改学生的学号 ");
scanf("%s",number);
for(j=0;t!=0;j++)
{
t=strcmp(stu[j].number,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j{
printf("您查找的学生信息如下\n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);
printf("是否修改该生考勤信息 0 否 1 是"); //选择是否修改考勤
scanf("%d",&x); //输入选择变量值
if(x==1)
{
printf("请输入新的考勤值 ");
scanf("%d",&stu[j-1].kq); //输入新的考勤值
if((fp=fopen("date.txt","w"))==NULL) //以只写方式打开文件
{
printf("文件打开失败\n");
exit(0);
}
for(j=0;jfclose(fp); //关闭文件
}
}
printf("是否继续修改其他学生考勤 0 否 1 是");
scanf("%d",&x);
if(x==1) amend();
}
/**********************按照学号查找结束*************************///

printf("0 返回主菜单\n");
getchar();
a=getchar();
getchar();
if(a=='0') main();
}
///*****************************************修改数据函数内容结束***********************************************************

///*****************************************查询数据函数内容开始***********************************************************
void search()
{
int i=0,j=0,sway,t,x;
char name[10],number[10];
printf(" ***********************学 生 信 息 查 询***************************\n");
if((fp=fopen("date.txt","r"))==NULL) //将文件内容读入内存
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;feof(fp)==0;i++) fread(&stu[i],sizeof(struct student),1,fp); //读取文件内容
fclose(fp); //关闭文件
printf("选择查找方式 1 按照姓名查找 2 按照学号查找");
scanf("%d",&sway);
/**********************按照姓名查找开始*************************///
if(sway==1)

{
printf("请输入需要修改学生的姓名 ");
scanf("%s",name);
for(j=0;t!=0;j++)
{
t=strcmp(stu[j].name,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j{
printf("您查找的学生信息如下\n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);
}
printf("是否继续查询其他学生信息 0 否 1 是");
scanf("%d",&x);
if(x==1) search();
}
/**********************按照姓名查找结束*************************///

/**********************按照学号查找开始*************************///
if(sway==2)
{
printf("请输入需要修改学生的学号 ");
scanf("%s",number);
for(j=0;t!=0;j++)
{
t=strcmp(stu[j].number,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j{
printf("您查找的学生信息如下\n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);
}
printf("是否继续查询其他学生信息 0 否 1 是");
scanf("%d",&x);
if(x==1) search();
}
/**********************按照学号查找结束*************************///

printf("0 返回主菜单\n");
getchar();
a=getchar();
getchar();
if(a=='0') main();
}
///*****************************************查询数据函数内容结束***********************************************************

///*****************************************计算考勤分数函数内容开始***********************************************************
void goal()
{
int i=0,j=0,sway,t,x;
float score;
char name[10],number[10];
printf(" ***********************学 生 考 勤 分 数 计 算**************************\n");
if(kqcs==0)
{
printf("请输入应到考勤总数 "); //请输入应到考勤总数
scanf("%f",&kqcs);
}
if((fp=fopen("date.txt","r"))==NULL) //将文件内容读入内存
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;feof(fp)==0;i++) fread(&stu[i],sizeof(struct student),1,fp); //读取文件内容
fclose(fp); //关闭文件
printf("选择查找方式 1 按照姓名查找 2 按照学号查找");
scanf("%d",&sway);
/**********************按照姓名查找开始*************************///
if(sway==1)
{
printf("请输入需要修改学生的姓名 ");
scanf("%s",name);
for(j=0;t!=0;j++)
{
t=strcmp(stu[j].name,name);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j{
printf("您查找

的学生信息如下\n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);
score=(stu[j-1].kq)/kqcs*100;
printf("该生当前考勤分数为 %5.2f",score);
}
printf("是否继续计算其他学生考勤分数 0 否 1 是");
scanf("%d",&x);
if(x==1) goal();
}
/**********************按照姓名查找结束*************************///

/**********************按照学号查找开始*************************///
if(sway==2)
{
printf("请输入需要修改学生的学号 ");
scanf("%s",number);
for(j=0;t!=0;j++)
{
t=strcmp(stu[j].number,number);
if(j==i)
{
t=0;
printf("未找到您所查询的数据,请重新输入\n");
}
}
if(j{
printf("您查找的学生信息如下\n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);
score=(stu[j-1].kq)/kqcs*100;
printf("该生当前考勤分数为 %5.2f",score);
}
printf("是否继续计算其他学生考勤分数 0 否 1 是");
scanf("%d",&x);
if(x==1) goal();
}
/**********************按照学号查找结束*************************///

printf("0 返回主菜单\n");
getchar();
a=getchar();
getchar();
if(a=='0') main();
}
///*****************************************计算考勤分数函数内容结束**********************************************//
///***********************************************界面函数开始****************************************************//

void look()
{
int i,j;
printf("背景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&i);
switch(i)
{
case 0:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
printf("输入无效!背景和前景颜色相同!\n");
break;
case 1:
system("color 01");
break;
case 2:
system("color 02");
break;
case 3:
system("color 03");
break;
case 4:
system("color 04");
break;
case 5:
system("color 05");
break;
case 6:
system("color 06");
break;
case 7:
system("color 07");
break;
}
break;
}
case 1:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
system("color 10");
break;
case 1:
printf("输入无效!背景和前景颜色相同!\n");
break;
case 2:
system("color 12");
break;
case 3:
system("color 13");
break;
case 4:
system("color 14");
break;
case 5:

system("color 15");
break;
case 6:
system("color 16");
break;
case 7:
system("color 17");
break;
}
break;
}
case 2:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
system("color 20");
break;
case 1:
system("color 21");
break;
case 2:
printf("输入无效!背景和前景颜色相同!\n");
break;
case 3:
system("color 23");
break;
case 4:
system("color 24");
break;
case 5:
system("color 25");
break;
case 6:
system("color 26");
break;
case 7:
system("color 27");
break;
}
break;
}
case 3:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
system("color 30");
break;
case 1:
system("color 31");
break;
case 2:
system("color 32");
break;
case 3:
printf("输入无效!背景和前景颜色相同!\n");
break;
case 4:
system("color 34");
break;
case 5:
system("color 35");
break;
case 6:
system("color 36");
break;
case 7:
system("color 37");
break;
}
break;
}
case 4:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
system("color 40");
break;
case 1:
system("color 41");
break;
case 2:
system("color 42");
break;
case 3:
system("color 43");
break;
case 4:
printf("输入无效!背景和前景颜色相同!\n");
break;
case 5:
system("color 45");
break;
case 6:
system("color 46");
break;
case 7:
system("color 47");
break;
}
break;
}
case 5:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
system("color 50");
break;
case 1:
system("color 51");
break;
case 2:
system("color 52");
break;
case 3:
system("color 53");
break;
case 4:
system("color 54");
break;
case 5:
printf("输入无效!背景和前景颜色相同!\n");
break;
case 6:
system("color 56");
break;
case 7:
system("color 57");
break;
}
break;
}
case 6:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
system("color 60");
break;
case 1:
system("color 61");
break;
case 2:
system("color 62");
break;
case 3:
system("color 63"

);
break;
case 4:
system("color 64");
break;
case 5:
system("color 65");
break;
case 6:
printf("输入无效!背景和前景颜色相同!\n");
break;
case 7:
system("color 67");
break;
}
break;
}
case 7:
{
printf("前景颜色:0:黑、1:蓝、2:绿、3:湖蓝色、4:红、5:紫、6:黄、7:白");
scanf("%d",&j);

switch(j)
{
case 0:
system("color 70");
break;
case 1:
system("color 71");
break;
case 2:
system("color 72");
break;
case 3:
system("color 73");
break;
case 4:
system("color 74");
break;
case 5:
system("color 75");
break;
case 6:
system("color 76");
break;
case 7:
printf("输入无效!背景和前景颜色相同!\n");
break;
}
break;

}

}


printf("0 返回主菜单、1 重新设置界面颜色\n");
getchar();
a=getchar();
getchar();
if(a=='0')
main();
else if(a=='1')
look();
else
{
printf("输入错误!\n");
}

}

相关文档
最新文档