《C语言课程设计学生考勤系统.pdf》由会员分享,可在线阅读,更多相关《C语言课程设计学生考勤系统.pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 设计任务:C 语言课程设计任务书 题目:学生考勤系统设计 功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。分步实施:1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上)3、完成上述添加(出勤情况)、查找(学号,姓名,性别等)、修改等功能。4、进一步要求:自动给出每个学生的考勤分数 要求:1、用 C 语言实现程序设计;2、利用结构体数组实现信息的数据结构设计;3、系统的各
2、个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。(总评成绩:指导教师:附件:学生考勤系统主要源程序代码#include#include /*头文件。*/int SIZE;/*宏定义。*/int CLASS;struct student /*定义一个结构体数组,包含学生信息。*/char name9;char sex4;int number;int count;int score;stu300;void main()/*主函数,选择界面。*/void start();printf(n);printf(n);printf(n);printf(n);printf(#
3、n);printf(#学生考勤系统#n);printf(#欢 迎 您#n);printf(#n);printf(n);printf(n);printf(n);printf(n);printf(#n);printf(t 请输入班级人数:n);printf(#n);scanf(%d,&SIZE);printf(n);printf(#n);printf(t 请输入课程节数:n);printf(#n);scanf(%d,&CLASS);printf(n);printf(n);printf(n);printf(n);;start();void start()/*主函数的辅助函数start 函数。*/ch
4、ar x;void found();void search();void add();void mark();printf(#n);printf(#请选择所需功能,输入对应数字:#n);printf(#1.建立学生列表#n);printf(#2.查找学生信息#n);printf(#3.模拟考勤过程#n);printf(#4.计算考勤分数#n);printf(#5.退出#n);)printf(#n);printf(#n);scanf(%S,&x);switch(x)/*利用 switch 函数实现子函数的选择功能。*/case1:found();break;case2:search();brea
5、k;case3:add();break;;case4:mark();break;case5:break;default:printf(*输入有误,请重输:n);start();void found()/*第一个子函数found 函数,用于建立学生列表。*/int a;printf(#n);printf(开始建表。n);printf(#n);FILE*fp;for(a=0;aSIZE;a+)/*运用 for 循环,逐次输入学生信息。*/printf(请输入第%d 个学生的个人信息:n,a+1);printf(姓名:);;scanf(%s,stua.name);printf(性别:);scanf(
6、%s,stua.sex);printf(学号:);scanf(%d,&stua.number);stua.count=0;stua.score=0;|fp=fopen(stud,w);/*新建一个文件,运用 for 函数将学生信息写入文件。*/for(a=0;aSIZE;a+)if(fwrite(&stua,sizeof(struct student),1,fp)!=1)printf(文件输入错误。n);fclose(fp);printf(n);printf(n);printf(n);printf(n);printf(建表如下:n);fp=fopen(stud,r);/*读取新建的文件,并输出
7、。*/printf(姓名 t 性别 t 学号 t 缺课数 t 考勤分数 n);printf(-n);for(a=0;aSIZE;a+)fread(&stua,sizeof(struct student),1,fp);printf(%s t%s t%d t%d t%dn,stua.name,stua.sex,stua.number,stua.count,stua.score);fclose(fp);printf(n);printf(n);printf(n);printf(n);printf(#n);printf(#记录完毕#n);printf(#欢迎下次再来。#n);printf(#n);sta
8、rt();/*返回主函数的辅助函数,即主菜单。*/void search()/*第二个子函数search 函数,用于查询学生信息。*/char b;void search1();void search2();printf(*n);printf(请选择:n);printf(1.按姓名查找。n);printf(2.按学号查找。n);printf(*n);scanf(%s,&b);switch(b)/*运用 switch 函数,构成选择结构,可供选择查询类型。*/case1:search1();break;/*进入第 1 种查询类型的函数。*/case2:search2();break;/*进入第
9、2 种查询类型的函数。*/default:printf(*输入有误,请重输:);search();#printf(n);printf(n);printf(n);printf(n);printf(#n);printf(#查找完毕#n);printf(#欢迎下次再来。#n);printf(#n);|start();/*返回主函数的辅助函数,即主菜单。*/void search1()/*第 1 种查询类型的函数。*/int c;char student_name9;FILE*fp;/*打开已建立的文件并将其输出到屏幕上。*/fp=fopen(stud,r);printf(姓名 t 性别 t 学号 t
10、 缺课数 t 考勤分数 n);printf(-n);for(c=0;cSIZE;c+)fread(&stuc,sizeof(struct student),1,fp);printf(%s t%s t%d t%d t%dn,stuc.name,stuc.sex,stuc.number,stuc.count,stuc.score);fclose(fp);*printf(n);printf(n);printf(n);printf(n);printf(请输入要查询学生姓名:);scanf(%s,student_name);printf(n);printf(n);printf(n);printf(n);
11、for(c=0;cSIZE;c+)/*运用 for 循环和 strcmp 函数逐个比较输入的姓名与列表中学生的姓名,找到相同的后输出该学生的信息。*/if(strcmp(student_name,stuc.name)=0)printf(已查到*n);printf(姓 名:%s 性 别:%s 学 号:%d 缺 课数:%dn,stuc.name,stuc.sex,stuc.number,stuc.count);)void search2()/*第 2 种查询类型的函数。*/int c;int d;FILE*fp;(fp=fopen(stud,r);printf(姓名 t 性别 t 学号 t 缺课数
12、 t 考勤分数 n);printf(-n);for(c=0;cSIZE;c+)fread(&stuc,sizeof(struct student),1,fp);printf(%s t%s t%d t%d t%dn,stuc.name,stuc.sex,stuc.number,stuc.count,stuc.score);fclose(fp);printf(n);printf(n);printf(n);printf(n);printf(请输入要查询学生学号:);scanf(%d,&d);printf(n);%printf(n);printf(n);printf(n);for(c=0;cSIZE;
13、c+)/*同第 1 种查询类型的函数,用 for 循环逐个比较输入的学号与列表中学生的学号,找到相同的后输出该学生的信息。*/if(d=stuc.number)printf(已查到*n);、printf(姓 名:%s 性 别:%s 学 号:%d 缺 课数:%dn,stuc.name,stuc.sex,stuc.number,stuc.count);void add()/*第三个子函数add 函数,用于模拟考勤过程。*/int e,f,y;struct name /*再建立一个叫 name 的结构体数组。*/char nam9;na300;FILE*fp;fp=fopen(stud,r);/*打
14、开已建立的文件并将其输出到屏幕上。*/for(e=0;eSIZE;e+)fread(&stue,sizeof(struct student),1,fp);:printf(%s t%s t%d t%d t%dn,stue.name,stue.sex,stue.number,stue.count,stue.score);fclose(fp);printf(n);printf(n);printf(n);printf(n);printf(*n);printf(模拟考勤开始。n);printf(*n);for(e=0;eCLASS;e+)/*运用 for 循环的嵌套,向 name 结构体中输入姓名,再依
15、次与列表中的学生姓名逐个比较。*/printf(请输入第%d 节课未到的学生姓名并以“over”结束:,e+1);for(y=0;y for(f=0;fSIZE;f+)if(strcmp(nay.nam,stuf.name)=0)/*如果输入的姓名与某个学生姓名相同,在其count的信息中加1。*/stuf.count+;if(strcmp(nay.nam,over)=0)/*循环结束,遇到 over,退出循环。*/break;:fp=fopen(stud,w);/*将新的列表数据写入原文件中。*/for(e=0;eSIZE;e+)if(fwrite(&stue,sizeof(struct s
16、tudent),1,fp)!=1)printf(文件输入错误。n);fclose(fp);printf(n);printf(n);printf(n);printf(n);printf(模拟考勤完毕,结果如下:n);fp=fopen(stud,r);/*打开更新的文件并将其输出到屏幕上。*/printf(姓名 t 性别 t 学号 t 缺课数 n);:printf(-n);for(f=0;fSIZE;f+)fread(&stuf,sizeof(struct student),1,fp);printf(%s t%s t%d t%dn,stuf.name,stuf.sex,stuf.number,st
17、uf.count);fclose(fp);printf(n);【printf(n);printf(n);printf(n);printf(#n);printf(#考勤完毕#n);printf(#欢迎下次再来。#n);printf(#n);start();/*返回主函数的辅助函数。*/void mark()/*第四个子函数mark 函数,用于计算考勤分数。*/int g;FILE*fp;/*打开更新的文件并将其输出到屏幕上。*/fp=fopen(stud,r+);printf(姓名 t 性别 t 学号 t 缺课数n);printf(-n);for(g=0;gSIZE;g+)fread(&stug
18、,sizeof(struct student),1,fp);printf(%s t%s t%d t%dn,stug.name,stug.sex,stug.number,stug.count);printf(n);printf(n);printf(n);】printf(n);printf(*n);printf(评分开始。n);printf(*n);for(g=0;gSIZE;g+)/*用 for 循环实现评分过程。*/stug.score=(100-stug.count*5);/*缺一节课扣五分。*/if(stug.score0)stug.score=0;fclose(fp);fp=fopen(
19、stud,w);/*将更新的学生列表信息写入原文件中。*/for(g=0;gSIZE;g+)if(fwrite(&stug,sizeof(struct student),1,fp)!=1)printf(文件输入错误。n);fclose(fp);printf(n);printf(n);printf(n);printf(n);printf(结果如下:n);fp=fopen(stud,r);/*打开更新的文件并将其输出到屏幕上。*/printf(姓名 t 性别 t 学号 t 缺课数 t 考勤分数 n);printf(-n);for(g=0;gSIZE;g+)fread(&stug,sizeof(struct student),1,fp);printf(%s t%s t%d t%d t%dn,stug.name,stug.sex,stug.number,stug.count,stug.score);fclose(fp);printf(n);printf(n);printf(n);printf(n);printf(#n);printf(#评分完毕#n);printf(#欢迎下次再来。#n);printf(#n);start();/*返回主函数的辅助函数,即主菜单。*/