Tải bản đầy đủ (.docx) (21 trang)

Project 2 Quarter 6 Fast Learn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (580.22 KB, 21 trang )

MỤC LỤC
Project on Fast Learn 3
Giấy chứng nhận 4
Acknowlegement 5
Yêu cầu về phần cứng và phần mềm 6
Đại học từ xa Fast Learn 7
Hệ thống hiện tại 8
Yêu cầu hệ thống mới 9
Thiết kế cơ sở dữ liệu 10
Thiết kế chức năng 12
Thiết kế giao diện 20
Nhận xét của giảng viên 22
1
PROJECT ON FAST LEARN
Giảng Viên : Châu Ngân Khánh
o Mã Lớp : B100025
o Ngày Bắt Đầu : 09/08/2011
o Ngày Kết Thúc : 14/09/2011
o Tên Giảng Viên : Phạm Tiến Phúc &Châu Ngân Khánh
o Tên Người Phát Triển : Huỳnh Thủy Ngân
o Ngày Hoàn Thành : 17/10/2011
2
GIẤY CHỨNG NHẬN
 Đây là xác nhận rằng báo cáo này, có tựa đề là Fast Learn, là tác
phẩm gốc được thực hiện bởi Huỳnh Thủy Ngân là một phần của yêu
cầu khóa học tại NIIT.
3
ACKNOWLEDGEMENT
 Tôi đã được sự giúp đỡ cùng những sự phản hồi và đề nghị cho tôi
bởi giảng viên Châu Ngân Khánh và các giảng viên khác, điều viên
phòng máy trong NIIT.


4
YÊU CẦU VỀ PHẦN CỨNG VÀ PHẦN
MỀM
Phần Cứng : Pentium II (800 MHz),ổ cứng 80GB,512Ram,CDROM và 1-
10/100 Mbps Network card.
System : Windows XP Professional with SP2
Phần Mềm : .net Framework 3.5
5
ĐẠI HỌC TỪ XA FAST LEARN
Fast Learn là một đại học từ xa được thành lập bởi Samuel Roger từ 10
năm trước. Fast Learn là một trong những đại học từ xa hàng đầu tại Anh
có trụ sở chính đặt tại New York và có nhiều văn phòng đại diện trên khắp
thế giới. Mức tăng của đại học hàng năm là 3 triệu đôla Mỹ.
Fast Learn được biết đến với nền giáo dục xuất sắc, thu hút hàng ngàn
học sinh từ khắp các nước trên thế giới. Chương trình học của Fast Learn
gồm các lĩnh vực sau:
- Toán học
- Vật lý
- Hoá học
- Sinh học
- Anh văn
6
HỆ THỐNG HIỆN TẠI
Hiện tại, Fast Learn đang sử dụng phương pháp quản lý khoá học cũ. Mỗi
sinh viên được đăng kí tại 1 văn phòng đại diện, nơi mà học viên phải liên
lạc hằng tuần. Tài liệu khoá học thì được cung cấp trên giấy. Học viên phải
đến trung tâm để lấy tài liệu.
Những câu hỏi của học viên được trả lời qua điện thoại hoặc trong quá
trình học. Tuy nhiên, câu trả lời trên điện thoại là 1 câu trả lời chuyên môn.
Số lượng học viên quá lớn để trả lời hết những câu hỏi. Việc giải quyết câu

hỏi cho số lượng lớn học viên là rất khó.
Quản lý đã nhận được nhiều phàn nàn từ học viên về việc:
- Nhiều khi giảng viên không rảnh để trả lời câu hỏi khi họ gọi
- Học viên phải đến trung tâm để lấy thông tin học phí và đăng kí khoá
học.
- Học viên phải đến trung tâm để lấy tài liệu in sẵn cho khoá học.
Với những ý kiến về những khoá học này, Fast Learn đang loại bỏ chúng
bằng cách cung cấp phương pháp học nhanh cho học viên.
Hơn nữa, giám đốc tại các trung tâm cũng gặp phải nhiều vấn đề. Vấn đề
chính đáng được lưu ý là:
- Câu hỏi chuyên môn vượt quá thời gian vì giảng viên dành hầu hết
thời gian của họ để trả lời những câu hỏi tương tự cho những học
viên khác nhau.
- Việc tìm kiếm thông tin học viên, thường được làm thường xuyên,
mất nhiều thời gian.
- Lưu trữ tài liệu in sẵn không những tốn kém mà còn không thân thiện
với môi trường.
7
YÊU CẦU HỆ THỐNG MỚI
Dựa trên khả năng quan sát của quản lý, trường đã quyết định phát triển
một trang học trực tuyến cho Fast Learn. Quyết định sau được đưa ra để
phát triển trang học trực tuyến:
- Trang web sẽ lưu trữ tất cả dữ liệu cho hệ thống hiện tại trong 1 cơ
sở dữ liệu. Cơ sở dữ liệu sẽ bao gồm những thông tin sau:
• Chi tiết sinh viên
• Chi tiết giảng viên
• Chi tiết môn học
• Chi tiết bài giảng khoá học
• Feedback của học viên
- Trang web sẽ cung cấp nội dung khoá học đến học viên trên một

form điện tử.
- Tất cả thông tin bao gồm chi tiết khoá học, lưu ý cho sinh viên, tài
liệu khoá học cũng được hiển thị trên trang web.
Khi vào trang web, học viên sẽ được cung cấp các tiện ích sau:
- Xem thông tin khoá học: phần này sẽ cho phép 1 học viên tìm kiếm
khoá học và xem thông tin về việc đăng kí khoá học.
- Đăng kí khoá học: phần này cho phép học viên đăng kí khoá học.
- Xem tài liệu khoá học: phần này cho phép học viên lấy tài liệu khoá
học mà học viên đăng kí.
- Gửi feedback: phần này cho phép học viên gửi phản hồi về cho trung
tâm.
- Sửa thông tin học viên: phần này cho phép học viên sửa thông tin
của học viên.
- Xem danh sách khoá học: phần này cho phép học viên xem danh
sách các khoá học mà mình đã đăng kí.
-
8
THIẾT KẾ CƠ SỞ DỮ LIỆU
Chú giải:
- Theo như hệ thống được mô tả từ phía Fast Learn, cơ sở dữ liệu
được mô tả trên 6 đối tượng:
• Student
• Teacher
• Faculty
• Course
• Feedback
- Quan hệ giữa các bảng: Query và Student, Course và Teacher,
Faculty và Teacher, Feedback và Student, Query và Teacher là quan
hệ một – nhiều. Quan hệ giữa bảng Course và Student là quan hệ
9

nhiều nhiều nên sinh ra bảng mới, ta đặt là Register, bảng này sẽ kéo
khoá chính của 2 bảng cha về làm khoá chính, nhưng để dễ quản lí,
chúng tôi tạo thêm RegisterID.
- Bảng Teacher: FacultyID là khoá ngoại được truy xuất từ bảng
Faculty.
- Bảng Course: TeacherID là khoá ngoại được truy xuất từ bảng
teacher.
- Bảng Register: CourseID, StudentName là khoá ngoại được truy xuất
lần lượt từ các bảng Course, Student.
- Bảng Feedback: StudentName là khoá ngoại được truy xuất từ bảng
Student.
- Bảng Query: StudentName, TeacherID là khoá ngoại được truy xuất
lần lượt từ các bảng Student, Teacher.
10
THIẾT KẾ CHỨC NĂNG
1. Chức năng đăng nhập:
- Ở chức năng này, học viên sẽ đăng nhập bằng tài khoản và
password đã được đăng kí trước đó, nếu hệ thống kiểm tra dữ liệu
trùng khớp chức năng sửa thông tin cá nhân sẽ được bật và người
dùng sẽ sử dụng được các chức năng còn lại của trang web.
- Ở chức năng này chúng tôi không sử dụng control Log in có sẵn
của .net mà sử dụng form tự tạo bằng những text box, label và
button.
- Việc kiểm tra tài khoản đăng nhập có đúng hay không sẽ được thực
hiện bằng cách so sánh tài khoản đăng nhập, password với cơ sở dữ
liệu bằng kết nối sql. Sau khi đăng nhập thành công, tên đăng nhập
sẽ được lưu lại bằng session.
protected void btn_login_Click(object sender, EventArgs e)
{
DataClassesDataContext db = new DataClassesDataContext();

string sql = "select * from Student where UserName='" +
txt_username.Text.Trim() + "' and Password='" + txt_pass.Text.Trim() + "'";
SqlConnection conn = new
SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionSt
rings["Fast_Learn_1ConnectionString"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Open();
if (dt.Rows.Count != 0)
{
Session["TenDangNhap"] = dt;
Session["username"] = dt.Rows[0]["UserName"];
Response.Redirect("Thongtinthanhvien.aspx");
}
else
{
lbl_error.Text = "Đăng nhập thất bại";
}
conn.Close();
}
2. Chức năng sửa thông tin cá nhân:
11
- Sau khi đăng nhập thành công, trang web sẽ tự động chuyển học
viên qua trang sửa thông tin cá nhân, học viên cũng có thể quay trở
lại trang này bằng cách bấm vào link phía dưới tên nick.
- Ở chức năng này chúng tôi sử dụng control details view trong nhóm
data control. Cơ sở dữ liệu được kết nối bằng sql string connection
và lấy ràng buộc là nick vừa đăng nhập. Học viên có thể sửa chữa
thông tin cá nhân của mình bằng cách nhấn vào link edit. Sau khi

thay đổi thông tin, nhấn vào link update, thông tin sẽ được thay đổi
và cập nhật và cơ sở dữ liệu.
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$
ConnectionStrings:Fast_Learn_1ConnectionString %>"
DeleteCommand="DELETE FROM [Student] WHERE [UserName] = @UserName"
InsertCommand="INSERT INTO [Student] ([UserName], [Address],
[Birthday], [Name], [Phone]) VALUES (@UserName, @Address, @Birthday, @Name,
@Phone)"
SelectCommand="SELECT [UserName], [Address], [Birthday], [Name],
[Phone] FROM [Student] WHERE ([UserName] = @UserName)"
UpdateCommand="UPDATE [Student] SET [Address] = @Address,
[Birthday] = @Birthday, [Name] = @Name, [Phone] = @Phone WHERE [UserName] =
@UserName">
<SelectParameters>
<asp:SessionParameter Name="UserName" SessionField="username"
Type="String" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="UserName" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="Birthday" Type="DateTime" />
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="UserName" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="UserName" Type="String" />

<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="Birthday" Type="DateTime" />
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
</InsertParameters>
</asp:SqlDataSource>
3. Chức năng đăng kí tài khoản:
12
- Nếu học viên chưa có tài khoản, học viên có thể sử dụng chức năng
này để tạo một tài khoản đăng nhập, với tên đăng nhập và email là
duy nhất.
- Ở chức năng này chúng tôi sử dụng CreateUserWizard khi kế thừa
lớp MembershipProvider. Để sử dụng được chức năng này, ngoài
việc override hàm CreateUser, chúng tôi phải override lại tất cả các
hàm trong lớp này mới có thể sử dụng được theo ý muốn. Nhưng
trong phần báo cáo này chúng tôi chỉ đề cập đến phần tạo tài khoản
đăng nhập thôi.
- Khi override chức năng này, chúng tôi sử dụng Linq để tạo kết nối và
insert dữ liệu mới vào cơ sở dữ liệu.
public override MembershipUser CreateUser(string username, string password,
string email, string passwordQuestion, string passwordAnswer, bool isApproved,
object providerUserKey, out MembershipCreateStatus status)
{
DataClassesDataContext db = new DataClassesDataContext();
if (string.IsNullOrEmpty(username) ||
username.ToLower().Contains("admin"))
{
status = MembershipCreateStatus.DuplicateUserName;
return null;
}

if (db.Students.Where(p => p.UserName.ToLower() ==
username.ToLower()).Count() > 0)
{
status = MembershipCreateStatus.DuplicateUserName;
return null;
}
if (db.Students.Where(p => p.Email == email).Count() > 0)
{
status = MembershipCreateStatus.DuplicateUserName;
return null;
}
Student stu = new Student()
{
UserName = username,
Password = password,
Email = email,
SercurityQuestion = passwordQuestion,
SercurityAnswer = passwordAnswer,
IsActivated = "true",
IsLockedOut = "false",
LastLockedOutDate = DateTime.Now,
LastLoginDate = DateTime.Now
};
db.Students.InsertOnSubmit(stu);
db.SubmitChanges();
status = MembershipCreateStatus.Success;
13
MembershipUser user = new MembershipUser(base.Name.ToString(),
stu.UserName.ToString(),
providerUserKey, stu.Email.ToString(),

stu.SercurityQuestion.ToString(),
stu.SercurityAnswer.ToString(), true, false,
DateTime.Now, DateTime.Now,
DateTime.Now, DateTime.Now,DateTime.Now);
return user;
- }
Sơ đồ Linq:
4. Chức năng phục hồi mật khẩu:
- Khi học viên quên mật khẩu đăng nhập là lúc học viên cần sử dụng
chức năng này.
- Khi sử dụng, học viên sẽ được yêu cầu trả lời câu hỏi định danh, do
học viên tự nghĩ ra lúc đăng kí tài khoản. Nếu trả lời đúng, password
mới sẽ được gửi về mail của học viên.
14
- Ở chức năng này chúng tôi cũng sử dụng wizard của
MembershipProvider.
public override string ResetPassword(string username, string answer)
{
DataClassesDataContext db = new DataClassesDataContext();
Student stu = db.Students.SingleOrDefault(p => p.UserName ==
username && p.SercurityAnswer == answer);
if (stu != null)
{
return stu.Password;
}
else return string.Empty;
}
5. Chức năng xem danh sách khoá học:
- Học viên muốn đăng kí khoá học thì phải biết được thông tin sơ lược
về các khoá học, ở chức năng này chúng tôi cho trang web hiển thị

hết tất cả các khoá học một cách sơ lược để học viên lựa chọn và
đăng kí.
- Ở chức năng này chúng tôi sử dụng gridview và dùng linq để lấy
thông tin trong cơ sở dữ liệu để đưa vào gridview.
protected void jointable()
{
DataClassesDataContext db = new DataClassesDataContext();
var query1 = from c in db.Courses
select new
{

c.Course_Name,
c.Teacher.Teacher_Name,
c.Teacher.Faculty.Name,
c.Duration,
c.CourseID
};
GridView1.DataSource = query1.ToList();
GridView1.DataBind();
}
15
6. Chức năng đăng kí khoá học:
- Khi đã chọn khoá học muốn học và bấm đăng kí, thông tin chi tiết
của khoá học sẽ hiện ra cho biết các thông tin như: tên khoá học, ID
khoá học, tên giảng viên, tài liệu học, học kì học, mô tả khoá học.
- Chức năng này chúng tôi sử dụng formview để hiển thị và dùng
stored procedure với tham số vào là ID của khoá học, được lưu bằng
Session.
ALTER PROCEDURE dbo.StoredProcedure1 @parameter1 char(5)
/*

(
@parameter1 int = 5,
@parameter2 datatype OUTPUT
)
*/
AS select CourseID, Course_Name, Duration, AttachmentLink, Description,
Faculty.Name, Teacher_Name
from Course, Faculty, Teacher
where Course.TeacherID=Teacher.TeacherID and
Teacher.FacultyID=Faculty.FacultyID and Course.CourseID like @parameter1
/* SET NOCOUNT ON */
-
7. Chức năng xem danh sách các môn đã đăng kí:
- Nếu muốn xem lại các môn mình đã học, học viên sẽ sử dụng chức
năng này, nhưng học viên không được phép xoá hay sửa thông tin
được load lên.
- Chức năng này được tạo bằng gridview, và chỉ hiện thị ID khoá học
đã học dựa trên tên tài khoản đăng nhập thôi.
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$
ConnectionStrings:Fast_Learn_1ConnectionString %>"
SelectCommand="SELECT [CourseID], [UserName] FROM [Register] WHERE
([UserName] = @UserName)">
<SelectParameters>
<asp:SessionParameter Name="UserName" SessionField="username"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
8. Chức năng tạo feedback:
- Chức năng này cho phép học viên tạo feedback. Nội dung feedback,

thời gian gửi feedback, tài khoản gửi feedback sẽ được lưu lại trong
cơ sở dữ liệu thông qua linq.
16
protected void Button2_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)Session["TenDangNhap"];
dt.Rows[0]["UserName"].ToString();
string fbID = IncreaseFeedbackID();
DataClassesDataContext fb = new DataClassesDataContext();
Feedback nfb = new Feedback();
nfb.FeedbackID = fbID;
nfb.UserName = dt.Rows[0]["UserName"].ToString();
nfb.FeedbackText = TextBox1.Text;
nfb.DatePostFB = DateTime.Now;

fb.Feedbacks.InsertOnSubmit(nfb);
fb.SubmitChanges();
}
9. Code bổ sung:
Ngoài ra, để insert các dữ liệu vào cơ sở dữ liệu, tôi đã sử dụng hàm
tự tăng ID. Đây là hàm tự tăng ID dành cho Feedback, các ID khác
cũng được tạo tương tự. Chúng tôi lấy số dòng của bảng rồi tạo các
trường hợp để tìm được ID thích hợp.
protected string IncreaseFeedbackID()
{
SqlConnection con = new SqlConnection("Data Source =
ICARE_4810T\\SQLEXPRESS; Initial Catalog = Fast_Learn_1; Integrated Security =
true");
int ctr, len;
string fbID, fbIDval;

string fb_ID = "";
string query1 = "Select FeedbackID from Feedback";
SqlDataAdapter da1 = new SqlDataAdapter(query1, con);
DataSet ds1 = new DataSet();
da1.Fill(ds1, "Register");
DataTable dt = new DataTable();
DataRow dr;
dt = ds1.Tables["Register"];
len = (dt.Rows.Count - 1);
dr = dt.Rows[len];
fbID = Convert.ToString(dr["RegisterID"]);
fbIDval = fbID.Substring(1, 3);
ctr = Convert.ToInt32(fbIDval);
if (ctr >= 1 && ctr < 9)
{
ctr = ctr + 1;
fb_ID = "FB00" + ctr;
}
else if (ctr >= 9 && ctr < 99)
{
ctr = ctr + 1;
fb_ID = "FB0" + ctr;
}
else if (ctr >= 99)
{
17
ctr = ctr + 1;
fb_ID = "FB" + ctr;
}


return fb_ID;
}
18
THIẾT KẾ GIAO DIỆN
Trang Master Page được thiết kế như sau:
<html xmlns=" /><head runat="server">

<title>Fast Learn - an E-Learning Solution</title>
<meta http-equiv="Content-Language" content="English" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="text/style.css" media="screen" />
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>


<div id="wrap">
<div id="header">
<img src="Images/loooooo.jpg" width="800px" height="400px" />
</div>
<div id="menu">
<ul>
<li><a href="Lietkekhoahoc.aspx">Home</a></li>
<li><a href="About.aspx">About</a></li>
<li><a href="Fback.aspx">Feedback</a></li>
<li><a href="Lietkekhoahoc.aspx">Course</a></li>
<li><a href="Taotaikhoan.aspx">Sign up</a></li>

<li><a href="DangNhap.aspx">Sign in</a></li>
</ul>
</div>
<div id="content">
<div class="right">
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

</asp:ContentPlaceHolder>
</div>
<div style="clear: both;"> </div>
</div>
</div>
</div>
19
</form>
</body>
</html>
20
NHẬN XÉT CỦA GIẢNG VIÊN



































21

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×