第三章 开发过程
§3.1 设置服务器
这里主要是介绍Linux服务器中最重要的网络服务:
Web服务器的配置:
安装好Apache 服务器后,还需要根据实际情况完成各项参数的配置,其设置文件位于/www/httpd/conf/目录下,通常使用3个配置文件httpd.conf, access.conf 和srm.conf来配置Apache.
httpd.conf提供了最基本的服务器配置,是对守护进程httpd如何运行的技术描速;srm.conf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件;access.conf用于配置服务器的访问权限,控制不同用户和计算机的访问权限。
用命令:#/www/bin/apachectl restart启动来设置各项参数。
a. ServerType standalone //可使httpd进行自我处 理,占用较少CPU资源
b. ServerRoot “/usr/local” //指定守护进程的运行目录
其他参数可根据实际需要设置。
§3.2 设置数据库
§3.2.1创建数据库和数据表
管理子系统所用的数据库名为:gov_dbbase;
管理子系统所用的数据表有5项,名分别为:users(用户简要信息表),aducat(学历信息表),emergen(意外事故情况表),family(家属信息表),resume(个人简历表)。
用命令:# cd /var/www/html 回车,进入mysql所在目录;
# mysql –p 回车,根据提示键入密码;
用命令:create database gov_dbbase;//完成创建数据库。
用命令:show databases; //显示数据库。
用命令:use gov_dbbase; //指定使用的数据库。
以下将完成各表项的创建:
创建users(用户简要信息)表:
CREATE TABLE users( //建立公务员个人信息表 //字段名称 字段类型(宽度) 空否 字段注释 ID int(5) NOT NULL, //公务员号 NAME varchar(10) NOT NULL, //姓名 XB varchar(6) NULL, //性别 MZ varchar(10) NULL, //民族 BM varchar(10) NULL, //部门 ZC varchar(10) NULL, //职称 ZW varchar(10) NULL, //职务 CSNY date NULL, //出生年月 XZDZ varchar(40) NULL, //现住地址 MM int(10) NOT NULL //密码 BMBM int(5) NOT NULL, //部门编码 ZWBM int(5) NOT NULL, //职务编码 MJ int(5) NOT NULL //秘级 );
创建resume(个人简历)表:
CREATE TABLE resume( //个人简历 //字段名称 字段类型(宽度) 空否 字段注释 JG varchar(20) NULL, //籍贯 SG int(3) NULL, //身高 TZ int(3) NULL, //体重 XUX varchar(2) NULL, //血型 STZK varchar(4) NULL, //身体状况 HJ varchar(20) NULL, //户籍 SFZH int(19) NULL, //身份证号 HOBBY varchar(50) NULL, //个人爱好 YB int(10) NULL, //邮编 EML varchar(20) NULL, //邮件地址 HYZK varchar(4) NULL, //婚姻状况 ZZMM varchar(10) NULL, //政治面貌 XZ varchar(8) NULL //星座 );
创建family(家属信息)表:
CREATE TABLE family( //家属情况 //字段名称 字段类型(宽度) 空否 字段注释 JSCH1 varchar(10) NULL, //家属称呼1 JSCH2 varchar(10) NULL, //家属称呼2 JSCH3 varchar(10) NULL, //家属称呼3 JSXM1 varchar(10) NULL, //家属姓名1 JSXM2 varchar(10) NULL, //家属姓名2 JSXM3 varchar(10) NULL, //家属姓名3 JSXB1 varchar(10) NULL, //家属性别1 JSXB2 varchar(10) NULL, //家属性别2 JSXB3 varchar(10) NULL, //家属性别3 JSCSRQ1 varchar(10) NULL, //家属出生日期1 JSCSRQ2 varchar(10) NULL, //家属出生日期2 JSCSRQ3 varchar(10) NULL, //家属出生日期3 JSZY1 varchar(10) NULL, //家属职业1 JSZY2 varchar(10) NULL, //家属职业2 JSZY3 varchar(10) NULL, //家属职业3 JSGZDW1 varchar(40) NULL, //家属工作单位1 JSGZDW2 varchar(40) NULL, //家属工作单位2 JSGZDW3 varchar(40) NULL, //家属工作单位3 JSZZ1 varchar(40) NULL, //家属住址1 JSZZ2 varchar(40) NULL, //家属住址2 JSZZ3 varchar(40) NULL //家属住址3 );
创建emergen(意外事故情况)表:
CREATE TABLE emergen( //意外情况 //字段名称 字段类型(宽度) 空否 字段注释 YWLLR varchar(10) NULL, //发生意外联络人 YWGX varchar(10) NULL, //发生意外联络人关系 YWTX varchar(40) NULL, //发生意外联络人通讯 YWDH varchar(20) NULL, //发生意外联络人电话YWSYR varchar(10) NULL, //发生意外受益人YWSYGX varchar(10) NULL, //发生意外受益人关系YWSYTX varchar(40) NULL, //发生意外受益人通讯YWSYDH varchar(20) NULL //发生意外受益人电话 );
创建aducat(学历信息)表:
CREATE TABLE aducat( //教育情况 //字段名称 字段类型(宽度) 空否 字段注释 XL varchar(10) NULL, //最高学历 SCHOOL varchar(30) NULL, //毕业学校 GRADATE date NULL, //毕业时间 MAJOR varchar(20) NULL, //专业 SPECI varchar(40) NULL, //特长 LANGU varchar(20) NULL //外语能力 ); 用命令:show tables; //显示所有已建表项。 用命令:describe users; //显示users表各个字段。 其他表项类似操作。
§3.2.2 数据库连接
为了保证程序的安全,编写独立的数据库连接功能程序:
<?php do{include("../config.php");} while($sql==""); //数据库所在的主机地址,localhost是本机地址 $MYSQL_HOSTNAME = "localhost"; //数据库登录的用户名称 $MYSQL_USERNAME = "root"; //数据库登录的密码 // $MYSQL_PASSWORD = ""; //要登录的数据库的名称 // $DATABASE = "gov_dbbase"; //数据库的连接操作 $link_id=$sql; ?>
§3.2.3 创建数据源 用命令:# insert into users
values(1003,’张三’,’男’,’汉’,’部’,’部长’,’工程师’,’1978-03-24’,’成都市人民南路3段3号’,
12345,6,4,3);其他表数据源类似插入。
用命令:# select * from users order by ID;可以查看所录入的数据源。
注:考勤管理和职员工资信息管理两部分的功能实现,由薪资管理模块和公共信息管理模块提供。
§3.3 系统功能实现
管理子系统作为课程的一个模块,将完成对政府系统中公务员的管理,目前包括规章制度、重要通知、最新信息、信息查询、管理员登录以及相关功能链接。其中以信息查询和管理员登录为主,将实现个人信息的简要和详细查询,部门中人员信息的简要和详细查询;人员信息的录入、修改、删除、工资管理以及考勤管理。采用页面交互式操作,用网页制作工具dreamwaver或其它工具实现,功能程序用php实现,将所有的程序放置在服务器上,通过apache提供;达到网上办公和无纸办公。可以参考以下功能模块图。
系统功能模块图
该功能模块图提供管理子系统中各模块之间的关系说明。功能模块图如下:
§3.3.1 系统登录
用户登录课程后,点击“管理”链接进入本子系统。
如下图示,进入管理子系统主页面:
§3.3.2 规章制度
管理规章制度栏,将向所有公务员提供各种咨询信息,为初到机关的员工讲解具体要求。通过点击即可链接到所要查看项目,可以进入该项的详细内容页面。其具体内容由用户方提供,粘贴到页面即可。如上图左示。
§3.3.3 重要通知
重要通知栏,将由部或科发布其最近最新的通知,由管理员在新闻发布管理项,可以添加,修改,删除新闻。如上图中上示。
§3.3.4 最新信息
最新信息栏,将由部或科发布其最近最新的信息,包括与本单位一切相关信息,仍由管理员在新闻发布管理项,可以添加,修改,删除新闻;通过点击相关项,可浏览其详细信息。如上图中下示。
§3.3.5 信息查询
程序实现:
//选择进入模块login1.php <? php switch($choose): case "c1": require("infomation1.php"); break; case "c2": require("infomation2.php"); break; case "c3": require("depart1.php"); break; case "c4": require("depart2.php"); break; default: require("m6_index.php"); endswitch; ?>
(a)、职员信息查询:将向员工用户提供公务员信息查询,即:员工简要信息查询和其详细信息查询。简要信息查询时,当输入员工的帐号和姓名,点击“确定”后,由程序search1.php提交到数据库中,根据ID和NAME从表users中提取数据返回infomation1.php显示;详细信息查询时,输入员工的帐号、姓名和密码,点击“确定”后由程序modify11.php提交到数据库中,根据ID、NAME和PASSW从表users以及aducat、emergen、family、resume中提取数据返回infomation2.php显示。
上图提供个人信息简要查询
程序实现:
//个人简要信息search1.php <? if($ID AND $NAME){ //判断输入信息,若正确则连接数据库 do{ require("../config.php"); }while($sql==" "); $str="SELECT NAME,XB,MZ,BM,ZC,ZW,ID,CSNY,XZDZ FROM users WHERE ID='$ID';"; $result=mysql_query($str,$sql); mysql_close();//关闭数据库 $record=mysql_fetch_row($result);}?>//送出查询结果
上图提供个人信息详细查询
程序实现:
//个人信息详细查询mofify11.php <?php if($ID AND $NAME){ //判断输入信息,若正确则连接数据库 do{require("../config.php");}while($sql==""); $str="SELECT * FROM users WHERE ID='$ID';"; $result=mysql_query($str,$sql); $record1=mysql_fetch_array($result); $str2="SELECT * FROM aducat WHERE ID='$ID';"; $result2=mysql_query($str2,$sql); $record2=mysql_fetch_array($result2); $str3="SELECT * FROM resume WHERE ID='$ID';"; $result3=mysql_query($str3,$sql); $record3=mysql_fetch_array($result3); $str4="SELECT * FROM family WHERE ID='$ID';"; $result4=mysql_query($str4,$sql); $record4=mysql_fetch_array($result4); $str5="SELECT * FROM emergen WHERE ID='$ID';"; $result5=mysql_query($str5,$sql); $record5=mysql_fetch_array($result5); mysql_close(); } ?>
(b)、部门信息查询:部门简要信息查询和其详细信息查询。即:查询该部门员工的信息。部门简要信息查询时,只需输入部门名称,点击“确定”后,程序search2.php根据BM(部门名)提交到数据库中从表users,中查询到该部门所有员工的简要信息返回depart1.php显示。详细信息查询时,需输入你的姓名,帐号,密码,且必须是领导,职务编码为4。然后输入被查询者的姓名和帐号,点击“确定”,由程序depart12.php提交数据库从表users,aducat,emergen,resume,family中查询,返回到depart2.php显示。 上图提供部门信息简要查询
程序实现:
//部门信息简要查询search2.php <?//判断输入信息,若正确则连接数据库 do{require("../config.php");}while($sql==" "); if($BM){ $select="select * from users where BM='$BM';"; $result=mysql_query($select,$sql); //$record=mysql_fetch_row($result); $sn_index=mysql_num_rows($result); for($index=0;$index<$sn_index;$index++){ $arr[$index]=mysql_fetch_array($result); }; mysql_close();} ?>
用list_display.php程序来实现逐条显示
<?//逐条显示 <TR align=center><TD ALIGN=CENTER><?echo $arr[$index][ID]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][NAME]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][XB]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][MZ]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][BM]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][ZC]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][ZW]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][CSNY]?></TD> <TD ALIGN=CENTER><?echo $arr[$index][XZDZ]?></TD> </TR>?>
上图提供部门信息详细查询
程序实现:
//部门详细信息查询depart12.php <?//判断输入信息,若正确则连接数据库 if($ID AND $NAME AND $PASSW AND $OBJECTN AND $OBJECTID){ do{ require("../config.php");}while($sql==""); $str=" SELECT ZWBM FROM users WHERE ID='$ID';"; $result=mysql_query($str,$sql); $record=mysql_fetch_array($result); if($record[0]==4){ if($OBJECTID AND $OBJECTN){ //判断输入信息,若正确则连接数据库 do{require("../config.php");}while($sql==""); $str="SELECT * FROM users WHERE ID='$OBJECTID';"; $result=mysql_query($str,$sql); $record1=mysql_fetch_array($result); $str2="SELECT * FROM aducat WHERE ID='$OBJECTID';"; $result2=mysql_query($str2,$sql); $record2=mysql_fetch_array($result2); $str3="SELECT * FROM resume WHERE ID='$OBJECTID';"; $result3=mysql_query($str3,$sql); $record3=mysql_fetch_array($result3); $str4="SELECT * FROM family WHERE ID='$OBJECTID';"; $result4=mysql_query($str4,$sql); $record4=mysql_fetch_array($result4); $str5="SELECT * FROM emergen WHERE ID='$OBJECTID';"; $result5=mysql_query($str5,$sql); $record5=mysql_fetch_array($result5); mysql_close(); } } } ?>