Linux下与用户交互,用文件存储用户数据 ,
具有增加,删除,修改,查询的功能
设计要点:每次进入系统,将用户信息全部加载到内存,用户修改,删除,增加都是在内存中操作,
详情
我的主页面:
index.php
,函数库:
functions.php
,-
用户信息:
student.db
(JSON格式存储)
index.php代码
functions.php
代码
$v){
echo $k."\t";
$file=json_decode($v,true);//返回解码的数组
echo $file['id']."\t";
echo $file['name']."\t";
echo $file['sex']."\t";
echo $file['total']."\t";
echo date("Y-m-d",$file['time'])."\n";
}
}
//查询信息
function findInfo(){
global $studata;
showInfo();//首先展示学生信息
$list=$studata;//全部的用户信息,每一个单元为一个学生的信息
fwrite(STDOUT,"请输入用户学号查询:");
$content=trim(fgets(STDIN));//获取用户查询内容
fwrite(STDOUT,"查询结果如下:\n");
echo " 编号\t 学号 \t 姓名\t性别\t总分数\t操作时间\n";
echo "-------------------------------------------\n";
foreach($list as $k=>$v){
$file=json_decode($v,true);//每个学生的信息
if(strpos($file['id'],$content)!==false){
echo $k."\t";
echo $file['id']."\t";
echo $file['name']."\t";
echo $file['sex']."\t";
echo $file['total']."\t";
echo date("Y-m-d",$file['time'])."\n";
}
}
}
//增加学生信息
function addInfo(){
showInfo();
$arr=array();
fwrite(STDOUT,"请输入学号:");
$arr['id']=trim(fgets(STDIN));
fwrite(STDOUT,"请输入姓名:");
$arr['name']=trim(fgets(STDIN));
fwrite(STDOUT,"请输入性别:");
$arr['sex']=trim(fgets(STDIN));
fwrite(STDOUT,"请输入总分:");
$arr['total']=trim(fgets(STDIN));
$arr['time']=time();
//写入文件
$f=fopen("./studentInfo.db","a");//已追加方式打开
fwrite($f,json_encode($arr)."\n");//生成json格式的字符串
fclose($f);//有开就有关。
}
//删除学生信息
function delInfo(){
global $studata;
showInfo();//显示用户信息
fwrite(STDOUT,"请输入需要删除学生的学号:");
$key=trim(fgets(STDIN));
$status=false;
echo " 编号\t 学号 \t 姓名\t性别\t总分数\t操作时间\n";
echo "-------------------------------------------\n";
//查找匹配并且输出
foreach($studata as $k=>$v){
$file=json_decode($v,true);//每个学生的信息
if($file['id']===$key){
echo $k."\t";
echo $file['id']."\t";
echo $file['name']."\t";
echo $file['sex']."\t";
echo $file['total']."\t";
echo date("Y-m-d",$file['time'])."\n";
$num=$k;
$status=true;
}else{ //当用户不存在的时候,
$status=false;
}
}
if($status==true && $num>=0){
fwrite(STDOUT,"确认删除该用户[1/0]:");
$keytwo=trim(fgets(STDIN));
if($keytwo==1){
unset($studata[$num]);//销毁
saveInfo();//保存
fwrite(STDOUT,"删除成功!");
}
}else{
echo "该用户不存在!";
}
}
//修改学生信息
function modInfo(){//如果存在需要修改的用户,先删除,后修改。
global $studata;
showInfo();
fwrite(STDOUT,"请输入需要修改的学号:");
$key=trim(fgets(STDIN));
$status=false;
echo " 编号\t 学号 \t 姓名\t性别\t总分数\t操作时间\n";
echo "-------------------------------------------\n";
//查找匹配并且输出
foreach($studata as $k=>$v){
$file=json_decode($v,true);//每个学生的信息
if($file['id']===$key){
echo $k."\t";
echo $file['id']."\t";
echo $file['name']."\t";
echo $file['sex']."\t";
echo $file['total']."\t";
echo date("Y-m-d",$file['time'])."\n";
$num=$k;
$status=true;
}else{ //当用户不存在的时候,
$status=false;
}
}
if($status==true && $num>=0){
fwrite(STDOUT,"确认修改该用户[1/0]:");
$keytwo=trim(fgets(STDIN));
if($keytwo==1){
unset($studata[$num]);//销毁
saveInfo();//保存
addInfo();//追加一个
fwrite(STDOUT,"修改成功!");
}
}else{
echo "该用户不存在!";
}
}
//返回用户信息的一个数组,每一个单元是一个人信息,而且是以json格式编码的
function returnInfo(){
$list=array();
$f=fopen("./studentInfo.db","r");
while($row=fgets($f)){
$list[]=$row;
}
fclose($f);
return $list;
}
function saveInfo(){
global $studata;//json编码的
$f=fopen("./studentInfo.db","w");
foreach($studata as $v){
fwrite($f,$v);
}
fclose($f);
}