学生教务管理系统.docx

上传人:b****5 文档编号:14278544 上传时间:2023-06-22 格式:DOCX 页数:15 大小:34.38KB
下载 相关 举报
学生教务管理系统.docx_第1页
第1页 / 共15页
学生教务管理系统.docx_第2页
第2页 / 共15页
学生教务管理系统.docx_第3页
第3页 / 共15页
学生教务管理系统.docx_第4页
第4页 / 共15页
学生教务管理系统.docx_第5页
第5页 / 共15页
学生教务管理系统.docx_第6页
第6页 / 共15页
学生教务管理系统.docx_第7页
第7页 / 共15页
学生教务管理系统.docx_第8页
第8页 / 共15页
学生教务管理系统.docx_第9页
第9页 / 共15页
学生教务管理系统.docx_第10页
第10页 / 共15页
学生教务管理系统.docx_第11页
第11页 / 共15页
学生教务管理系统.docx_第12页
第12页 / 共15页
学生教务管理系统.docx_第13页
第13页 / 共15页
学生教务管理系统.docx_第14页
第14页 / 共15页
学生教务管理系统.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生教务管理系统.docx

《学生教务管理系统.docx》由会员分享,可在线阅读,更多相关《学生教务管理系统.docx(15页珍藏版)》请在冰点文库上搜索。

学生教务管理系统.docx

学生教务管理系统

2任务二基于文件的学生/教务管理系统

2.1前言

为了巩固我们C语言知识,并了解其在生活中的应用,由老师为我们带来了这个题目。

通过实训,学会为实际应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,从而对C语言程序设计这门课能有一个更深刻的理解和认识;再者,实训相对于平时试验课来说,要完成的是一个难度较大的可执行综合性程序,培养需求分析和系统架构等处理复杂问题的能力,从而极大的提高学生的编程能力以及撰写文档的能力;希望能通过实训,实际做到理论和实践紧密结合,同时也为后续课程打下坚实的基础知识。

2.2系统需求分析

2.2.1问题定义

本系统可以应用于教务处,进行对学生,教师,教务处人员的管理(添加,修改,删除,统计),人员查询,成绩查询(可以按照姓名查询,证件号查询)。

本系统主要面对学生,教师,教务处,所以进入该系统时可以选择不同的身份进入,若已存在账号,则可以直接进去选择自己的身份,若不存在账号,则需要管理员进入添加,管理员可以进行的功能有成绩管理,学生管理,教师管理,管理员管理,每个模块都有添加,删除,修改,统计,查询五个基本功能。

而教师则可以进行成绩的添加,修改,查询,等功能。

学生只有查询和修改个人信息的功能。

2.2.2需求分析

2.3系统设计

2.3.1系统架构

将要实现的模块分级进行架构

学生管理系统

管理员模块:

管理教师:

教师添加,教师修改,教师删除,教师统计,教师查询

管理学生:

学生添加,学生修改,学生删除,学生统计,学生查询

管理管理员:

管理员添加,管理员修改,管理员删除,管理员统计,管理员查询

成绩管理:

计算个人成绩,计算各科成绩,计算平均成绩,计算最高最低分,排序

学生模块:

查询个人成绩,查询个人信息,修改个人信息

教师模块:

添加学生成绩,修改学生成绩,删除学生成绩,查询学生信息,查询个人信息,修改个人信息。

2.3.2数据物理设计

学生

列名

数据类型

可否为空

姓名

char

学号

char

出身地

char

身份证号

char

联系方式

char

教师

列名

数据类型

可否为空

姓名

char

教师号

char

出身地

char

身份证号

char

联系方式

char

课程

char

管理员

列名

数据类型

可否为空

姓名

char

证件号

char

出身地

char

身份证号

char

联系方式

char

成绩

列名

数据类型

可否为空

学号

char

数学成绩

float

体育成绩

float

英语成绩

float

C语言成绩

float

社会实践

float

总分

float

平均分

float

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");

printf("添加请输入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);

printf("是否继续添加,继续添加请输入1,否则输入0\n");

scanf("%d",&ch1);

i++;

fclose(fp);

}while(ch1==1);

}

2.修改功能

首先选择修改的依据,可以依据证件号,姓名两张方式修改。

具体实现代码如下:

fp=fopen("manager.txt","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("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);

printf("确认修改,确认请输入1,退出则输入0\n");

scanf("%d",&ch1);

if(ch1==1)

{

/*选择修改的类型*/

scanf("%d",&ch2);

switch(ch2)

{

case1:

{

printf("请输入所要修改的姓名\n");

scanf("%s",manager[i].name);

fwrite(&manager[i],sizeof(structmanager),1,fp);

}break;

3.删除功能

删除可以依据证件号和姓名查询,删除方法是,先找到需要删除的人,然后让排在其后的人员的信息替换这个人的信息。

具体代码如下:

FILE*fp;

charname[20];

inti,flag,n,j,ch;

fp=fopen("manager.txt","r+");

printf("originaldata\n");

for(i=0,flag=1;fread(&teacher[i],sizeof(structteacher),1,fp)!

=0;i++)

printf("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);

n=i+1;

fclose(fp);

do

{

printf("请输入您所要删除的人员的名字\n");

scanf("%s",name);

fp=fopen("manager.txt","r");

for(i=0,flag=1;flag&&i

{

if(strcmp(name,manager[i].name)==0)

{

for(j=i;j

{

/*后一个人的信息覆盖所需删除人的信息*/

}flag=0;

}

}

if(!

flag)

n=n-1;

elseprintf("notfound\n");

fp=fopen("manager.txt","w");

for(i=0;i

fwrite(&manager[i],sizeof(structmanager),1,fp);

fclose(fp);

fp=fopen("manager.txt","r");

for(i=0,flag=1;fread(&manager[i],sizeof(structmanager),1,fp)!

=0;i++)

printf("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);

fclose(fp);

printf("是否继续删除,继续请输入1,否则请输入0\n");

scanf("%d",&ch);

}while(ch==1);

}

4.查询功能

FILE*fp;

inti;

charname[20];

intch1;

do

{

printf("请输入姓名");

scanf("%s",name);

fp=fopen("manager.txt","r");

for(i=0;fread(&manager[i],sizeof(structmanager),1,fp)!

=0;i++)

{

if(strcmp(name,manager[i].name)==0)printf("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);

}

fclose(fp);

printf("继续请输入1,否则输入0\n");

scanf("%d",&ch1);

}while(ch1==1);

}

5.统计功能

FILE*fp;

intn,i;

fp=fopen("manager.txt","r");

for(i=0;fread(&manager[i],sizeof(structmanager),1,fp)!

=0;i++)

n=i+1;

fclose(fp);

printf("共有%d名管理员\n",n);

6.权限管理:

FILE*fp;

charmnum[10],str[10];

inti,flag,n;

fp=fopen("manager.txt","r+");

printf("欢迎进入学生管理系统\n");

printf("请输入证件号\n");

scanf("%s",mnum);printf("请输入密码\n");

scanf("%s",str);

for(i=0;fread(&manager[i],sizeof(structmanager),1,fp)!

=0;i++)

{

n=i+1;printf("%d",n);

}

for(i=0,flag=1;i

{

if((strcmp(mnum,manager[i].mnum)==0)&&(strcmp(str,manager[i].mima)==0))

{

managermanage();

flag=0;

}

}

fclose(fp);

if(flag)

printf("警告,密码输入错误\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";

printf("请输入您的教师号\n");

scanf("%s",tnum);

fp=fopen("teacher.txt","r");

for(i=0;fread(&teacher[i],sizeof(structteacher),1,fp)!

=0;i++)

{

if(strcmp(tnum,teacher[i].tnum)==0)

n=i;

}

if(strcmp(teacher[n].course,str1)==0)

{

do{

fp1=fopen("student.txt","r");

fp2=fopen("grade.txt","a+");

printf("请输入您所要添加学生的学号\n");

scanf("%s",snum);

j=0;

for(i=0;fread(&student[i],sizeof(structstudent),1,fp1)!

=0;i++)

{

if(strcmp(snum,student[i].snum)==0)

strcpy(grade[j].num,student[i].snum);

}

printf("请输入高等数学的成绩\n");

scanf("%f",&grade[j].math);

fwrite(&grade[j],sizeof(structgrade),1,fp2);

j++;fclose(fp1);

fclose(fp2);

printf("是否继续添加,是1,否0\n");

scanf("%d",&k);

}while(k==1);

}

elseif(strcmp(teacher[n].course,str4)==0)

{

继续添加其他课程

elseprintf("不存在这门课,请核实\n");

fclose(fp);

}

8.成绩计算:

FILE*fp;

inti;

fp=fopen("grade.txt","a+");

for(i=0;fread(&grade[i],sizeof(structgrade),1,fp)!

=0;i++)

{

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;

printf("学号为%s的学生的总成绩是%f\n",grade[i].num,grade[i].sum);

printf("学号为%s的学生的平均成绩是%f\n",grade[i].num,grade[i].aver);

fwrite(&grade[i],sizeof(structgrade),1,fp);

}

fclose(fp);

9.成绩排序

主要是运用冒泡排序法。

代码:

FILE*fp,*fp1;

inti,n,j;

floattemp;

fp=fopen("grade.txt","r");

for(i=0;fread(&grade[i],sizeof(structgrade),1,fp)!

=0;i++);

n=i+1;

for(i=0;i

{

for(j=0;j

if(grade[j].aver

{

temp=grade[j].aver;

grade[j].aver=grade[j+1].aver;

grade[j+1].aver=temp;

}

}

for(i=0;i

{

printf("学号为%s的学生的成绩为%f\n",grade[i].num,grade[i].aver);

}

fp1=fopen("grade1.txt","a+");

fwrite(&grade[i],sizeof(structgrade),1,fp1);

fclose(fp1);

fclose(fp);

10.计算成绩最高最低分,、

采用穷比法,首先设第一个人的成绩是最高或最低,再和其他人员的成绩比较,直到所有人员比较完之后,找出最高分或最低分。

具体实现代码如下:

FILE*fp,*fp1;

inti,n,k;

floatmax,min;

fp=fopen("grade.txt","r");

fp1=fopen("count.txt","a+");

for(i=0;fread(&grade[i],sizeof(structgrade),1,fp)!

=0;i++)

n=i+1;

max=grade[0].aver;

min=grade[0].aver;

for(i=1;i

{

if(max

max=grade[i].aver;

k=i;

}

grade_count.amax=max;

strcpy(grade_count.str1,grade[k].num);

for(i=1;i

{

if(min>grade[i].aver)

min=grade[i].aver;

k=i;

}

grade_count.amin=min;

strcpy(grade_count.str2,grade[k].num);

fwrite(&grade_count,sizeof(structgrade_count),1,fp);

fclose(fp);

fclose(fp1);

}

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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