学生档案查询系统摘要:高校学生档案管理是高校日常管理的一个重要组成部分,其管理效率的高低直接影响着整个学校的管理工作。
为方便学生的管理工作,遂开发此系统。
此系统包括对学生的基本信息管理,成绩管理,课程管理。
采用目前流行的Visual C++, Access数据库作为主要开发工具。
查询系统由系统用户管理模块、课程管理模块、成绩管理模块和学生的基本信息管理模块这四个模块组成,四个模块的设计及查询界面主要在详细设计中体现出来,即本论文的主要侧重点。
一、概述1. 背景介绍学生档案查询系统是一个教育单位必不可少的组成部分,它对于学校的管理来说至关重要。
在这个科学技术的不断提高,计算机科学日渐成熟,且讲究高效率的社会,人工管理文件档案的方式就显得效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
这已远远不能满足学校和学生的需求。
所以作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
因此,开发这样一套软件成为很有必要的事情。
2. 系统可行性分析①经济可行性研究本系统为小型开发系统,且开发系统的目的不是达到经济收益,而主要目的是锻炼学生的动手能力,并注重小组成员之间的合作能力,达到小组成员整体水平的提高。
故在经济上此系统的开发不会受到影响。
对于开发过程中的所需的打印等费用自付。
②技术可行性研究本软件的开发在技术方面采用visual C++和Access数据库相结合的方法来实现。
使用此系统只需添置低档计算机,如果条件允许可添加打印机以便查询能方便打印成资料作为参考;对现有软件不会产生冲突,对使用的操作系统来说有很好的兼容性、稳定性。
该系统软件界面清晰,整洁。
功能一目了然,操作简单,容易上手,对于一般网络操作者都能胜任。
3. 内容介绍本系统主要包括系统用户管理、学生的基本信息管理、课程管理、成绩管理和系统用户管理这4个方面。
系统用户管理模块用于管理用户登陆时的用户信息,所包含的字段有:用户名、密码、身份。
用户进入系统后,通过身份决定用户是有什么权限。
学生的基本信息管理模块用于管理学生的基本信息,所包含的字段有:学号、姓名、性别、班级、专业、家庭住址、联系电话、身份证号等。
课程管理模块用于管理课程的信息,所包含的字段有:课程号、课程名、本学期课程、任课教师、学分等。
成绩管理模块用于管理学生的成绩,所包含的字段有:学号、课程号、学年、学期平时成绩、期末成绩、总评成绩、备注等。
二、需求分析1. 用户需求本系统是针对高等院校的学生档案管理,因此此系统的用户主要包括系统管理员、教师和学生。
主要涉及班级信息、学生信息、课程信息和成绩等数据信息。
实现的具体功能如下:系统用户管理——系统管理员负责用不同的权限来限制不同用户对系统的使用。
学生基本信息管理——系统管理员对学生基本信息的录入、修改、删除等操作。
学生成绩管理——系统管理员负责对学生成绩的录入、修改、删除等操作,学生可以查询各科成绩。
学生课程管理——系统管理员负责对学生选课情况进行录入、修改等操作。
方便学生查看。
以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。
2. 一级数据流图如下图三、系统详细设计1. 系统结构图2. 关键模块的设计①系统用户管理模块char password[7]="888888"; /*定义初始密码*/ void main() /*主函数*/{ int flag=0,i; /*标志项*/int n=3;do{ printf("Enter password:\n");scanf("%s",s);if(!strcmp(s,password)) /*进行密码匹配验证*/ { printf("欢迎进入学生档案查询系统\n\n\n");flag=1;break;}else{printf("Error Enter again:\n");n--;}}while(n>0);if(!flag){printf("you have Enter 3 times!"); /*输入密码超过了3次!!*/exit(0); /*自动退出*/}}②学生的基本信息管理模块#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>/ 字定义函数声明 /void Search(); //查找记录void Views(); //查看所有记录int check(char strID[]); //查找文件记录中已经存在的学生IDstruct student{ //学生信息(学号,姓名,性别,籍贯,电话,住址,民族);char ID[10]; char name[10]; char sex[4];char nativePlace[10];char phone[13]; char nation[6];};struct student stu;FILE *fp;//定义文件指针void main(){int flag;while(flag!=7){printf("\n\t\t 请选择您所要的操作 \n");printf("\t\t‖1、查询记录 2所有记录列表\n");printf("\t\t‖按任意键退出‖\n");scanf("%d",&flag);switch(flag){case 1:Search(); //查找记录getch();system("cls"); break;case 2:Views(); //查看所有记录getch();system("cls");break;default:exit(0);}}}void Search()/ 查找数据 /{if((fp=fopen("StudentMessage","rb"))==NULL) //以只读方式打开StudentMessage文件{printf("\t文件打开失败!\n");return;}else{char message[10]; //接收用户需要查找的信息int i;long flength,offset;fseek(fp,0,SEEK_END); //将文件指针移文件尾flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录 printf("\t请输入您要查找的学号:");scanf("%s",message);i=check(message);offset=sizeof(struct student)*i;if(flength==0){printf("\t文件记录为空!\n");return;}else if(i>flength){printf("\t\t查找失败,没有找到相应信息!\n");return;}else //输出查找到的内容{ rewind(fp);fseek(fp,offset,SEEK_SET);fread(&stu,sizeof(struct student),1,fp);printf("学号:%s ",stu.ID);printf("姓名:%s ",);printf("性别:%s",stu.sex);printf("籍贯:%s ",stu.nation);printf("电话:%s",stu.phone);printf("民族:%s",stu.native)}fclose(fp);}}void Views() / 查看所有记录 /{long flength;if((fp=fopen("StudentMessage","rb"))==NULL){printf("文件打开失败!\n");exit(1);}fseek(fp,0,SEEK_END); //移动文件指针到文件尾flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录 if(flength==0){printf("文件中没有记录!");return;}rewind(fp); //将文件指针移动到文件头printf("\t\t\t所有记录列表\n\n");while(!feof(fp)){fread(&stu,sizeof(stu),1,fp);if(strcmp(stu.ID,"")!=0) //检测文件中的空字符串,如果不是空字符则输出{ printf("学号:%s ",stu.ID);printf("姓名:%s ",); printf("性别:%s",stu.sex);printf("籍贯:%s ",stu.nation); printf("电话:%s",stu.phone);printf("民族:%s",stu.native) }fclose(fp);}③课程管理模块void CPageCho::Query(){ variant_t var,varCou,varStu;CString str; //定义变量//更新控件变量的值UpdateData(true);if(m_SID == 0 || m_CID == 0){MessageBox("学号和课程号一个也不能为空!");return;}try{m_pRecordset->MoveFirst();while(!m_pRecordset->adoEOF){varCou = m_pRecordset->GetCollect("CID");varStu = m_pRecordset->GetCollect("SID");//所以查询时必须满足学号和课程号同时吻合才行 if(m_CID == varCou.iVal && m_SID == varStu.iVal){var = m_pRecordset->GetCollect("CID");if(var.vt != VT_NULL){m_CID = var.iVal;}var = m_pRecordset->GetCollect("SID");m_SID = var.iVal;var = m_pRecordset->GetCollect("IsPass");if(var.vt != VT_NULL)m_IsPass = var.iVal;var = m_pRecordset->GetCollect("Score");m_Score = var.iVal;UpdateData(false);break;}else{m_pRecordset->MoveNext();}}if(m_pRecordset->adoEOF){MessageBox("该生没有选这门课程!");Else{printf("%s\t%s\t",coursename[m_SID],coursehao[m_SID], courseteacher[m_SID]);}}④成绩管理模块void score(void){int s,n,t;for(n=0;n<32;n++){if(students[n].id!=0){printf("学号:%d 姓名:%s 成绩:",students[n].id,students[n].name); for(n=0;n<32;n++){if(INDEX[n]!=-1){x=INDEX[n];printf("%d\t%s\t",students[x].id,students[x].name);printf("%d\t%d\t",students[x].age,students[x].chinese);printf("%d\t%d\t",students[x].math,students[x].english);printf("%d\n",students[x].chinese+students[x].math+students[x].eng lish);}}}3. 数据库设计本数据库采用SQL Server 2000来构造,主要产生了3个表,分别为学生基本信息表,课程信息表,教师授课信息表。