网上选课系统——管理员子系统的设计与实现

news2025/1/15 20:09:31

本系统是C/S(客户端/服务器)两层结构。采用C#数据库编程语言。服务器部分是SQL Server2000 关系数据库。客户端分为学生选课子系统和管理员管理子系统,它们通过存于后台数据库的数据产生联系。

无论是学生子系统还是管理员子系统,都需要从数据库中读取院系的信息以及每个院系所开设的课程信息,将其存放在DataSet里面,然后把数据绑定到控件并显示出来。由于每个院系都开设多门课程供学生选择,院系信息和课程信息形成一个树状的结构,所以使用TreeViewer控件显示这些信息比较合适。

通过询问参与选课的学生及负责选课工作的老师具体总结出网上选课系统需要能够实现以下功能:

  1. 学生和管理员必须通过认证才能登录系统,管理员和学生的权限不一样;
  2. 管理员可以添加,删除和修改学生信息,可以添加,删除和修改课程信息,可以查看选课情况,可以修改选课期限。
  3. 学生可以查看课程信息,只能在限定时间内选修课程,可以查询自己选修课程的情况,在限定的时间之内还可以退选课程或者增选课程。如果被选课程选修的人数已经达到上限,则学生不能选修该课程。

整个系统的流程是在用户的要求下进行的,学生子系统负责处理学生的选课,退选,增选等事务,并向用户显示操作情况对话框,同时更新数据库中相关表的数据。管理员子系统负责处理管理员对选课情况的管理,向管理员显示操作情况对话框,同时更新数据库中相关表的数据。

系统的数据流图如下:

  • 学生子系统

管理员子系统

 

简化的数据字典

(1)口令:  用户身份验证

(2)数据流:事务 =  [ 输入 | 查询 |选课|]

           事务 =  [ 输入 | 查询 |退选|]

           事务 =  [ 输入 | 查询 |增选|]

           事务 =  [ 输入 | 查询 |修改|]

(3)数据库 = Courses表 + Student表 + Department表 + Elective表 + Admins表 + Period表

后台数据库据库采用SQL Server 2000,各表完成如下功能:

  1. Courses表:用于存放课程的详细信息。
  2. Student表:用于存放所有学生的资料。
  3. Department表:用于记录开设课程所属院系名称。
  4. Elective表:用于记录学生选课情况。
  5. Admins表:用于记录所有管理员的信息。
  6. Period表:用于设置选课的开始时间和选课的结束时间。

通过对用户提出要求的调查研究,明确了系统设计的目标,确定了系统的基本功能,并分析出数据的流动方向,在此基础之上可以开始着手设计系统,勾画出网上选课系统总体框架。

设计原理

本系统是C/S(客户端/服务器)两层结构.

服务器采用SQL Server2000关系数据库.数据库里存放着编译好的存储过程,主要负责数据的存取,也负责一些的业务逻辑的处理,例如判断学生是否在允许时间段内选课.

客户端包含两个系统:学生选课子系统和管理员管理子系统.学生子系统安装在学校公共机房,图书馆等场所的电脑上,供学生选课时使用,通过局域网访问教务处办公室的服务器;管理员子系统安装在教务处办公室的桌面型电脑上,供管理教务的教师使用.

客户端的设计

学生选课子系统结构图:

各模块完成以下功能:

查看课程信息:学生登录后,查看可供选择的课程信息。

查看已选课程信息:学生登录后,查看自己选择了哪些课程。

选修课程:学生登录后,通过此模块完成选课操作。

退选课程:学生登录后,通过此模块完成退选操作。

管理员子系统结构图:

各模块完成以下功能:

管理学生记录:管理员登录后,可以删除,修改,增加学生信息。

管理课程记录:管理员登录后,可以删除,修改,增加可选课程信息。

修改课程期限:管理员登录后,可以修改选修课程的开始及结束日期。

查看选课情况:管理员登录后,可以查看某门选修课已选人数是否达到限选人数,并可以查看总体选课情况。

数据库的设计

本系统后台数据库建立6个表:Courses表,Students表Departments表,Elective表,Admins表,和Period表。

  1. Courses表

Name

Data Type

Size

CourseID

int

4

CourseName

varchar

50

DepartmentID

int

4

CourseHours

int

4

CourseScore

int

4

CourseTeacher

varchar

50

UpperLimitStudentNumber

int

4

SelectedStudentNumber

int

4

2.Student表

Name

Data Type

Size

StudentID

int

4

StudentNumber

varchar

50

Name

nvarchar

50

Password

varchar

50

3.Departments表

Name

Data Type

Size

DepartmentID

int

4

DepartmentNume

varchar

50

4.Elective表

Name

Data Type

Size

ElectiveID

int

4

StudentID

int

4

CourseID

int

4

5.Admins表

Name

Data Type

Size

AdminID

int

4

UserName

varchar

50

Name

nvarchar

50

Password

varchar

50

6.Period表

Name

Data Type

Size

PeriodID

int

4

BeginTime

datetime

8

EndTime

datetime

8

Note

varchar

50

到了确定应该怎样具体的实现所要求的系统的时候了,这个阶段将得出学生选课系统的精确描述,从而在编码阶段可以把这个描述直接翻译成具体的程序设计语言书写的程序,这一阶段的结果直接决定了最终程序代码的质量。

1.人机界面设计

本系统对每一层都设置了确保安全的障碍和入口,用户只有进入了某一层才能获得相应那一层资源的访问权,这些措施保证了选课系统及具体数据的安全性。任何一位Web用户在进入选课系统主页面后,只有通过了系统的身份验证才能进入到系统相应的功能页面完成所要进行的操作。

本系统主要包含以下界面:

从此界面,可以分别进入管理员子系统、学生子系统登录界面,单击查询可以查看课程信息并可以查看打印预览。

 

在该界面学生输入学号、密码,单击登录按钮系统进行验证身份,如学号、密码与数据库中的记录吻合,则进入下一个界面,进行选课。

 

管理员登录后,可以添加课程、查看选课情况、对学生记录进行管理等,本界面为学生管理界面,管理员输入学生学号,单击查找按钮,在姓名和密码栏中显示该学生的信息,单击修改按钮或删除按钮,就可以完成相应操作。

在添加学生记录一栏中填写相应信息,单击添加按钮,该学生信息就可以添加到数据库中。

用户可以从主页直接进入成绩查询界面,用户可以通过此界面查看课程信息,分别可以按系、按课程名称、按授课教师等查询课程信息,这样大大方便了各级用户,使用户可以更直接、更方便的了解各门课程,有利于学生快速、准确的选课,同时也有利于管理员对课程的管理。通过打印预览子菜单,用户可以将所需信息打印出来。

 

本报表的制作采用Crystal Report Designer,Crystal Reports for Visual Studio.NET是内置于Visual Studio.NET的报表设计工具,它能够在.NET平台上创建高复杂度且专业级的互动式报表,其以Crystal Report8.0的架构为基础,并且针对.NET平台作更进一步的强化与发展,以确保能提供.NET开发人员最丰富且完整的报表功能。

本系统利用此报表反馈出各系开设课程信息,既方便了学生选课,又减轻了管理员的管理负担,并同时提供打印功能,方便了管理员对局域网上各系开设课程总体情况的掌握。

制作报表过程如下:

首先在原有项目下创建新的窗体,从“工具箱”的Windows窗体选项卡中将CrystalReportViewer报表查看器控件拖放至窗体上,然后从“项目”菜单中选取“添加新项”指令,选择添加Crystal Report项,接下来选择作为空白报表一项,单击确定,即可编辑具有自己独特风格的报表了。需要说明的是:报表的数据源可由窗口左侧的数据库文件直接设定。

此界面为配置管理界面,管理员通过相关操作,可以直接修改数据库中的选课时间记录。在文本区键入选课开始、结束时间,单击生成按钮,配置文件生成功,为更新数据库作好第一步准备。

 

单击读取按钮,将配置文件读入内存,以便通过函数调用UpdatePeriod存储过程,更新数据库。出现更新数据库成功对话框,单击确定按钮,此时数据库记录被修改。学生必须按照新的选课时间进行选课,使管理员可以动态的、间接的管理数据库,而无须登录到SQL Server2000企业管理器对数据库进行修改。

本网上选课系统共涉及到12个用户界面,以上是具有代表性的几个,单独列出加以说明。为了提高代码的重用性和封装对存储过程的调用,每个子系统都实现了一个存取数据的公共类,提供本系统使用。

2.过程设计

本系统对每一层都设置了确保安全的障碍和入口,用户只有进入了某一层才能获得相应那一层资源的访问权,这些措施保证了选课系统及具体数据的安全性。             

不同身份的用户拥有对数据库的不同访问权限(具体到对库中每个表的存取操作),学生用户的选/退课权限通过系统应用程序提供给教务管理人员动态设置。

系统程序流程图如下

  • 学生子系统:

  • 管理员子系统

3.3编码

源程序代码的逻辑应简明清晰,易读易懂,编码必须严格遵循详细设计阶段的结果,编写出严密、有逻辑性的代码。

本应用程序为了提高服务器数据库的访问效率,加快整个系统的运行速度,存取数据全部使用存储过程。同时对一些业务逻辑也使用了一些存储过程。

分别使用如下代码进行数据库连接:

private string m_strConnString;

private SqlConnection m_connConnection;

打开操作:

public void Open(string strDataSource,string strInitialCatalog,string strUserID,string strPwd)

         {

m_strConnString="Data Source="+strDataSource+";Initial Catalog="+strInitialCatalog+";User ID="+"sa"+";Password="+strPwd;

              m_connConnection= new  SqlConnection(m_strConnString);

              m_connConnection.Open();

         }

关闭操作:

public void Close()

         {

              m_connConnection.Close();

         }

首先创建CSQL类,当类中某一对象需要获取数据库中的数据时,用如下代码调用Open()函数。

CSQL mySQL=new CSQL();

mySQL.Open("localhost","electcourses","sa","2188");

其中localhost表示本地访问,electcourses为数据库名,sa为数据库用户名,2188为用户口令。

MySQL.Close();

使用该语句可以直接关闭数据库。

各模块具体实现代码如下:

学生子系统:

  • 查看课程信息模块

private void FillDirectoryTree()

         {

             

CSQL mySQL =new  CSQL();

              mySQL.Open("localhost","electcourses","sa","2188");

              DataSet DepartmentDS = mySQL.GetDataSet("select * from Departments","departments");

              int myCount = DepartmentDS.Tables["departments"].Rows.Count;

              mySQL.Close();

              for(int i=0;i<myCount;i++)

              {

                   string DepartmentName = DepartmentDS.Tables["departments"].Rows[i][1].ToString();

                   int DepartmentID = int.Parse(DepartmentDS.Tables["departments"].Rows[i][0].ToString());

                   TreeNode CRoot = new TreeNode(DepartmentName);

                   treeView1.Nodes.Add(CRoot);

                  

                   AddDirectories(CRoot,DepartmentID); 

              }

         }

         private void AddDirectories(TreeNode node,int departmentid)

         {

              CSQL mySQL =new  CSQL();

              mySQL.Open("localhost","electcourses","sa","2188");

              DataSet ds = new DataSet();

              string strsqltemp = "select * from Courses where DepartmentID="+departmentid.ToString();

              ds = mySQL.GetDataSet(strsqltemp,"courses");

              int myCount = ds.Tables["courses"].Rows.Count;

for(int i=0;i<myCount;i++)

              {

                   string CourseName = ds.Tables["courses"].Rows[i][1].ToString();

                   node.Nodes.Add(new TreeNode(CourseName));

              }

              mySQL.Close();

         }

  • 查看已选课程模块

CREATE Procedure ElectiveList

(

    

@StudentID  int

)

AS

SELECT

      Courses.CourseID,

      Courses.CourseName,

      Courses.CourseTeacher,

      Courses.CourseScore,

      Courses.CourseHours

FROM

     Elective

   INNER  JOIN Courses   ON Courses.CourseID=Elective.CourseID

WHERE

    Elective.StudentID=@StudentID

GO

  • 选课模块

CREATE Procedure ElectCourse

(

     @StudentID  int,

     @CourseID   int,

     @ElectiveID  int OUTPUT

)

AS

INSERT INTO Elective

(

     StudentID,

     CourseID

 

)

VALUES

(

@StudentID,

    @CourseID

    

   )

SELECT

      @ElectiveID=@@Identity

GO

  • 退选模块

CREATE Procedure  CancelCourse

(

      @StudentID  int,

      @CourseID   int,

      @ElectiveID  int  OUTPUT

)

AS

SELECT

      @ElectiveID=ElectiveID

FROM

       Elective

WHERE

       @StudentID=StudentID

AND

        @CourseID=CourseID

DELETE  FROM

     Elective

WHERE

(

     @StudentID=StudentID

     AND

     @CourseID=CourseID

)

GO

管理员子系统

  • 管理学生记录模块
  1. 修改学生信息

CREATE Procedure ModifyStudentInfo

(

     @StudentNumber  nvarchar(50),

     @Name  nvarchar(50),

     @Password  nvarchar(50)

)

AS

UPDATE Students

SET

       Name=@Name,

Password=@Password

WHERE

       StudentNumber=@StudentNumber

GO

  1. 添加学生信息

CREATE Procedure  AddStudent

(

   @StudentNumber nvarchar(50),

   @Name  nvarchar(50),

   @Password  nvarchar(50),

   @StudentID  int  OUTPUT

)

AS

INSERT INTO Students

(

     StudentNumber,

     Name,

     Password

)

VALUES

(

   @StudentNumber,

   @Name,

   @Password

)

SELECT

       @StudentID=@@Identity

GO

  1. 删除学生信息

CREATE Procedure DeleteStudent

(

     @StudentNumber  nvarchar(50),

     @Name  nvarchar(50)

)

AS

DELETE Students

WHERE

      StudentNumber=@StudentNumber

  

AND

      Name=@Name

GO

  • 管理课程信息模块
  1. 修改课程信息

CREATE Procedure ModifyCourse

(

       @CourseID  int,

       @CourseName  nvarchar(50),

       @CourseHours  int,

       @CourseScore  int,

       @CourseTeacher  nvarchar(50),

       @UpperLimitStudentNumber  int

)

AS

UPDATE  Courses

  SET

      CourseName=@CourseName,

      CourseHours=@CourseHours,

      CourseScore=@CourseScore,

      CourseTeacher=@CourseTeacher,

      UpperLimitStudentNumber=@UpperLimitStudentNumber

WHERE

      CourseID=@CourseID

GO

  1. 添加课程信息

CREATE Procedure AddCourse

(

    @CourseID  int,

    @CourseName  nvarchar(50),

    @DepartmentID  int,

    @CourseHours  int,

    @CourseScore  int,

    @CourseTeacher  nvarchar(50),

    @UpperLimitStudentNumber int

)

As

INSERT INTO Courses

(

    CourseID,

   

CourseName,

    DepartmentID,

    CourseHours,

    CourseScore,

    CourseTeacher,

    UpperLimitStudentNumber

)

VALUES

(

    @CourseID ,

    @CourseName ,

    @DepartmentID,

    @CourseHours ,

    @CourseScore ,

    @CourseTeacher,

    @UpperLimitStudentNumber

)

SELECT

      @CourseID=@@Identity

GO

  1. 删除课程信息

CREATE Procedure RemoveCourse

(

     @CourseID int

)

AS

BEGIN Transaction

DELETE FROM Courses

WHERE

      CourseID=@CourseID

DELETE FROM Elective

WHERE

     CourseID=@CourseID

  if @@rowcount>0

         

     Commit  Transaction

  else

             Rollback Transaction

GO

  • 修改选课期限模块

通过读取XML文件,调用UpdatePeriod存储过程实现更新数据库。

XML文件

<?xml version=”1.0”?>

  <configurations>

<Time>

<Begin>2005-5-25  12:00</Begin>

</End>2005-6-25  12:00</End>

</Time>

</configurations>

UpdatePeriod存储过程

CREATE Procedure  UpdatePeriod

(

       @BeginTime  datetime,

       @EndTime   datetime

)

AS

UPDATE  Period

SET

       BeginTime=@BeginTime,

       EndTime=@EndTime

GO

  • 查看选课情况模块

CREATE Procedure ElectiveTotalList

AS

SELECT

      Elective.StudentID,

      Students.StudentNumber,

      Students.Name,

      Courses.CourseID,

      Courses.CourseName,

      Courses.CourseTeacher,

      Courses.CourseScore,

      Courses.CourseHours

FROM

Elective

   INNER  JOIN  Courses  ON  Courses.CourseID=Elective.CourseID

   INNER  JOIN  Students  ON  Students.StudentID=Elective.StudentID

ORDER  BY

       Elective.StudentID

GO

  1. 4软件测试
  • 模块测试

测试方案:

       我采用了白盒测试(又称结构测试),即按照程序内部的逻辑结构,检验程序中的每条通路是否能够按照预定要求正常工作。

由于设计过程当中,不免会出现很多意想不到的结果发生,为了减少不必的错误出现,同时,为了能够使不同的文件之间正确和有效的衔接,我在设计模块的过程,对于每一个文件的执行和模块的执行都做了认真地测试,以求达到设计要求。

测试过程:

主要检查模块的两个方面,一个是各个模块之间的接口,另一个是模块的运行是否正常。

对于检验各个模块之间的接口,所做的测试工作有:

  1. 每个被调用模块之间是否能够正常接受参数(包括系统变量);
  2. 每个被调用模块之间能否正常地而且有效地衔接上;

对于检验模块的运行是否正常,所做的测试工作有:

  1. 对每一个模块中各个执行过程严格地进行检查与检测;
  2. 对每一个模块中各个文件内所设计的函数逐个进行达标测试;
  3. 对每一个模块在调用的过程中,时刻检测系统变量的过程性变化;

 测试结果:

测试结果表明,每一个模块都能够正常独立地运行,各个模块之间的接口亦能正确地吻合,同时每个模块基本上达到了设计的要求。

  • 系统测试

测试方案

在设计过程中和设计结束不断地进行黑盒测试(又叫功能测试),即检查程序功能是否按照规格说明书的规定正常使用,程序是否能够适当地接收输入数据产生正确的输出信息,并且保持外部信息的完整性。

在这次的设计当中,对于每一个模块的功能实现上和设计风格上,都做了细致的检测,并且尽力去找出系统的纰漏之处。

测试过程

主要由我的导师在不同的时间、不同机器和不同的系统状态下进行测试过程,利用特殊的参数和普通参数两种方式进行测试。

测试结果

测试结果表明,系统能够按照设计的要求实现其内部的各项功能,同时提前

完成了设计的任务要求。

  • 验收测试

测试方案

我采用黑盒测试,对系统的各个模块功能进行了随机抽样检验,同时作了相应的时间比较。

测试过程

我对所抽样后选择出的模块进行黑盒测试,从以下几个角度进行:

  1. 从用户自身的角度,进行了有个性的测试;
  2. 从管理员的角度,对系统的维护与管理的效率进行了测试;
  3. 从一个破坏者的身份,对系统的安全性进行测试;

测试结果

测试结果表明,尽最大地可能满足了不同用户的需求,同时保证了系统管理员的高效的管理工作,基本上有效地防止了破坏者的恶意攻击。 

 

 

 

 

 

 

 

 

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

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

相关文章

Follow My Heart Of Apirl. 2023

This article will tell all my story in my daily file to make some deep memories in my heart for Apirl.2023. The line template: The template will be used as the mark of the storys start. 2023.04.10 Commodity n. 货物、商品、日用品 1. Global commodity prices …

《OpenCV3和Qt5计算机视觉应用开发》学习笔记

Qt Creator中使用opencv 在.pro文件中添加 INCLUDEPATH D:\MajorSoftware\opencv\opencv\build\include LIBS D:\MajorSoftware\opencv\opencv\mingw_build\lib\libopencv_*.a一个插件就是一个简单的库&#xff0c;如.dll&#xff0c;可以在运行时加载和使用插件&#xff…

基于模型预测控制(MPC)的微电网调度优化的研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

7针0.96寸OLED的HAL库代码(硬件SPI/全代码/stm32f1/CubeMX配置/包含有正负浮点数/100%一次点亮)

系列文章链接 HC-SR04超声波模块的使用 编码电机以及双电机驱动 4针 0.96OLED的使用 更多有意思的文章点击“我的主页” --------&#x1f610; 更多有意思的视频 -----> B站 想要亿只独角兽 --------&#x1f610; 前言 之前发布了一篇硬件I2C的0.96 OLED驱动代码&#…

全国计算机等级考试——二级JAVA完整大题题库【五十三道】

全国计算机等级考试二级 JAVA 题目内容 编写于2023.04.10 分为40道选择题和3道大题&#xff08;大题是程序填空类型&#xff09; 其中选择题只能进去做一次&#xff0c;一旦退出来则不可再进&#xff08;注意&#xff01;&#xff09;。大题可以重复进入&#xff0c;重复做。…

JavaScript【七】JavaScript中的内置顶层函数

文章目录&#x1f31f;前言&#x1f31f;内置&#x1f31f;顶层&#x1f31f;内置顶层函数&#x1f31f; Number()&#x1f31f; parseInt()&#x1f31f;parseFloat()&#x1f31f;String()&#x1f31f;Boolean()&#x1f31f; isNaN()&#x1f31f;eval()&#x1f31f;Numbe…

(详细)《美国节日》:某月的第几个星期几

目录 一、题目描述&#xff1a; 二、思路&#xff1a; 1、给定 年月日&#xff0c;如何知道这天是星期几&#xff1f; 2、已知这个月的第一天是星期几&#xff0c;如何知道第三个星期一是几号&#xff1f; 3、最后一个星期一 三、思路总结 四、代码 一、题目描述&#xf…

机器学习---集成学习报告

1.原理以及举例 1.1原理 集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习策略&#xff0c;它通过结合多个基学习器&#xff08;base learners&#xff09;的预测来提高模型的性能。集成学习的目标是创建一个比单个基学习器更准确、更稳定的最终预测模型。这…

力扣---LeetCode面试题17.04.消失的数字

文章目录前言面试题17.04.消失的数字方法一&#xff1a;方法二&#xff1a;异或解析&#xff1a;方法三&#xff1a;总结前言 我有我要赶去的远方&#xff0c;风雨兼程披星戴月 本章的内容是力扣每日随机一题的部分方法的解析 提示&#xff1a;以下是本篇文章正文内容&#xf…

安全防御 --- 恶意代码、防病毒

一、恶意代码 1、按照传播方式分类 &#xff08;1&#xff09;病毒 概念&#xff1a;病毒是一种基于硬件和操作系统的程序&#xff0c;具有感染和破坏能力&#xff0c;这与病毒程序的结构有关。病毒攻击的宿主程序是病毒的栖身地&#xff0c;它是病毒传播的目的地&#xff0…

2023.04.09 学习周报

文章目录摘要文献阅读1.题目2.摘要3.简介4.本文贡献5.传统方法6.IDLSTM-EC7.实验7.1 数据集7.2 基线7.3 评估指标7.4 实验结果8.结论9.展望MDS降维算法1.基本思想2.优化目标3.数学推导4.算法流程马尔可夫链1.随机过程2.简介3.数学定义4.转移概率矩阵5.状态转移矩阵的稳定性Navi…

Python 访问 PostgreSQL

文章目录一、前言1.1 概述1.2 什么是 Psycopg二、操作 PostgreSQL2.1 连接数据库2.2 异常处理2.3 创建表2.4 INSERT 操作2.5 SELECT 操作2.6 UPDATE 操作2.7 DELETE 操作2.8 事务管理2.9 调用存储函数2.10 批量操作一、前言 1.1 概述 Python 是一种高级、通用的解释型编程语言…

排序算法之希尔排序

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;快给我点赞赞&#x1f497; 文章目录1. 希尔排序2. 算法思路3. 算法实现4. 算法性能分析&#x1f49e;总结&#x1f49e;1. 希尔排…

自己再造一个大规模预训练语言模型?可以的

1. 引言 自ChatGPT发布至今已近半年&#xff0c;一路走来&#xff0c;我们可以清楚地看到的一个趋势是&#xff0c;到了下半年&#xff0c;每位研究者都会拥有一个类似ChatGPT的模型。这种现象与当年BERT推出后&#xff0c;各种BERT变体层出不穷的情况颇为相似。实际上&#x…

Prophet学习(一) Python API实现

目录 Python API 详细介绍 完整代码&#xff1a; Python API 详细介绍 Prophet遵循sklearn模型API。我们创建Prophet类的实例&#xff0c;然后调用它的fit和predict方法。 Prophet的输入总是一个有两列的数据帧:ds和y。ds(日期戳)列应该是Pandas期望的格式&#xff0c;理想…

APIs --- DOM事件进阶

1. 事件流 事件流指的是事件完整执行过程中的流动路径 任意事件被触发时总会经历两个阶段&#xff1a;【捕获阶段】和【冒泡阶段】 事件捕获 概念&#xff1a;从DOM的根元素开始去执行对应的事件&#xff08;从外到里&#xff09; 捕获阶段是【从父到子】的传导过程 代码&…

基于SSM框架开发的小区物业管理系统JavaWeb项目源码

随着信息化时代的到来&#xff0c;小区的管理也日趋完善&#xff0c;开始逐步采用信息化系统对小区业主进行管理&#xff0c;对一些业务进行线上处理。小区物业管理系统正是为了满足这种需求而诞生的&#xff0c;也有不少同学会选择该课题作为毕业设计项目选题&#xff0c;下面…

【Unity入门】9.帧更新

【Unity入门】帧更新 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;获取挂载对象的属性信息 &#xff08;1&#xff09;获取名字信息 首先在C#代码中&#xff0c;this代表着脚本本身&#…

MySQL 事务和视图

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

Machine Learning-Ex3(吴恩达课后习题)Multi-class Classification and Neural Networks

目录 1. Multi-class Classification 1.1 Dataset 1.2 Visualizing the data 1.3 Vectorizing Logistic Regression 1.3.1 Vectorizing the cost function&#xff08;no regularization&#xff09; 1.3.2 Vectorizing the gradient&#xff08;no regularization&#…