程序设计实验报告学生考勤系统Word格式.docx
- 文档编号:20074222
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:17
- 大小:135.60KB
程序设计实验报告学生考勤系统Word格式.docx
《程序设计实验报告学生考勤系统Word格式.docx》由会员分享,可在线阅读,更多相关《程序设计实验报告学生考勤系统Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
数据类型
//数据类型定义
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、运行中
测试时有时出现程序出错
编译与链接时,编译器没有显示错误并不表示程序是正常的,因此需要自己在其中寻找错误,一般情况,在运行时出现错误大多是算法有错误,因此出现这种情况需重新审视算法的设计。
小结
引用著名计算机科学家沃思的公式:
数据结构+算法=程序。
算法是程序的灵魂,数据是躯体。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 报告 学生 考勤 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)