C语言课程设计学生考勤系统_第1页
C语言课程设计学生考勤系统_第2页
C语言课程设计学生考勤系统_第3页
C语言课程设计学生考勤系统_第4页
C语言课程设计学生考勤系统_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上设计任务:C语言课程设计任务书题目:学生考勤系统设计功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。分步实施:1、 初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;2、 建立一个文件,将每条记录信息写入文件中并能显示于屏幕上3、完成上述添加(出勤情况)、查找(学号,姓名,性别等)、修改等功能。4、进一步要求:自动给出每个学生的考勤分数要求:1、用C语言实现程序设计;2、利用结构体数组实现信息的数据结构设计

2、;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。总评成绩:指导教师:附件:学生考勤系统主要源程序代码#include<stdio.h>#include<string.h> /*头文件。*/int SIZE; /*宏定义。*/int CLASS;struct student /*定义一个结构体数组,包含学生信息。*/ char name9; char sex4; int number; int count; int score; stu300;void main() /*主函数,选择界面。*/ void start(); p

3、rintf("n"); printf("n"); printf("n"); printf("n"); printf("#n"); printf("# 学生考勤系统 #n"); printf("# 欢 迎 您 #n"); printf("#n"); printf("n"); printf("n"); printf("n"); printf("n"); prin

4、tf("#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(&

5、quot;n"); printf("n"); start();void start() /*主函数的辅助函数start函数。*/ char x; void found(); void search(); void add(); void mark(); printf("#n"); printf("# 请选择所需功能,输入对应数字: #n"); printf("# 1.建立学生列表 #n"); printf("# 2.查找学生信息 #n"); printf("# 3.模拟考勤过

6、程 #n"); printf("# 4.计算考勤分数 #n"); printf("# 5.退出 #n"); printf("# #n"); printf("#n"); scanf("%S",&x); switch(x) /*利用switch函数实现子函数的选择功能。*/ case'1':found();break; case'2':search();break; case'3':add();break; case'4

7、9;:mark();break;case'5':break; default :printf("*输入有误,请重输:n");start(); void found() /*第一个子函数found函数,用于建立学生列表。*/ int a; printf("#n"); printf(" 开始建表。n"); printf("#n"); FILE *fp; for(a=0;a<SIZE;a+) /*运用for循环,逐次输入学生信息。*/ printf("请输入第%d个学生的个人信息:n&qu

8、ot;,a+1); printf("姓名:"); scanf("%s",); printf("性别:"); scanf("%s",stua.sex); printf("学号:"); scanf("%d",&stua.number); stua.count=0; stua.score=0; fp=fopen("stud","w"); /*新建一个文件,运用for函数将学生信息写入文件。*/ for(a=0;a&l

9、t;SIZE;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"); /*读取新建的文件,并输出。*/ printf("姓名

10、 t性别 t学号 t缺课数 t考勤分数 n"); printf("-n"); for(a=0;a<SIZE;a+) fread(&stua,sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",,stua.sex,stua.number,stua.count,stua.score); fclose(fp); printf("n"); printf("n"); printf("n"); pri

11、ntf("n"); printf("#n"); printf("# 记录完毕 #n"); printf("# 欢迎下次再来。 #n"); printf("#n"); start(); /*返回主函数的辅助函数,即主菜单。*/ void search() /*第二个子函数search函数,用于查询学生信息。*/ char b; void search1(); void search2(); printf("*n"); printf(" 请选择:n"); pr

12、intf(" 1.按姓名查找。n"); printf(" 2.按学号查找。n"); printf("*n"); scanf("%s",&b); switch(b) /*运用switch函数,构成选择结构,可供选择查询类型。*/ case'1':search1();break; /*进入第1种查询类型的函数。*/ case'2':search2();break; /*进入第2种查询类型的函数。*/default :printf("*输入有误,请重输:");s

13、earch(); 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

14、; FILE *fp; /*打开已建立的文件并将其输出到屏幕上。*/ fp=fopen("stud","r"); printf("姓名 t性别 t学号 t缺课数 t考勤分数 n"); printf("-n"); for(c=0;c<SIZE;c+) fread(&stuc,sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",,stuc.sex,stuc.number,stuc.count,stuc.

15、score); fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("请输入要查询学生姓名:"); scanf("%s",student_name); printf("n"); printf("n"); printf("n"); printf("n"); for(c=0;c<SIZE;c+) /*运用f

16、or循环和strcmp函数逐个比较输入的姓名与列表中学生的姓名,找到相同的后输出该学生的信息。*/ if(strcmp(student_name,)=0) printf("已查到*n"); printf("姓名:%s 性别:%s 学号:%d 缺课数:%dn",,stuc.sex,stuc.number,stuc.count); void search2() /*第2种查询类型的函数。*/ int c; int d; FILE *fp; fp=fopen("stud","r");

17、printf("姓名 t性别 t学号 t缺课数 t考勤分数 n"); printf("-n"); for(c=0;c<SIZE;c+) fread(&stuc,sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",,stuc.sex,stuc.number,stuc.count,stuc.score); fclose(fp); printf("n"); printf("n"); printf(&quo

18、t;n"); printf("n"); printf("请输入要查询学生学号:"); scanf("%d",&d); printf("n"); printf("n"); printf("n"); printf("n"); for(c=0;c<SIZE;c+) /*同第1种查询类型的函数,用for循环逐个比较输入的学号与列表中学生的学号,找到相同的后输出该学生的信息。*/ if(d=stuc.number) printf("

19、已查到*n"); printf("姓名:%s 性别:%s 学号:%d 缺课数:%dn",,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"); /*打开已建立的文件并将其输出到屏幕上。*/ for(e=0;e<SIZE;e+)

20、fread(&stue,sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",,stue.sex,stue.number,stue.count,stue.score); fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("*n"); printf(" 模拟考勤开始。n"); p

21、rintf("*n"); for(e=0;e<CLASS;e+) /*运用for循环的嵌套,向name结构体中输入姓名,再依次与列表中的学生姓名逐个比较。*/ printf("请输入第%d节课未到的学生姓名并以“over”结束:",e+1); for(y=0;y<=SIZE;y+) scanf("%s",nay.nam); for(f=0;f<SIZE;f+) if(strcmp(nay.nam,)=0) /*如果输入的姓名与某个学生姓名相同,在其count的信息中加1。*/ stuf.count+

22、; if(strcmp(nay.nam,"over")=0) /*循环结束,遇到 "over",退出循环。*/ break; fp=fopen("stud","w"); /*将新的列表数据写入原文件中。*/ for(e=0;e<SIZE;e+) if(fwrite(&stue,sizeof(struct student),1,fp)!=1) printf("文件输入错误。n"); fclose(fp); printf("n"); printf("n&q

23、uot;); printf("n"); printf("n"); printf("模拟考勤完毕,结果如下:n"); fp=fopen("stud","r"); /*打开更新的文件并将其输出到屏幕上。*/ printf("姓名 t性别 t学号 t缺课数 n"); printf("-n"); for(f=0;f<SIZE;f+) fread(&stuf,sizeof(struct student),1,fp); printf("%s t

24、%s t%d t%dn",,stuf.sex,stuf.number,stuf.count); fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("#n"); printf("# 考勤完毕 #n"); printf("# 欢迎下次再来。 #n"); printf("#n"); start(); /*返回主函数的辅助函数

25、。*/ void mark() /*第四个子函数mark函数,用于计算考勤分数。*/ int g; FILE *fp; /*打开更新的文件并将其输出到屏幕上。*/ fp=fopen("stud","r+"); printf("姓名 t性别 t学号 t缺课数n"); printf("-n"); for(g=0;g<SIZE;g+) fread(&stug,sizeof(struct student),1,fp); printf("%s t%s t%d t%dn",,

26、stug.sex,stug.number,stug.count); printf("n"); printf("n"); printf("n"); printf("n"); printf("*n"); printf(" 评分开始。n"); printf("*n"); for(g=0;g<SIZE;g+) /*用for循环实现评分过程。*/ stug.score=(100-stug.count*5); /*缺一节课扣五分。*/ if(stug.score<0) stug.scor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论