*******************实践教学*******************兰州理工大学计算机与通信学院2011年春季学期C程序设计课程设计题目:学生信息管理系统专业班级:通信工程4班*名:***学号:********指导教师:***成绩:摘要随着经济的发展,社会的进步,计算机越来越深入我们的日常的工作及生活中,成为我们生活中不可或缺的辅助工具。
随着科学技术的不断提高,计算机科学日渐成熟。
他进入人类生活的各个领域并发挥着越来越重要的作用。
在学校的学生信息管理中,虽然已存在许多学生信息管理系统,但由于学校之间的管理差异和信息的不同,各个学校的学生信息管理系统以方便学生管理。
本系统主要对学生各种信息进行处理。
本系统采用C语言编写,设计从实际性出发,设计开发出一个操作简单且符合实际需要的学生信息管理系统。
首先本文介绍程序的需求分析工作;然后详细讨论了改程序的系统设计与实现过程,设计出一个可以添加,修改,查询的学生信息管理系统;最后,通过测试分析,力求使系统在实际操作中能按照设计的要求安全有效的正确的运行。
关键词:学生; 管理; 信息目录一、需求分析 (1)二、总体设计 (2)三、详细设计 (5)1、数据定义 (5)2、算法流程图 (6)四、编码 (13)五、测试 (14)参考文献 (18)设计总结 (19)致谢 (20)附录 (21)一、需求分析学生信息管理系统是一个教育单位不可缺少的部分。
一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。
所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。
本系统需要完成的功能有:班级管理、学生管理、科目管理、课程管理、成绩管理以及系统管理员才具有的教师管理和用户管理。
1.班级管理:可对班级进行添加、删除、修改、查找和报表输出等功能,班级属性有:名称、班主任(来自于系统中保存的教师)、当前学生人数、建班日期和备注等属性。
2.学生管理:可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:学号、姓名、性别、所属班级(来自于系统中保存的班级)、相片、出生日期和备注等属性。
3.科目管理:可对科目进行添加、删除、修改、查找和报表输出等功能,科目属性有:科目名称、学时数和备注等属性。
4.课程管理:可对每一个班级的上课科目进行添加、删除、修改、查找和报表输出等功能,课程属性有:所属班级(来自于系统中保存的班级)、授课老师(来自于系统中保存的教师)、开课日期、结课日期和备注等属性。
5.成绩管理:可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找和报表输出等功能,成绩属性有:学生姓名、所属班级(来自于系统中保存的班级)、课程名、成绩、备注等属性。
6. 系统管理:该模块的主要任务是维护系统的正常运行和安全性设置,包括添加用户、修改密码、重新登录等等。
7.系统模块的实现在系统中包括以下功能:系统管理、学生信息管理、课程信息管理、成绩信息管理、班级信息管理。
二、总体设计1.系统结构图(功能模块图)和数据变量说明(如图1所示)2.功能模块说明 1).输入模块(如图2所示) 2).登记模块(如图3所示)图3登记信息图 图2 输入学生信息机构图3).查找模块(如图4所示) 4).修改模块(如图5所示)图4查找学生信息图5修改学生信息5).增加模块(如图6所示)图6 增加学生信息三、详细设计1. 数据定义说明:该程序定义了一个结构体,结构体变量名为student,结构体数组包含:(char型)学号、(char型)学生姓名以及(int型)学生成绩。
该结构体如下:typedef struct /*定义结构体数组*/{char num[10]; /*学号*/char name[20]; /*姓名*/}Student;Student stu[80]; /*结构体数组变量*/变量、数组、指针变量char num[10];/* 学号 */char name[20];char sex[4];int age;int birth;int tele;char addr[30]2.算法流程图1)保存函数Save()的算法流程图(如图7所示)。
图7 保存函数Save()的算法流程图2)按姓名查找的算法流程图(如图8所示)printf(" 请输入要查询的学生的姓名: \n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月家庭地址电话 E-mail \n");printf("================================================================================\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该姓名不存在!\n");break;图8 按姓名查找的算法流程图3)按学号查询流程图(如图9所示)rintf(" 请输入要查询的学生的学号: \n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月家庭地址电话 E-mail \n");printf("================================================================================\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该学号不存在! \n");break;图9 按学号查询的算法流程图4)修改信息流程图(如图10所示)============================================1.修改姓名2.修改年龄3.修改性别4.修改出生年月5.修改地址6.修改电话号码 ;7.修改E-mail ;8.修改退出本菜单=============================================图10 修改信息流程图5)增加学生信息流程图(如图11所示)请输入将要增加的学生数目:X输入学生就具体信息:printf("请输入第%d个学生的学生姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第%d个学生的学生年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第%d个学生的学生性别:\n",i+1);scanf("%s",stu[i].name);printf("请输入第%d个学生的学生出生年月:(格式:年,月,日)\n",i+1);scanf("%s",stu[i].time);printf("请输入第%d个学生的学生家庭地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第%d个学生的学生电话:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第%d个学生的学生E-mail:\n",i+1);执行X次上述步骤完成增加信息保存输入信息:图11 增加学生信息算法流程6)显示所有信息(如图12所示)printf(" 所有学生的信息为:\n \n");printf("学生学号学生姓名年龄性别出生年月家庭地址电话 E-mail ");printf("================================================================================");for(i=0;i<n;i++){ fread(&stu[i],sizeof(struct record),1,fp);printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);图12查看所有信息算法流程3.函数功能说明程序结构该系统首先定义了包含:学生学号、姓名、成绩的结构体。
然后定义了菜单函数供用户选择,紧接着定义了实现以上各功能的子函数。
最后是主函数,主函数通过switch语句实现对各子函数的调用。