学生网上选课系统毕业设计任务书说 明1. 毕业设计任务书由指导教师填写,并经专业学科组审定,下达到学生。2. 进度表由学生填写,至少每两周交指导教师签署审查意见,并作为毕业设计工作检查的主要依据。进度表中的周次是指实际的毕业设计进程中的周次。3. 学生根据指导教师下达的任务书独立完成开题报告,于3周内提交给指导教师批阅。4. 本任务书在毕业设计完成后,与论文一起交指导教师,作为论文评阅和毕业设计答辩的主要档案资料,是学士学位论文成册的主要内容之一。一、毕业设计的要求和内容(包括原始数据、技术要求、工作要求)本系统具体要求以及内容如下:(1)系统管理员设置选课时间段、录入教学楼教室信息。(2)教师用户显示和修改个人信息、开设课程、编辑课程上课时间、给学生分数。(3)学生用户显示和修改个人信息、查看必修课程、选择选修课程、锁定选课信息、查看最终选课信息、查看学分和成绩。二、毕业设计图纸内容及张数三、毕业设计实物内容及要求根据功能的不同可以将本系统划分为九个模块。用户登录身份验证模块、设置选课时间模块、录入信息模块、开设课程模块、编辑程序时间地点模块、信息修改设置选课时间模块、设置选课时间模块、设置选课时间模块、数据库模块、数据库访问模。主要的要求是选课系统可以把学生的选课统计起来供教师使用。 四、毕业设计进度计划序号 各阶段工作内容 起讫日期 备注1 完成系统总体设计 2月25日至3月9日 2 完成数据库设计 3月10日至3月23日 3 完成系统通用类设计 3月24日至4月6日 4 完成通用功能,教学助理 (系统管理员)专用功能 4月7日至4月20日 5 完成教师专用功能,学生专用功能,毕业设计论文部分 4月21日至5月4日 五、主要参考资料[1]吴晨,《ASP.NET+SQL Server-数据库开发与实例》,清华大学出版社,出版2006年7月[2](美)内格尔,《C#高级编程(第4版)》,清华大学出版社,出版2006年10月[3](美)solid,《SQLServer2005从入门与精通(应用技术基础)》,清华大学出版社,出版2006年09月[4](美)保罗《ASP.NET 2.0经典教程C#篇》人民邮电出版社,出版2007年5月
六、毕业设计进度表(本表至少每两周由学生填写一次,交指导教师签署审查意见)第一、二周( 月 日至 月 日) 学生主要工作:
指导教师审查意见:
签名: 年 月 日第三、四周( 月 日至 月 日) 学生主要工作:
指导教师审查意见:
签名: 年 月 日第五、六周( 月 日至 月 日) 学生主要工作:
指导教师审查意见:
签名: 年 月 日
第七、八周( 月 日至 月 日) 学生主要工作:指导教师审查意见:签名: 年 月 日第九、十周( 月 日至 月 日) 学生主要工作:指导教师审查意见:签名: 年 月 日第十一、十二周( 月 日至 月 日) 学生主要工作:
指导教师审查意见:签名: 年 月 日
七、其他(学生提交)1.开题报告1份 2.外文资料译文1份(2000字以上,并附资料原文) 3.论文1份(8000字以上) 指 导 教 师: 学科组负责人: 学生开始执行 任务书日期: 学生姓名: 送交毕业设计日期:457
学生网上选课系统开题报告一、 选题的依据及意义:大学期间总会有很多公共选修课,以往的选课方法是随堂报名。这种方法虽然直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。原因是传统的选课方法没有预见性,大家没有事先协调好。使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,不用浪费体力去选课,还可以使教学资源合理平均地分配。随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,增加了学生选课自主权。 网上选课系统针对在校学生和教师使用。从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式。传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学模式,如果仍然通过纸上的方式选课,一方面浪费了大量的人力、物力资源,另一方面浪费时间以及会在人为的统计汇总过程中出现可避免的差错等情况。随着高校人数的增多,上述弊端会越来越多的暴露出来。如果利用网络进行选课,学生只要在计算机前输入自己的个人选课信息即可完成教务部门原来几倍的作业量。从教师的角度来说,教师提出代课申请完成课程发布的工作更加容易,得到教学的信息更加快捷,因此通过网上选课系统可以大幅度的减少教师的工作量,方便了教学工作。
二、 国内外研究现状及发展趋势(含文献综述):我国高校都实行了学分制,它的核心是允许学生自由选课,即把学习的自主权交给学生。在这里,学生选课时的制约因素比较复杂,工作量也很大,而且往往需要在较短的时间内完成。运用计算机辅助选课,即能实时地对大量选课数据进行检验和统计,十分方便地输出选课结果,同时也避免了人工处理时容易产生的错误。在高等学校的教务管理工作中,课程表的编排是一项十分复杂、棘手的工作。在排课过程中,除了满足大量的制约条件以外,还必须解决许多冲突与矛盾,例如:两位教师不能同一时间在同一班级上课、一位教师不能在同一时间上两门课等等。利用计算机辅助进行课表编排工作,既提高了排课工作的科学性,又可大大减轻管理人员的工作强度,提高工作效率,从而使学校教务管理现代化迈上了一个新台阶。 国外的教学科研软件与国内相比开发的早而且比较成熟。早在七十年代末,美国就建成了NSFNET(国家科学基金网),其课题的申报及课题的进展情况汇报都在网上进行。其网上教学教务管理系统也十分完善,世界各地的学生可以坐在家里通过互联网完成入学报名、选课、考试、毕业论文、取得学位这一学习生活的全过程。目前,国际上已具规模的远程教育学校就有数百所之多,网上教育正在各地发挥着巨大的作用,为世界各国培养出大批人才。所有这些都表明,基于Internet的校园网的应用已深入到校园内的各个方面。
三、 本课题研究内容(1)系统管理员设置选课时间段:系统管理员通过此项功能设置选课时段,只有在选课时间段里,学生才可以选择课程,超过次时间段,学生选课信息被自动所定,不得修改。录入学生与教师个人信息:通过此项功能可以实现对教师和学生的个人信息添加删除。录入教学楼教室信息:通过此项功能可以把学校里所有的教学楼教室的信息录入到系统中,以便教师在开设课程时候设置上课的教室。(2)教师用户显示和修改个人信息:教师用户登录系统后,可以查看和修改教师的个人信息,如姓名,电话,E-mail地址等。开设课程:教师用户登录系统后,可以开设课程,可以设置该课程为必修课程或则选修课程,可以设置该课程的最大人数。教师还可以为该课程设置一个前导课程,若学生没有学习或则选择前导课程则不能选择该课程。编辑课程上课时间:教师在开设了课程后,可以灵活地设置上课时间和地点。给学生分数:课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若及格,给予学生学分。(3)学生用户显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等。查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。选择选修课程:学生登录系统后,在所有选修课程中可以选择至少两门选修课程。同时可以查看相关信息。锁定选课信息:学生登录系统,确定了所选课程后,可以锁定自己的选课信息,以防被别人或则自己不小心修改。查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。查看学分和成绩课程结束后,学生登录系统可查看自己学习课程的成绩和已获的学分。
四、 本课题研究方案本课题所开发的系统拟在Windows XP系统和VS.NET平台下开发完成,使用C#作为ASP.NET的开发语言,SQL Server 2000作为数据库。系统要有较高的安全性和较好的性能。最终根据系统开发的成果撰写毕业设计论文。
五、 研究目标、主要特色及工作进度:研究目标通过自己所学的知识基本完成系统的功能实现,在完成系统的过程中对使用ASP.NET+SQL SERVER完成项目有了进一步的了解。主要特色利用现在流行的技术完成一项比较传统的题目,由于题目比较传统,对题目和功能非常了解,因此可以把所有精力放在如何使用VS.NET平台高效的完成题目。工作进度第一二周(2月25日至3月9日)完成系统总体设计;第三四周(3月10日至3月23日)完成数据库设计;第五六周(3月24日至4月6日)完成系统通用类设计;第七八周(4月7日至4月20日)完成通用功能,教学助理 (系统管理员)专用功能;第九十周(4月21日至5月4日)完成教师专用功能,学生专用功能,毕业设计论文部分。六、参考文献:[1](作者)吴晨,《ASP.NET+SQL Server-数据库开发与实例》,清华大学出版社,出版2006年7月[2](美)内格尔,《C#高级编程(第4版)》,清华大学出版社,出版2006年10月[3](美)solid,《SQLServer2005从入门与精通(应用技术基础)》,清华大学出版社,出版2006年09月[4](美)保罗《ASP.NET 2.0经典教程C#篇》人民邮电出版社,出版2007年5月457
学生网上选课系统摘 要 随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。以往的选课方法是随堂报名。这种方法虽然直接,但是造成选课的盲目性和教务处处理数据的繁重性。为了减轻教务处工作,以及每个学生更好的选择自己所喜欢的科目。针对学生选课这一环节,本系统从学生网上自主选课以及教师的课程发布两个大方面进行了设计,基本实现了学生的在线信息查询、选课功能以及教师对课程信息发布的管理等功能。 本文通过分析浏览器/服务器结构的特点并结合选课的实际情况,提出了基于浏览器/服务器结构网上选课系统的基本设计思想,简要介绍了系统各功能模块及数据库的设计,着重讨论了用 ASP.NET技术和SQL Server 2000开发网上选课系统时的数据库访问技术和动态网页制作技术,并给出了部分实现代码。通过该系统,使学生可以方便地在校园网上进行网上选课。该B/S结构的系统在Windows XP系统和VS.NET平台下开发完成,使用C#作为ASP.NET的开发语言,SQL Server 2000作为数据库。系统有较高的安全性和较好的性能。其中连接数据库的字符串可以随时在web.config里修改,并经过编码加密,增加了灵活性,保护了数据库的安全。代码尽量使用存储过程和尽量减少数据库连接的打开时间等手段来提高性能。 本文中除了有对程序的系统分析、总体设计、数据库设计、功能实现等主体部分外,在这之前还介绍了与网上选课系统相关的信息、IIS介绍、IIS与ASP.NET的结合等的基本内容及发展情况。关键词:网上选课,浏览器/服务器结构,ASP.NET,数据库管理系统Abstract With the development of the enrolling number, the data for daily registry is increasing, too. And always we should goto classroom to enroll. Although this method directly,but result in blindness of the course enrollment and registry data processing of the heavy .In order to reduce the work registry ,and better each student to choose their own favorite subjects .This system is special for the on-line course choosing to design both from the aspect of the student and the teacher. The student can choose the course independently and the teacher can manage the information of the announcing course, also. This paper gives the basic design idea of the Browser/Server structure based online course elect system by analyzing the characteristic of the Browser/Server structure and combining with the actual public elective courses conditions of our school.It introduces the function module and database design briefly,followed by a discussion on database accessing technology and the active page technology of the course elect system based on ASP.NET and SQL Server 2000.By using this system,students can elect courses online efficiently.This Browser/Server structure system is developed under VS.NET platform in Windows XP operating system, using C# as ASP.NET development language and SQL Server 2000 as the database. This system is of higher security and better performance. The character string, which is used to connecting to the database, can be modified at any time in the file “ web.config”. The string is encoded and encrypted, increasing flexibility of the system and security of the database. In code, making use of stored procedure and minimizing the database opening time to improve performance of the system. This paper includes the system analysis ,the main designing ,the database designing, the function designing and , before this , some basic knowledge and present development of the programs mentioned above. Keywords: online course elect, Browser/Server structure,ASP.NET, DBMS
目录
摘 要 1ABSTRACT 2第一章 引言 41.1课题研究的目的 41.2 课题研究的意义 41.3 课题的可行性分析 5第二章 系统分析与总体设计 62.1系统分析 62.2 系统总体设计 7第三章 数据库设计与实现 93.1数据库系统分析 93.2 数据库逻辑设计 123.3数据库物理实现 13第四章 公共类与公共页面设计 164.1 WEB.CONFIG页面设计 164.2 数据库连接操作类—DB类 194.3 工具类MYUTILITY类 204.4 错误信息类和错误显示页面 21第五章 系统说明书 225.1系统界面说明 225.2 系统管理说明 275.2教师管理说明 30第6章 总结 34参考文献 35致 谢 457
第一章 引言1.1课题研究的目的1.掌握采用Internet的TCP/IP协议,以B/S方式,ASP.NET编程技术,多媒体技术。2.掌握一种多任务多用户操作系统3.ASP.NET的动态网页和SQL Server大型的数据库。4.学会使用某种开发工具。5.培养相互合作的精神。
1.2 课题研究的意义 学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套软件成为很有必要的事情,在下面的各章中我们将以开发一套学生选课系统为例,谈谈其开发过程和所涉及到的问题及解决方法。本文中所做的主要工作如下:(1)介绍了个性化页面的背景及Win2000server+IIS+ASP.NET系统的一般原理;(2) 阐述整个个性化页面生成系统的系统结构及工作原理;分析了系统实现中的特殊性、难点和重点。(3) 设计实现用户管理、课程管理、选课信息录入管理、新生信息录入管理、课程的浏览和查找、学生查找等ASP.NET页面 。(4) 分析并解决实现中的若干技术问题。 (5) 建立完整的网上选课,进行测试并分析结果。
1.3 课题的可行性分析1.3.1 课题调研(1)与实践活动和相关的文件和资料由教师提供。(2)本课题要求学生有熟练的ASP.NET开发能力,有较强的自学能力以及一定的关系数据库理论开发功底。(3)具有对复杂表进行处理的能力。(4)具体问题再做详细调查研究并与指导老师面谈。
1.3.2 可行性分析(1)技术可行性-----本系统仅需要一台装有Office软件的计算机即可,对机器本身没有太高的要求,一般当前学校或个人电脑完全可满足要求。对于软件技术要求,现在的程序设计语言已非常成熟,要运用HTML样式,图形图象制作工具来制作生动活泼的网页及美观的图形文件或动画文件,数据库使用SQL Server 2000中提供的数据库桌面工具ODBC。(2) 经济可行性-----由于本系统是为学生选课管理使用的系统,装上该应用软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为学校节约大量的人力,物力。所带来的效益远远大于系统软件的开发成本。在经济上完全可行。(3) 操作可行性-----界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速、规范、可靠;统计准确;制表灵活;适应力强;容易扩充。第2章内容主要是:系统需求分析包括,现有系统介绍;系统的实体分析,实体关系图。第二章 系统分析与总体设计2.1系统分析在本系统中,有三类用户:系统管理员,教师和学生。三种不同的用户所具有的操作权限以及操作内容均不一样。本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生和教师的个人信息以及教学楼教室信息。系统管理员不参与开设课程、选择课程等,一切均由教师、学生等录网站自行完成。系统管理员设置一个选课时间段,在到达时间段以前,教师可以开设课程;到达时间段以后,学生可以登陆网站选择课程。教师用户登陆网站后可以开设课程,为自己的课程编辑上课时间和地点,当系统中出现时间地点冲突的时候,系统向教师用户报告并推荐一个时间地点。每门课程可以是必修或则选修,教师为每门课程设置一个学分,并可以在课程结束后给予分数,如果学生及格,学生将获得该课程的学分。对于学生用户,每个学生除了必须选择必修课程外,至少还要选择两门选修课程,学生可以对自己选课信息锁定,以免不小心被修改。当时候超过选课时段后,系统自动锁定学生的选课课程。系统可以根据学生的选课信息,生成一份学生自己的课表。课程结束后学生可登录网站查询成绩与学分。根据上面的要求,从操作功能上可以分为两个类:一个是通用操作,主要实现用户的登录注销和修改密码等;另一种是为不同用户定制不同操作。1。通用操作(1)登录与注销 每个用户都可以用自己的帐号登录系统。用户操作完成后推出系统,注销后可以重新登录系统。 (2)修改密码 每个用户第一次登录都用默认密码(教师和学生与帐号一样)。2。用户所具有功能(1)系统管理员设置选课时间段:系统管理员通过此项功能设置选课时段,只有在选课时间段里,学生才可以选择课程,超过次时间段,学生选课信息被自动所定,不得修改。录入学生与教师个人信息:通过此项功能可以实现对教师和学生的个人信息添加删除。录入教学楼教室信息:通过此项功能可以把学校里所有的教学楼教室的信息录入到系统中,以便教师在开设课程时候设置上课的教室。(2)教师用户显示和修改个人信息:教师用户登录系统后,可以查看和修改教师的个人信息,如姓名,电话,E-mail地址等。开设课程:教师用户登录系统后,可以开设课程,可以设置该课程为必修课程或则选修课程,可以设置该课程的最大人数。教师还可以为该课程设置一个前导课程,若学生没有学习或则选择前导课程则不能选择该课程。编辑课程上课时间:教师在开设了课程后,可以灵活地设置上课时间和地点。给学生分数:课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若及格,给予学生学分。(3)学生用户显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等。查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。选择选修课程:学生登录系统后,在所有选修课程中可以选择至少两门选修课程。同时可以查看相关信息。锁定选课信息:学生登录系统,确定了所选课程后,可以锁定自己的选课信息,以防被别人或则自己不小心修改。查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。查看学分和成绩课程结束后,学生登录系统可查看自己学习课程的成绩和已获的学分。
大学生网上选课系统2.2 系统总体设计在前面的系统的系统功能分析中,将系统划分成10个模块,如图:用户登录身份验证模块验证用户名和密码,并根据不同的用户类型,跳转到对应的页面中。设置选课时间模块提供给系统管理员修改选课时间段。录入信息模块提供给系统管理员,用来录入学生和教师信息,以及录入教学楼教室等信息。开设课程模块提供给教师用户,用来开设一门必修课程或则选修课程。编辑课程时间地点模块提供给教师用户,编辑课程的上课时间地点友好的界面和操作。评分模块用于教师用户给选修该教师开设的课程的学生评分。查看课程模块包括查看必修课程、查看选修课程、查看已选课程、查看课程成绩单。选课和锁定模块中实现选择选修课程和锁定选课信息的功能。
第三章 数据库设计与实现
数据库是此类系统的核心,系统中所有的信息都存储在数据库中,在所有ASP.NET页面中通过ADO.NET与数据库连接,操作数据库中的数据,从而实现所有需要的功能。数据库软件有很多,如Microsoft SQL Server 2000等。本系统中数据库采用Microsoft SQL Server 2000作为数据库工具。数据库是网站的核心,数据库设计的合理与否对网站的建设有着至关重要的影响。一个良好的数据库开发过程一般是先系统分析,再逻辑设计,然后物理实现。系统分析中分析数据库用户需求,并画出E-R图直观地表示出数据库系统的需求。逻辑设计中根据系统分析设计的一个关系模型。物理设计为逻辑设计中的数据模型选取一个最合理的应用环境的物理结构,通常选取一个常用数据库软件,用数据库软件创建与逻辑设计中数据模型对应的数据库。3.1数据库系统分析 本系统的数据库实体主要有“学生”、“教师”、“教学楼”、“教室”、“课程”等。其中“教师”与“课程”存在“开设”联系,并且一个教师可以开设N门课程,即“教师”与“课程”之间是一对多的关系。同样“教学楼”与“教室”也存在一对多的关系。一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。同样“课程”与“教室”之间也是多对多的关系。整个数据库可以用一个E-R图表示,如图:E—R图中的实体图:3.2 数据库逻辑设计 数据库逻辑设计就是将E—R图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。转换过程中常见规则有:(1)一个实体型转换为一个关系模式;(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;(4)一个多对多的关系转换成一个关系模式。根据以上四条规则,下面将E—R图转换成关系模型。对于“教学楼”、“教室”和两者之间的关系,就可以根据规则(3)转换成两个关系模式教学楼(教学楼ID,教学楼名称)教室(教室ID,教学楼ID,教室名称)对于“学生”、“课程”和它们之间的“选修”关系就可以规则(4)转换成三个关系模式。学生(学号,姓名,性别,年龄,登陆密码,学分,地址,电话,电子邮件)课程(课程编码,课程名称,开课教师编号,学分,最大人数,课程简介,前导课程编号)选课(学号,课程编号,成绩)依次类推,剩下的关系转换成下面三个关系模式:教师(教师编号,姓名,性别,年龄,电话,电子邮件,个人简介)课程时间地点(课程编号,开始周次,结束周次,上课时间,上课教室ID)管理员(帐号,密码)3.3数据库物理实现经过数据库系统分析和逻辑设计后,数据库的结构已经非常清晰,剩下的就是用一种数据库软件实现这样的结构。本系统中数据库采用Microsoft SQL Server 2000作为数据库。首先我们在Microsoft SQL Server 2000的“企业管理器”创建一个数据库,我们命名为“SC”,如图3-1: 图3-1选中SC数据库,向数据库中添加8个表:Student,Teacher,Course,SC,CourseTime,Building,Room和Admin,每个表与逻辑设计中一种的关系模式相对应。下面是每个数据表中的属性,包括属性列的名称、数据类型、长度、是否可以为空和备注说明等内容。
大学生网上选课系统1)Student表。Student表用来存储学生的个人信息,使用学号作为主键,如图3-2: 图3-2 (2)Teacher表。Teacher表用来存储教师的个人信息,用学校分配给教师的教师编号作为主键,这样可以避免重复,如图3-3: 图3-3 (3)Course表。Course表用来存储课程信息,Course表以课程编号为主键,设置课程编号自动增加1(通过建表的时候对属性列设置“标识”,并设置“标识递增量”为1)。表中开课教师Id为外键,所有“TId”的值必须是Teacher表中的“TId”值。设置外键关系可以通过在建立表的窗口中单击右键,在右键菜单中选择“关系”,在弹出的对话框中设置外键关系。如图3-4:
(4)SC表。SC表用于存储学生的选课信息,在SC表中学号和课程编号是主键,同时也是外键。如图3-5: 图3-5 (5)CourseTime表。CourseTime表用来存放课程的上课时间和上课地点信息,其中课程编号和教室编号为外键。如图3-6: 图3-6 (6)Building表。Building表用来存放教学楼信息,Building表中教学楼编号为主键,自动增加1。如图3-7: 图3-7 (7)Room表。Room表用来存放教室信息,在Room表中,教室编号为主键,自动增加1,教学编号为外键。如图3-8: 图3-8 (8)Admin表。Admin表用来存放系统管理员信息,如图3-9: 图3-9第四章 公共类与公共页面设计
4.1 Web.config页面设计 Web.Config文件是用来保存网站的很多全局设置,代码是通过using Configuration引用,在Web.Config文件中添加数据库连接字符串。在ADO.NET中用一个字符串来表示一个数据库,一般都把这个字符串放到Web.Config文件中,在整个项目中均可使用。
学生网上选课系统
在上面的代码中部分解释:Data source:表示数据库服务器地址,可以填IP地址,若为本机数据库,则填(local)Initial catalog:表示数据库名称。Persist security info:表示数据库登录验证模式。SQL Server支持用户名登录验证和Windows身份验证两种模式。一般选用前一种,故这里Persist security info的值署为True。User id:表示登录数据库的用户名。Pwe:表示登录数据库的用户名的密码。Packet size:表示包的大小值,此项默认配置为4096即可。
4.2 数据库连接操作类—Db类 在ASP.NET中通过ADO.NET技术对数据库进行操作。ADO.NET中有许多很方便的类可用来操作数据库,例如SqlConnection类、SqlDataAdapter类、SqlCommand类、DataSet类等。由于在选课系统中,操作数据库的地方非常多,为了避免很多重复代码的编写,所以对数据库操作做了简单的封装—Db类。在Db类中有三个静态函数ExecuteSelectSql、ExecuteSql和ExecuteInsertSql,其中ExecuteSelectSql函数用来执行查询操作,ExecuteSql用来执行修改、插入和删除三类操作,ExecuteInsertSql执行需要返回刚插入记录的identity的insert语句。 通过ADO.NET执行SQL语句从而对数据库进行操作,一般顺序为:先通过SqlConnection的Open函数连接到数据库,然后再通过Sqlcommand执行指定的SQL语句,执行结束后再调用SqlConnection的Close函数关闭数据库连接。 ExecuteSelectSql函数的代码如下:///
/// 执行select类型的sql语句,返回select得到的数据集 /// ///
select语句 ///
返回select得到的数据集 public static DataSet ExecuteSelectSql( string sqlSelect ) { SqlConnection conn = new SqlConnection(connString); SqlDataAdapter sda = new SqlDataAdapter(sqlSelect,conn); DataSet ds = new DataSet(); try { sda.Fill(ds); } catch(SqlException e) { throw new Exception(e.Message); } return ds; }
ExecuteSql函数代码如下:public static int ExecuteSql( string sql ) { int rows = -1; SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql,conn); try { conn.Open(); rows = cmd.ExecuteNonQuery(); } catch(SqlException e) { throw new Exception(e.Message); } finally { cmd.Dispose(); conn.Close(); } return rows; }
4.3 工具类MyUtility类 在网站的编写过程中经常会有很多公共函数调用,把它们都写在一个工具类里:MyUtility类,每个函数作为工具类的一个静态成员函数。其中包括MD5静态成员函数以及Alert静态成员函数。 MD5静态成员函数:MD5算法。MD5算法是一个不可逆的加密算法,通常用于重要信息的加密,如登录密码,在ASP.NET中,提供有MD5的算法实现函数,调用MD5算法代码如下:public static string MD5(string str) { string result = ""; result = FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5"); return result; } Alert静态成员函数的功能是显示一个提示对话框,在网站的运行过程中,经常需要给用户一些即时反馈,比如修改密码成功,选课成功等提示框。代码如下:
public static string Alert(string s) { return ""; }Back函数的功能是回退到某个网页,i的取值通常为负,当为-1时表示回退到上一个网页,为-2时表示回退到上上个网页,依次类推。代码如下:public static string Back(int i) { return ""; }4.4 错误信息类和错误显示页面 在用户使用系统过程中,可能由于用户操作失败或则网络原因等,系统运行会出现一些错误,为了便于统一,本系统定义专用的错误信息类和错误显示页面。在错误信息类ErrorInfo类中,定义了所有的本系统中所出现的错误情况和函数Message。函数Message根据错误情况得到相应显示字符串。错误显示页面根据URL中错误代码参数显示不同的错误信息。
4.5登录页面 登录页面是所有用户公用的功能。不同的用户登录到系统中将转向不同的页面。解决方法运用了ASP.NET的内置对象Session记录用户登录信息,同样也可以在网站里随时判断用户是否已经登录。
大学生网上选课系统第五章 系统说明书
5.1系统界面说明下面是在线选课系统的预览,此处简单介绍本系统的部分功能。1.登录页面,如图5-1: 图5-1在用户名和密码处输入用户名和密码,在“用户类型”下拉列表框中选择“学生”,单击“登录”按钮,登录选课系统。主要代码如下: private void btnLogin_Click(object sender, System.EventArgs e) { int type = Int32.Parse(ddlType.SelectedItem.Value); string user = txtUser.Text.Trim(); string inputkey = txtKey.Text.Trim(); string key = ""; string sql = ""; DataSet ds; switch( type ) { case 1://学生 //验证学生身份代码 break; case 2://教师 //验证教师身份代码 break; case 3://系统管理员 //验证管理员身份代码 break; default; break; } }2.查看必修课程列表页面,如图5-2: 图5-2 登录成功后,进入学生主页,点击“必修课程”链接,得到所有必修课程的列表,在列表中可以看到所有必修课程及课程的简单信息,如授课教师姓名、课程所占学分等。在列表中可以点课程名称,如“计算机应用基础”链接,查看课程详细信息;点教师姓名,如“李萍”链接,查看教师的详细信息;点击“查看上课时间地点”链接,查看对应课程的上课时间和地点。在页面加载的时候从数据库读取所有必修课信息,代码如下:string sql = "select Course.*,TName from Course,Teacher where CType like '必修' and Course.TId like Teacher.TId";//查询处所有必修课程信息 DataSet ds = Db.ExecuteSelectSql(sql); if ( ds != null && ds.Tables.Count > 0 ) { dgCourse.DataSource = ds.Tables[0]; dgCourse.DataBind();//将查询结果绑定到DataGrid中 }3.查看选修课程列表页面,如图5-3: 图5-3 单击“选修课程”链接,查看所有选修课程列表,在列表中给出了比必修课程更多的信息,比如多了对应选修课程的前导课程、最大人数、当前已选人数等,对每个选修课程均有一个“选修该课程”的按钮,单击此按钮方可选择对应课程。主要代码如下: string sql = "select x.*,TName,(select CName from Course as y where y.CId = x.CPreCId) as CPreCName from Course as x,Teacher where x.CType like '选修' and x.TId like Teacher.TId";//查询该学生已选修的课程 DataSet ds = Db.ExecuteSelectSql(sql); if ( ds != null && ds.Tables.Count > 0 ) { dgCourse.DataSource = ds.Tables[0]; dgCourse.DataBind(); for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ ) { sql = "select count(*) from SC where CId = "+ds.Tables[0].Rows[i]["CId"].ToString(); DataSet ds1 = Db.ExecuteSelectSql(sql); if ( ds1 != null && ds1.Tables.Count > 0 && ds1.Tables[0].Rows.Count > 0 ) dgCourse.Items[i].Cells[6].Text = ds1.Tables[0].Rows[0][0].ToString(); } } bool locked= bool.Parse(Session["Locked"].ToString()); if ( ! locked ) { lbLock.Text = "您尚未锁定选课信息!"; } else { lbLock.Text = "选课信息已被锁定!"; dgCourse.Columns[9].Visible = false; }4.查看已选课程页面,如图5-4: 图5-4在上一步查看选修课程的列表中,选择“计算机密码学”、“计算机图形学”、“线性代数”三门课程后,点击“已选课程”链接查看已经选择的课程列表,在列表中除了可以看到与上一步中相同的信息外,还可以查看到课程成绩。刚才选择的三门课程的成绩均为0,当课程结束后,教师登录本系统给所有学生评分,学生再次浏览此页面可查看到课程的成绩,若成绩合格,学生可获得对应课程的学分。锁定课程代码如下:string sql = "select count(*) from SC where SId like '"+Session["Id"].ToString()+"'"; DataSet ds = Db.ExecuteSelectSql(sql); int nCourse=0; if ( ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 ) { nCourse = Int32.Parse(ds.Tables[0].Rows[0][0].ToString()); } if ( nCourse < 2 ) { Response.Write(MyUtility.Alert("您必须选择至少两门选修课程!")); return; } else { //先将所有必修课程加入到选课表中再锁定 sql = "select CId from Course where CType = '必修'"; DataSet ds2 = Db.ExecuteSelectSql(sql); if ( ds2 != null && ds2.Tables.Count > 0 ) { for ( int i = 0; i < ds2.Tables[0].Rows.Count; i++ ) { string cid = ds2.Tables[0].Rows[i][0].ToString(); sql = "insert into SC(SId,CId,Score) values('"+Session["Id"].ToString()+"',"+cid+",0)"; Db.ExecuteSql(sql); } } sql = "update Student set SLocked = 1 where SId like '"+Session["Id"].ToString()+"'"; if ( Db.ExecuteSql(sql) == 1 ) { lbLock.Text = "选课信息已被锁定!"; Session["Locked"] = "true"; Response.Redirect("Selectedcourse.aspx"); } }
大学生网上选课系统 系统管理说明 系统管理员主要有三个功能需要实现:设置选课时间段、录入学生和教师信息、录入教学楼教室信息。 设置开始选课时间段:选课时间段存储在项目目录下的time.txt文件中。文件中第一行表示开始时间,第二行表示结束时间。如图5-5: 如图5-5设置时间代码如下: DateTime dtStart,dtEnd; try { dtStart = DateTime.Parse(txttimeStart.Text); dtEnd = DateTime.Parse(txtTimeEnd.Text); } catch { Response.Write(MyUtility.Alert("输入错误")); return; } StreamWriter sw = new StreamWriter("http://localhost/sc/login.aspx",false); sw.WriteLine(dtStart.ToString());//写入开始时间 sw.WriteLine(dtEnd.ToString());//写入结束时间 sw.Close(); lbTime.Text = "选课时间为:"+dtStart.ToString()+"到"+dtEnd.ToString(); //更新选课时间段显示 录入学生和教师信息:在AdminUser.Aspx中,用与录入学生和教师信息。如图5-6: 图5-6添加教师代码如下: private void btnAddTearcher_Click(object sender, System.EventArgs e) {string sql = "insert into Teacher(TId,TKey,TName) values('"+txtTId.Text.Trim()+"','"+MyUtility.MD5(txtTId.Text.Trim())+"','"+txtTName.Text.Trim()+"')"; try { if ( Db.ExecuteSql(sql) == 1 ) { sql = "select * from Teacher"; DataSet ds1 = Db.ExecuteSelectSql(sql); if ( ds1 != null && ds1.Tables.Count > 0 ) { dgViewT.DataSource = ds1.Tables[0]; dgViewT.DataBind(); } } else { Response.Write( MyUtility.Alert("添加失败-_-,请检查编号是否已经存在!") ); return; } } catch { Response.Write( MyUtility.Alert("添加失败-_-,请检查编号是否已经存在!") ); return; } }录入教学楼教室信息:在AdminRoom.Aspx中,教学楼和教室的管理主要包括添加和删除操作,添加一个教室必须指定其所属的教学楼。如图5-7: 图5-7添加教学楼代码如下: private void btnAddBuilding_Click(object sender, System.EventArgs e) { if ( txtBuilding.Text.Trim() == "" ) { Response.Write(MyUtility.Alert("请输入教学楼名称!")); return; } string sql = "insert into Building(BuildingName) values('"+txtBuilding.Text.Trim()+"')"; Db.ExecuteSql(sql); }5.2教师管理说明教师用户的功能需求有个人信息的管理、开设课程、课程时间地点编辑、设置学生成绩。教师个人信息:在Teacher.Aspx中,在这里可以修改密码和添写教师个人信息。如图5-10: 如图5-10从数据库中读取教师个人信息显示代码如下: string sql = "select * from Teacher where TId like '"+lbTId.Text.Trim()+"'"; DataSet ds = Db.ExecuteSelectSql(sql); if ( ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 ) { txtTName.Text = ds.Tables[0].Rows[0]["TName"].ToString(); txtTAge.Text = ds.Tables[0].Rows[0]["TAge"].ToString(); txtTPhone.Text = ds.Tables[0].Rows[0]["TPhone"].ToString(); txtTMail.Text = ds.Tables[0].Rows[0]["TMail"].ToString(); if ( ds.Tables[0].Rows[0]["TSex"].ToString() == "男" ) ddlTSex.SelectedIndex = 0; else ddlTSex.SelectedIndex = 1; }修改信息代码如下: string sql = "update Teacher set TName = '"+txtTName.Text.Trim()+ "',TAge = "+txtTAge.Text.Trim()+ ",TSex = '"+ddlTSex.SelectedItem.Text+ "',TPhone = '"+txtTPhone.Text.Trim()+
大学生网上选课系统 "',TMail = '"+txtTMail.Text.Trim()+ "' where TId = '"+Session["Id"].ToString()+"'"; if ( Db.ExecuteSql(sql) == 1 ) Response.Write(MyUtility.Alert("修改成功!"));修改密码代码如下: if ( txtKey.Text.Trim() != txtKeyConfirm.Text.Trim() ) { Response.Write(MyUtility.Alert("两次输入密码不相符合")); return; } string sql = "update Teacher set TKey = '"+MyUtility.MD5(txtKey.Text.Trim())+"' where TId = '"+Session["Id"].ToString()+"'"; if ( Db.ExecuteSql(sql) == 1 ) Response.Write(MyUtility.Alert("修改成功!")); else Response.Write(MyUtility.Alert("修改失败!"));开设课程:在NewCourse.Aspx中,在这里可以添加新课程,其中包括课程名称、课程类型、 学分、前导课程、最大人数、课程介绍。如图5-11: 如图5-11从数据库读取所有课程编号和课程名称代码如下: ddlCPreCId.Items.Clear(); ddlCPreCId.Items.Add("请选择"); string sql = "select CId,CName from Course"; DataSet ds = Db.ExecuteSelectSql(sql); if ( ds != null && ds.Tables.Count > 0 ) { for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ ) ddlCPreCId.Items.Add( new ListItem( ds.Tables[0].Rows[i]["CName"].ToString(), ds.Tables[0].Rows[i]["CId"].ToString() ) ); } ddlCPreCId.SelectedIndex = 0;课程时间地点编辑:在TeacherMain.Aspx中,在这里可以编辑课程时间和地点。如图5-12: 如图5-12设置学生成绩:在SC.Aspx中,可以添写学生考试成绩。从数据库中读取教师开设的课程代码如下:string sql = "select x.*,(select CName from Course as y where y.CId = x.CPreCId) as CPreCName from Course as x where x.TId like '"+Session["Id"].ToString()+"'";DataSet ds = Db.ExecuteSelectSql(sql);if ( ds != null && ds.Tables.Count > 0 ) { if ( ds.Tables[0].Rows.Count > 0 ) { lbCount.Text = "您一共开设有 "+ds.Tables[0].Rows.Count.ToString()+" 门课程!"; dgCourse.DataSource = ds.Tables[0]; dgCourse.DataBind(); for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ ) { if ( dgCourse.Items[i].Cells[3].Text == "必修" ) dgCourse.Items[i].Cells[8].Text = "必修"; else { sql = "select count(*) from SC where CId = "+ds.Tables[0].Rows[i]["CId"].ToString(); DataSet ds1 = Db.ExecuteSelectSql(sql); if ( ds1 != null && ds1.Tables.Count > 0 && ds1.Tables[0].Rows.Count > 0 ) dgCourse.Items[i].Cells[8].Text= ds1.Tables[0].Rows[0][0].ToString(); } } } else { lbCount.Text = "您暂时还没有开设课程!"; } }
大学生网上选课系统第6章 论文总结
经过几个月的学习,研究和开发,我选择的课题学生选课系统基本完成。其功能基本符合网络上的用户要求,能够在线选课,在线添加课程,在线查询课程等。虽然由于自己知识上的不足,有些地方有少许错误和容错性能比较低,但是还是可以基本完成选课系统应有的功能。 通过毕业设计过程我会到了许多知识,这也是在大学里第一次比较完整的完成一个小项目,虽然过程中遇到了许多困难,在同学和老师的帮助下一一克服了。通过不断的发现问题,总结问题和解决问题的过程,使我在此次毕业设计活动中不断的提高,和得到了宝贵的经验。
参考文献
[1]吴晨,《ASP.NET+SQL Server-数据库开发与实例》,清华大学出版社,出版2006年7月[2](美)内格尔,《C#高级编程(第4版)》,清华大学出版社,出版2006年10月[3](美)solid,《SQLServer2005从入门与精通(应用技术基础)》,清华大学出版社,出版2006年09月[4](美)保罗《ASP.NET 2.0经典教程C#篇》人民邮电出版社,出版2007年5月致 谢
由于以前对ASP.NET的接触并不是很多,对它的开发环境也不是非常了解,所以在程序的开发过程中遇到了很多的困难,但经过同学和老师的帮助,逐渐克服了困难,并从中学到
了很多SQL数据库编程方面的知识。但是由于经验方面的原因,以及对物流配送方面的操作流程了解不够深刻,该系统还有许多不尽如人意的地方和功能上的缺陷,这些都有待于进一步改善。 论文完成的前提是老师给我提供了舒适的工作、学习环境,并给予我悉心的关怀与指导。在些表示衷心地感谢。老师认真负责的工作态度、严谨的治学风格,使我深受启发;开发的同时,和同学们之间的相互探讨也使我获益匪浅。几个月的时间内,我除基本学会开发SQL数据库外更重要的是学到了兢兢业业,奋发向上的精神,这种精神是我今后人生前进道路上的一种力量。所以我再次感谢我的老师和我周围的同学们。
英文文献ASP.NET入门C#版ASP(动态服务器主页)是一种较新的技术,它已经过几个阶段的发展(进化).它是怎么诞生的呢?在七年前,它作为一种简单的方法来往普通网页里添加动态内容。自从那时以后,它的发展势头强劲:作为高级网页程序的开发平台,包括:电子商务网站、基于事件驱动的门户网站和你在网上能看到的其他所有东西。ASP.NET 2.0 是ASP的最新版本,而且拥有最让人激动的更新。在ASP.NET帮助下,在网络编程时,开发者不再把一大堆HTML源码和脚本代码杂乱地放在同一页面上。你可以完全使用代码和工具(Visual Studio 2005)来创建网页程序。这些创新的代价仅仅是多学一些东西。你要学一些高级开发工具(Visual Studio)和工具包(the .NET Framework),而且你需要精通一门编程语言,如C#。网络发展的演化因特网是在1960年末在试验中诞生的。它的目标是:建立一个真实的、有弹性的信息网络——可以经受的起若干数量的电脑的崩溃,而不至于阻断其他电脑的正常通信。经得起潜在的重大灾难(如核武器攻击)。美国国防部提供了刚开始的研究基金。最早的因特网局限在教育机构和从事国防的单位。它因为作为学术研究的一种工具而繁荣,它让全球的研究人员可以彼此共享信息。到了1990初,伟大的“猫”诞生了,它通过电话线工作,从此,因特网向商业用户打开了大门。在1993年,第一个HTML浏览器诞生了,标志着因特网革命的到来。我们很难把最早的网页称为网页序。第一代的网页看起来更像小册子:主要由固定的HTML页面构成,这些也都需要手动修改。 一个简单的HTML页面有点像一个字处理文档——它包含了格式化的内容,可以在你的电脑上显示,但是并不完成其他任何功能。上面的就是一个最简单的例子,文档包括头信息和单行文本。一个HTML文档有两种类型的内容:文本和标记(告诉浏览器如何格式化)。这些标记很容易辨认,因为它们总是出现在< 和 >之间。HTML定义了不同级别的标题、段落、超链接、斜体和粗体格式、水平线等。举个例子:
某个文本,告诉浏览器用标题1的格式来显示这个文本,就是用最大的黑体字来显示。图1-1显示了这个页面在浏览器中的效果。提示:你不需要精通HTML就能进行ASP.NET网页编程,虽然它(HTML)是很有用的。为了快速介绍一下HTML,给大家介绍一个网上的优秀HTML指南。HTML 2.0 首次引入了一个网页编程的新技术,称为HTML表单。HTML表单扩展了HTML的功能,不仅包含了格式化标签,而且包含了窗体小部件或者叫控件。这些控件包含了普通的功能部件,如下拉列表、文本框和按钮。下面是一个由HTML表单控件创建的网页。网页表单允许网页程序设计师设计标准的输入页面。当用户单击图1-2的提交按钮,所有在输入控件中的数据(在这个例子中是两个复选框)将打包成一个长字符串,接着发送到服务器。在服务器端,一个客户程序接收和处理这些数据。令人惊奇的是:这些为HTML表单创建有超过十年之久的控件仍然是你用来创建ASP.NET页面的基础。不同的是这些程序控件将运行在服务器端。在过去,当用户单击一个表单页面的按钮时,信息要通过e-mail来发送或者使用在服务器端运行的程序(通过CGI标准)。今天,你将可以使用更强大、更优雅的ASP.NET平台。理解ASP.NET的创建原因可以帮助我们了解其他网页开发技术遇到的问题。在原始的CGI标准下,举个例子,网页服务器必须为每个网页请求建立一个单独的程序实例。如果这个网页很受人们欢迎(那访问者将很多),那么网页服务器就要经受得起数以百计的独立程序副本,这样最终导致服务器反而因为受欢迎而成为受害者。为了解决这个问题,微软开发了ISAPI(网络服务程序编程接口),一个高层次的编程模型。ISAPI解决了性能问题,但是付出了复杂性的代价。即使ISAPI开发者是个C+编程老手,他仍然晚上担心到失眠,因为会遇到多线程处理这样让人麻烦的问题。ISAPI编程是给那些坚强的“夜猫子”,不是给那些懦弱的人。ISAPI并没有真正消失,取代它的是,微软利用它建立了一个更高级的开发平台,如ASP 和 ASP.NET。这两种技术都可以使开发者编写动态网页,而不需要担心底层的执行细节。由于这个原因,这两个平台成功到令人难以置信。最初的ASP平台吸引了将近一百万的开发人员。当ASP.NET第一次发布时,作为.NET Framework的核心部件受到人们更多关注。事实上,ASP.NET 1.0已经在数十个大型商业网络中得到应用,虽然它还在最后的测试阶段。虽然拥有类似的基础,ASP 和ASP.NET有根本的不同。ASP是基于脚本的编程语言,需要全面理解HTML,而且还要经过一大堆痛苦的编程训练。而ASP.NET,在另一方面,是面向对象的编程模型,建立网页页面就像建立桌面程序一样容易。在很多方面,学会ASP.NET比精通ASP要容易,而且ASP.NET功能更加强大。同时,服务器端的网络发展为从技术的字母形花片汤到广受欢迎的一类编程开发人员开始试着使用嵌入多媒体、JavaScript的小程序、DHTML和Java代码来增强网页的功能。这些基于客户端的技术不需要通过服务器的处理就能实现。所有的程序都(从服务器)下载到客户端浏览器,在本地执行。客户端技术的最大问题就是它们不被所有的浏览器和操作系统完美的支持。其中的一个原因就是网络开发太受欢迎了,首先是网络程序不需要通过CD安 装、下载和其他单调的配置。取而代之的是,一个网络程序只要能上网的电脑就可以执行了。但是,一旦开发者使用客户端技术,他们就会遇到一些常见的问题:比 如跨浏览器的兼容性。开发者就不得不在不同的浏览器和操作系统中测试他们的网页,甚至他们还要给用户发布浏览器更新。换句话说,客户端模型牺牲了网络程序 最重要的优良特性。由于上述原因,ASP.NET被设计为服务器端技术。所有的ASP.NET代码都在服务器上执行。当代码执行完毕时,用户就会得到一个普通的HTML页面,这样任何浏览器都可以浏览了。图1-3显示了服务器端和客户端模型的不同。这里还有几条原因要避免客户端编程:孤立性:客户端代码无法访问服务器资源。举个例子,没有一种简单的方式让客户端可以读取一个在服务器上的文件或进行数据库连接。(至少不会遇到安全性和浏览器兼容性的问题) 安全性:最终用户可以查看客户端代码。一旦有不怀好意的用户理解了程序是怎么工作的,他们就有可能乱来了。在某些方面,ASP.NET允许你通过服务器端编程结合最佳的客户端编程。举个例子:ASP.NET控件可以智能侦测客户端浏览器的属性。如果该浏览器支持JavaScript,那么这些控件将返回一个含有JavaScript的更多功能的页面。尽管如此,不管浏览器的功能有多强大,你的代码始终在服务器端执行。状态限制:为了保证最佳性能,网络设计成无状态的协议。意思就是:一旦页面已经传送给用户,连接就关闭了而且用户指定的信息也被丢弃了。ASP包括一个session state(会话状态)特性允许程序员来解决这个问题。使用session state,一个网页程序可以为每一个客户端暂时保存信息(保存在服务器的内存里)。尽管如此,如果一个网站是放在几个服务器上,session state就无能无力了。在这种情况下,一个客户要访问B服务器,而他的会话信息是被A服务器保留的,这样实际上这个会话信息将被丢弃掉。ASP.NET纠正了这个问题,允许把状态储存在中央仓库,就像一个单独的进程或者一个所有服务器都可以访问的数据库。ASP.NET通过引进全新的模型解决了上述问题(当然不止这些啦)。这个模型是基于一个伟大的技术,称之为.NET Framework。你应该知道的是:.NET Framework是几种技术的群集(集合)。.NET语言:包括C#VB.NET(Visual Basic .NET一种面向对象的、现代化的语言(VB 6.0的继任者);这些语言还包括:Jscirpt.NET(服务器端版本的JavaScript,J#(java的兼容产品),还有C++管理扩充。CLR(公共语言运行库):CLR是执行所有.NET程序和为这些程序提供自动服务的引擎,如安全验证、内存管理和优化等。.NET Framework类库:类库包含了成千上万个已经预建好的函数,你可以在你的程序中嵌入它们。这些众多属性有时也被成为一个技术集,如ADO.NET(用来创建数据库程序的技术)和Windows Forms(也是一种技术,用来创建基于桌面的用户界面程序)。ASP.NET:这是一种主机网页程序和网络服务的引擎,从.NET类库中包含了几乎所有特性。ASP.NET还包含了网页特有的服务。Visual Studio:这个可选的开发工具包含了众多提高效率和调试功能的特性。VS的安装CD(或DVD)包含了完整的.NET Framework,所以你不需要额外下载它。有趣的是,C#和VB.NET比C#和Java要相似多了(或者是VB6和VB.NET)。虽然语法是不同的,但是C#和VB.NET都使用.NET类库,也都由CLR支持。事实上,几乎所有的C#代码块都可以一行一行翻译成VB.NET的代码块。当然也有不行的时候(如:C#语言支持一种属性叫调用匿名方法,而VB.NET不支持)。但是对绝大部分来说,只要开发者学会了其中一个.NET语言,就可以很快学会另一种。简而言之,C#和VB.NET都是一流的,现代的用来开发下一代网络程序的语言。.NET 1.0引进了一种全新的语言。尽管如此,.NET 2.0语言的变化还是细微的。C# 2005和VB2005都添加了一些新的特性,但是这些语言绝大部分都没有变化。因此,任何使用C#1.0编写的代码都可以同样的在2.0下运行。在第二、三章,就就会学到C#语法和面向对象编程的基础。搞定了这些基础,你就可以开始创建简单的网页了。这样你就会少点困惑,学得更快。(向一些高级话题进军,如数据库访问和网络服务)CLR(公共语言运行库)只能运行IL代码,这就意味着它根本不知道你的源代码是用哪一个语言编写的,尽管如此,CLR竟然完成了另外一个编译步骤——它接受了IL代码并把它转换成适合当前平台的本机机器语言。这个步骤在程序启动时发生,而且在代码被真正执行之前。在ASP.NET程序中,当网络程序正在运行时,这些特定机器文件存储在高速缓存中,所以它们可以被复用(重新使用),以确保最佳性能。你或许会问.NET为什么不直接编译成机器语言。原因是:机器代码取决于多个因素,包括CPU。举个例子,如果你是为一台含有Intel 处理器的电脑而创建的机器代码,那么编译器将能够使用超线程技术来增强你的代码。这种适用特点机器的版本并不适合在其他电脑中运行,因为你无法保证它们使用同样的处理器。在VS 2005中,另一个受人欢迎的改变是支持不同的编码模型。而VS2003却受那个困扰,VS 2005支持某个范围的不同编码模型,使它成为具有灵活性、通用性我的设计工具。这就让你可以把HTML标签和事件处理代码放在同一个文件类或者分开存放,而不用委屈的使用VS,这样可以享受有用的特性好处,如代码智能完成。
asp.net英文文献Beginning ASP.NET 2.0 in C#ASP (Active Server Pages) is a relatively new technology that’s already leapt through several stages of evolution. It was introduced about seven years ago as an easy way to add dynamic content to ordinary web pages. Since then, it’s grown into something much more ambitious: a platform for creating advanced web applications, including e-commerce shops, data-driven portal sites, and just about anything else you can find on the Internet.ASP.NET 2.0 is the latest version of ASP, and it represents the most dramatic change yet. With ASP.NET, developers no longer need to paste together a jumble of HTML and script code in order to program the Web. Instead, you can create full-scale web applications using nothing but code and a design tool such as Visual Studio 2005. The cost of all this innovation is the learning curve. Not only do you need to learn how to use an advanced design tool (Visual Studio) and a toolkit of objects (the .NET Framework), you also need to master a programming language such as C#.The Internet began in the late 1960s as an experiment. Its goal was to create a truly resilient information network—one that could withstand the loss of several computers without preventing the others from communicating. Driven by potential disaster scenar-ios (such as nuclear attack), the U.S. Department of Defense provided the initial funding.The early Internet was mostly limited to educational institutions and defense contrac-tors. It flourished as a tool for academic collaboration, allowing researchers across the globe to share information. In the early 1990s, modems were created that could work over existing phone lines, and the Internet began to open up to commercial users. In 1993, the first HTML browser was created, and the Internet revolution began..It would be difficult to describe early websites as web applications. Instead, the first gen-eration of websites often looked more like brochures, consisting mostly of fixed HTML pages that needed to be updated by hand.basic HTML page is a little like a word-processing document—it contains formatted content that can be displayed on your computer, but it doesn’t actually do anything. The following example shows HTML at its simplest, with a document that contains a heading and single line of text:An HTML document has two types of content: the text and the tags that tell the browser how to format it. The tags are easily recognizable, because they occur inside angled brack-ets (< >). HTML defines tags for different levels of headings, paragraphs, hyperlinks, italic and bold formatting, horizontal lines, and so on. For example, Some Text
tells the browser to display Some Text in the Heading 1 style, which uses a large, bold font. Figure 1-1 shows the simple HTML page in a browser.HTML 2.0 introduced the first seed of web programming with a technology called HTML forms. HTML forms expand HTML so that it includes not only formatting tags but also tags for graphical widgets, or controls. These controls include common ingredients such as drop-down lists, text boxes, and buttons. Here’s a sample web page created with HTML form controls:HTML forms allow web application developers to design standard input pages. When the user clicks the Submit button on the page shown in Figure 1-2, all the data in the input controls (in this case, the two check boxes) is patched together into one long string and sent to the web server. On the server side, a custom application receives and processes the data. Amazingly enough, the controls that were created for HTML forms more than ten years ago are still the basic foundation that you’ll use to build dynamic ASP.NET pages! The difference is the type of application that runs on the server side. In the past, when the user clicked a button on a form page, the information might have been e-mailed to a set account or sent to an application on the server that used the challenging CGI (Common Gateway Interface) standard. Today, you’ll work with the much more capable and elegant ASP.NET platform.To understand why ASP.NET was created, it helps to understand the problems of otherweb development technologies. With the original CGI standard, for example, the web server must launch a completely separate instance of the application for each web request. If the website is popular, the web server must struggle under the weight of hundreds of separate copies of the application, eventually becoming a victim of its own success.o counter this problem, Microsoft developed ISAPI (Internet Server Application Programming Interface), a higher-level programming model. ISAPI solved the perfor-mance problem but at the cost of significant complexity. Even after ISAPI developers master the tricky C++ programming language, they still lie awake at night worrying about confounding issues such as multithreading. ISAPI programming is definitely not for the fainthearted.ISAPI never really went away. Instead, Microsoft used it to build higher-level develop-ment platforms, such as ASP and ASP.NET. Both of these technologies allow developers to program dynamic web pages without worrying about the low-level implementation details. For that reason, both platforms have become incredibly successful. The original ASP platform garnered a huge audience of nearly one million developers. When ASP.NET was first released, it generated even more interest as the centerpiece of the .NET Frame-work. In fact, ASP.NET 1.0 was enthusiastically put to work in dozens of large-scale commercial websites even when it was only in late beta.Despite having similar underpinnings, ASP and ASP.NET are radically different. ASP is a script-based programming language that requires a thorough understanding of HTML and a good deal of painful coding. ASP.NET, on the other hand, is an object-oriented pro-gramming model that lets you put together a web page as easily as you would build a Windows application. In many respects, it’s easier to learn ASP.NET than to master ASP, even though ASP.NET is far more powerful.At the same time that server-side web development was moving through an alphabet soup of technologies, a new type of programming was gaining popularity. Developers began to experiment with the different ways they could enhance web pages by embed-ding multimedia and miniature applets built with JavaScript, DHTML (Dynamic HTML), and Java code. These client-side technologies don’t involve any server processing. Instead, the complete application is downloaded to the client browser, which executes it locally.The greatest problem with client-side technologies is that they aren’t supported equally by all browsers and operating systems. One of the reasons that web development is so popular in the first place is because web applications don’t require setup CDs, down-loads, and other tedious (and error-prone) deployment steps. Instead, a web application can be used on any computer that has Internet access. But when developers use client-side technologies, they encounter a few familiar headaches. Suddenly, cross-browser compatibility becomes
学生网上选课系统a problem. Developers are forced to test their websites with differ-ent operating systems and browsers, and they might even need to distribute browser updates to their clients. In other words, the client-side model sacrifices some of the most important benefits of web development.or that reason, ASP.NET is designed as a server-side technology. All ASP.NET code executes on the server. When the code is finished executing, the user receives an ordinary HTML page, which can be viewed in any browser. Figure 1-3 shows the difference between the server-side and client-side model.These are some other reasons for avoiding client-side programming:Isolation: Client-side code can’t access server-side resources. For example, a client-side application has no easy way to read a file or interact with a database on the server (at least not without running into problems with security and browser compatibility).Security: End users can view client-side code. And once malicious users understand how an application works, they can often tamper with it.ome cases, ASP.NET allows you to combine the best of client-side programming with server-side programming. For example, the best ASP.NET controls can intelligently detect the features of the client browser. If the browser supports JavaScript, these controls will return a web page that incorporates JavaScript for a richer, more responsive user interface. However, no matter what the capabilities of the browser, your code is always executed on the server.State limitations: To ensure optimum performance, the Web is built on stateless protocols, which means as soon as a page is sent to a user, the connection is closed and any user-specific information is discarded. ASP includes a session state feature that allows programmers to work around this problem. Using session state, a web application can retain temporary information about each client in server memory. However, session state is useless in scenarios where a website is hosted by several separate web servers. In this scenario, a client might access server B while its session information is trapped on server A and essentially abandoned. ASP.NET corrects this problem by allowing state to be stored in a central repository, such as a separate process or a database that all servers can access.ASP.NET deals with these problems (and many more) by introducing a completely new model for web pages. This model is based on a remarkable piece of technology called the NET Framework.You should understand that the .NET Framework is really a cluster of several technologies:The .NET languages: These include C# and VB .NET (Visual Basic .NET), the object-oriented and modernized successor to Visual Basic 6.0; these languages also include JScript .NET (a server-side version of JavaScript), J# (a Java clone), and C++ with Managed Extensions.he CLR (Common Language Runtime): The CLR is the engine that executes all .NET programs and provides automatic services for these applications, such as security checking, memory management, and optimization.The .NET Framework class library: The class library collects thousands of pieces of prebuilt functionality that you can “snap in” to your applications. These features are sometimes organized into technology sets, such as ADO.NET (the technology for creating database applications) and Windows Forms (the technology for creating desktop user interfaces).ASP.NET: This is the engine that hosts web applications and web services, with almost any feature from the .NET class library. ASP.NET also includes a set of web-specific services.sual Studio: This optional development tool contains a rich set of productivity and debugging features. The Visual Studio setup CDs (or DVD) include the complete .NET Framework, so you won’t need to download it separately.Interestingly, C# and VB .NET are actually far more similar than Java and C# or than VB6 and VB .NET. Though the syntax is different, both C# and VB .NET use the .NET classlibrary and are supported by the CLR. In fact, almost any block of C# code can be translated, line by line, into an equivalent block of VB .NET code. An occasional language difference pops up (for example, C# supports a language feature called anonymous methods, while VB .NET doesn’t), but for the most part, a developer who has learned one .NETlanguage can move quickly and efficiently to another.n short, both C# and VB .NET are elegant, modern languages that are ideal for creating the next generation of web applications..NET 1.0 introduced completely new languages. However, the changes in the .NET 2.0 languages are much more subtle. Both C# 2005 and VB 2005 add a few new features, but most parts of these languages remain unchanged. As a result, any code written according to version 1.0 of the C# language will work identically with version 2.0. In Chapters 2 and 3, you’ll sort through the syntax of C# and learn the basics of object-oriented programming. By learning the fundamentals before you start creating simple web pages, you’ll face less confusion and move more rapidly to advanced topics such as database access and web services.he CLR runs only IL code, which means it has no idea which .NET language you orig-inally used. Notice, however, that the CLR actually performs another compilation step—it takes the IL code and transforms it to native machine language code that’s appropriate for the current platform. This step occurs when the application is launched, just before the code is actually executed. In an ASP.NET application, these machine-specific files are cached while the web application is running so that they can be reused, ensuring optimum performance.You might wonder why .NET compilers don’t compile straight to machine code. The reason is that the machine code depends on several factors, including the CPU. For example, if you create machine code for a computer with an Intel processor, the compiler may be able to use Hyper-Threading to produce enhanced code. This machine-specific version isn’t suitable for deployment to other computers, because no guarantee exists that they’re using the same processor.Another welcome change in Visual Studio 2005 is the support for different coding models. While Visual Studio .NET 2003 locked developers into one approach, Visual Studio 2005 supports a range of different coding models, making it a flexible, all-purpose design tool. That means you can choose to put your HTML tags and event handling code in the same file or in separate files without compromising your ability to use Visual Studio and benefit from helpful features such as IntelliSense.