使用HTML+CSS+JS完成人员信息管理系统Version1.0

一、项目概述

  1. 项目名称 : 人员信息管理系统
  2. 项目需求 : 使用HTML+CSS+JS对人员信息进行增删改查的可视化管理操作
  3. 项目展示:
    在这里插入图片描述

二、项目实现

JavaScript代码:

// 定义人员JSON
var person1 = {
	"personno": "1",
	"personname": "张三",
	"personsex": "男",
	"personage": 20,
	"personfrom": "北京"
};
var person2 = {
	"personno": "2",
	"personname": "李四",
	"personsex": "男",
	"personage": 23,
	"personfrom": "上海"
};

// 定义JSON数组
var persons = new Array;
persons.push(person1, person2);

// 建立索引,用于自动编号
var index = 2;

// 显示元素
function showForm(element) {
	var e = document.getElementById(element);
	e.style.display = "";
}
// 隐藏元素
function hiddenForm(element) {
	var e = document.getElementById(element);
	e.style.display = "none"
}

// 展示表格信息
function showTable() {
	// 根据id获取表格
	var maintable = document.getElementById("maintable");
	var str = "<tr><th>序号</th><th>姓名</th><th>性别</th><th>年龄</th><th>籍贯</th><th>操作</th></tr>";
	for (var i = 0; i < persons.length; i++) {
		// 拼接人员信息
		str += "<tr><td>" + persons[i].personno + "</td><td>" + persons[i].personname + "</td><td>" + persons[i].personsex +
			"</td><td>" +
			persons[i].personage + "</td><td>" + persons[i].personfrom +
			"</td><td><button οnclick='deletePersonInfo(" + persons[i].personno +
			");'>删除</button>||<button οnclick='showUpdateForm(" + persons[i].personno + ");'>更新</button></td></tr>";
	}
	// 将拼接好的字符串添加到表格中
	maintable.innerHTML = str;

	showForm("maintable");
}

// 添加人员信息
function addPersonInfo() {
	// 根据id获取添加表单
	var addform = document.getElementById("addform");
	// 每次使用了索引就需要自增
	var addno = ++index;
	var addname = addform.personname.value;
	var addage = addform.personage.value;
	var addsex = addform.personsex.value;
	var addfrom = addform.personfrom.value;
	// 用临时JSON对象保存信息
	var person = {
		"personno": addno,
		"personname": addname,
		"personsex": addsex,
		"personage": addage,
		"personfrom": addfrom
	};
	// 将JSON添加到数组
	persons.push(person);
	// 刷新一下,展示人员信息
	showTable();
	alert("添加成功!")
	hiddenForm("addform")
}

// 删除人员信息
function deletePersonInfo(no) {
	var res = confirm("确定要删除编号为" + no + "的记录嘛?")
	if (res) {
		// 找到要删除的元素进行删除
		for (var i = 0; i < persons.length; i++) {
			if (persons[i].personno == no) {
				delete persons[i];
				break;
			}
		}
		// [1] [2] [3] 删除第2个元素
		// [1] null [3] 这里有一个空值,因此personno接不到值,需要去空值
		// 删除后需要去null值
		// 方法一:替换法
		var arr = new Array; // 新建一个数组
		for (var i = 0; i < persons.length; i++) {
			if (persons[i] != null) {
				arr.push(persons[i]); // 将非空数组添加到新数组
			}
		}
		persons = arr; // 把新数组的值替换给老数组

		/*
				// 方法二:splice(素组下标,个数,添加的值1,值2,...)方法
		 		for (var i = 0; i < persons.length; i++) {
					if (persons[i] == '' || persons[i] == null || typeof(persons[i]) == undefined) {
						// splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
						persons.splice(i, 1);
						i = i - 1; // 配置已经缩短长度的数组
					}
				}
		 */
		// 刷新一下表格
		showTable();
	}
}

// 回显表单数据
function showUpdateForm(no) {
	// 找到要更新的数据
	for (var i = 0; i < persons.length; i++) {
		if (persons[i].personno == no) {
			// 将获取到的数据回显到表单
			document.getElementById("updatepersonno").value = persons[i].personno;
			document.getElementById("updatepersonname").value = persons[i].personname;
			document.getElementById("updatepersonage").value = persons[i].personage;
			document.getElementById("updatepersonsex").value = persons[i].personsex;
			document.getElementById("updatepersonfrom").value = persons[i].personfrom;

			// 显示updateform表单
			document.getElementById("updateform").style.display = "";
		}
	}
}

// 更新人员信息
function updatePersonInfo() {
	var updateform = document.getElementById("updateform");
	var updateno = updateform.updatepersonno.value;
	var updatename = updateform.updatepersonname.value;
	var updatesex = updateform.updatepersonsex.value;
	var updateage = updateform.updatepersonage.value;
	var updatefrom = updateform.updatepersonfrom.value;
	// 将输入的信息保存到临时JSON
	var person = {
		"personno": updateno,
		"personname": updatename,
		"personsex": updatesex,
		"personage": updateage,
		"personfrom": updatefrom
	};

	// 开始更新
	for (var i = 0; i < persons.length; i++) {
		if (persons[i].personno == person.personno) {
			persons[i] = person;
			// break;
		}
	}

	// 刷新一下
	showTable();
	alert("更新成功!")
	hiddenForm("updateform")
}

知识点:

  1. 删除JSON数组的某个元素

方法一:

// [1] [2] [3] 删除第2个元素
// [1] null [3] 这里有一个空值,因此personno接不到值,需要去空值
// 删除后需要去null值
// 方法一:替换法
var arr = new Array; // 新建一个数组
for (var i = 0; i < persons.length; i++) {
	if (persons[i] != null) {
		arr.push(persons[i]); // 将非空数组添加到新数组
	}
}
persons = arr; // 把新数组的值替换给老数组

方法二:

// 方法二:splice(素组下标,个数,添加的值1,值2,...)方法
	for (var i = 0; i < persons.length; i++) {
	if (persons[i] == '' || persons[i] == null || typeof(persons[i]) == undefined) {
		// splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
		persons.splice(i, 1);
		i = i - 1; // 配置已经缩短长度的数组
	}
}

语法:arrayObject.splice(index,howmany,item1,…,itemX)

splice() 方法可删除从index处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

  • index:(必填)整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
  • howmany:(必填)要删除的项目数量。如果设置为 0,则不会删除项目。
  • item1, …, itemX:(可选)向数组添加的新项目。

HTML代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>人员管理系统</title>
		<script src="js/jsfunction.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<!-- 头部控制表格按钮 -->
		<div>
			<button type="button" onclick="showTable();">显示人员信息</button>
			<button type="button" onclick="showForm('addform');">添加人员信息</button>
		</div>

		<hr />

		<!-- 主表格 -->
		<div>
			<table id="maintable" border="1" cellspacing="0" cellpadding="0" style="display: none;">
			</table>
		</div>

		<!-- 添加人员信息表单 -->
		<div>
			<!-- 需要提交表单才能获取信息,因此提交表单的方法是在form上加onsubmit方法 -->
			<!-- 在onsubmit方法里面添加一个return false;这样页面就会认为这个表单还没有完成操作,所以就不会提交了,这是一种欺骗页面的手段; -->
			<form id="addform" action="#" method="get" onsubmit="addPersonInfo();return false;" style="display:none;">
				<fieldset>
					<legend>添加人员信息</legend>
					<table>
						<tr>
							<td>名称:</td>
							<td><input type="text" id="personname" required="required" maxlength="32" /></td>
						</tr>

						<tr>
							<td>年龄:</td>
							<td><input type="number" id="personage" required="required" min="0" max="100" step="1" /></td>
						</tr>
						<tr>
							<td>性别:</td>
							<td><select id="personsex" required="required" >
									<option value="null">---请选择---</option>
									<option value=""></option>
									<option value=""></option>
								</select></td>
						</tr>
						<tr>
							<td>籍贯:</td>
							<td><input type="text" name="personfrom" id="personfrom" required="required" maxlength="64" /></td>
						</tr>
						<tr>
							<td colspan="2" align="center">
								<button type="submit">确定添加</button>
								<button type="reset" onclick="hiddenForm('addform')">取消添加</button>
							</td>
						</tr>
					</table>
				</fieldset>
			</form>
		</div>

		<!-- 更新人员信息表单 -->
		<div>
			<form id="updateform" action="#" method="get" onsubmit="updatePersonInfo();return false;" style="display: none;">
				<fieldset>
					<legend>更新人员信息</legend>
					<input type="hidden" id="updatepersonno" />
					<table>
						<tr>
							<td>名称:</td>
							<td><input type="text" id="updatepersonname" required="required" maxlength="32" /></td>
						</tr>

						<tr>
							<td>年龄:</td>
							<td><input type="number" id="updatepersonage" required="required" min="0" max="100" step="1" /></td>
						</tr>
						<tr>
							<td>性别:</td>
							<td><select id="updatepersonsex" required="required" >
									<option value="null">---请选择---</option>
									<option value=""></option>
									<option value=""></option>
								</select></td>
						</tr>
						<tr>
							<td>籍贯:</td>
							<td><input type="text" id="updatepersonfrom" required="required" maxlength="64" /></td>
						</tr>
						<tr>
							<td colspan="2" align="center">
								<button type="submit">确定更新</button>
								<button type="reset" onclick="hiddenForm('updateform')">取消更新</button>
							</td>
						</tr>
					</table>
				</fieldset>
			</form>
		</div>

	</body>
</html>

知识点:

  1. 表单域
    为了让表单更加美化,用fieldset给form添加一个表单域,这样表单会有一个边框,然后用legend配上说明文字,这样边框会有一个标题。
<form>
	<fieldset>
		<legend>说明性文字</legend>
	</fieldset>
</from>
  1. onsubmit提交表单
    onsubmit方法执行处理请求的JS方法
    页面只要发现表单点击了提交按钮,会把表单按照action中设置的地址进行提交;在onsubmit方法里面添加一个return false;页面就会认为这个表单还没有完成操作,因此就不会提交。
<form id="addform" action="#" method="get" onsubmit="addPersonInfo();return false;" style="display:none;">
  1. 元素的隐藏和显示
    用style属性来设置元素在页面的显示display:none表示该页面元素隐藏
<div style="display:none;">
</div>
<div style="display:"";">
</div>
// 显示元素
function showForm(element) {
	// JS中先获取对象
	var e = document.getElementById(element);
	// 对象.style.display
	e.style.display = "";
}
// 隐藏元素
function hiddenForm(element) {
	var e = document.getElementById(element);
	e.style.display = "none"
}
  1. 隐藏域
    该标签不会在页面中展示,但document对象是能够获取和修改。
<input type="hidden" id="updatepersonno" />
  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值