网页设计综合课程设计实验报告格式.docx
- 文档编号:8813271
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:29
- 大小:523.41KB
网页设计综合课程设计实验报告格式.docx
《网页设计综合课程设计实验报告格式.docx》由会员分享,可在线阅读,更多相关《网页设计综合课程设计实验报告格式.docx(29页珍藏版)》请在冰豆网上搜索。
网页设计综合课程设计实验报告格式
成绩
课程设计报告
题目在线投票系统
课程名称网页设计综合课程设计
院部名称信息技术学院
专业计算机科学与技术
班级10级计算机科学与技术(特)
学生姓名黄娟娟
学号1005201016
课程设计地点B407
课程设计学时20
指导教师周秀娥
金陵科技学院教务处制
一、课程设计目的
本课程设计是通过利用进行互动媒体学习社区的结构设计、调试、连接、巩固,加深并扩大所学到的理论知识,培养基本理论分析,解决实际问题的能力,逐步掌握信息系统的设计和调试的基本步骤,同时培养严肃认真、细致踏实、刻苦砖研、有所创造、实事求是的科学作风。
二、课程设计要求
本课程设计以使用技术和Access数据库系统,共40学时。
要求先进行系统分析,对问题进行模块划分,进行总体设计,画出各种模块流程图;然后进行详细设计,采用上机操作方法;最后编写系统的使用说明及课程设计报告书。
三、课程设计设备
奔腾II以上计算机,装有MicrosoftVisualStudio2008及Access2003中文版软件
四、课程设计原理、方法
上机操作。
五、课程设计步骤
实例说明
目前,Internet上的很多网站都具备网上调查功能,为了使在线投票网站制作得更精致,通常情况下,在显示投票结果时将采用百分比形式,如果网站的调查结果以饼状图的方式和表格的形式显示,则会使网站更具直观性。
另外,本例还限制每个用户的投票次数(即每个用户只能对系统中的一个主题进行一次投票)。
本实例实现的具体功能如下:
1.添加投票项目
2.管理投票项目
3.对项目进行投票
4.查看投票结果
程序运行结果如图下面所示。
技术要点
实现在线投票系统主要涉及两大功能:
一是防止用户对同一主题重复投票,二是以图形的方式显示投票的结果。
下面将详细介绍这两个功能的具体实现。
(1)防止用户重复投票
在线投票系统中最重要的一个功能就是禁止用户对某一投票主题进行重复投票,即一个用户只能对一个主题投票一次,投票后将不能继续投票。
实现这一功能通常有两种方法:
一是当用户进行投票时,系统首先获取该用户的本地IP地址,然后将它与数据库中存在的IP地址比较,如果能检索出相同的IP地址,就给用户弹出错误信息,如果没有则会完成用户投票执行票数增加的操作,并将该用户的本地IP地址存入数据库;另一种方法是使用Cookie对象确认用户的行为。
本例中采用的是第二种方法。
由于系统中存在多个投票主题,为了区别各个Cookie项,可憎使用每个主题的ID作为Cookie的值。
例如,用户为ID为1的投票主题时,则这个用户的Cookies中会多一个新项(“Voteltem”,“1”)。
实现这一功能的代码如下:
HttpCookiemakecookie=newHttpCookie(”Vote”+M_Str_votelD);//制造cookie
makecookie.Values.Add(”Voteltem”,readcookie.Values[“Voteltem”]+”<”+M_Str_votelD+”>”);
在用户投票之前对该用户的Cookie进行判断。
首先读出Cookie的值,然后对该值进行判断。
如果读出的Cookie值为null,则表示该用户从未使用过该投票系统,那么就对新创建的Cookie对象添加新值,并设置过期时间。
如果该用户已经使用过该投票系统,就判断该用户是否对该主题投过票,若对该主题投过票,就给出错误提示并不执行投票操作,否则设置Cookie对象的值。
代码如下:
//投票防作弊
HttpCookiemakecookie=newHttpCookie(”Vote”+M_Str_votelD);//制造cookie
HttpCookiereadcookie=Request.Cookies(”Vote”+M_Str_votelD);//读出cookie
if(readcookie==null)//从未投过票
{
makecookie.Values.Add(”Voteltem”,”<”+M_Str_votelD+”>”);//设置其值
makecookie.Expires=DateTime.MaxValue;//设置过期时间
}
else//已经投过票
}
stringP_Str_Alllten=readcookie.Values[“Voteltem”].ToString();//读取已投票的项
if(P_Str_Allltem.lndexOf(”<”+M_Str_votelD+”>”==-1)//未对该主题投过票
{
makecookie.Values.Add(”Voteltem”,readcookie.Values[“Voteltem”]+”<”+M_Str_votelD+”>”);
}
else//已对该主题投过票
{
Response.Write(”
”);”);
return;
}
}
(2)图形方式显示投票结果
以图形方式显示投票结果更加直观、形象,是投票系统人性化的表现。
本实例以数据库中检索出的数据为依据,以饼状图形显示投票结果。
在绘制图形时,按投票的选项将饼形图划分成相应的几部分,通过投票选项的票数计算出相应选项在饼状图中所分配的角度数据,然后利用Graphics类中的FillPie方法完成图形绘制。
Fillpie方法的语法格式如下:
FillPie(Brushbrush,floatx,floaty,floatwidth,floatheight,floatstartAngle,floatsweepAngle)
参数含义如下。
(1)brush:
确定填充特性的Brush.
(2)x:
边框左上角的x坐标,该边框定义扇形区所属的椭圆。
(3)y:
边框左上角的y坐标,该边框定义扇形区所属的椭圆。
(4)width:
边框的宽度,该边框定义扇形区所属的椭圆。
(5)heigth:
边框的高度,该边框定义扇形区所属的椭圆。
(6)startAngle:
从x轴沿顺时针方向旋转到扇形区第一个边所测得的角度(以度为单位)。
(7)sweepAngle:
从startAngle参数沿顺时针方向旋转到扇形区第二个边所测得的角度(以度为单位)。
绘制完成后,利用Bitmap类的Save方法将图形输出到页面中。
Save方法的语法格式如下:
publicvoidSave(Streamstream,lmageFormatformat)
参数含义如下。
(1)stream:
将在其中保存图像的Stream。
(2)format:
指定保存的图像的格式。
显示投票结果的饼形图是由ResuLtImage.aspx页生成的,在该页的页面加载事件中接收页面间传值,并调用生成饼图的方法。
代码如下:
ProtectedvoidPage_Load(objectsender,EventArgse)
{
stringP_Str_votelD=Request[“votelD”];
stringP_Str_title=Server.UrlDecode(Request[“title”]);
Img(P_Str_votelD,P_Str_title);
}
生成饼图的方法具有两个string类型的参数P_Str_votelD和P_Str_title,分别为表示投票主题的lD和名称。
代码如下:
Publicvoidimg(stringP_Str_votelD,stringP_Str_title)
{
#Region
dataSetmyds1=DB.reDs("select*fromtb_VoteltemwherevotelD=”+P_Str_votslD);
//计算总票数
DataSetmyds2=DB.reDs(“selectsun(voteTotal)astotalFROMtb_VoteltemwherevotelD=”+P_Str_votelD);
intP_lnt_sum=Convert.Tolnt32(myds2.Tables[0].Rows[0][0].ToString());
intP_lnt_ltemContent=myds1.Tables[0].Rows.Count;//获取该投票主题的选项个数
string[]P_Str_voteContent=newstring[P_lnt_ltemCount];//存储每个选项的投票名称
string[]P_Str_voteTotal=newstring[P_lnt_ltemCount];//存储每个选项的投票数
intP_lnt_val=0;//变量,用于设置数组的下标
foreach(DataRowdrinmyds1.Tables[0].Rows)
{
P_Str_voteContent[P_lnt_val]=dr[2].ToString();//获取每个选项的投票名称
P_Str_voteTotal[P_lnt_val]=dr[3].ToString();//获取每个选项的投票数
P_lnt_val++;
}
Bitmapbitmap=newBitmap(600,800);
Graphicsgraphics=Graphics.Fromlmage(bitmap);
Try
{
Graphics.Clear(Color.White);
Penpen1=newPen(Color.Red);
Brush[]brush=newBrush[P_lnt_ltemCount+1];
Brushbrush1=newSolidBrush(Color.White);
For(inti=0;i { Intred=RandomNum(i); Intgreen=RandomNum(i+100); Intblue=RandomNom(i+500); Brush[i]=newSolidBrush(Color.FromArgb(red,green,blue)); } Fontfont1=newFont(“CourierNew”,16,FontStyle.Bold); Fontfont2=newFont(“CourierNew”,8); Graphics.FillRectangle(brush1,0,0,370,350);//绘制背景 //书写标题 Graphics.DrawString(P_Str_title+”投票比例分析”,font1,brush[1],newpoint(60,20)); Float[]P_Fl_angle=newfloat[P_lnt_ltemCount];//保存各投票项在圆中分配的角度 For(inti=0;i { //获取各投票项在圆中所占角度 P_Fl_angle[i]=Convert.ToSingle((360*(Convert.ToSingle(P_Str_voteTotal[i]/Convert.ToSingle(P_lnt_sum)))); } FloatP_lnt_angle=0; For(inti=0;i {//绘制各投票项所占比例 Graphics.FillPie(brush[i],100,60,180,180,P_lnt_angle,P_Fl_angle[i]); P_lnt_angle+=P_Fl_angle[i]; } //绘制标识 P_lnt_angle+=P_Fl_angle[i]; } //绘制标识 Graphics.DrawRectangle(pen1,50,255,260,50+P_lnt_ltemCount*10);//绘制范围框 For(inti=0;i { Graphics.FillRectangle(brush[i],85,265+i*20,20,10);//绘制小矩形 Graphics.DrawString(P_Str_voteContent[i]+Convert.ToString(Convert.ToSingle(P_Str_voteTotal[i])*100/Convert.ToSingle(P_lnt_sum))+”%”,font2,brush[i],120,265+i*20); } } Catch(Exceptionex) { Response.Write(“
copyright@ 2008-2022 冰点文档网站版权所有
经营许可证编号:鄂ICP备2022015515号-1