学籍管理系统设计一、项目概述3二、项目工作计划2三、管理业务流程分析3四、数据流程图3五、数据字典7六、E-R图8七、功能模块图10八、代码设计10九、数据表设计10十、IPO设计12十一、源程序清单12十二、总结与体会15一、项目概述1、项目名称:简单学籍管理系统2、项目目的:学生学籍信息管理是学校管理的一项重要任务,信息管理经由最初的传统管理时期过渡到信息技术管理时期,再到现在的信息资料管理时期,管理信息系统以计算机技术为核心,大大提高了工作效率,节省了劳动力。
因此,编写本学籍管理系统就是本着方便学校管理,方便学生与学校、教师交互等目的而开发的。
本系统根据学校的实际情况设计了这一套简单学籍管理系统。
3、开发设计思想:介于本系统的以上目的,我们的设计思想有以下几条(由于受专业技术的限制,我们所建立系统并不复杂,但能满足简单要求):系统应符合学生学籍管理系统的规定,即满足学校对学生日常管理的需要,并达到操作过程中的直观,方便等要求。
所开发的系统应该满足模块化程序设计方案,这样即便于系统功能的各种组合和修改,有便于未参与开发的技术维护人员的补充,维护。
所开发的系统应具备数据库维护功能,能够及时根据用户需求进行数据的添加,删除,修改和备分等操作。
4、开发运行环境:开发工具:powebuilder8.0运行环境:window vista5、系统功能:(1)信息的增加(2)信息查询(3)信息的删除(4)信息的保存二、项目工作计划以下为根据参阅相关书籍和资料,整理得出的各环节的内容.具体分工情况如下表:三、管理业务流程分析在本系统中,学生,系统用户,老师都可以登录到对应的主界面,进行相应的操作。
在学期初,由学院负责人员录入学生和教师信息,包括个人的学号、XX、性别、年级、班级、年级、班级、系别、专业、户口所在地、家庭住址、联系、出生日期、民族、政治面貌、XX号、填卡日期及备注。
如此形成系统的学籍数据库。
相关权限是:学生可以由学号查询对应专业、等,老师同样可以查询学生各项信息等,系统用户则可以查询和修改各项学院、学生信息。
四、数据流程图Root Process GraphSubprocess Graph of 学籍管理系统学籍表本学籍系统的详细工作流程如下:1.根据学生处出示的新生,建立档案,将档案登记为档案文件。
并对应新生建立个人的学习文档。
2.根据档案文件登记学籍表。
3.若学生遇到退学、留级、惩罚的事件,教务处将分别进行退学处理、留级处理、奖惩处理。
4.若学生受到留级处理、奖惩处理,分别建立留级、奖惩,并修改对应档案文件。
5.若学生受到退学处理,删除对应学生的档案文件。
6.学生毕业时,教务处根据档案文件填制其毕业登记表,并最后将毕业生登记表交给用人单位。
五、数据字典(1)数据项(3)实体六、E-R图简单学籍管理的E-R如下:E-R图简单描述:1.本E-R图的实体有学生、学院、教师、班级、课程。
2.一个学生只在一个学院和一个班级中,一个学院或一个班级有很多学生。
3.一个学院有很多教师,一个教师只对应一个学院。
4.一个学生要修多门课程。
七、功能模块图八、代码设计代码指明了事物的名称、属性、状态。
科学的代码设计能使计算机进行数据处理时,能节省存储空间,提高处理速度、效率和精度。
进行代码设计的过程中,我们应该尽量遵循以下基本原则:1、要适合计算机处理;2、要便于使用;3、要具有系统性、通用性和可扩展性;4、选择最小代码;5、代码标准化。
本学籍管理系统中的数据库代码用部分代码设计X 例如下: (1) 部门代码部门代码采取数字和字符混合编码的形式,具体如下: ①学生处②教务处 JWC* * *③系 X X* *2、人员代码人员代码采取纯数字编码形式,具体如下: ①教师②学生(2) 表单代码表单代码仍采取数字和字符混合编码的形式,具体如下:九、数据表设计学生表学院表班级表班级名AME A10 No No 所在学院COLLEGE A10 No No 班级负责人FUZEREN A10 No No十、IPO设计进入本系统的人都要进行身份认证,认证的方式是验证登录用户账号及其密码,选择登录类型(学生,教师,系统用户)。
登陆名为学号,教师号,系统用户号,所有用户的密码预设为888888。
登陆界面如下:十一、源程序清单连接数据库的源程序:// Profile OursSQLCA.DBMS = "ODBC"SQLCA.Automit = FalseSQLCA.DBParm = "Connectstring='DSN=ours;UID=dba;PWD=sql'"connect using sqlca;open(w_main)登录源程序:string ls_pass,ls_passdata,l1,l3,l5,ls_user,usertypeinteger l0,l2,l4ls_user=string(sle_user.text)ls_pass=string(sle_pass.text)l1=string(ddlb_1.text)if ddlb_1.text='' thenmessagebox("提示信息","请选择用户登陆类型!")ddlb_1.setfocus()returnend ifchoose case ddlb_1.textcase "系统用户"if ls_user="" thenmessagebox("提示信息","请输入用户登陆名!")returnend ifif ls_pass="" thenmessagebox("提示信息","请输入密码!")returnend ifif isnull(ls_pass) then ls_pass = ""select count(*) into :l0 from xitong where xno =:ls_user ;if l0 <1 thenmessagebox("提示信息","请输入正确的用户登陆名!")sle_user.setfocus()returnend ifselect password into :ls_passdata from xitong where xno =:ls_user; if isnull(ls_passdata) then ls_passdata = ""if ls_pass <> trim(ls_passdata) thenmessagebox("提示信息","请输入正确的密码!")sle_pass.setfocus()returnend ifopen(w_1)close(w_main)case "学生"if ls_user="" thenmessagebox("提示信息","请输入用户登陆名!")returnend ifif ls_pass="" thenmessagebox("提示信息","请输入密码!")returnend ifif isnull(ls_pass) then ls_pass = ""select count(*) into :l2 from stu where sno =:ls_user;if l2 <1 thenmessagebox("提示信息","请输入正确的用户登陆名!")sle_user.setfocus()returnend ifselect password into :l3 from stu where sno =:ls_user;if isnull(l3) then l3 = ""if ls_pass <> trim(l3) thenmessagebox("提示信息","请输入正确的密码!")sle_pass.setfocus()returnend ifopen(w_12)close(w_main)case "教师"if ls_user="" thenmessagebox("提示信息","请输入用户登陆名!") returnend ifif ls_pass="" thenmessagebox("提示信息","请输入密码!")returnend ifif isnull(ls_pass) then ls_pass = ""select count(*) into :l4 from teacher where tno =:ls_user ;if l4 <1 thenmessagebox("提示信息","请输入正确的用户登陆名!")sle_user.setfocus()returnend ifselect password into :l5 from teacher where tno =:ls_user; if isnull(l5) then l5 = ""if ls_pass <> trim(l5) thenmessagebox("提示信息","请输入正确的密码!")sle_pass.setfocus()returnend ifopen(w_12)close(w_main)end choose按学号查询信息的源程序:string ls_old_sql,ls_new_sqlstring ls_snols_sno=sle_1.textls_sno="'%"+trim(upper(ls_sno))+"%'"ls_old_sql=dw_1.getsqlselect()ls_new_sql=ls_old_sql+"where sno like "+ls_snodw_1.setsqlselect(ls_new_sql)dw_1.retrieve()dw_1.setsqlselect(ls_old_sql)dw_1.object.datawindow.readonly=true增加信息的源程序:long ll_rowll_row=dw_1.insertrow(0)dw_1.setfocus()dw_1.scrolltorow(ll_row)dw_1.setcolumn(1)删除信息的源程序:int ss=dw_1.getrow() //得到当前行号dw_1.deleterow(s) //从DataWindow控件中删除当前行。