使用ASP.NET CORE MVC开发一个简单的管理系统

1.题目描述和需要实现的整体功能

题目描述:某医院为了方便医生合理安排工作计划,现需要开发一个医生管理系统。

  • 需要实现的整体功能:
  • 查询医生
  • 添加医生
  • 删除医生

 第一步创建数据库

创建表

数据库:创建数据库Test,创建数据表:Department和Doctor,至少向每张表中添加3条测试数据,其中在Doctor表中设置deptID为外键。

创建MVC项目

 

 连接数据库

  1. 列表界面对应的功能:
  1. “删除”的效果如下: 

  2. 当单击“删除”按钮时,要通过弹出对话框,提示用户“你确实要删除吗?”。  

  1. 当单击弹出对话框“确定”按钮时,实现医生的删除。
  2. 当删除成功后,要即时刷新列表上面的数据。

代码实现部分 :

//引入所需的命名空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

//定义控制器类TestController
namespace WebApplication4.Controllers
{
    public class TestController : Controller
    {
        //声明TestEntities实例,用于与数据库交互
        TestEntities dbContext = new TestEntities();

        //定义GET请求方法Index()
        public ActionResult Index()
        {
            //获取数据库Doctor表和Department表中的数据,并以列表形式传递到视图界面
            var list = dbContext.Doctor.Include("Department");
            return View(list.ToList());
        }

        //定义Delete()方法,参数为D_ID
        public ActionResult Delete(int D_ID)
        {
            //从数据库查找指定D_ID的Doctor数据并删除
            var sche = dbContext.Doctor.Find(D_ID);
            dbContext.Doctor.Remove(sche);

            //确保更改操作被保存到数据库
            dbContext.SaveChanges();

            //重定向到Index()方法
            return Redirect("index");
        }

        //定义Add()方法
        public ActionResult Add() {
            //获取所有部门数据以备在添加医生页二级联动下拉菜单里使用
            var list2 = dbContext.Department.ToList();

            //通过ViewBag将deptID列表以及对应的部门名称(D_Name)传递到视图界面
            ViewBag.deptID = new SelectList(list2, "deptID", "D_Name");

            //渲染添加医生页视图界面
            return View();           
        }

        //定义DoAdd()方法,参数为Doctor类型的Doctor对象
        public ActionResult DoAdd(Doctor Doctor) {
            //将医生数据添加到数据库
            dbContext.Doctor.Add(Doctor);

            //确保更改操作被保存到数据库
            dbContext.SaveChanges();

            //重定向到Index()方法
            return Redirect("index");  
        }
    }
}

 主页面代码


@{
    ViewBag.Title = "Index";
}
@model List<Doctor>

<h2>Index</h2>
<form>

    <a href="/test/add">添加</a>
</form>
<table border="1">
    <thead>
        <tr>
            <td>ID</td>
            <td>邮箱</td>
            <td>手机号</td>
            <td>真实姓名</td>
            <td>部门名称</td>
            <td>年龄</td>
            <td>性别</td>
            <td>操作</td>



        </tr>


    </thead>

    @{ 
        foreach (var item in Model) { 
        <tr>
            <td>@item.D_ID</td>
            <td>@item.Email</td>
            <td>@item.deptID</td>
            <td>@item.PhoneNum</td>
            <td>@item.RealName</td>
            <td>@item.Age</td>
            <td>@item.Sex</td>
            <td><a href="/test/Delete?D_ID=@item.D_ID">删除</a></td>



        </tr>
        
        }


    }
</table>

删除没有前端页面在Index页面中添加 

<a href="DeleteEmp?D_ID=@item.D_ID" οnclick="return confirm('确定删除吗?')">删除</a>。

删除功能
      删除,其逻辑是先显示详情页,然后点击删除按钮删除数据,删除后返回主页面。由于需要显示详情页,在从主页面调用控制器类中响应Get请求的delete函数中须获取数据标识,即数据Id,同时在点击删除按钮时,也是调用控制器类中响应post请求的delete函数,同时传入要删除的数据Id。
 

添加页面

@{
    ViewBag.Title = "Add";
}

<h2>Add</h2>
<form action="/test/DoAdd">
    <table border="1">
        <tr><td>邮箱</td><td><input type="text" name="Email"</td></tr> <!-- 输入邮箱的文本框 -->
        <tr><td>手机号</td><td><input type="text" name="PhoneNum"</td></tr> <!-- 输入手机号的文本框 -->
        <tr><td>真实姓名</td><td><input type="text" name="RealName"</td></tr> <!-- 输入真实姓名的文本框 -->
        <tr><td>部门名称</td><td>@Html.DropDownList("deptID")</td></tr> <!-- 部门名称的下拉列表 -->
        <tr><td>年龄</td><td><input type="text" name="Age"</td></tr> <!-- 输入年龄的文本框 -->
        <tr><td>性别</td><td><input type="text" name="Sex"</td></tr> <!-- 输入性别的文本框 -->
        <tr><td></td><td><input type="submit" value="添加"</td></tr> <!-- 用于添加项的提交按钮 -->
    </table>
</form>

实现效果

1.首先要理解MVC的架构。新建一个web项目取名叫Service。

2.建立eneity(实体包),tools(连接数据库),DAO(借助result的代码实现增删查改)servlet(实现跳转)。

3.在建立实体时一定要和数据库中的字段名一致,否则在运行时会出错。连接数据库时一定要注意数据库名和密码。

4.在DAO层中实现增删查改的语句,并测试,代码如下:

public class userDAO {
 
 public List getAllUser(){//查询

  String SQL="select * from user";
  ResultSet rs=DBHelper.getResultSet(SQL);
  return tools.tools.resultSetToList(rs, User.class);
//  List users=new ArrayList();
//  try
//  {
//   while(rs.next()){
//    User u=new User();
//    u.setUserID(rs.getString("userID"));
//    u.setUserName(rs.getString("userName"));
//    u.setPassword(rs.getString("password"));
//    users.add(u);
//   }
//   return users;
//  }
//  catch(Exception ex){
//   ex.printStackTrace();
//   return null;
//  }
 }
 public static boolean add(User u)//添加数据
 {
  String sql="INSERT INTO user(userID,userName,password) "+"VALUES(?,?,?)";
  Object[] params=new Object[]{u.getUserID(),u.getUserName(),u.getPassword()};  
  int n=DBHelper.ExecSql(sql, params);
  if(n>0)
   return true;
  else
   return false;
 }
 public static boolean delete(User u)//删除数据
 {
  String sql="DELETE FROM user WHERE userID=?";
  Object[] params=new Object[]{u.getUserID()};
  int n=DBHelper.ExecSql(sql, params);
  if(n>0)
   return true;
  else
   return false;
 }
 public static boolean update(User u)//修改数据
 {
  String sql="update user set userName=?,password=? where userID=?";
  Object[] params=new Object[]{u.getUserName(), u.getPassword(), u.getUserID()};
  int n=DBHelper.ExecSql(sql, params);
  if(n>0)
   return true;
  else
   return false;
 }
}

5.servlet中的部分代码如下:同时在jsp中一定要注意路劲的问题。

if(action.equals("show")){
    userDAO dao=new userDAO();
    List<User> users=dao.getAllUser();
    request.setAttribute("users", users);
    RequestDispatcher rd=request.getRequestDispatcher("show.jsp");
    rd.forward(request, response);  
   }else if(action.equals("insert")){
    response.sendRedirect("../user/insert.jsp");
   }else if(action.equals("update")){
    request.getRequestDispatcher("update.jsp").forward(request, response);
   }else if(action.equals("delete")){
    request.getRequestDispatcher("delete.jsp").forward(request, response);
   }}

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值