计算机科学与技术学院课程设计成绩单A:90分~100分;A-:85分~89分;B+:82~84分;B:78~81分;B-:75分~77分;C+:72分~74分;C:68分~71分;C-:64~67分;D:60~63分;F:0分~59分。
武汉科技大学计算机科学与技术学院制表计算机科学与技术学院课程设计报告课程名称:网络应用开发专业:网络工程班级: 2013级 03班学号: ************ *名:**指导老师:**一、设计目的《网络应用开发》是一门实用性、综合性较强的课程。
学生在学完本门课程后,不仅要掌握Web设计的方法和技术,更重要的是能综合应用所学的网页设计、高级编程语言及数据库知识,具有实际开发动态网站的能力。
本课程设计旨在使学生通过完成一个小型的Web应用系统,实现从网站规划、设计、编码和调试的全过程,将理论知识和实践知识相结合,提高学生实际开发网站的动手能力。
二、设计内容在线留言本1、用户能够注册2、用户登录后●查看并编辑用户注册信息●首页分页显示全部的留言主题●可以留言,或对他人的留言进行回复●对自己的留言进行修改或删除可增加的功能:下载专区功能,提供文件的上传、显示和下载三、系统总体设计四、数据库设计SQLServer新建数据库MessageBox,在其中新建3张表,分别为User(用户表)、Send(留言表)、Reply(回复表):2.用户经过登录页面Welcome.aspx登录时比对User表,信息核对正确即登陆成功3.用户经过编辑个人资料页面Edit.aspx修改个人信息时更新User表ID2.在个人留言记录Home.aspx页面对自己的留言及回复修改或删除的时候更新Send表复分配回复ID2.在个人留言记录Home.aspx页面对自己的留言及回复修改或删除的时候更新Reply表五、系统功能设计与实现1.Welcome.aspx留言板欢迎页面登录按钮点击事件:protected void Button1_Click(object sender, EventArgs e){GridView1.DataBind();if (Page.IsValid == true){Session["user"] = TextBox1.Text;Response.Redirect("~/showmessage.aspx");}}用户名检测验证功能:protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){GridView1.DataBind();if (GridView1.Rows.Count == 0)args.IsValid = false;}2.Regist.aspx注册页面用户名检测按钮点击事件:protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){GridView1.DataBind();if (GridView1.Rows.Count == 0)args.IsValid = true;elseargs.IsValid = false;}籍贯级联功能:private string[] hunan = { "常德市", "长沙市", "郴州地区", "张家界市", "衡阳市", "怀化市", "永州市", "娄底市", "邵阳市", "湘潭市", "湘西自治区", "益阳市", "岳阳市", "株洲市" };private string[] hubei = { "鄂州市", "恩施自治州", "黄冈市", "黄石市", "荆门市", "荆州市", "十堰市", "随州市", "武汉市", "咸宁市", "襄樊市", "孝感地区", "孝感市", "宜昌地区", "宜昌市", "郧阳地区" };protected void BindCity(String sheng,DropDownList ddl){if (sheng.Equals("湖南省")){ddl.Items.Clear();ddl.Items.Add(new ListItem("", ""));for (int i = 0; i < hunan.Length; i++){ddl.Items.Add(new ListItem(hunan[i]));}else if (sheng.Equals("湖北省")){ddl.Items.Clear();ddl.Items.Add(new ListItem("", ""));for (int i = 0; i < hubei.Length; i++){ddl.Items.Add(new ListItem(hubei[i]));}}}提交按钮点击事件:protected void Button1_Click(object sender, EventArgs e) {string str="";string str1 = "";Session["username"] = username.Text;Session["password"] = password.Text;Session["pro"] = pro.SelectedValue;Session["city"] = city.SelectedValue;Session["sex"] = sex.SelectedValue;Session["email"] = email.Text;Session["phone"] = phone.Text;for (int i = 0; i < good.Items.Count; i++){if (good.Items[i].Selected){str1 += good.Items[i].Value + ",";}}try{str = str.Substring(0, str.Length - 1);}catch { }for (int i = 0; i < like.Items.Count; i++){if (like.Items[i].Selected){str += like.Items[i].Value + ",";}}{str = str.Substring(0, str.Length - 1);}catch { }birth.Text = Calendar1.SelectedDate.ToShortDateString();Session["good"] = str1;Session["likes"] = str;Session["birth"] = birth.Text;Session["extra"] = extra.Text;if (Page.IsValid){SqlDataSource1.Insert();Response.Redirect("~/Welcome.aspx");}}3.留言板主页导航栏四个按钮点击事件:protected void Button2_Click(object sender, EventArgs e){Response.Redirect("~/Edit.aspx");}protected void Button3_Click(object sender, EventArgs e){Response.Redirect("~/download.aspx");}protected void Button1_Click(object sender, EventArgs e){Response.Redirect("~/Home.aspx");}我要留言点击事件:protected void send_Click(object sender, EventArgs e){Panel1.Visible = true;}留言发表:protected void submit_Click(object sender, EventArgs e){Session["Ucreatetime"] = DateTime.Now.ToString();SqlDataSource2.Insert();Response.Redirect("~/showmessage.aspx");}选择留言触发事件:protected void GridView2_SelectedIndexChanged(object sender, EventArgs e){Session["Rid"] =GridView2.Rows[GridView2.SelectedIndex].Cells[1].Text;}回复按钮点击:protected void Button1_Click(object sender, EventArgs e){TextBox1.Visible = true;Button2.Visible = true;}protected void Button2_Click(object sender, EventArgs e){Session["Mbody"] = TextBox1.Text;Session["Mcreatetime"] = DateTime.Now.ToString();SqlDataSource2.Insert();Response.Redirect("~/main.aspx");}protected void GridView2_SelectedIndexChanged(object sender, EventArgs e){Session["Rid"] = GridView2.Rows[GridView2.SelectedIndex].Cells[1].Text;}}效果图:4.Home.aspx页面查看个人留言记录个人留言表选择触发事件:protected void GridView1_SelectedIndexChanged(object sender, EventArgse){Session["id"] = GridView1.Rows[GridView1.SelectedIndex].Cells[1].Text;Response.Redirect("~/Todo.aspx");}效果:个人回复表选择触发事件:protected void GridView2_SelectedIndexChanged(object sender, EventArgse){Session["Rid"] = GridView2.Rows[GridView2.SelectedIndex].Cells[1].Text;Response.Redirect("~/Todo.aspx");}}效果:5.Edit.aspx页面编辑个人资料直接使用数据源控件绑定更新User表的信息:<asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$ ConnectionStrings:messageConnectionString %>"SelectCommand="SELECT [Id], [username], [password], [sex], [procy], [Email], [phone], [good], [likes], [birth], [extra] FROM [User] WHERE ([username] = @username)" UpdateCommand="UPDATE [User] SET username = @username, password = @password, sex = @sex, procy = @procy, Email = @email, phone = @phone, good = @good, likes = @likes, birth = @birth, extra = @extra WHERE ([username] = @username)"><SelectParameters><asp:SessionParameter Name="username"SessionField="user" Type="String" /></SelectParameters><UpdateParameters><asp:QueryStringParameter Name="username" /><asp:QueryStringParameter Name="password" /><asp:QueryStringParameter Name="sex" /><asp:QueryStringParameter Name="procy" /><asp:QueryStringParameter Name="email" /><asp:QueryStringParameter Name="phone" /><asp:QueryStringParameter Name="good" /><asp:QueryStringParameter Name="likes" /><asp:QueryStringParameter Name="birth" /><asp:QueryStringParameter Name="extra" /></UpdateParameters></asp:SqlDataSource><asp:DetailsView ID="DetailsView1" runat="server"Height="169px" Width="420px" AutoGenerateRows="False"DataSourceID="SqlDataSource1" style="margin-left: 194px"DataKeyNames="Id"><Fields><asp:BoundField DataField="Id"HeaderText="Id" SortExpression="Id" InsertVisible="False" ReadOnly="True" /><asp:BoundField DataField="username"HeaderText="username" SortExpression="username" /><asp:BoundField DataField="password"HeaderText="password" SortExpression="password" /><asp:BoundField DataField="sex"HeaderText="sex" SortExpression="sex" /><asp:BoundField DataField="procy"HeaderText="procy" SortExpression="procy" /><asp:BoundField DataField="Email"HeaderText="Email" SortExpression="Email" /><asp:BoundField DataField="phone"HeaderText="phone" SortExpression="phone" /><asp:BoundField DataField="good"HeaderText="good" SortExpression="good" /><asp:BoundField DataField="likes"HeaderText="likes" SortExpression="likes" /><asp:BoundField DataField="birth"HeaderText="birth" SortExpression="birth" /><asp:BoundField DataField="extra"HeaderText="extra" SortExpression="extra" /><asp:CommandField ShowEditButton="True"/></Fields></asp:DetailsView>6.Download.aspx页面上传下载专区主要后台代码:protected void Page_Load(object sender, EventArgs e){if(!Page.IsPostBack){string strfilepath=Server.MapPath("~/files/");//页面加载获取下载文件的存放目录DirectoryInfo dir = new DirectoryInfo(strfilepath);//获得该目录下的所有文件FileSystemInfo[] files = dir.GetFileSystemInfos();ListItem items;//将遍历的文件名称显示在LISTBOX控件中foreach (FileSystemInfo infofiles in files){items = new ListItem();//声明一个ListItem对象items.Text = ;items.Value = infofiles.FullName;ListBox1.Items.Add(items);//向ListBox控件中添加数据信息}}}protected void Button1_Click(object sender, EventArgs e){string saveDir = @"\files\"; //指定的文件夹要存在string appPath = Request.PhysicalApplicationPath;if (fuImage.HasFile){string savePath = appPath + saveDir + fuImage.FileName;fuImage.SaveAs(savePath);Label1.Text = "上传成功!";}elseLabel1.Text = "上传失败";}protected Boolean DownLoad(string fileURL){Boolean Dok = false;try{string FullPathURL = Server.MapPath(fileURL);//获取文件下载路径System.IO.FileInfo file = new System.IO.FileInfo(FullPathURL);if (file.Exists) //判断要下载的文件是否存在{Response.Clear(); //清空response对象中的内容Response.AddHeader("Content-disposition", "attachment;filename=" + HttpUtility.UrlEncode());Response.AddHeader("Content-Length",file.Length.ToString());Response.ContentType = "application/octet-stream";Response.WriteFile(FullPathURL); //通过对Response对象执行下载文件的操作Response.End(); //结束Response对象Response.Flush(); //刷新Response对象Response.Clear(); //清空response对象中的内容Dok = true;}else{this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"success","<scrip t>alert('文件不存在!')</script>");}} catch (Exception) {this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "success", "<script>alert('文件不存在!')</script>");}return Dok;}protected void Button2_Click(object sender, EventArgs e){//获取下载文件的路径string downfiles;try{downfiles = "files/" + ListBox1.SelectedItem.Text;DownLoad(downfiles);}catch (Exception){this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "success", "<script>alert('选择文件为空,请先选择要下载的文件!')</script>");}}六、课设小结本次课设让我们系统性的去巩固了.Net的知识,也更全面的利用所学知识加以应用,是个很好的锻炼实战机会和经验,其中也遇到一些问题,比如说对GridView的一些功能没有掌握好在重温了课程PPT才会捡起来怎样使用自带选择,编辑,删除的功能,同时更致命的是我们对数据库中表的个人信息这一部分更新的时候却全部改动了整个表而不是我们预想的对单条目进行改动,最终经过我们的讨论和认真探讨终于是解决了这个问题,原来不仅是删除语句要加上WHERE语句,更新的时候也要加上WHERE语句加以控制才能对单条目进行更新,总之这次课设是一个很棒的学习之旅。