C语言课程设计学生考勤系统

C语言课程设计学生考勤系统
C语言课程设计学生考勤系统

C语言程序设计

课程设计报告设计题目:学生考勤系统设计

专业微电子科学与工程

班级微电131

学生赵杨怡

指导教师

年学期

一、总体设计

1.程序的总体设计

◎确定界面,使用户可选择操作项目(录入,修改,查询,评分)。

◎录入功能:使用结构体,要求用户输入姓名、性别、学号、日期、节次、当前出勤情况等信息,并写入文件。

◎修改功能:使用户输入学号,姓名其中一项可以修改考勤其信息。对于修改功能的实现,是先将所有文件内容读入到内存中,然后修改考勤值,最后再重新覆盖写入文件。

◎查询模块:使用字符串比较函数,利用循环找到对应结构体数组元素,然后输出需要信息。对于查询功能的实现,同修改,是先将所有文件内容读入到内存中,然后查找到其中某项,最后输出到屏幕。

◎评分模块:系统根据总的应道考勤数按照百分制,求出每个学生的分数,并输出到屏幕。

2. 数据结构

学生信息用结构体记录,包括姓名(字符数组)、性别(字符型)、日期(年月日三个字符数组)、节次(整型)、出情况(整型)。

3. 函数原型声明

void main() 生信息及考勤情况录入◇\n");

printf(" ●●\n");

printf(" ◇ 2.学生信息及考勤情况修改◇\n");

●●\n");

查询

◎◎\n");

◇◇\n");

□\n");

开始

input() 函数

void input()

{

int i,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 日\n 0 重输 1 确认

{ 修 改 } );

q); } ame,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq );

search()void search() N

{ int i=0,j=0,sway,t,x;

char name[10],number[10];

printf(" ***********************学生信息查询***************************\n");

if((fp=fopen("","r"))==NULL) ame,name);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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();

}

/**********************按照姓名查找结束*************************umber,number);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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();

}

结束{

float score;

char name[10],number[10];

printf(" ***********************学生考勤分数计算**************************\n");

if(kqcs==0)

{

printf("请输入应到考勤总数"); ame,name);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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("该生当前考勤分数为%",score);

}

printf("是否继续计算其他学生考勤分数0 否 1 是");

scanf("%d",&x);

if(x==1) evaluate();

}

/**********************按照姓名查找结束*************************umber,number);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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("该生当前考勤分数为%",score);

}

printf("是否继续计算其他学生考勤分数0 否 1 是");

scanf("%d",&x);

if(x==1) evaluate();

}

结束

●\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日\n 0 重输 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

ame,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 是"); q); umber,number);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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 是"); q); ame,name);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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();

}

/**********************按照姓名查找结束*************************umber,number);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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();

}

/**********************按照学号查找结束*************************ame,name);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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("该生当前考勤分数为%",score);

}

printf("是否继续计算其他学生考勤分数0 否 1 是");

scanf("%d",&x);

if(x==1) evaluate();

}

/**********************按照姓名查找结束*************************umber,number);

if(j==i)

{

t=0;

printf("未找到您所查询的数据,请重新输入\n");

}

}

if(j

ame,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("该生当前考勤分数为%",score);

}

printf("是否继续计算其他学生考勤分数0 否 1 是");

scanf("%d",&x);

if(x==1) evaluate();

}

/**********************按照学号查找结束*************************/// printf("0 返回主菜单\n");

getchar();

a=getchar();

getchar();

if(a=='0') main();

}

///*****************************************计算考勤分数函数内容结束**********************************************//

相关主题
相关文档
最新文档