ASP.NET《数据库原理及应用技术》课程指导平台的开发

news2024/11/20 9:32:45

1.1 系统设计目标

研制《数据库原理及应用技术》课程指导平台在功能上可以满足网络课堂教学活动的需要,在Internet上实现教学活动的各个环节。系统的基本设计原则有:先进性与方便性原则、功能实用性原则、开放性与可扩展性原则等。系统设计时采用较好的设备与技术,协议符合国家和国际标准,能保证教学软件的正常运行,确保系统有较长的生命周期;系统能实现网络课堂教学时所需的各种形式的信息交流,保证教与学活动的顺利开展;考虑到日后师生的工作、生活和学习方便,可以在现有功能上加以扩展,如视音频交互、网络直播等功能。

本系统总体目标是将网络技术、信息技术、现代管理技术和科学的教学方法相结合,建立教师和学生的互动交流平台,以充分发挥网络教学的优势,将以教师教授为主的课堂教学和以学生自学为主的网络教学紧密结合起来,构建合理的网络教学系统。该系统打破了教学活动空间上的限制,使教学活动得到了很大的延伸与扩展,

本系统首先要实现动态性和交互性。所谓的动态性就是能动态更新内容,如更新个人信息、教学信息、作业信息等。这要求与数据库有良好的连接;交互性则要求教师和学生能实时地进行学习交流。

学生与教师在使用系统时,实现系统操作方便和操作界面美观的特点。

实现系统的安全性和可靠性,避免他人进入破坏数据库信息。

1.1.1 系统流程图

用户进入系统主页面后,输入用户名和密码,同时选择登录身份,点击提交后,系统将根据用户输入的用户名和密码判断该用户是否为合法用户;如果用户输入的用户名和密码出错,系统将提示出错,并返回到登录界面;如果用户输入的用户名和密码正确,系统将根据用户的身份选择相应的主页以及功能;所有合法用户在处理完业务后,都需要进行退出工作,以免被他人窃取信息。退出后,将返回到登录界面。功能示意图如图6所示:

添加图片注释,不超过 140 字(可选)

1.1.2 作业管理子模块功能说明

1. 教师作业管理模块:

根据课程要求教师选择适合学生做的作业进行发布,发布后,学生进行作业查看及提交,教师查看已交作业,对待批改的作业依次进行批阅,认真给出得分及其详细评阅意见,为学生的学习提供帮助。同时,系统会统计每班学生作业提交人数信息方便教师掌握各班学生学习情况。至此,教师作业发布及评阅过程完成。作业发布及作业评阅业务流程图如图7,图8所示:

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

2. 学生作业提交模块:

每个学生用户可查看教师新发布的作业信息,可直接提交,若教师以文本方式发布作业,系统只为学生提供相同的方式即文本方式进行作业提交,若是附件形式的作业,学生下载附件,同样以附件形式提交作业。对教师未批阅过的作业,若学生错误操作提交或认为已提交作业质量不高,可修改重新提交。系统不允许学生对教师已批阅过的作业进行修改。在查看分数模块里,学生可查看自己所有被批改过作业的得分及教师评阅意见信息,学生通过查看分数和分析教师的评阅意见,取得进步。学生提交作业业务流程图如图9所示:

添加图片注释,不超过 140 字(可选)

2 《数据库原理及应用技术》课程指导平台功能模块具体实现

2.1 用户登录认证部分代码

 
 // 数据库连接操作帮助类
public sealed class SqlHelper
{
// 执行数据库读取
public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText)
{
return ExecuteReader(connectionString, commandType, commandText, (SqlParameter[])null);
 }
// 执行数据库读取
public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
     if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");
            SqlConnection connection = null;
            try
            {
// 新建一个数据库连接实例
connection = new SqlConnection(connectionString);
// 建立连接
                connection.Open();
                return ExecuteReader(connection, null, commandType, commandText, commandParameters, SqlConnectionOwnership.Internal);
            }
            catch
            {
                if (connection != null) 
// 关闭数据库连接
connection.Close();
       throw;
      }
}
}
// 验证用户登录类
public class CheckUserLogin{
       SqlConnection conn;
        public CheckUserLogin()
        {
//读取web.config里面的数据库连接字串并new一个SqlConnection实例
            conn = 
new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnStr"].ToString());
        }
//取得用户密码
        public string getPassword(string user_no, string role)
       {
           string password = String.Empty;
           SqlDataReader dr = null;
           if (role == "stu")
           {
               dr = SqlHelper.ExecuteReader(conn, CommandType.Text, "select password from DB_STU where stu_id =" + user_no);
           }
           …………………………..
           return password; }
}

2.2 学生作业修改功能部分代码

 
//要修改的作业信息
    protected DB_PUB_EXERCISEBE model = new DB_PUB_EXERCISEBE();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            LoadData();
        }
    }
//加载要修改的作业的信息
    private void LoadData()
    {
        string stu_no = ((DB_STUBE)Session["CurrentUser"]).stu_no;
        string pub_exercise_no = Request["id"];
        model = new CGP.BLL.DB_PUB_EXERCISE().GetModelByExerNo(pub_exercise_no, stu_no);
    }
//发布作业
    protected void edit_Click(object sender, EventArgs e)
    {
        string stu_no = ((DB_STUBE)Session["CurrentUser"]).stu_no;
        LoadData();
        if (model.pub_exercise_category== "文本")
        {
            if (this.Content.Value.ToString() == "")
            {
                CommonFun.WriteAlert("作业内容不能为空");
                return;
            }
        }

//上传作业附件
        if (model.pub_exercise_category == "附件")
        {   string filename = string.Empty;
            //string exercisetype = "附件";
            if (this.FileURL.PostedFile.ContentLength > 0)
            {   string Truefilename = this.FileURL.PostedFile.FileName;
                string exName = Truefilename.Substring(Truefilename.LastIndexOf('.')).ToLower();
if (exName != ".doc" && exName != ".pdf" && exName != ".xls" && exName != ".txt" && exName != ".rar" && exName != ".zip")
                {
               CommonFun.WriteAlert("只能上传.doc.pdf.xls.txt.rar.zip的文件!");
                    return; }
                else
                {   filename = DateTime.Now.ToString("yyyyMMddHHmmss") + exName;
this.FileURL.PostedFile.SaveAs(Server.MapPath("~/" + ConfigurationManager.AppSettings["PubExercise"] + "/") + filename);
if (!File.Exists(Server.MapPath("~/" + ConfigurationManager.AppSettings["PubExercise"] + "/") + filename))
                    {     CommonFun.WriteAlert("上传失败!");
                        return;
                    }
                }
            }
            else
            {     CommonFun.WriteAlert("请选择作业附件!");
                return; }
DB_PUB_EXERCISEBE pubexmodel = new DB_PUB_EXERCISEBE();
            pubexmodel.pub_exercise_id = model.pub_exercise_id;
            pubexmodel.pub_exercise_no = model.pub_exercise_no;
            pubexmodel.stu_no = model.stu_no;
            pubexmodel.pub_exercise_title = model.pub_exercise_title;
            pubexmodel.pub_exercise_category = model.pub_exercise_category;
            pubexmodel.pub_exercise_content = model.pub_exercise_content;
            pubexmodel.to_teacher = model.to_teacher;
            pubexmodel.is_checked = model.is_checked;   //表示还没有被老师评阅过的作业
            pubexmodel.pub_exercise_score = model.pub_exercise_score;
            pubexmodel.pub_exercsie_link = ConfigurationManager.AppSettings["PubExercise"] + "/" + filename;
           
            if (new CGP.BLL.DB_PUB_EXERCISE().Update(pubexmodel))
            {
                CommonFun.WriteAlert("作业修改成功!", "ExerciseView.aspx");
            }
            else
            {
                CommonFun.WriteAlert("作业修改失败!");
            }
        }
    }

链接:https://pan.baidu.com/s/1Xwd0U_KktL0hRFPaggIOGQ?pwd=6688

提取码:6688

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1282731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS加密/解密之HOOK实战

之前的章节有介绍过Javascript的Hook相关的基础知识,相信大部分人也知道了什么是Hook,今天我们来讲一下Hook实战,实际的运用。 0x1.事上练 // 程序员们基本都喜欢简单精辟 直入主题 不喜欢咬文嚼字 我们先直接上代码 var _log console.log…

阿里云效一键部署前后端

静态站点到OSS 阿里云-云效,阿里云企业级一站式 DevOps,可以免费使用(会限制人数、流水线数量等,个人项目够用了)。相关文章 CI 持续集成 - 阿里云云效 OSS 是对象存储的意思,一般一个项目对应一个 Bucke…

Python:核心知识点整理大全2-笔记

在本章中,你将学习可在Python程序中使用的各种数据,还将学 习如何将数据存储到变量中,以及如何在程序中使用这些变量。 2.1 运行 hello_world.py 时发生的情况 运行hello_world.py时,Python都做了些什么呢?下面来深入…

环形链表 2:找出入环的第一个节点

题目描述: 给定一个链表返回链表开始入环的第一个点。如果链表无环,则返回NULL。 为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。…

D3485国产芯片+5V工作电压, 内置失效保护电路 具有+15kV IEC 61000-4-2接触放电保护能力 SOP8封装

D3485是一款5V供电、半双工的RS-485收发器,芯片内部包含一路驱动器和路接收器。D3485使用限摆率驱动器,能显著减小EMI和由于不恰当的终端匹配电缆所引起的反射,并实现高达10Mbps的无差错数据传输。D3485内置失效保护电路,保证接收…

【网络安全技术】密钥管理

一、分级密钥概念 典型的密钥分级分为三级,三级密钥就是一次会话的session key,用来加密通信,所以通常使用对称密钥。 二级密钥就是分发三级密钥的密钥,用来加密三级密钥来分发三级密钥。 一级密钥就是分发二级密钥的密钥&…

Markdown语法入门与进阶指南

一、Markdown简介 Markdown是一种轻量级标记语言,创始人为约翰格鲁伯(john Gruber)。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中…

RedHat8 安装部署DzzOffice协同办公平台+onlyoffice(docker)以及问题解决(亲测可用,花费2天)

一、基础配置(MysqlDzzoffice) 1:安装软件需要的环境,我们用LAMP的环境。基本上CentOS8自带的软件版本都达到安装DzzOffice的要求。 2:关闭防火墙(不关的话需要开放80端口自行决定)。 systemctl disable --now fire…

12.4散列查找定义,散列函数,散列查找(开放定址法,处理冲突),总结

散列函数定义 ASL计算 查找长度——在查找运算中,需要对比关键字的次数称为查找长度(有的教材也会把“空指针”的判定算作一次比较) 14,68,19,20,23,11这6个元素查一次就可以&…

分享73个节日PPT,总有一款适合您

分享73个节日PPT,总有一款适合您 73个节日PPT下载 链接:https://pan.baidu.com/s/1FG9Y-9yR31Y-fs3zxKI4Pg?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不…

轨道交通数字孪生可视化平台,助力城市交通运营智慧化

随着经济和科技的快速发展,轨道交通运营管理在日常操作者面临各种挑战。数字孪生技术被认为是未来轨道交通运营管理的重要手段之一。它可以提高轨道交通的运营效率和安全性,助力城市交通运营智慧化。以城市轨道交通运维管理业务需求为导向,从数据感知、融…

备忘录不小心删了怎么办?如何找回我的备忘录?

如果你的记性不太好,或者每天需要记住、完成的事情很多,那么养成随手记事的好习惯是非常有必要的。因为手机是每个成年人都会随身携带的电子设备,所以直接在手机上记录事情比较简单、便捷。而手机备忘录、便签、笔记等工具类软件,…

docker搭建nginx实现负载均衡

docker搭建nginx实现负载均衡 安装nginx 查询安装 [rootlocalhost ~]# docker search nginx [rootlocalhost ~]# docker pull nginx准备 创建一个空的nginx文件夹里面在创建一个nginx.conf文件和conf.d文件夹 运行映射之前创建的文件夹 端口:8075映射80 docker…

java版微信小程序商城免费搭建 java版直播商城平台规划及常见的营销模式有哪些?电商源码/小程序/三级分销

涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

c++ atmoic acquire/release

由于多核cpu缓存的存在,以及gcc编译优化,cpu指令层面的优化,导致程序的执行顺序可能跟你写的顺序不完全一致(reorder)。 但是在多线程编程中如何确保各个线程能正确的读取到各个变量呢(而不是cache中老旧的…

springboot集成docker

1、快速构建springboot-demo项目 地址:https://start.spring.io/

二维码智慧门牌管理系统升级解决方案:重新制牌审核快速审批

文章目录 前言一、快速审批与重新安装一、其他系统优势 前言 随着城市化进程的加速,门牌号码的管理变得日益重要。然而,传统的门牌管理方式已经无法满足现代社会的需求。在这样的背景下,二维码智慧门牌管理系统应运而生。但随着系统使用&…

Python---练习:列表赋值---追加append尾部追加元素,追加的是一个元素整体

相关链接: Python--列表及其应用场景---增、删、改、查。-CSDN博客 代码: # 列表赋值 a [1, 2, 3] a.append([3, 4]) # append尾部追加元素,追加的是一个元素整体:[3, 4] print(a)

动手学深度学习笔记

1. 深度学习基础与MLP 1.1 框架: 线性回归; Softmax回归(实际上用于分类问题); 感知机与多层感知机; 模型选择; 权重衰退(weight decay); 丢弃法&…

利用ChatGPT轻松实现科研论文高效写作

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…