学生教务管理系统Word文档下载推荐.docx
《学生教务管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生教务管理系统Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
2.3.2数据物理设计
学生
列名
数据类型
可否为空
char
否
学号
出身地
是
号
联系方式
教师
教师号
课程
管理员
证件号
成绩
数学成绩
float
体育成绩
英语成绩
C语言成绩
社会实践
总分
平均分
2.3.3功能模块
管理员可以进行的功能有成绩管理,学生管理,教师管理,管理员管理,每个模块都有添加,删除,修改,统计,查询五个基本功能。
2.4系统实现
系统硬件环境为计算机,系统软件环境:
VC++6.0,TC3.0
2.4.4系统功能模块设计与实现
2.4.4.1功能实现
下面分别对该模块中的具体功能进行详细描述,并配相应功能的截图
1.添加功能
FILE*fp;
charch2;
inti=0,ch1;
printf("
欢迎进入防灾科技学院学生管理系统\n"
);
添加请输入y,退出请输入n\n"
scanf("
%c"
&
ch2);
if(ch2=='
y'
)
{
do
fp=fopen("
manager.txt"
"
a+"
/*输入所要添加的容*/
fwrite(&
manager[i],sizeof(structmanager),1,fp);
printf("
%s,%s,%s,%s\n"
manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);
是否继续添加,继续添加请输入1,否则输入0\n"
%d"
ch1);
i++;
fclose(fp);
}while(ch1==1);
}
2.修改功能
首先选择修改的依据,可以依据证件号,两方式修改。
具体实现代码如下:
fp=fopen("
r+"
printf("
请输入需要修改的人员的编号\n"
scanf("
%s"
str);
for(i=0;
fread(&
manager[i],sizeof(structmanager),1,fp)!
=0;
i++)
{
if(strcmp(str,manager[i].mnum)==0)
{
printf("
manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);
确认修改,确认请输入1,退出则输入0\n"
scanf("
if(ch1==1)
{
/*选择修改的类型*/
switch(ch2)
case1:
{
printf("
请输入所要修改的\n"
scanf("
manager[i].name);
fwrite(&
}break;
3.删除功能
删除可以依据证件号和查询,删除方法是,先找到需要删除的人,然后让排在其后的人员的信息替换这个人的信息。
具体代码如下:
charname[20];
inti,flag,n,j,ch;
originaldata\n"
for(i=0,flag=1;
teacher[i],sizeof(structteacher),1,fp)!
n=i+1;
fclose(fp);
do
请输入您所要删除的人员的名字\n"
name);
r"
flag&
&
i<
n;
if(strcmp(name,manager[i].name)==0)
for(j=i;
j<
n-1;
j++)
/*后一个人的信息覆盖所需删除人的信息*/
}flag=0;
if(!
flag)
n=n-1;
elseprintf("
notfound\n"
w"
for(i=0;
fwrite(&
manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);
是否继续删除,继续请输入1,否则请输入0\n"
ch);
}while(ch==1);
}
4.查询功能
inti;
intch1;
请输入"
if(strcmp(name,manager[i].name)==0)printf("
}
继续请输入1,否则输入0\n"
5.统计功能
intn,i;
共有%d名管理员\n"
n);
6.权限管理:
FILE*fp;
charmnum[10],str[10];
inti,flag,n;
欢迎进入学生管理系统\n"
请输入证件号\n"
mnum);
请输入密码\n"
scanf("
n=i+1;
printf("
n&
flag;
if((strcmp(mnum,manager[i].mnum)==0)&
(strcmp(str,manager[i].mima)==0))
{
managermanage();
flag=0;
if(flag)
警告,密码输入错误\n"
7.成绩添加
由教师添加,根据教师所教授课程而添加,具体实现代码:
FILE*fp,*fp1,*fp2;
inti,n,k,j;
chartnum[10],snum[10];
charstr1[]="
math"
str2[]="
ph"
str3[]="
c_language"
str4[]="
english"
str5[]="
practise"
;
请输入您的教师号\n"
tnum);
fp=fopen("
teacher.txt"
if(strcmp(tnum,teacher[i].tnum)==0)
n=i;
}
if(strcmp(teacher[n].course,str1)==0)
do{
fp1=fopen("
student.txt"
fp2=fopen("
grade.txt"
printf("
请输入您所要添加学生的学号\n"
scanf("
snum);
j=0;
for(i=0;
student[i],sizeof(structstudent),1,fp1)!
{
if(strcmp(snum,student[i].snum)==0)
strcpy(grade[j].num,student[i].snum);
}
请输入高等数学的成绩\n"
%f"
grade[j].math);
fwrite(&
grade[j],sizeof(structgrade),1,fp2);
j++;
fclose(fp1);
fclose(fp2);
是否继续添加,是1,否0\n"
k);
}while(k==1);
}
elseif(strcmp(teacher[n].course,str4)==0)
继续添加其他课程
不存在这门课,请核实\n"
fclose(fp);
8.成绩计算:
inti;
grade[i],sizeof(structgrade),1,fp)!
grade[i].sum=grade[i].math+grade[i].ph+grade[i].english+grade[i].c_language+grade[i].practise;
grade[i].aver=grade[i].sum/5;
学号为%s的学生的总成绩是%f\n"
grade[i].num,grade[i].sum);
学号为%s的学生的平均成绩是%f\n"
grade[i].num,grade[i].aver);
grade[i],sizeof(structgrade),1,fp);
9.成绩排序
主要是运用冒泡排序法。
代码:
FILE*fp,*fp1;
inti,n,j;
floattemp;
i++);
n=i+1;
for(j=0;
n-i;
if(grade[j].aver<
grade[j+1].aver)
temp=grade[j].aver;
grade[j].aver=grade[j+1].aver;
grade[j+1].aver=temp;
学号为%s的学生的成绩为%f\n"
fp1=fopen("
grade1.txt"
grade[i],sizeof(structgrade),1,fp1);
fclose(fp1);
10.计算成绩最高最低分,、
采用穷比法,首先设第一个人的成绩是最高或最低,再和其他人员的成绩比较,直到所有人员比较完之后,找出最高分或最低分。
FILE*fp,*fp1;
inti,n,k;
floatmax,min;
fp1=fopen("
count.txt"
max=grade[0].aver;
min=grade[0].aver;
for(i=1;
if(max<
grade[i].aver)
max=grade[i].aver;
k=i;
grade_count.amax=max;
strcpy(grade_count.str1,grade[k].num);
if(min>
min=grade[i].aver;
grade_count.amin=min;
strcpy(grade_count.str2,grade[k].num);
fwrite(&
grade_count,sizeof(structgrade_count),1,fp);
fclose(fp);