完整word版C语言课程设计学生考勤系统方案Word格式.docx

上传人:b****2 文档编号:3143038 上传时间:2023-05-01 格式:DOCX 页数:45 大小:92.06KB
下载 相关 举报
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第1页
第1页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第2页
第2页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第3页
第3页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第4页
第4页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第5页
第5页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第6页
第6页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第7页
第7页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第8页
第8页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第9页
第9页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第10页
第10页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第11页
第11页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第12页
第12页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第13页
第13页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第14页
第14页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第15页
第15页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第16页
第16页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第17页
第17页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第18页
第18页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第19页
第19页 / 共45页
完整word版C语言课程设计学生考勤系统方案Word格式.docx_第20页
第20页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整word版C语言课程设计学生考勤系统方案Word格式.docx

《完整word版C语言课程设计学生考勤系统方案Word格式.docx》由会员分享,可在线阅读,更多相关《完整word版C语言课程设计学生考勤系统方案Word格式.docx(45页珍藏版)》请在冰点文库上搜索。

完整word版C语言课程设计学生考勤系统方案Word格式.docx

系统根据总的应道考勤数按照百分制,求出每个学

生的分数,并输出到屏幕。

2.数据结构

学生信息用结构体记录,包括姓名(字符数组)、性别(字

符型)、日期(年月日三个字符数组)、节次(整型)、出情况(整型)

3.函数原型声明

voidmain()//主函数

voidinput();

//录入数据函数

voidchange();

//修改数据函数

voidsearch();

//查询数据函数

voidevaluate。

//计算总评函数

、详细设计

1.main()函数

voidmain()

{

//

voidchange();

//voidevaluate();

//charitem;

system("

color34"

);

printf("

□★◊★□★\n"

printf("

•\n"

管理系统

◊\n"

录入数据函数

修改数据函数

查询数据函数计算总评函数

★◊★□★◊★□★◊★□★◊★

◊学生考勤

◊BY朱胜佳

printf("

★◊★□★◊★□★◊★

□★◊★□★◊★□★\n"

1.

学生信息及

考勤情况录入

2.

考勤情况修改

3.

考勤情况查询

◎\n"

4.

学生考勤总

评分数查询

★◊★□★◊★□★◊★

//用户界面

\n"

请选择您需要的操作\n"

scanf("

%c"

&

item);

switch(item)

case'

1'

:

input();

break;

case2:

change();

case3:

search();

4'

evaluate();

}//实现功能选择

}

流程图:

2.input()函数

voidinput()

inti,j=O,jx=1;

•************************

学生基本信息录入

**\n"

***************************

if((fp=fopen("

date.txt"

"

w"

))==NULL){

文件打开失败\n"

exit(0);

for(i=0;

jx==1;

i++)//输入信息循环

{for(;

j==0;

)//输入确认循环

getchar();

请输入第%4个学生的姓名"

i+1);

gets(stu[i].name);

请输入第%4个学生的学号"

gets(stu[i].number);

请输入第%d个学生的性别(男:

m女:

f)"

stu[i].sex=getchar();

请输入第%4个学生的生日(格式:

年月日)"

scanf("

%d%d%d"

stu[i].year,&

stu[i].month,&

stu[i].day);

请输入第%(个学生的当前考勤次数"

%d"

&

stu[i].kq);

您输入的信息为姓名%s学号%s性别%c生日%d年%d月%d日\n0重输1确认

"

stu[i].name,stu[i].number,stu[i].sex,stu[i].year,stu[i].mont

h,stu[i].day);

j);

//输入确认

j=0;

if(fwrite(&

stu[i],sizeof(structstudent),1,fp)!

=1)

文件写入错误\n"

//写入文件

是否继续输入下一个学生信息0终止1

继续\n"

jx);

//继续输入

选择

fclose(fp);

0返回主菜单\n"

a=getchar();

if(a=='

0'

)main();

//返回主菜单

0=>

j

Y

j=0?

N

8

输入j值选择是否确认

输入jx值选择是否继续

/输入i+1个学生信

i+1=>

i

写入文件

1=>

jx

开始

打开文件

结束

 

3.change。

函数

voidchange()

{inti=0,j=0,sway,t,x;

charname[10],number[10];

**********************

jz改**************************\n"

if((fp=fopen("

r"

))==NULL)

件内容读入内存

学生考勤修

//将文

exit(0);

feof(fp)==0;

i++)

fread(&

stu[i],sizeof(struct

student),1,fp);

//读取文件内容

选择查找方式

sway);

[**********************

//

1按照姓名查找2

按照姓

关闭文件按照学号查找"

名查找开

III

*************************

if(sway==1)

请输入需要修改学生的姓名"

IIprintf("

i=%d"

i);

%s"

name);

for(j=0;

t!

=0;

j++)

t=strcmp(stu[j].name,name);

if(j==i)

t=0;

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

if(j<

i)II查询成功

您查找的学生信息如下\n姓名%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);

是否修改该生考勤信息0否1

//选择是否修改考勤

x);

//输入选择变量值

if(x==1)

请输入新的考勤值"

scanf("

stu[j-1].kq);

新的考勤值

))==NULL)//

以只写方式打开文件

文件打开失败\n"

j<

i;

stu[j],sizeof(structstudent),1,fp)!

=1)printf("

写入错误\n"

//关闭文件

是否继续修改其他学生考勤0否1是"

if(x==1)change();

按照姓名查找

按照学号查找

%s性

勤次

是"

输入

文件

if(sway==2)

请输入需要修改学生的学号"

IIprintf("

number);

t=strcmp(stu[j].number,number);

if(j==i){

if(jvi)//查询成功

您查找的学生信息如下\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);

是否修改该生考勤信息0否1是"

//输入

}for(j=0;

j++)if(fwrite(&

stu[j],sizeof(structstudent),1,fp)!

=1)printf("

文件

写入错误\n"

按照学号查找结束

O返回主菜单\n"

getchar();

O'

)main();

输入sway值选择查找方式

4.search。

voidsearch()

***********************

文件内容读入内存

学生信息查询

//将

i++)fread(&

选择查找方式1按照姓名查找2按照学号查找"

********************

按照姓名查找开始

if(j==i){

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

您查找的学生信息如下\n姓名%s学号%s

%c生日%d年%d月%d日当前考勤

stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu|j-1].y

ear,stu[j-1].month,stu[j-1].day,stu[j-1].kq);

是否继续查询其他学生信息0否1是"

if(x==1)search();

照姓名查找

按照学号查找开

stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].y

按照学号查找结束

Sway=1?

Sway=2?

输入要查

找的姓名

查找姓名

1

F

查找学号

输入要查找

的学号

输出该生信息

5.evaluate。

voidevaluate()

floatscore;

************************

if(kqcs==0)

请输入应到考勤总数

%f"

kqcs);

读入内存

学生考勤分数计算

//请输入应到考勤总数

//将文件内容

/**********************

*************************///

//printf("

for(j=0;

}if(j<

i)

{printf("

别%c生日

//查询成功

您查找的学生信息如下\n

%d年%d月%d日

姓名%s学号%s性当前考勤次

该生当前考勤分数为%5.2f"

score);

score=(stu[j-1].kq)/kqcs*100;

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

if(x==1)evaluate。

;

按照姓名查找结束

///

按照学号查找开始

查询成功

\n姓名%s学号%s性

日当前考勤次

您查找的学生信息如下

%c生日%d年%d月%d

该生当前考勤分数为%5.2f"

if(x==1)evaluate。

输入应到考勤

次数kqcs值

输入要查找的学号

输入要查找的姓名

将文件内容全部读入结构

计算考勤分数

三、测试及调试(测试方案、存在的问题及解决方法)

测试方案:

按照每个函数功能进行测试,在做完每个函数对其进行

测试,主函数测试,先将所有需要的功能模块函数设置为空,每个函数用一个printf语句来测试主函数。

1.存在问题:

开始将生日定义为字符数组,当用scanf来输入年月日时,年月

日之间用空格分隔,但在输出时发现年月日出现错误。

分析原因:

用scanf输入年月日时,系统会把用来分隔的空格当做字符读入。

解决方法:

将年月日定义为整型,这样就可以用scanf输入,用空格隔开。

2.存在问题2:

在查找数据时,需要先将所有数据读入一个结构体数组,在读

取后未关闭文件,执行查找时查找不到相关信息。

再利用for循环读取全部文件内容后,文件指针将会移至文件末尾,这样再执行查找时就会从文件末尾开始,显然不符合要求,所以会出现错误。

在读取完数据后先关闭文件,在查找时再次打开文件,这时文件指针就会指向文件开头。

3.存在问题3:

再多个使用getchar或者gets输入的时候,会出现直接跳过输入的情况。

在使用getchar或者gets输入的时候,系统会将前一步用来确认执行的回车当成字符读入,导致跳过该步输入。

再getchar或者gets前面加上getchar()语句,读掉回车,下

面的getchar或者gets就可以正常输入。

四、小结

通过编写该程序,熟悉了C语

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2