【C语言优秀综合课程设计】学生点名系统的设计与实现(2021-07-09)


提示:以下是本篇文章正文内容,下面案例可供参考

一、摘要

在高校自动化办公系统逐步普及的今天,课堂点名系统已遍地而飞。这种方式不仅省钱、省事、便捷、好用,而且使得老师不在需要花大工夫,每天都带点名册,节约了时间,提高了效率。并且点名系统可以全方位的覆盖所有学生,避免了逃课或者迟到现象,提高了学习质量。学生或者老师也可通过该系统去查询这个学期的到课情况,方便管理以及自查。

二、页面截图

主页面截图


三、源代码


/**

 *  点名函数

 */

void callRoll(char *classNo){

    //从文件中读取数据
    syncRecord("attendance.txt", "read");

    char select=0;
    int flag = 0;
    char clazz[10];
    int i=0;//定义变量
    printf("%s班开始点到,请按P键进行点名", classNo);
    while (i<STUDENTNUM) {  
        printf("\n");
        
        strncpy(clazz, attend[i].studentNo, 2);
        while(strcmp(clazz, classNo) && i < STUDENTNUM){
        	strncpy(clazz, attend[++ i].studentNo, 2);
		}
		
		if(i >= STUDENTNUM){
			break;
		}
        
        scanf(" %c",&select);
        if (select=='p') {      		    
	            printf("请输入%s同学出勤情况:\n-1:已请假;0:缺席; 1:正常;\n", attend[i].studentName);
	            int status = 0;
	            scanf("%d", &status);
	            
	            while(status != 0 && status != 1 && status != -1){
	            	printf("输入有误,请重新输入!\n");
	            	printf("请输入%s同学出勤情况:\n-1:已请假;0:缺席; 1:正常;\n", attend[i].studentName);
	            	scanf("%d", &status);
				}
				
				printf((status == 0 ? "%s同学为缺席状态!\n" :  (status == 1 ? "%s同学为正常状态!\n" : "%s同学为请假状态!\n")), attend[i].studentName);
	            
	            if(status == 0){
	            	attend[i].attends ++;
				}else if(status == -1){
					attend[i].leave ++;
				}else if(status == 1){
					attend[i].normal ++;
				} 
				
				if(i < STUDENTNUM - 1)
	               printf("请按p键进行点名");
	            i ++;
	            flag = 1;
			
        }
        else{
        	printf("错误的输入!!");
		}

    }
    
    if(!flag){
    	printf("该班级没有学生!\n");
	}
    
    syncRecord("attendance.txt", "write");
}

/**

 *  打印界面函数

 */
 
 //根据学号查询学生 
void searchStudentById(char *studentNo){
	FILE *fp = fopen("student.txt", "r");
	
	if(! fp){
		printf("学生信息查询失败!\n");
		return ;
	}else {
		fread(information, sizeof(student), studentList.studentNum, fp);
		fclose(fp);
	}
	
	int i = 0;
	for(i = 0;i < STUDENTNUM;i ++){
		if(strcmp(studentNo, information[i].studentNo) == 0){    //查询成功 
			 printf("\n查询到的学生姓名为:%s\n\n", information[i].studentName);
			 return ;
		}
	}
	if(i == STUDENTNUM){
		printf("未查询到学生信息!\n");
		return ;
	}
	
}

void ui(){
    //打印界面
printf("**************************************\n");
printf("**请根据提示选择你需要的功能进行操作**\n");
printf("【1】->手动录入学生信息\n");
printf("【2】->进行上课点名\n");
printf("【3】->查询学生\n");
printf("【4】->查看学生缺勤情况\n");
printf("【5】->按班级查看学生\n");
printf("【6】->退出系统\n");
printf("**************************************\n");
}

源码打包下载

源码分享

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿显Hx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值