学生教务管理系统.docx

上传人:b****1 文档编号:1797673 上传时间:2023-05-01 格式:DOCX 页数:36 大小:201.61KB
下载 相关 举报
学生教务管理系统.docx_第1页
第1页 / 共36页
学生教务管理系统.docx_第2页
第2页 / 共36页
学生教务管理系统.docx_第3页
第3页 / 共36页
学生教务管理系统.docx_第4页
第4页 / 共36页
学生教务管理系统.docx_第5页
第5页 / 共36页
学生教务管理系统.docx_第6页
第6页 / 共36页
学生教务管理系统.docx_第7页
第7页 / 共36页
学生教务管理系统.docx_第8页
第8页 / 共36页
学生教务管理系统.docx_第9页
第9页 / 共36页
学生教务管理系统.docx_第10页
第10页 / 共36页
学生教务管理系统.docx_第11页
第11页 / 共36页
学生教务管理系统.docx_第12页
第12页 / 共36页
学生教务管理系统.docx_第13页
第13页 / 共36页
学生教务管理系统.docx_第14页
第14页 / 共36页
学生教务管理系统.docx_第15页
第15页 / 共36页
学生教务管理系统.docx_第16页
第16页 / 共36页
学生教务管理系统.docx_第17页
第17页 / 共36页
学生教务管理系统.docx_第18页
第18页 / 共36页
学生教务管理系统.docx_第19页
第19页 / 共36页
学生教务管理系统.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生教务管理系统.docx

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

学生教务管理系统.docx

学生教务管理系统

学生教务管理系统

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

2.1前言

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

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

2.2系统需求分析

2.2.1问题定义

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

本系统主要面对学生,教师,教务处,所以进入该系统时可以选择不同的身份进入,若已存在账号,则可以直接进去选择自己的身份,若不存在账号,则需2

要管理员进入添加,管理员可以进行的功能有成绩管理,学生管理,教师管理,管理员管理,每个模块都有添加,删除,修改,统计,查询五个基本功能。

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

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

需求分析2.2.学管系

管教学

教学成管成个查修个管管管管管员

信息理

2.3系统设计

2.3.1系统架构

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

3

学生管理系统管理员模块:

管理教师:

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

管理学生:

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

询管理管理员:

管理员添加,管理员修改,管理员删除,管理员统

计,管理员查询成绩管理:

计算个人成绩,计算各科成绩,计算平均成绩,计算

最高最低分,排序学生模块:

查询个人成绩,查询个人信息,修改个人信息,查教师模块:

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

2.3.2数据物理设计学生

姓char

char学

是char

出身地

否char

证份身号是char方联系式4

教师为否据类可列名数空型

姓char

char教师char

出身char

charchar

管理列

char姓

char证件

是出身地char

char

否份身证号是char系联方式

5

成绩列名数据类可否为

char

学float

float

float语言floatfloatfloat总否float

平均分否2.3.3功能模块管理员可以进行的功能有成绩管理,学生管理,教师管理,管理员管理,每个模块都有添加,删除,修改,统计,查询五个基本功能。

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

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

6

2.4系统实现

系统硬件环境为计算机,系统软件环境:

VC++6.0,TC3.0

2.4.4系统功能模块设计与实现

2.4.4.1功能实现

下面分别对该模块中的具体功能进行详细描述,并配相应功能的截图

1.添加功能

FILE*fp;

charch2;

inti=0,ch1;

牰湩晴尨欢迎进入防灾科技学院学生管理系统\n);

瀠楲瑮?

添加请输入y,退出请输入n\n);

scanf(%c,&ch2);

if(ch2=='y')

{

do

{

fp=fopen(manager.txt,a+);

/*输入所要添加的内容*/

7

fwrite(&manager[i],sizeof(struct

manager),1,fp);

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

牰湩晴尨是否继续添加,继续添加请输入1,否则输入0\n);

scanf(%d,&ch1);

i++;

fclose(fp);

}while(ch1==1);

}

2.修改功能

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

具体实现代8

码如下:

fp=fopen(manager.txt,

+);

牰湩晴尨请输入需要修改的人员的编号\n);

scanf(%s,str);

for(i=0;fread(&manager[i],sizeof(struct

manager),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);

牰湩晴尨确认修改,确认请输入1,退出则输入0\n);

scanf(%d,&ch1);

if(ch1==1)

{

/*选择修改的类型*/

scanf(%d,&ch2);

9

switch(ch2)

{

case1:

{

牰湩晴尨请输入所要修改的姓名\n);

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

fwrite(&manager[i],sizeof(struct

manager),1,fp);

}break;

3.删除功能

删除可以依据证件号和姓名查询,删除方法是,先找到需要删除的人,然后10

让排在其后的人员的信息替换这个人的信息。

具体代码如下:

FILE*fp;

charname[20];

inti,flag,n,j,ch;

fp=fopen(manager.txt,

+);

printf(originaldata\n);

for(i=0,flag=1;fread(&teacher[i],sizeof(struct

teacher),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

{

牰湩晴尨请输入您所要删除的人员的名字\n);

scanf(%s,name);

fp=fopen(manager.txt,

);

11

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(

otfound\n);

fp=fopen(manager.txt,w);

for(i=0;i

fwrite(&manager[i],sizeof(struct

manager),1,fp);

fclose(fp);

fp=fopen(manager.txt,

);

for(i=0,flag=1;fread(&manager[i],sizeof(struct

12

manager),1,fp)!

=0;i++)

printf(%s,%s,%s,%s\n,manager[i].na

me,manager[i].sex,manager[i].mnum,manager[i].zhiwei);

fclose(fp);

牰湩晴尨是否继续删除,继续请输入1,否则请输入0\n);

scanf(%d,&ch);

}while(ch==1);

}

4.查询功能

FILE*fp;

inti;

charname[20];

intch1;

13

do

{

牰湩晴尨请输入姓名);

scanf(%s,name);

fp=fopen(manager.txt,

);

for(i=0;fread(&manager[i],sizeof(struct

manager),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);

牰湩晴尨继续请输入1,否则输入0\n);

scanf(%d,&ch1);

}while(ch1==1);

}

14

统计功能5.FILE*fp;

intn,i;

fp=fopen(manager.txt,

);

for(i=0;fread(&manager[i],sizeof(struct

manager),1,fp)!

=0;i++)

n=i+1;

fclose(fp);

\n,n);

名管理员牰湩晴尨共有%d

权限管理:

6.FILE*fp;

charmnum[10],str[10];

inti,flag,n;

fp=fopen(manager.txt,

+);

15

牰湩晴尨欢迎进入学生管理系统\n);

牰湩晴尨请输入证件号\n);

scanf(%s,mnum);牰湩晴尨请输入密码

\n);

scanf(%s,str);

for(i=0;fread(&manager[i],sizeof(struct

manager),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)

16

牰湩晴尨警告,密码输入错误\n);

}

7.成绩添加

由教师添加,根据教师所教授课程而添加,具体实现代码:

FILE*fp,*fp1,*fp2;

inti,n,k,j;

chartnum[10],snum[10];

char

瑳?

嵛尽慭桴?

瑳?

嵛尽桰?

瑳?

嵛尽彣慬杮慵敧,str4[]=english,str5[]=practise;

牰湩晴尨请输入您的教师号\n);

scanf(%s,tnum);

fp=fopen(eacher.txt,

);

for(i=0;fread(&teacher[i],sizeof(struct

teacher),1,fp)!

=0;i++)

{

17

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,a+);

牰湩晴尨请输入您所要添加学生的学号\n);

scanf(%s,snum);

j=0;

for(i=0;fread(&student[i],sizeof(struct

student),1,fp1)!

=0;i++)

{

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

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

}

牰湩晴尨请输入高等数学的成绩18

\n);

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

fwrite(&grade[j],sizeof(struct

grade),1,fp2);

j++;

fclose(fp1);

fclose(fp2);

牰湩晴尨是否继续添加,是1,否0\n);

scanf(%d,&k);

}while(k==1);

}

else

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

{

继续添加其他课程

else牰湩晴尨不存在这门课,请核实\n);

fclose(fp);

}

19

.成绩计算8FILE*fp;

inti;

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

for(i=0;fread(&grade[i],sizeof(struct

grade),1,fp)!

=0;i++)

{

grade[i].sum=grade[i].math+grade[i].ph+g

rade[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);

是20

牰湩晴尨学号为%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,

);

for(i=0;fread(&grade[i],sizeof(struct

grade),1,fp)!

=0;i++);

n=i+1;

21

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

{

牰湩晴尨学号为%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.计算成绩最高最低分,、

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

具体实现代码如下:

22

FILE*fp,*fp1;

inti,n,k;

floatmax,min;

fp=fopen(grade.txt,

);

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

for(i=0;fread(&grade[i],sizeof(struct

grade),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)

23

min=grade[i].aver;

k=i;

}

grade_count.amin=min;

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

fwrite(&grade_count,sizeof(struct

grade_count),1,fp);

fclose(fp);

fclose(fp1);

}

24

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

当前位置:首页 > 初中教育 > 语文

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

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