0911090104杨文博《学生上课签到系统》.docx
《0911090104杨文博《学生上课签到系统》.docx》由会员分享,可在线阅读,更多相关《0911090104杨文博《学生上课签到系统》.docx(9页珍藏版)》请在冰豆网上搜索。
0911090104杨文博《学生上课签到系统》
一、题目描述
1、当前学生信息:
通过结构体structEmpk来保存学生学号,姓名,性别,班级职务,寝室地址,电话,出生年月和缺课次数等相关信息。
2、学生信息查询:
输入一个学生学号,在文件中查找此学生,若找到则输出此学生的全部信息;若找不到则输出查找失败的信息.
3、输出全部学生信息。
二、功能分析
1、输入初始的学生信息:
其中包括学生的学号、姓名和性别,班级职务,寝室地址,电话,出生年月以及缺课次数等相关信息;可用函数inputEmpInfo()来实现此操作。
2、查询模块:
可用open()来实现。
找到就输出此学生的全部信息。
3、输出学生的信息:
通过学生的学号来查看学生姓名、性别、班级职务、寝室地址、电话、出生年月及缺课次数。
三、系统设计
1、程序总体设计
2、界面设计
此系统界面采用图形和数字化菜单设计。
主界面设计如下:
学生上课签到系统
请选择相应的数字执行相应的功能:
1:
输入数据
2:
插入数据
3:
删除数据
4:
显示数据
5:
查询数据
6:
统计数据
0:
退出系统
3、数据结构设计:
程序设计中用到的结构体类型:
学生信息结构体类型:
typedefstructEmpk
{intEmpNum;
charEmpName[8];
charSex;
charPosition[12];
structTell;
charDay;
charYear;
}
四、附件源程序
#include
#include
#include
#include
typedefstructEmpk
{ int EmpNum; // 学生学号
charEmpName[8]; //学生姓名
char Sex; // 性别 女 男
charPosition[12]; // 班级职务
charAddress[12]; //寝室地住址
structTell; //电话
charDay; //出生年月
charYear; //缺课次数 1-02-1-5 3->5
}Emp;
Empemp[100];
Emps[1];
voidopen()
{inti;
FILE*fp;
if((fp=fopen("d:
\\bkdat","rb+"))==NULL)
{printf("cannotdoit!
\n");
exit(0);
}
for(i=0;i<100;i++)
{if(fread(&emp[i],sizeof(Emp),1,fp)==EOF)
{printf("输出失败\n");
exit(0);
}
}
fclose(fp);
}
voidclose()
{inti;
FILE*fp;
if((fp=fopen("d:
\\bkdat","wb+"))==NULL)
{printf("cannotdoit!
\n");
exit(0);
}
for(i=0;i<100;i++)
fwrite(&emp[i],sizeof(Emp),1,fp);
fclose(fp);
}
voidinputEmpInfo()
{inti,k;
voidopen();
for(i=0;i<100;i++)
{printf("请输入学生学号:
");
scanf("%d",&emp[i].EmpNum);
printf("\n请输入学生姓名:
");
scanf("%s",emp[i].EmpName);
printf("\n请输入性别女 男:
");
scanf("%d",&emp[i].Sex);
printf("\n请输入班级职务:
");
scanf("%s",emp[i].Position);
printf("\n请输入寝室地址:
");
scanf("%s",emp[i].Address);
printf("\n请输入电话:
");
scanf("%d",&emp[i].Tell);
printf("\n请输入出生年月:
");
scanf("%d",&emp[i].Day);
printf("\n请输入缺课次数 1-0 2-1-5 3->5");
scanf("%d",&emp[i].Year);
printf("继续?
(1.y2.n)");
scanf("%d",&k);
if(k==2)break;
}
close();
}
voidadd()
{inti=0;
voidopen();
while(emp[i].EmpNum!
=0)i++;
printf("请输入学生学号:
");
scanf("%d",&emp[i].EmpNum);
printf("\n请输入学生姓名:
");
scanf("%s",emp[i].EmpName);
printf("\n请输入性别女 男:
");
scanf("%d",&emp[i].Sex);
printf("\n请输入班级职务:
");
scanf("%s",emp[i].Position);
printf("\n请输入寝室地址:
");
scanf("%s",emp[i].Address);
printf("\n请输入电话:
");
scanf("%d",&emp[i].Tell);
printf("\n请输入出生年月:
");
scanf("%d",&emp[i].Day);
printf("\n请输入缺课次数1-02-1-5 3->5:
");
scanf("%d",&emp[i].Year);
close();
}
voidshow()
{intj;
for(j=0;emp[j].EmpNum!
=0;j++)
{
printf("\n----------学生信息------------\n");
printf("学生学号:
%d\n",emp[j].EmpNum);
printf("学生姓名:
%s", emp[j].EmpName);
printf("\n性别 女 男:
%d", emp[j].Sex);
printf("\n班级职务:
%s", emp[j].Position);
printf("\n寝室地址:
%s", emp[j].Address);
printf("\n电话:
%d", emp[j].Tell);
printf("\n出生年月:
%d", emp[j].Day);
printf("\n缺课次数1-0 2-1-5 3->5 :
%d",emp[j].Year);
}
}
voiddeleteEmp()
{intj,k,m=1,d,i=0;
open();
printf("请输入要删除的学生学号:
\n");
scanf("%d",&d);
for(j=0;emp[j].EmpNum!
=0;j++)
{if(emp[j].EmpNum==d)
{s[0]=emp[j];
for(k=j;emp[j].EmpNum!
=0;k++)
emp[k]=emp[k+1];
i++;
}
}
printf("%d",i);
/*if(i==0)
{printf("签到系统中没有该学生记录!
!
!
\n");
return;
}*/
close();
printf("删除成功\n");
}
voidfindByEmpName()
{intj,i,k=0;
FILE*fp;
voidopen();
printf("请输入所要的学生学号:
\n");
scanf("%d",&i);
for(j=0;emp[j].EmpNum!
=0;j++)
{if(emp[j].EmpNum==i)
{printf("\n---------学生信息-----------\n");
printf("学生学号:
%d\n",emp[j].EmpNum);
printf("学生姓名:
%s", emp[j].EmpName);
printf("\n性别 女 男:
%d", emp[j].Sex);
printf("\n班级职务:
%s", emp[j].Position);
printf("\n寝室地址:
%s", emp[j].Address);
printf("\n电话:
%d", emp[j].Tell);
printf("\n出生年月:
%d", emp[j].Day);
printf("\n缺课次数1-0 2-1-53->5:
%d",emp[j].Year);
k++;
}
}
if(k==0)
printf("没有此学生记录!
!
!
");
close();
}
voidtong()
{intt1=0,t2=0,t3=0,j;
FILE*fp;
Emp*p;
p=(Emp*)malloc(sizeof(Emp));
if((fp=fopen("d:
\\bkdat","rb+"))==NULL)
{printf("cannotdoit!
\n");
exit(0);
}
for(j=0;j<100;j++)
{fread(p,sizeof(Emp),1,fp);
if(p->EmpNum==0)break;
if(1==p->Year) t1++;
if(2==p->Year) t2++;
if(3==p->Year) t3++;
}
printf("1-0,1-5,>5学生的人数分别是%4d,%4d,%4d",t1,t2,t3);
fclose(fp);
free(p);
}
voidfile()
{inti;
open();
for(i=0;i<100;i++)
{emp[i].EmpNum=0;
}
close();
}
voidmenu()
{
printf("\n\n--------------------------------\n");
printf("请选择操作的种类:
\n");
printf("1----输入:
完成学生信息的输入\n");
printf("2----插入:
完成学生信息的插入;\n");
printf("3----删除:
完成学生信息的删除;\n");
printf("4----显示:
显示所有学生的信息; \n");
printf("5----查询:
查询缺课学生人数 \n");
printf("6----统计:
统计缺课学生人数\n");
printf("0----退出程序。
\n");
}
intmain()
{
intop,choice=1;
while(choice==1)
{ menu();
scanf("%d",&op);
switch(op)
{case1:
inputEmpInfo();break;
case2:
add(); break;
case3:
deleteEmp(); break;
case4:
show(); break;
case5:
findByEmpName();break;
case6:
tong(); break;
case0:
printf("欢迎使用学生上课签到系统,再见!
!
!
");return0;
}
}
}