学生教务管理系统

  • 格式:doc
  • 大小:230.00 KB
  • 文档页数:13

. . . .页脚. 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; char ch2; int i=0,ch1; printf("欢迎进入防灾科技学院学生管理系统\n"); printf("添加请输入y,退出请输入n\n"); scanf("%c",&ch2); if(ch2=='y') { do { fp=fopen("manager.txt","a+"); /*输入所要添加的容*/ 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); . . . .页脚. 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(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); printf("确认修改,确认请输入1,退出则输入0\n"); scanf("%d",&ch1); if(ch1==1) { /*选择修改的类型*/ scanf("%d",&ch2); switch(ch2) { case 1:{ printf("请输入所要修改的\n"); . . . .页脚. scanf("%s",manager[i].name); fwrite(&manager[i],sizeof(struct manager),1,fp); }break;

3. 删除功能 删除可以依据证件号和查询,删除方法是,先找到需要删除的人,然后让排在其后的人员的信息替换这个人的信息。具体代码如下: FILE *fp; char name[20]; int i,flag,n,j,ch; fp=fopen("manager.txt","r+"); printf("original data\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 { 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; else printf("not found\n"); fp=fopen("manager.txt","w"); for(i=0;i fwrite(&manager[i],sizeof(struct manager),1,fp); fclose(fp); fp=fopen("manager.txt","r"); for(i=0,flag=1;fread(&manager[i],sizeof(struct manager),1,fp)!=0;i++)

printf("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiw ei); fclose(fp); printf("是否继续删除,继续请输入1,否则请输入0 \n"); scanf("%d",&ch); }while(ch==1); }

4. 查询功能 FILE *fp; int i; char name[20]; int ch1; do . . . .页脚. { printf("请输入"); scanf("%s",name); fp=fopen("manager.txt","r"); 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); printf("继续请输入1,否则输入0\n"); scanf("%d",&ch1); }while(ch1==1); }

5. 统计功能 FILE *fp; int n,i; fp=fopen("manager.txt","r"); for(i=0;fread(&manager[i],sizeof(struct manager),1,fp)!=0;i++) n=i+1; fclose(fp); printf("共有%d名管理员\n",n);

6. 权限管理: FILE *fp; char mnum[10],str[10]; int i,flag,n;