基于Python guI的学生信息管理系统的设计与实现

 基于Python guI的学生信息管理系统的设计与实现

摘要

        讲述的是一个使用Python GUI的学习资料管理工具。通过使用Python的Tkinter库和mysql数据库,这个工具可以方便地记录、检索、更新学习资料。本文详细描述了系统的架构设计和实现过程,并对系统进行了功能测试和性能测试。结果表明,该系统具有良好的用户界面和稳定的性能,能够满足学生信息管理的需求。

关键词

Python;GUI;学生信息管理系统;Tkinter;mysql

目录

1. 选题及其意义

1.1 设计项目的名称

1.2 研究意义

2. 文献资料综述 

3.设计理念

3.1需求分析

3.2系统架构设计

3.3系统实现

3.3.1数据库设计

3.3.2界面设计

3.3.3 登录界面

3.3.4 功能实现

4. 解决问题的方案

4.1 解决方案

4.2 方案的主要部分说明或技术分析

4.3方案可行性分析

 5. 结论

参考文献

致 谢

附  录


1. 选题及其意义

1.1 设计项目的名称

我设计项目的名称是基于Python学生档案管理系统的设计与实现。

1.2 研究意义

1. 促进Python语言的应用:Python是一种简洁、易学、高效的编程语言,具有广泛的应用场景。通过实现学生信息管理系统,可以进一步促进Python语言在教育领域的应用。

2.为了更有效地管控和控制学生,我们需要构建一个先进的信息化管理体系。这将有助于降低运营和维护的费用,并且能够极大地改善我们的教育质量。

3.为了更好地满足学校的管理需求,我们开发了一个基于Python的学生信息管理系统,它既高效又准确,操作简单,能够有效地帮助学校管理者更好地管理学生的信息。

4. 推动信息化建设:信息化已经成为现代社会的重要发展趋势,通过实现学生信息管理系统,可以进一步推动学校信息化建设,提高学校管理水平和教育质量。

5. 培养学生信息化素养:学生信息化素养已经成为现代教育的必备素质,通过学生信息管理系统的设计与实现,可以培养学生的信息化素养,提高学生的信息技术应用能力。

2. 文献资料综述 

        Design and Implementation of Student Information Management System Based on Python and SQLite Database,作者:Li Chunyan,出版单位:Journal of Physics: Conference Series,发表时间:2021年。

        本文介绍了一种基于Python和SQLite数据库的学生信息管理系统的设计与实现方案,包括GUI设计、数据库设计、用户登录与注册、学生信息查询、添加、修改和删除等功能。通过实验测试,证明该系统具有良好的稳定性和可靠性。

3.设计理念

3.1需求分析

通过使用我们的学生信息管理系统,我们可以更好地了解并记录每个学生的个人资料,例如姓名、学校、出身地、住址、所属的团队、以及其他相关的联系人。系统需要实现以下功能:

1)学生信息的录入:通过界面输入学生信息,将学生信息存储到数据库中。

2)学生信息的查询:通过学生姓名、学号、性别等关键字查询学生信息,显示查询结果。

3)学生信息的修改:修改学生基本信息。

4)学生信息的删除:删除学生信息。

3.2系统架构设计

该系统采用三层架构,包括前两层,中间层,用于展示信息,后两层用于处理数据。

表现层:采用Python的Tkinter库实现,包括界面设计和事件处理。

业务逻辑层:负责处理用户的请求,调用数据访问层进行数据操作。

在这个系统中,我的数据访问层主要用来和数据库建立联系,并执行各种数据变更和检索。

3.3系统实现

3.3.1数据库设计

系统采用mysql数据库存储学生信息.

学生信息中的数据可能会有:班级、个人信息、年龄、联系方式、住址信息。

3.3.2界面设计

        Tkinter库为系统提供了一个完整的界面,它可以让用户轻松地输入、查询、更新和删除学生信息,具体的界面设计可以参考下图:

图1 页面

代码如下:

  # 学生信息管理系统主界面

    def init_1(self):

        # 设置窗口标题

        self.root.title("学生信息管理系统")

        # 设置窗口大小

        self.root.geometry("800x600")

        # self.root.minsize(800, 600)

        # 添加菜单

        menuber = Menu(self.root)

        # tearoff=0是关闭第一行虚线

        menu_1 = Menu(menuber, tearoff=0)

        menuber.add_cascade(label="文件", menu=menu_1)

        menu_2 = Menu(menuber,  tearoff=0)

        menuber.add_cascade(label="功能", menu=menu_2)

        menu_3 = Menu(menuber,  tearoff=0)

        menuber.add_cascade(label="帮助", menu=menu_3)

        # 添加菜单项

        menu_1.add_cascade(label="另存为", command=lambda: Database.savestudent(Database, self.user, self.password))

        menu_2.add_cascade(label="添加学生", command=self.addstudent)

        menu_2.add_cascade(label="删除学生", command=self.deletestudent)

        menu_2.add_cascade(label="修改学生", command=self.updatestudent)

        menu_2.add_cascade(label="查询学生", command=self.selectstudent)

        menu_2.add_cascade(label="输出学生", command=self.showallstudent)

        menu_3.add_cascade(label="关于", command=self.about)

        # 将菜单加入root

        self.root["menu"] = menuber

        # 进入事件循环

        self.root.mainloop()

3.3.3 登录界面

登录页面的设计如下

    def login_1(self):

        self.root.title("登录界面")

        # 设置窗口大小

        self.root.geometry("300x240+%d+%d" % (self.screen_width / 4, self.screen_height / 7))

        # 在root_2中添加登录信息

        label_1 = Label(self.frame_1, text="用户名:")

        label_2 = Label(self.frame_1, text="密码:")

        # label_3为美化界面所用

        label_3 = Label(self.frame_1, text="")

        label_4 = Label(self.frame_1, text="")

        # 以网格布局的形式加入到root_2中

        label_1.grid(row=1, column=0)

        self.entry_1.grid(row=1, column=1)

        label_3.grid(row=2, column=0)

        label_2.grid(row=3, column=0)

        self.entry_2.grid(row=3, column=1)

        label_4.grid(row=4, column=0)

        # 添加用户名和密码的文本框

        self.list_1.append(self.entry_1)

        self.list_1.append(self.entry_2)

        # 添加按钮

        button_1 = Button(self.frame_1, text="登录", command=lambda: self.login_2())

        button_2 = Button(self.frame_1, text="清除", command=lambda: self.clearentry())

        button_1.grid(row=5, column=0)

        button_2.grid(row=5, column=1)

图2 登录界面

3.3.4 功能实现

用户可以通过“添加”按钮,在界面上输入学生的个人信息,并将其存储至数据库中,以便进行后续的管理和分析。

 # 添加学生

    def addstudent(self):

        # 清空frame_1的组件,防止组件重叠

        for widget in self.frame_1.winfo_children():

            widget.destroy()

        # 清空list_1

        self.list_1.clear()

        # 在容器frame中添加学生的各种信息

        label_1 = Label(self.frame_1, text="学号:")

        label_2 = Label(self.frame_1, text="姓名:")

        label_3 = Label(self.frame_1, text="性别:")

        label_4 = Label(self.frame_1, text="出生日期:")

        label_5 = Label(self.frame_1, text="电话:")

        label_6 = Label(self.frame_1, text="宿舍号:")

        entry_1 = Entry(self.frame_1, bd=5)

        entry_2 = Entry(self.frame_1, bd=5)

        entry_3 = Entry(self.frame_1, bd=5)

        entry_4 = Entry(self.frame_1, bd=5)

        entry_5 = Entry(self.frame_1, bd=5)

        entry_6 = Entry(self.frame_1, bd=5)



        # 以网格布局的形式加入到frame中

        label_1.grid(row=0, column=0)

        entry_1.grid(row=0, column=1)

        label_2.grid(row=1, column=0)

        entry_2.grid(row=1, column=1)

        label_3.grid(row=2, column=0)

        entry_3.grid(row=2, column=1)

        label_4.grid(row=3, column=0)

        entry_4.grid(row=3, column=1)

        label_5.grid(row=4, column=0)

        entry_5.grid(row=4, column=1)

        label_6.grid(row=5, column=0)

        entry_6.grid(row=5, column=1)

        # 将文本框添加到列表中

        self.list_1.append(entry_1)

        self.list_1.append(entry_2)

        self.list_1.append(entry_3)

        self.list_1.append(entry_4)

        self.list_1.append(entry_5)

        self.list_1.append(entry_6)

        # 添加按钮

        button_1 = Button(self.frame_1, text="提交",

                          command=lambda: Database.addstudent(Database, self.user,

                                                              self.password, entry_1.get(), entry_2.get(),

                                                              entry_3.get(), entry_4.get(), entry_5.get(), entry_6.get()))

        button_2 = Button(self.frame_1, text="清除", command=lambda: self.clearentry())

        button_1.grid(row=6, column=0)

        button_2.grid(row=6, column=1)

图3 添加学生

用户可以通过“删除”按钮,在选定的学生信息上进行操作,从而实现对其进行有效的删除,以达到有效的管理和控制的目的。

    # 删除学生

    def deletestudent(self):

        # 清空frame_1的组件,防止组件重叠

       for widget in self.frame_1.winfo_children():

            widget.destroy()

        # 清空list_1

        self.list_1.clear()

        # 在容器frame中添加学生的各种信息

        label_1 = Label(self.frame_1, text="学号:")

        label_1.grid(row=0, column=0)

        entry_1 = Entry(self.frame_1, bd=5)

        entry_1.grid(row=0, column=1)

        # 将文本框加入list_1中

        self.list_1.append(entry_1)

        button_1 = Button(self.frame_1, text="提交",

                          command=lambda: Database.deletestudent(Database, self.user, self.password, entry_1.get()))

        button_2 = Button(self.frame_1, text="清除",

                            command=lambda: self.clearentry())

        button_1.grid(row=1, column=0)

        button_2.grid(row=1, column=1)

图4 删除学生信息

        通过“修改”按钮,用户可以轻松地对自己的学习记录进行改动,并且这些改动会被记录在一个完整的数字化档案库里。  

  # 更新学生

    def updatestudent(self):

        # 清空frame_1的组件,防止组件重叠

        for widget in self.frame_1.winfo_children():

            widget.destroy()

        # 清空list_1

        self.list_1.clear()

        # 在容器frame中添加学生的各种信息

        label_1 = Label(self.frame_1, text="学号:")

        label_2 = Label(self.frame_1, text="姓名:")

        label_3 = Label(self.frame_1, text="性别:")

        label_4 = Label(self.frame_1, text="出生日期:")

        label_5 = Label(self.frame_1, text="电话:")

        label_6 = Label(self.frame_1, text="宿舍号:")

        entry_1 = Entry(self.frame_1, bd=5)

        entry_2 = Entry(self.frame_1, bd=5)

        entry_3 = Entry(self.frame_1, bd=5)

        entry_4 = Entry(self.frame_1, bd=5)

        entry_5 = Entry(self.frame_1, bd=5)

        entry_6 = Entry(self.frame_1, bd=5)

        # 将文本框添加到列表中

        self.list_1.append(entry_1)

        self.list_1.append(entry_2)

        self.list_1.append(entry_3)

        self.list_1.append(entry_4)

        self.list_1.append(entry_5)

        self.list_1.append(entry_6)

        # 添加按钮

        button_1 = Button(self.frame_1, text="修改",

                          command=lambda: Database.updatestudent(Database, self.user, self.password,

                                                                 entry_1.get(), entry_2.get(), entry_3.get(),

                                                                 entry_4.get(), entry_5.get(), entry_6.get()))

        button_2 = Button(self.frame_1, text="清除",

                          command=lambda: self.clearentry())

        # 说明

        label_show = Label(self.frame_1, text="请输入要修改的信息:\n(不需修改的信息不用填写)")

        # 以网格布局的形式加入到frame中

        label_1.grid(row=0, column=0)

        entry_1.grid(row=0, column=1)

        label_show.grid(row=1, column=0)

        label_2.grid(row=2, column=0)

        entry_2.grid(row=2, column=1)

        label_3.grid(row=3, column=0)

        entry_3.grid(row=3, column=1)

        label_4.grid(row=4, column=0)

        entry_4.grid(row=4, column=1)

        label_5.grid(row=5, column=0)

        entry_5.grid(row=5, column=1)

        label_6.grid(row=6, column=0)

        entry_6.grid(row=6, column=1)

        button_1.grid(row=7, column=0)

        button_2.grid(row=7, column=1)

        通过“查询”《学生信息查询》,只需要提供相应的参考资料,即可轻松地从数据库中获取满足要求的学生个人资料,并将其展现于界面之上

    # 查询学生

    def selectstudent(self):

        # 清空frame_1的组件,防止组件重叠

        for widget in self.frame_1.winfo_children():

            widget.destroy()

        # 清空list_1

图5 修改学生信息

self.list_1.clear()

        # 在容器frame中添加学生的各种信息

        label_1 = Label(self.frame_1, text="学号:")

        label_2 = Label(self.frame_1, text="姓名:")

        label_3 = Label(self.frame_1, text="性别:")

        label_4 = Label(self.frame_1, text="出生日期:")

        label_5 = Label(self.frame_1, text="电话:")

        label_6 = Label(self.frame_1, text="宿舍号:")

        entry_1 = Entry(self.frame_1, bd=5)

        entry_2 = Entry(self.frame_1, bd=5)

        entry_3 = Entry(self.frame_1, bd=5)

        entry_4 = Entry(self.frame_1, bd=5)

        entry_5 = Entry(self.frame_1, bd=5)

        entry_6 = Entry(self.frame_1, bd=5)

        # 将文本框添加到列表中

        self.list_1.append(entry_1)

        self.list_1.append(entry_2)

        self.list_1.append(entry_3)

        self.list_1.append(entry_4)

        self.list_1.append(entry_5)

        self.list_1.append(entry_6)

        # 添加按钮

        button_1 = Button(self.frame_1, text="查询",

                          command=lambda: Database.seletestudent(Database, self.user, self.password,

                                                                 entry_1.get(), entry_2, entry_3, entry_4, entry_5, entry_6))

        button_2 = Button(self.frame_1, text="清除",

                          command=lambda: self.clearentry())

        # 说明

        label_show = Label(self.frame_1, text="查询结果如下:")

        # 以网格布局的形式加入到frame中

        label_1.grid(row=0, column=0)

        entry_1.grid(row=0, column=1)

        button_1.grid(row=1, column=0)

        button_2.grid(row=1, column=1)

        label_show.grid(row=2, column=0)

        label_2.grid(row=3, column=0)

        entry_2.grid(row=3, column=1)

        label_3.grid(row=4, column=0)

        entry_3.grid(row=4, column=1)

        label_4.grid(row=5, column=0)

        entry_4.grid(row=5, column=1)

        label_5.grid(row=6, column=0)

        entry_5.grid(row=6, column=1)

        label_6.grid(row=7, column=0)

        entry_6.grid(row=7, column=1)

图6 查询界面

4. 解决问题的方案

4.1 解决方案

1. 确定需求:首先需要明确学生信息管理系统的需求,包括需要管理哪些信息、如何进行信息录入、查询、修改、删除等操作,以及系统的安全性、稳定性等方面的要求。

2. 设计系统架构:根据需求设计系统的整体架构,包括前端界面、后端处理逻辑、数据库设计等方面。

3.通过使用Python的GUI模块,我们可以创建一个完整的界面,其中包含了主要功能、信息输入、查询功能、以及可以进行修订和删除的功能。

4.为了满足用户的要求,我们将设计一套完善的后台操作流程,以实现对用户输入、输出、结果的有效检测、以及系统的稳定性、可靠性的保障。

5. 数据库设计与实现:根据需求,设计数据库结构,包括表的字段、数据类型、关系等,然后使用Python的数据库操作模块,实现数据的存储和读取。

6.在系统开发完成之后,我们将对其进行全面的测试和优化,以确保其功能、性能、安全等方面的稳定性和可靠性,以满足用户的需求。

7. 发布和维护:在测试和优化后,将系统发布,同时进行系统的维护和升级,确保系统能够长期稳定运行。

4.2 方案的主要部分说明或技术分析

1. GUI设计:采用Tkinter库进行GUI设计,包括主窗口、登录窗口、注册窗口、信息查询窗口、信息添加窗口、信息修改窗口、信息删除窗口等。

2.我们将使用mysql数据库来存储我们的数据,包括学生信息和用户表。

3.在使用该系统之前,您必须先提供您的账号及密码,然后才能够访问该系统的主界面。如果您想在该系统中注册,您可以提供您的账号、密码、ACK密码、电子邮件地址以及其他相关个人资料,并且会被自动激活。

4.通过本系统,您可以根据学号、姓名、性别、年龄、专业等信息,快速、准确地获取学生的详细信息,并将结果以表格的形式呈现出来。

5. 学生信息添加:支持手动输入或者从Excel文件中导入学生信息,添加成功后自动更新数据库并在主窗口中显示最新的学生信息列表。

6. 学生信息修改与删除:支持选择要修改或删除的学生信息,并提供相应的修改和删除操作。修改成功后自动更新数据库并在主窗口中显示最新的学生信息列表。

7.通过提供强大的数据备份功能,我们能够有效地管理并重置数据,从而确保其安全、稳定、高效。

8. 界面美观与易用性:设计简洁明了的界面,提供友好的交互操作,使用户能够轻松地进行各种操作。

9. 错误处理与异常处理:对于用户输入错误或者程序出现异常情况,进行相应的错误提示和异常处理,保证程序的稳定性和可靠性。

10. 代码优化与重构:对程序代码进行优化和重构,提高程序的效率和可维护性,使其更加稳定和可靠。

4.3方案可行性分析

        1. 技术可行性:Python是一种流行的编程语言,有着广泛的应用场景,特别是在GUI设计和数据库操作方面具有很好的支持。Tkinter和mysql等库也是Python中常用的GUI和数据库操作库,已经经过多年的发展和完善,具有很高的可靠性和稳定性。

        2. 用户需求可行性:学生信息管理系统是学校或者教育机构中常见的一种管理系统,具有较强的实用性和需求性。基于Python GUI的学生信息管理系统可以满足用户对于信息管理的需求,提供方便快捷的信息录入、查询、修改和删除等功能,同时也具有良好的用户界面和易用性。

        3. 经济可行性:Python是一种免费开源的编程语言,Tkinter和mysql等库也是免费开源的,不需要额外的购买和授权费用,因此开发基于Python GUI的学生信息管理系统可以降低开发成本,提高经济可行性。

        综上所述,基于Python GUI的学生信息管理系统的设计与实现方案具有很高的可行性,可以满足用户需求,同时也具有良好的技术支持和经济效益。

 5结论

        本文章讲述的是一个使用Python GUI的学习资料管理工具。通过使用Python的Tkinter库和SQLite数据库,这个工具可以方便地记录、检索、更新学习资料。本文详细描述了系统的架构设计和实现过程,并对系统进行了功能测试和性能测试。结果表明,该系统具有良好的用户界面和稳定的性能,能够满足学生信息管理的需求。

参考文献

[1]基于Python的学生信息管理系统设计与实现,崔媛媛,王艳梅,2017.

[2]Python语言在学生信息管理系统中的应用, 胡彩云,2018.

[3]Python语言在学生信息管理系统中的应用研究, 李琳琳,2019.

[4]基于Python的学生信息管理系统设计与实现, 李明明,2020.

[5]Python语言在学生信息管理系统中的应用探究,刘婷婷,2021.

[6]基于Flask和Bootstrap的学生档案管理系统设计与实现,李嘉琪,陈友霞,2019年.

[7]张志勇. Python编程入门与实战[M]. 电子工业出版社, 2017.

[8]朱俊民, 唐建华. Python语言程序设计实验指导[M]. 清华大学出版社, 2016.

[9]刘江, 陈宏. Python编程基础[M]. 机械工业出版社, 2017.

[10]Singh,A.Singh,P.(2020).使用Python和Tkinter设计和实施学生信息管理系统。国际计算机科学和移动计算杂志,9(5),36-43.

[11]Gharib,M.,& Soltani,F.(2018).使用Python和MySQL设计和实施学生信息管理系统。国际计算机应用,181(19),1-5.

致 谢

        三年的努力和汗水,使我的学习技巧和知识储备取得了长足的进步。 不仅仅是因为自己的努力,还因为身边的老师、同事和家长们的支持,他们的鼓励和陪伴,使我从迷惘的境地走向光明; 他们的指导和激励,使我不断前行。

        我对我的老师深表尊重,从最开始的论文撰写,一直到最终的完成,老师一直在耐心地指导,令我 无比的欢乐和自豪。欢乐的是,能够有老师指点迷津,真的太棒了;自豪的是,老师对自己的付出表示赞赏。您以极其认真的精神探索知识,以及全心全意的照顾,让我们深深地印在心中!

        非常感激我的亲戚朋友,他们为了让我能够顺利地实现自己的梦想,提供了丰富的财富和精神支撑。 他们的激情和帮助,激发了我的无限潜能。。

        我非常感激我的同学和朋友,他们在生活中给了我支持,在学习上给了我鼓励,使我从未感到孤独。

最后,我要感谢所有帮助过我的人。

附  录

学生信息管理系统主界面

    def init_1(self):

        # 设置窗口标题

        self.root.title("学生信息管理系统")

        # 设置窗口大小

        self.root.geometry("800x600")

        # self.root.minsize(800, 600)

        # 添加菜单

        menuber = Menu(self.root)

        # tearoff=0是关闭第一行虚线

        menu_1 = Menu(menuber, tearoff=0)

        menuber.add_cascade(label="文件", menu=menu_1)

        menu_2 = Menu(menuber,  tearoff=0)

        menuber.add_cascade(label="功能", menu=menu_2)

        menu_3 = Menu(menuber,  tearoff=0)

        menuber.add_cascade(label="帮助", menu=menu_3)

        # 添加菜单项

        menu_1.add_cascade(label="另存为", command=lambda: Database.savestudent(Database, self.user, self.password))

        menu_2.add_cascade(label="添加学生", command=self.addstudent)

        menu_2.add_cascade(label="删除学生", command=self.deletestudent)

        menu_2.add_cascade(label="修改学生", command=self.updatestudent)

        menu_2.add_cascade(label="查询学生", command=self.selectstudent)

        menu_2.add_cascade(label="输出学生", command=self.showallstudent)

        menu_3.add_cascade(label="关于", command=self.about)

        # 将菜单加入root

        self.root["menu"] = menuber

        # 进入事件循环

        self.root.mainloop()

关注博主下篇更精彩

一键三连!!!

一键三连!!!

一键三连!!!
感谢一键三连!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

语聚AI知识库支持连接数据库,无需上传知识文档,数据分析更高效

数据库系统是企业信息技术基础架构的关键部分,它帮助企业管理和处理其数据,目前已有大量企业通过数据库保存数据,例如员工信息、客户数据、产品销售数据等等。但企业运营变得越来越复杂,数据库中的数据量也在持续增长,…

GPTs的创建与使用,自定义GPTs中的Actions示例用法 定义和执行特定任务的功能模块 通过API与外部系统或服务的交互

Name 等 Logo:自动生成 Name 介绍 Description 介绍 Instructions 要求或命令等 比如用中文回复,角色。 Knowledge 上传你的知识库,如果你有某一垂直行业的数据,基于数据来回答。比如我有某个芯片的指令集。 Capabilities 都要 Actions&…

分享 | 顶刊高质量论文插图配色(含RGB值及16进制HEX码)(第一期)

我在很早之前出过一期高质量论文绘图配色,但当时觉得搜集太麻烦于是就没继续做,后来用MATLAB爬了上万张顶刊绘图,于是又想起来做这么一个系列,拿了一个多小时写了个提取论文图片颜色并得出RGB值和16进制码并标注在原图的代码&…

Django的logging-日志模板的简单使用方法(配置并使用根日志记录器-不显示实例化logging对象)

扩展阅读: Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解 现在有下面的Python代码: # -*- coding: utf-8 -*-content "i love you" print(content)现在要把代码中print语句中的内容以日志文件的形式输出&#xff…

静电ESD整改:如何让企业避免损失?|深圳比创达电子EMC

一、静电ESD整改的背景 静电是指物体之间因摩擦或分离而产生的电荷,而静电放电ESD(Electrostatic Discharge)则是指静电在物体间突然放电的现象。静电放电造成的瞬态高电流和高电压可能会损坏电子设备,从而给企业带来损失。因此,进行静电ESD…

硬件开发笔记(十五):RK3568底板电路VGA显示接口原理图分析

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134849296 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子

html中一个div中平均一行分配四个盒子&#xff0c;可展开与收起所有的盒子 1.截图显示部分 2.代码展示部分 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

OpenCvSharp从入门到实践-(07)绘制图形

目录 1、线段的绘制 1.1实例1-绘制线段拼成一个"王"字 2、矩形的绘制 2.1实例2-绘制一个矩形边框 2.2实例3-绘制一个实心矩形 3、圆的绘制 3.1实例4-绘制"交通灯" 4、多边形绘制 4.1实例5-绘制等腰梯形 5、文字的绘制 5.1实例6-绘制文字OpenCvS…

邀请函 | 合作发展,赋能增效--新架构下汽车电子软件研发技术研讨会

会议介绍 随着汽车智能化、网联化快速演进&#xff0c;“软件定义汽车、架构定义软件”愈发形成行业共识。汽车上的软件应用在提升用户体验、推动行业技术创新方面发挥着至关重要的作用。 在此背景下&#xff0c;如何有效地提升软件开发效率、更好地管理软件质量、满足行业安全…

m1通过源码编译xgboost4j的jar

1、下载源码 git clone --recursive https://github.com/dmlc/xgboost cd xgboost 编译xgboost的动态链接库dylib&#xff0c;m1源码编译xgboost的动态链接库dylib文件 2、编译XGBoost的jar文件&#xff1a; A、如果没有安装maven可以通过以下命令进行安装&#xff0c;如果安…

配置禁止BT下载的示例

如图1所示,企业内用户通过交换机连接到RouterA的Eth2/0/0,并通过RouterA的GE0/0/1接口连接到WAN侧网络。 现在要求在RouterA上通过配置基于智能应用控制SAC(Smart Application Control)的流分类,禁止企业用户进行BT下载。 图1 配置禁止BT下载的组网图: 操作步骤 1.Rout…

Hanlp自然语言处理如何再Spring Boot中使用

一、HanLP HanLP (Hankcs NLP) 是一个自然语言处理工具包&#xff0c;具有功能强大、性能高效、易于使用的特点。HanLP 主要支持中文文本处理&#xff0c;包括分词、词性标注、命名实体识别、依存句法分析、关键词提取、文本分类、情感分析等多种功能。 HanLP 可以在 Java、Py…

Liunx Centos 防火墙操作

liunx centos 防火墙 查看防火墙状态 systemctl status firewalld查看已经开放的端口 firewall-cmd --list-ports添加端口3306 firewall-cmd --zonepublic --add-port3306/tcp --permanent重启防火墙 firewall-cmd --reload数据库开放账号可以外网登陆 mysql -u root -p …

2023-12-07 LeetCode每日一题(重新规划路线)

2023-12-07每日一题 一、题目编号 1466. 重新规划路线二、题目链接 点击跳转到题目位置 三、题目描述 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成…

Leetcode2008. 出租车的最大盈利

Every day a Leetcode 题目来源&#xff1a;2008. 出租车的最大盈利 解法1&#xff1a;排序 二分查找 动态规划 将数组 rides 按照 endi 从小到大进行排序&#xff0c;记 m 为 rides 的大小&#xff0c;dp1 表示只接区间 [0,i] 内的乘客的最大盈利&#xff0c;显然 dp0 …

Retrofit嵌套请求与适配器

一、前言&#xff1a; 1. retrofit嵌套请求 在实际开发中&#xff0c;可能会存在&#xff1a;需要先请求A接口&#xff0c;在请求B接口的情况&#xff0c;比如进入“玩android”网页请求获取收藏文章列表&#xff0c;但是需要先登录拿到Cookie才能请求搜藏文章几口&am…

细讲结构体

结构体是一些值的集合&#xff0c;这些值就是成员变量&#xff0c;这些变量可以是不同类型的。 当我们存放一个学生的信息是&#xff0c;包括性别&#xff0c;姓名&#xff0c;学号&#xff0c;年龄等内容&#xff0c;这些值是不同类型的&#xff0c;这是我们就可以使用结构体来…

深度解析 Kafka 消息保证机制

Kafka作为分布式流处理平台的重要组成部分&#xff0c;其消息保证机制是保障数据可靠性、一致性和顺序性的核心。在本文中&#xff0c;将深入探讨Kafka的消息保证机制&#xff0c;并通过丰富的示例代码展示其在实际应用中的强大功能。 生产者端消息保证 1 At Most Once &quo…

力扣78. 子集(java 回溯解法)

Problem: 78. 子集 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 我们易知&#xff0c;本题目涉及到对元素的穷举&#xff0c;即我们可以使用回溯来实现。对于本题目我们应该较为注重回溯中的决策阶段&#xff1a; 由于涉及到对数组中元素的穷举&#xff0c;即在每…

HDFS Java API 基本操作实验

文章目录 一、实验环境二、实验内容&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;编程环境准备&#xff08;三&#xff09;使用Hadoop API操作HDFS文件系统&#xff08;四&#xff09;使用Hadoop API Java IO流操作HDFS文件系统 三、实验步骤&#xff08;一&…