程序设计实验报告学生考勤系统Word格式.docx

上传人:b****6 文档编号:20074222 上传时间:2023-01-16 格式:DOCX 页数:17 大小:135.60KB
下载 相关 举报
程序设计实验报告学生考勤系统Word格式.docx_第1页
第1页 / 共17页
程序设计实验报告学生考勤系统Word格式.docx_第2页
第2页 / 共17页
程序设计实验报告学生考勤系统Word格式.docx_第3页
第3页 / 共17页
程序设计实验报告学生考勤系统Word格式.docx_第4页
第4页 / 共17页
程序设计实验报告学生考勤系统Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

程序设计实验报告学生考勤系统Word格式.docx

《程序设计实验报告学生考勤系统Word格式.docx》由会员分享,可在线阅读,更多相关《程序设计实验报告学生考勤系统Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

程序设计实验报告学生考勤系统Word格式.docx

数据类型

//数据类型定义

structstu_check//定义学生基本信息数据结构类型

{

charnam[10];

//存放学生姓名

charnum[10];

//存放学生学号

charsex[6];

//存放学生性别

charche_now[5];

//存放学生签到状态

floatche_add;

//存放学生出勤次数

floatche_sult;

//存放学生出勤成绩

floatstand;

//签到标准次数

};

全局变量声明

intNUM;

//定义一个NUM代表学生总数;

charcla[100];

/*定义一个字符数组存放文件名*/

FILE*file;

//定义一个文件指针file;

structstu_checkst_infor[100];

//定义一个stu_check类型的结构体数组;

程序的总体设计(算法)

函数算法设计

主系统函数:

intmain(void)//工程主函数;

begin//开始

fun_intro();

//执行fun_into()函数;

PAUSE;

ensure()

stu_system();

//执行stu_system()函数;

//暂停;

return0;

//工程主函数执行完后返回0值;

end//结束;

}

流程图

voidstu_system(void)//系统主函数;

begin//开始;

system(cls);

//清屏;

sys_menu();

//执行sys_menu()函数;

print(执行:

);

//输出“执行:

”;

input(opt);

//输入opt的值;

switch//多分支执行;

opt=1sign_in();

//当opt的值为1时,进入签到界面;

opt=2stu_find();

//当opt的值为2时,进入查询界面;

opt=3stu_rev();

//当opt的值为3时,进入修改界面;

opt=4quit_sys();

//当opt的值为4时,退出系统;

defaultprint(出错\n请重新选择\n);

//当opt的值不满足以上时,输出“出错”换行,输出“请重新选择”,换行,回到首页;

end//结束;

voidsign_in(void)//学生签到服务函数;

begin//开始;

stu_open(“r”);

//以“读”的方式打开文件;

st_infor[NUM];

//含有“NUM”个元素的结构体数组;

print(请输入您的学号:

);

//输出……;

input(number);

//输入“number”的值;

i<

-0;

//把0赋给i;

while(i<

NUM)//当i小于NUM时,执行下面语句;

fread(st_infor[i],file);

//打开file文件,将文件内容传递给结构体变量;

i=i+1;

//i加1;

//同上;

NUM)//同上;

if(st_infor[i].num=number)//当成立时,执行下面语句;

if(st_infor[i].che_now=“未签到“)//同上;

st_infor[i].che_now<

-“签到“;

//将”签到“赋给“check_now”;

st_infor[i].che_add=st_infor[i].che_add+1;

//“check_add加1;

print(签到成功);

//同上;

else//当if不成立时,执行下面语句;

print(您已签到);

keepf();

//保存“file”文件;

jump_sys(sign_in);

//向其他功能跳转;

voidstu_find(void)//学生考勤信息查询函数;

print(请选择\n);

//

lace(80);

print(\t\t\t\t1、打开学生信息列表\n);

//

print(\t\t\t\t2、按姓名查找\n);

print(\t\t\t\t3、按学号查找\n);

print(执行:

switch//

opt=1stu_list();

//执行stu_list()函数;

opt=2find_nam();

opt=3find_num();

//

defaultprint(出错\n);

stu_find();

//输出“出错”,执行stu_find()函数;

voidstu_rev(void)//学生信息修改函数;

begin//

//清屏;

if(se_cod())//如果密码正确,执行修改操作;

print(密码正确\n);

else//如果密码错误,返回到首页;

print(密码错误\n);

print(返回到首页\n);

lace(n);

print(\t\t\t\t1、修改学号\n);

print(\t\t\t\t2、修改性别\n);

print(\t\t\t\t3、修改签到记录\n);

print(\t\t\t\t4、新建学生出勤信息\n);

switch

opt=1rev_num();

opt=2rev_sex();

opt=3rev_nam();

opt=3nstu_infor();

print(返回上一页\n);

stu_rev();

end//

voidquit_sys(void)//退出考勤系统函数;

begin//

if(se_cod())

{

print(密码正确,允许退出系统);

/*只能以管理员的身份执行退出操作*/

PAUSE;

}

else

print(密码错误,禁止退出);

print(请返回到首页);

stu_system();

NUM)//

-“未签到”;

//把”未签到”赋给”che_now”;

st_infor[i].che_sult<

-(st_infor[i].che.add/st_infor[i].stand)*100;

//用签到次数与标准次数的比值的100倍来表示总分数;

st_infor[i].stand=stand+1;

//stand加1;

//保存file文件;

exit;

//退出系统;

主函数源代码

intmain(void)/*工程主函数*/

fun_intro();

/*执行fun_into()函数*/

system("

PAUSE"

/*暂停*/

ensure();

system(“cls”);

stu_system();

/*执行stu_system()函数*/

return(0);

/*工程主函数执行完后返回0值*/

效果图

介绍系统功能:

voidstu_system(void)/*系统主函数*/

intopt;

sys_menu();

/*执行sys_menu()函数*/

printf("

执行:

"

/*输出“执行:

”*/

scanf("

%i"

&

opt);

/*输入opt的值*/

switch(opt)/*多分支执行*/

case1:

sign_in();

break;

/*当opt的值为1时,进入签到界面*/

case2:

stu_find();

/*当opt的值为2时,进入查询界面*/

case3:

stu_rev();

/*当opt的值为3时,进入修改界面*/

case4:

quit_sys();

/*当opt的值为4时,退出系统*/

default:

出错\n请重新选择\n"

/*当opt的值不满足以上时,输出“出错”换行,输出“请重新选择”,换行,回到首页*/

主界面:

voidsign_in(void)/*学生签到服务函数*/

inti;

charnumber[10];

stu_open("

r"

/*以“读”的方式打开文件*/

(请输入您的学号:

%s"

number);

/*输入“number”的值*/

for(i=0;

NUM;

++i)/*当i小于NUM时,执行下面语句*/

fread(&

st_infor[i],sizeof(structstu_check),1,file);

/*打开file文件,将文件内容传递给结构体变量*/

++i)

if(!

strcmp(st_infor[i].num,number))

{

if(!

strcmp(st_infor[i].che_now,"

未签到"

))

{

strcpy(st_infor[i].che_now,"

签到"

/*将"

赋给“check_now”*/

st_infor[i].che_add++;

/*“check_add加1*/

printf("

签到成功\n"

}

else

您已签到\n"

}

keepf();

/*保存“file”文件*/

jump_sys(sign_in);

/*向其他功能跳转*/

签到界面:

voidstu_find(void)/*学生考勤信息查询函数*/

lace(80);

请选择\n"

\t\t\t\t1、打开学生信息列表\n"

\t\t\t\t2、按姓名查找\n"

\t\t\t\t3、按学号查找\n"

switch(opt)

stu_list();

/*执行stu_list()函数*/

find_nam();

find_num();

printf("

出错\n"

stu_find();

/*输出“出错”,执行stu_find()函数*/

查询界面:

信息列表:

voidstu_rev(void)/*学生信息修改函数*/

if(se_cod())/*如果密码正确,执行修改操作*/

printf("

密码正确\n"

else/*如果密码错误,返回到首页*/

密码错误\n"

返回到首页\n"

\t\t\t\t1、修改学号\n"

\t\t\t\t2、修改性别\n"

\t\t\t\t3、修改签到记录\n"

\t\t\t\t4、新建学生出勤信息\n"

rev_num();

rev_sex();

rev_sig();

nstu_infor();

返回上一页\n"

stu_rev();

修改界面:

修改学号:

voidquit_sys(void)/*退出考勤系统函数*/

密码正确,允许退出系统\n"

system("

密码错误,禁止退出\n"

请返回到首页\n"

strcpy(st_infor[i].che_now,"

/*把”未签到”赋给”che_now”*/

//st_infor[i].che_add=8;

st_infor[i].che_sult=(float)((st_infor[i].che_add/st_infor[i].stand)*100.0);

/*用签到次数与标准次数的比值的100倍来表示总分数*/

st_infor[i].stand++;

/*stand加1*/

/*保存file文件*/

exit(0);

/*退出系统*/

退出界面:

测试情况及调试中问题与解决方案

1、函数声明问题

编译时出现函数未被声明或定义的错误

解决方法

对于在不同文件中的函数,当调用某函数时,首先需要进行外部函数声明;

对于在同文件中的函数,如果被调用函数在主调用函数之后定义,则需进行函数声明。

2、全局变量与局部变量

用C实现算法时,需要选用不同的作用域的变量,两种变量的声明与使用问题

解决方法

全局变量在文件最开始声明,可以被以后定义的所有函数使用,而局部变量仅限于在函数体内使用,离开函数,则失去意义。

3、调试中出现的语法错误

在编辑源代码时,出现语法错误

错误原因用两种:

其一,由于疏忽大意而编写错误,遗漏或误加词语;

其二,对于C语法没有掌握;

针对这两种错误原因解决方法有:

1、在根据算法编写源代码时,要充分理解算法的含义,再结合C的语法规则选择合适的语句,2、编写代码时需仔细认真。

4、编译与链接

编译时无错误,链接时出错

错误原因是主调函数调用的函数进行了声明,却没有进行定义,因此编译时没有错误提示,但是,链接时由于找不到所声明的函数,所以会报错。

因此只需对被调用函数进行定义即可。

5、运行中

测试时有时出现程序出错

编译与链接时,编译器没有显示错误并不表示程序是正常的,因此需要自己在其中寻找错误,一般情况,在运行时出现错误大多是算法有错误,因此出现这种情况需重新审视算法的设计。

小结

引用著名计算机科学家沃思的公式:

数据结构+算法=程序。

算法是程序的灵魂,数据是躯体。

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

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1