[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
相关资源
任务简介
开发工具:VS2010 项目框架:MVC4 浏览器:Chrome 数据库ORM框架:iBatis.net 数据库:mysql 后端开发语言:c# 前端开发语言:js,html5,css3 功能需求:1. 帐号登入验证 2. 书籍信息录入 3. 书籍信息查询,列表展示 4. 书籍信息更新修改 项目管理:git
MVC4开发基本介绍
见上一篇文章:visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)。
git版本控制基本介绍
版本控制采用git,在visual studio上使用git可以参考:blog.csdn.net/leichelle/article/details/8002636
关于git操作的详细内容可以参见:廖雪峰的官方网站
常见的git操作
创建版本库
git init
设定版本库不关心的文件
新建 .gitignore 然后在文件中添加不需要的文件格式,如 *.exe
将文件放到版本库门口
git add file.txt or git add *.txt or git add ./ # 添加当前目录下的所有文件
查看当前版本库的状态
git status # 能够看到,哪些东西离版本库的门口还很远,哪些东西已经放到了版本库的门口
将放在版本库门口的文件,送到版本库里面
git commit -m "add file.txt" # 引号中的内容,用来说明,这一次你将哪些东西,从门口放到了内部
比较修改的文件和原来放在版本库中的文件有什么区别
git diff file.txt
查看版本库中已经放了多少个版本
git log --pretty=oneline # 其中很长的一串数据表示commit id
退回到上个的版本
git reset --hard HEAD^
退回到特定版本
git reset --hard 3628164 # 如果忘记了版本号,可以通过git reflog查看
ibatis设定
建立与图书管理系统相关的数据库,以及数据表,并且设定ibatis相关的config文件,数据操作映射的xml文件等。
数据库以及表的建立如下,同时插入示例数据:
create database if not exists `bookmanagementsystem`; create table if not exists `BOOK` (
`BK_ID` bigint not null auto_increment,
`BK_TITLE` varchar(255) not null,
`BK_AUTHOR` varchar(100) not null,
`BK_IS_READED` bool not null default false,
`BK_PUBLISHER` varchar(255) not null,
`BK_PUBLISH_TIME` datetime not null,
`BK_DESCRIPTION` text not null,
`BK_ISBN` varchar(100) not null,
`BK_PRICE` decimal not null,
primary key(BK_ID)
); # second insert example elements insert into `BOOK` (
`BK_TITLE`, # 书籍的标题
`BK_AUTHOR`, # 书籍的作者
`BK_PUBLISHER`, # 书籍的出版社
`BK_PUBLISH_TIME`, # 书籍出版时间
`BK_DESCRIPTION`, # 书籍简介
`BK_ISBN`, # 书籍ISBN号
`BK_PRICE`, # 书籍的价格
)
values (
"中国古代文学作品选简编",
"袁世硕",
"中国人民大学出版社",
"2015-01-01",
"本书是为配合中国文学史课的敎学,按照歷史的顺序,选注自先秦至二十世纪五四新文学运动发生,歷代主要文体的优秀作品二百多家近千篇。入选篇目以经过歷史选择的传世之作为主,注意突出在文学史上占有重要地位的作家的代表作,兼顾到不同的流派、风格,以便与中国文学史的敎材相呼应,体现出中国古代文学及其演变的风貌。第一版畅销多年,此次修订根据使用师生意见,增加了古代小说选篇,以使作品门类更加完整。",
"978-7-300-20262-4",
98.00
),(
"骨与关节影像学",
"陈克敏,陆勇",
"上海科学技术出版社",
"2015-01-01",
"本书由我国骨放射学领域的著名专家和中靑年专家在总结自身实践经验和近年来新进展的基础上编写而成。本书囊括了几乎所有骨骼肌肉疾病的影像学知识,配有2000余幅黑白照片,重点论述各种骨骼肌肉疾病的病理、X线、CT、MRI、造影等综合影像的诊断和鉴别诊断。本书以近10年影像诊断的进展为主,也有多年积累的少见骨骼肌肉疾病的珍贵资料,图文并茂,可为国内医学影像硏究、敎学及培训中靑年影像医务人员提供全面系统的资料,供放射科、骨科及其他临床科室医务人员参考。",
"978-7-5478-2309-5",
248.00
);
起步
建立新mvc4项目,命名为BookMS,选择Internet Application模版,并勾选添加Unit test选项。然后,将相应的ibatis配置文件设置好,然后将解决方案中的所有内容添加到git项目中,git commit -m "initial project",其中obj文件夹并不包含在git项目中,即,在.gitignore文件中添加obj,如果还有其他额外的文件不需要包含到项目中,添加到.gitignore文件即可。
Model建立
默认的模版中在Models文件夹下会有AccountModels.cs,但是我们这里暂时不考虑关于 用户登入管理相关内容,于是,在此略过。 在后续文章中会介绍相关的内容。
建立对应的Book.cs用来和数据表中的字段对应,即,数据模型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations; namespace BookMS.Models
{
public class Book
{
public int Id { get; set; } [Required(ErrorMessage="Title is required")]
[StringLength()]
public string Title { get; set; } [Required(ErrorMessage = "Title is required")]
[StringLength()]
public string Author { get; set; } [Required]
public bool IsReaded { get; set; } [Required(ErrorMessage = "Publisher is required")]
[StringLength()]
public string Publisher { get; set; } [Required(ErrorMessage = "Publish Time is required")]
public DateTime PublishTime { get; set; } [Required(ErrorMessage = "Description is required")]
public string Description { get; set; } [Required(ErrorMessage = "ISBN is required")]
[StringLength()]
public string ISBN { get; set; } [Required(ErrorMessage = "Price is required")]
[DataType(DataType.Currency)]
public decimal Price { get; set; }
}
}
控制器(Controller)创建
命名为BooksController.cs。根据最初的功能需求可知,需要完成的有:1. 帐号登入验证 2. 书籍信息录入 3. 书籍信息查询,列表展示 4. 书籍信息更新修改
除了第一项是和帐号登入相关,其他几项都是和书籍相关的,也就是需要两个控制器。一个是 AccountController.cs,另一个是BooksController.cs。
关于帐号登入验证的内容将在后续文章中介绍
从需求中知,BooksController控制器中的方法,需要有:
- Create [get|post] 书籍信息录入
- SearchList [get] 书籍信息查询,以及列表展示
- List [get] 书籍信息列表展示
- Edit [get|post] 书籍信息更新修改
- Details [get] 查看书籍信息详细内容
- Delete [get|post] 删除书籍信息
我是一个新手,所以一开始在具体实现的时候,最容易选择的方式是,直接在相应的控制器的action中对数据库进行操作。
首先添加List action, 注意添加引用:using IBatisNet.DataMapper; using BookMS.Models;。
public ActionResult List()
{
IList<Book> books = Mapper.Instance().QueryForList<Book>(
"Book.BKSelectAll", null);
return View(books);
}
其中BKSelectAll,表示的是Book.xml中与数据库操作相对应的标示符。 注意:BKSelectAll前面的sqlMap的Book表示命名空间,因为在SqlMap.config中将useStateNamespace设置成了true
<!-- in Book.xml -->
<select id="BKSelectAll" resultMap="BKSelectResult">
select * from BOOK
</select>
对应的View视图很容易实现,先将项目build一下,然后右键添加View,选择Create a strongly-type view,并选择model class为Book,scaffold template选择为list,确认即可。
运行后输出的结果如下:

接着添加,create action
[HttpGet]
public ActionResult Create()
{
return View();
} [HttpPost]
public ActionResult Create(Book book)
{
if (ModelState.IsValid)
{
Mapper.Instance().Insert("Book.BKInsert", book);
return RedirectToAction("List");
} ModelState.AddModelError("", "创建图书信息出现错误");
return View();
}
添加delete action,edit action,detail action,具体的代码就不再下面给出了,可以直接从 源代码附件中查看。另外,对应的view可以分别借助scaffold template中的create,delete,edit,detail建立。
最后一个功能就是书籍信息的查询,在List视图中,添加两个用于输入查找信息的输入框,这里设定能够通过书名(Title)和作者名(Author)查询书籍信息,即:
<!-- in List.cshtml -->
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm("SearchList", "Books", FormMethod.Get))
{
<p>
Title: @Html.TextBox("sTitle")
Author: @Html.TextBox("sAuthor")
<input type="submit" value="Search" />
</p>
}
另外在BooksController中添加SearchList control,并且修改List control,如下:
public ActionResult List(IList<Book> books = null)
{
if (books == null)
books = Mapper.Instance().QueryForList<Book>("Book.BKSelectAll", null);
return View(books);
} public ActionResult SearchList(string sTitle, string sAuthor)
{
IList<Book> books = Mapper.Instance().QueryForList<Book>("Book.BKSelectByTitleAuthor",
new Book { Title = "+sTitle+", Author = "+sAuthor+" });
return View("List", books);
}
其中,BKSelectByTitleAuthor对应的statement为:
<select id="BKSelectByTitleAuthor" resultMap="BKSelectResult" parametersClass="Book">
select * from BOOK where
BK_TITLE like #Title# and
BK_AUTHOR like #Author#
</select>
至此,拥有最基本功能(不含有用户帐号控制的),同时也是非常粗略的图书管理系统就此完成了,为了在运行后的网页能够直接调转到:Books/List。需要在HomeController.cs中的Index方法内,将View()改为:RedirectToAction("List", "Books")。
下一篇预告
对建立的《图书管理系统》尝试进行如下优化:
- 数据库优化
- 代码优化
- 建立单元测试
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)的更多相关文章
- [转]基于Visual Studio 2010 进行敏捷/Scrum模式开发
http://www.infoq.com/cn/articles/visual-studio-2010-agile-scrum-development 根据Forrester Research今年第二 ...
- [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)
[入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date 周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...
- 基于Visual Studio 2010 阐述C#4个特性
Csharp4.0与以往版本基础体现了强大的性能优势,主要体现在以下四个方面: 1. 通过委托成员来实现接口 在C# 4.0中可以通过委托来实现某个成员的接口,例如下面的代码: public clas ...
- 原创:基于visual studio 2010 对话框程序的创建
1)创建工程 2)选择对话框应用 3)打开工具箱 先打开资源管理器,点击IDD_TEST1_DIALOG对话框,然后在菜单栏中“视图”----“工具箱”
- Visual Studio 2010 中的 Web 开发
概述 Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供非常多新的功能.这些新功能旨在帮助开发者高速方便地创建和部署质量高且功能全的 Web 应用 ...
- 提高你开发效率的十五个Visual Studio 2010使用技巧
提高你开发效率的十五个Visual Studio 2010使用技巧 相信做开发的没有不重视效率的.开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS.能够对一个IDE产生依赖,说明这个ID ...
- 用C#语言在Visual Studio 2010里开发一个自定义的PowerShell Cmdlet
1. 打开Visual Studio 2010 2. 新建一个基于Class Library的项目 3. 给项目起个名字然后OK 4. 为项目添加下列Reference System.Manageme ...
- WIN7环境下CUDA7.5的安装、配置和测试(Visual Studio 2010)
以下基于"WIN7(64位)+Visual Studio 2010+CUDA7.5". 系统:WIN7,64位 开发平台:Visual Studio 2010 显卡:NVIDIA ...
- Windows下使用Visual Studio 2010编译ffmpeg全过程
在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...
随机推荐
- 【接口开发】浅谈 SOAP Webserver 与 Restful Webserver 区别
接口,强大,简单,交互,跨越平台 下面简单阐述这两大接口思想 一 REST: REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性. ...
- css实现单行,多行文本溢出显示省略号……
1.单行文本溢出显示省略号我们可以直接用text-overflow: ellipsis 实现方法: <style> .div_text{width: 300px; padding:10px ...
- mybatis_个人总结
在使用mybatis框架开发数据访问层的过程中,我在这段时间遇到很多细节问题困住我,在这里我来分享一下我遇到的坑,希望能帮到大家. 一.mybatis动态代理方式开发的规范: 1.注意在mybatis ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- 【HanLP】HanLP中文自然语言处理工具实例演练
HanLP中文自然语言处理工具实例演练 作者:白宁超 2016年11月25日13:45:13 摘要:HanLP是hankcs个人完成一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环 ...
- 企业做数据缓存是使用Memcached还是选Redis?
企业是使用Memcached还是选Redis? 在构建一款现代且由数据库驱动的Web应用程序并希望使其拥有更为出色的性能表现时,这个问题总会时不时出现.并给每一位开发人员带来困扰.在考虑对应用程序的性 ...
- 【干货分享】流程DEMO-采购预算编制
流程名: 采购预算编制 业务描述: 在月初由计财部进行预算编辑,提交审批后预算生效 流程相关文件: 流程包.xml WebService业务服务.xml WebService.asmx WebSe ...
- Dynamics CRM 之ADFS 使用 WID 的独立联合服务器
ADFS 的使用 WID 的独立联合服务器适用于自己的测试环境,常用的就是在虚机中使用. 拓扑图如下: wID:联合身份验证服务配置为使用 Windows 内部数据库
- Android Studio快捷键
一.android studio 默认快捷键 刚开始接触一款开发软件,想必很想了解它的快捷方式,这会对你的编程起到很好的帮助,提高工作效率,接下来给你介绍下Android Studio一些常用的快 ...
- 一点公益商城开发系统模式Ring Buffer+
一个队列如果只生产不消费肯定不行的,那么如何及时消费Ring Buffer的数据呢?简单的方案就是当Ring Buffer"写满"的时候一次性将数据"消费"掉. ...