学生档案查询系统论文.docx
《学生档案查询系统论文.docx》由会员分享,可在线阅读,更多相关《学生档案查询系统论文.docx(13页珍藏版)》请在冰豆网上搜索。
学生档案查询系统论文
学生档案查询系统
摘要:
高校学生档案管理是高校日常管理的一个重要组成部分,其管理效率的高低直接影响着整个学校的管理工作。
为方便学生的管理工作,遂开发此系统。
此系统包括对学生的基本信息管理,成绩管理,课程管理。
采用目前流行的VisualC++,Access数据库作为主要开发工具。
查询系统由系统用户管理模块、课程管理模块、成绩管理模块和学生的基本信息管理模块这四个模块组成,四个模块的设计及查询界面主要在详细设计中体现出来,即本论文的主要侧重点。
一、概述
1.背景介绍
学生档案查询系统是一个教育单位必不可少的组成部分,它对于学校的管理来说至关重要。
在这个科学技术的不断提高,计算机科学日渐成熟,且讲究高效率的社会,人工管理文件档案的方式就显得效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
这已远远不能满足学校和学生的需求。
所以作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有着手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
因此,开发这样一套软件成为很有必要的事情。
2.系统可行性分析
①经济可行性研究
本系统为小型开发系统,且开发系统的目的不是达到经济收益,而主要目的是锻炼学生的动手能力,并注重小组成员之间的合作能力,达到小组成员整体水平的提高。
故在经济上此系统的开发不会受到影响。
对于开发过程中的所需的打印等费用自付。
②技术可行性研究
本软件的开发在技术方面采用visualC++和Access数据库相结合的方法来实现。
使用此系统只需添置低档计算机,如果条件允许可添加打印机以便查询能方便打印成资料作为参考;对现有软件不会产生冲突,对使用的操作系统来说有很好的兼容性、稳定性。
该系统软件界面清晰,整洁。
功能一目了然,操作简单,容易上手,对于一般网络操作者都能胜任。
3.内容介绍
本系统主要包括系统用户管理、学生的基本信息管理、课程管理、成绩管理和系统用户管理这4个方面。
系统用户管理模块用于管理用户登陆时的用户信息,所包含的字段有:
用户名、密码、身份。
用户进入系统后,通过身份决定用户是有什么权限。
学生的基本信息管理模块用于管理学生的基本信息,所包含的字段有:
学号、姓名、性别、班级、专业、家庭住址、联系电话、身份证号等。
课程管理模块用于管理课程的信息,所包含的字段有:
课程号、课程名、本学期课程、任课教师、学分等。
成绩管理模块用于管理学生的成绩,所包含的字段有:
学号、课程号、学年、学期平时成绩、期末成绩、总评成绩、备注等。
二、需求分析
1.用户需求
本系统是针对高等院校的学生档案管理,因此此系统的用户主要包括系统管理员、教师和学生。
主要涉及班级信息、学生信息、课程信息和成绩等数据信息。
实现的具体功能如下:
系统用户管理——系统管理员负责用不同的权限来限制不同用户对系统的使用。
学生基本信息管理——系统管理员对学生基本信息的录入、修改、删除等操作。
学生成绩管理——系统管理员负责对学生成绩的录入、修改、删除等操作,学生可以查询各科成绩。
学生课程管理——系统管理员负责对学生选课情况进行录入、修改等操作。
方便学生查看。
以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。
2.一级数据流图如下图
三、系统详细设计
1.系统结构图
2.关键模块的设计
①系统用户管理模块
charpassword[7]="888888";/*定义初始密码*/
voidmain()/*主函数*/
{intflag=0,i;/*标志项*/
intn=3;
do{printf("Enterpassword:
\n");
scanf("%s",s);
if(!
strcmp(s,password))/*进行密码匹配验证*/
{printf("欢迎进入学生档案查询系统\n\n\n");
flag=1;
break;
}
else{
printf("ErrorEnteragain:
\n");
n--;
}
}
while(n>0);
if(!
flag)
{printf("youhaveEnter3times!
");/*输入密码超过了3次!
!
*/
exit(0);/*自动退出*/
}}
②学生的基本信息管理模块
#include
#include
#include
#include
/字定义函数声明/
voidSearch();//查找记录
voidViews();//查看所有记录
intcheck(charstrID[]);//查找文件记录中已经存在的学生ID
structstudent
{//学生信息(学号,姓名,性别,籍贯,电话,住址,民族);
charID[10];charname[10];charsex[4];
charnativePlace[10];charphone[13];charnation[6];
};
structstudentstu;
FILE*fp;//定义文件指针
voidmain()
{intflag;
while(flag!
=7)
{printf("\n\t\t请选择您所要的操作\n");
printf("\t\t‖1、查询记录2所有记录列表\n");
printf("\t\t‖按任意键退出‖\n");
scanf("%d",&flag);
switch(flag)
{case1:
Search();//查找记录
getch();system("cls");break;
case2:
Views();//查看所有记录
getch();system("cls");break;
default:
exit(0);
}}}
voidSearch()/查找数据/
{if((fp=fopen("StudentMessage","rb"))==NULL)//以只读方式打开StudentMessage文件
{printf("\t文件打开失败!
\n");return;}
else
{charmessage[10];//接收用户需要查找的信息
inti;longflength,offset;
fseek(fp,0,SEEK_END);//将文件指针移文件尾
flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少条记录
printf("\t请输入您要查找的学号:
");
scanf("%s",message);
i=check(message);
offset=sizeof(structstudent)*i;
if(flength==0)
{printf("\t文件记录为空!
\n");
return;
}
elseif(i>flength)
{printf("\t\t查找失败,没有找到相应信息!
\n");
return;
}
else//输出查找到的内容
{rewind(fp);
fseek(fp,offset,SEEK_SET);
fread(&stu,sizeof(structstudent),1,fp);
printf("学号:
%s",stu.ID);printf("姓名:
%s",stu.name);
printf("性别:
%s",stu.sex);printf("籍贯:
%s",stu.nation);
printf("电话:
%s",stu.phone);printf("民族:
%s",stu.native)
}
fclose(fp);
}}
voidViews()/查看所有记录/
{longflength;
if((fp=fopen("StudentMessage","rb"))==NULL)
{printf("文件打开失败!
\n");
exit
(1);}
fseek(fp,0,SEEK_END);//移动文件指针到文件尾
flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少条记录
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",stu.name);
printf("性别:
%s",stu.sex);printf("籍贯:
%s",stu.nation);
printf("电话:
%s",stu.phone);printf("民族:
%s",stu.native)
}
fclose(fp);}
③课程管理模块
voidCPageCho:
:
Query()
{variant_tvar,varCou,varStu;
CStringstr;//定义变量
//更新控件变量的值
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]);}
}
④成绩管理模块
voidscore(void)
{ints,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].english);
}}}
3.数据库设计
本数据库采用SQLServer2000来构造,主要产生了3个表,分别为学生基本信息表,课程信息表,教师授课信息表。
表如下:
学生基本信息表
序号
字段
别名
数据类型
数据长度
码
1
sno
学号
varchar
10
Y
2
sname
姓名
varchar
10
N
3
ssex
性别
Char
2
N
4
birthday
出生日期
timestamp
20
N
5
symbol
政治面貌
varchar
8
N
6
Id
身份证号
varchar
20
N
7
birthplace
籍贯
varchar
10
N
8
homeaddr
家庭住址
varchar
30
N
课程信息表
序号
字段
别名
数据类型
数据长度
码
1
cno
课程号
varchar
5
Y
2
cname
课程名
varchar
15
N
3
credit
学分
smallint
N
老师授课信息表
序号
字段
别名
数据类型
数据长度
码
1
cno
课程号
varchar
5
Y
2
tno
教工号
char
10
Y
3
ctime
课时
smallint
N
四、系统原型的开发
1.系统目标
在前台主界面上显示数据库中存在的学生的基本信息,由特定权限的管理员或者用户登入后通过按钮或菜单对学生的基本信息、成绩、选修课程进行登入,修改,查询,删除等功能。
2.开发环境
操作系统:
WindowsXP/WindowsNTServer4.0
开发平台:
VisualC++6.0
数据库:
Access
数据库查询语言:
SQLServer2000
五、总结与展望
经过三个多月的设计和开发,学生档案管理系统基本开发完毕。
其功能基本符合用户需求,能够完成学生学籍的存储和成绩的查询以及各类相关报表的打印。
并提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删除,对于数据的一致性的问题也通过程序进行了有效的解决。
但是由于课题设计时间较短,所以该系统还有许多不尽如人意的地方,比如联机文档比较少,用户界面不够美观,出错处理不够等多方面问题。
这些都有待进一步改善。
六、学习软件工程这门课程的总结与体会
通过一学期的软件工程理论的学习和自己组队完成的学生档案查询系统,使我对这学期软件工程这门课中所学的知识有了全面的认识,知道了制作软件系统的大致流程和开发系统过程中的重要事项,进一步的了解了如何去分析和处理问题,应该说软件工程的范畴已经远远不止局限于该门课程,而是一个综合的一个能够解决问题的思想集合。
在参与完成该系统时,我再一次回顾了C++语言编程,熟悉了Access数据库,对于SQLServer2000数据库查询语言也有了一定的了解。
在完成此系统后,我发现理论和实践之间还是存在一定的差距的,要把理论知识灵活运用于实践才是最好的。
开发系统时团队的合作精神也至关重要,小组成员之间一定要配合的好,不然就会出现诸如详细设计中的模块与需求分析中所需要的不合,对于同一模块的代码这详细设计中和界面设计中完全不一样等诸如此类的问题;也只有这样才能减小开销和精力,增大开发成功的概率。
在开发系统时也不能带入太多的个人色彩,不然就会出现与原来制定系统目标时有出入。
总的来说,这门课实行理论与实践相结合的机制让我从新学会了很多东西,对于今后如果我从事计算机方面的工作有一定的帮助。
【参考文献】
[1]齐志昌,谭清平,宁洪.软件工程.北京:
高等教育出版社,1997.
[2]李代平.软件工程(第二版).北京:
冶金工业出版社,2006.
[3]张海藩.软件工程导论(第三版).北京:
清华大学出版社,1998.
[4]张海藩.软件工程(第三版).北京:
人民邮电出版社,2006.