Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

一个网上理财站点的设计(九)

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  在今天这个专题中,我们将来完成收支情况管理的页面。在这个页面中其实并没有多少新的东西,如果你能对上面的各个专题中的内容有一个很好的理解的话,我相信对于这个网页的制作应该仅仅是一种体力劳动。

  在这里,我们又需要对in_ex_condition(收支情况表)的结构中增加两个字段,分别是account_contrary bigint NULL/*转出、转入的相应帐户*/及comment varchar(40) NULL,/*简要说明*/。这样我们对应的建库程序改为:


CREATE TABLE in_ex_condition (
code bigint DEFAULT '0' NOT NULL auto_increment,/*编码*/
in_ex_type bigint NOT NULL,/*收支项目*/
user char(12) NOT NULL,/*用户*/
account bigint NOT NULL,/所属帐户*/
date date NOT NULL,/*发生日期*/
money decimal(15,2) NOT NULL,/*金额*/
balance decimal(15,2) NOT NULL,/*余额*/
account_contrary bigint NULL,/*转出、转入的相应帐户*/
comment varchar(40) NULL,/*简要说明*/
PRIMARY KEY (code))

  而更改了这个建库程序后,我们将不得不对专题(五)--用户帐户管理作相应的改动。

  首先,我们将account_insert.php的这一段


if ($res)
{echo "<script language='JavaScript'>";
echo "alert('帐户建立成功');";
echo "parent.location.href='account.php'";
echo "</script>";}
else {
echo "<script language='JavaScript'>";
if ($res)
{//得到刚插入的帐户的code
$query = "select code from account where user='".$cookie_user."'
order by code DESC"; 
$res = mysql_query($query); 
$row = mysql_fetch_array($res);
//将对应帐户中的转出记录的account_contrary置值
$query="update in_ex_condition set account_contrary=".$row['code'].
" where user='".$cookie_user."' and account_contrary=0";
$res = mysql_query($query); 
echo "<script language='JavaScript'>";
echo "alert('帐户建立成功');";
echo "parent.location.href='account.php'";
echo "</script>";}
else {
//得到刚插入的转出记录的code
$query="select code from in_ex_condition where user='".$cookie_user."' 
and account_contrary=0";
$res = mysql_query($query); 
$row = mysql_fetch_array($res);
//删除对应帐户中的转出记录
include ("function_account_delete.php");
account_delete($row['code'])
echo "<script language='JavaScript'>";

  在这儿我们还顺便修正了这一段程序中的一个BUG:当由于某种原因新帐户未建立成功时,此时对应帐户的转出记录已经生成。

  其中的function_account_delete.php的源程序我们将在今天这个专题中给出。

  function_account_insert.php中的这一段:

  //增添收支情况中记录


if ($this_type==1)
$query = "INSERT INTO in_ex_condition
(in_ex_type,user,account,date,money,balance) 
VALUES (".$in_ex_type.",'".$user."',".$account.",'"
.$date."',".$money.",".$this_balance."-".$money.")";
else
$query = "INSERT INTO in_ex_condition 
(in_ex_type,user,account,date,money,balance) 
VALUES (".$in_ex_type.",'".$user."',".$account.",'"
.$date."',".$money.",".$this_balance."+".$money.")";
$res = mysql_query($query); 
return 1;}
改为:
//增添收支情况中记录
if ($this_type==1)
$query = "INSERT INTO in_ex_condition
(in_ex_type,user,account,date,money,balance,account_contrary,comment) 
VALUES (".$in_ex_type.",'".$user."',".$account.",'".$date."',"
.$money.",".$this_balance."-".$money.",".$account_contrary".,'"
.$comment."')";
else
$query = "INSERT INTO in_ex_condition (in_ex_type,user,account,
date,money,balance,account_contrary,comment) 
VALUES (".$in_ex_type.",'".$user."',".$account.",'".$date."',"
.$money.",".$this_balance."+".$money.",".$account_contrary".,'"
.$comment."')";
$res = mysql_query($query); 
return 1;}

  还是让我们先来看看我们的业务需求,在这个网页我们应该允许用户对他所拥有的各个帐户的收支情况进行增添、修改及删除。当然其中会涉及到许多细节问题。

  一、我们应该注意到转出及转入这两个特殊的收支项目,在一般情况下,这两个收支项目是成对出现的,也就是说有转出必有转入,当然我们说是在一般情况下,就意味着存在特殊的情况,细心的读者应该可以发现在我们的帐户初始化时,我们会仅仅涉及到一个单独的转出。所以我们在增添、修改、删除转入或转出收支项目时,我们将同时增添、修改、删除其对应项目。而要查找其对应项目,其实也很简单,根据其转入、转出对应帐户我们应该能找到其对应帐户中当天和该金额相同的对应记录,如果不存在该对应记录,那就是我们说的那种特殊情况,直接对该帐户涉及的各项结余进行修改就行了。

  二、在进行修改及删除时,对于非信用卡类帐户,我们仍不允许其结余为负。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:一个网上理财站点的设计(八)   下一篇:一个网上理财站点的设计(十)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号