收藏 分享(赏)

(12.4.1)--专题项目11实训指导书:学生信息管理.pdf

上传人:职教中心 文档编号:13709238 上传时间:2022-10-11 格式:PDF 页数:15 大小:929.04KB
下载 相关 举报
(12.4.1)--专题项目11实训指导书:学生信息管理.pdf_第1页
第1页 / 共15页
(12.4.1)--专题项目11实训指导书:学生信息管理.pdf_第2页
第2页 / 共15页
(12.4.1)--专题项目11实训指导书:学生信息管理.pdf_第3页
第3页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 Python 程 序 设 计 基 础 课 程专 题 项 目 11 实 训 指 导 书项 目 名 称 : 学 生 信 息 管 理一 、 实 训 目 标1、 复 习 巩 固 类 与 对 象 的 创 建2、 掌 握 Sqlite3数 据 库 的 查 询 语 句 和 插 入 语 句 的 SQL语 法 。2、 掌 握 sqlite3模 块 的 导 入 。3、 掌 握 sqlite3模 块 中 常 用 的 函 数 使 用 。4、 掌 握 游 标 对 象 的 使 用 。5、 掌 握 python编 程 实 现 对 sqlite 数 据 库 及 表 的 各 种 操 作二 、 实 训 任 务1、 Navica

2、tforSQLite安 装 和 使 用2、 利 用 Navicat进 行 如 下 操 作( 1) 创 建 一 个 学 生 信 息 数 据 库 。( 2) 创 建 一 张 学 生 基 本 信 息 数 据 表 ,( 3) 对 数 据 表 进 行 添 加 学 生 数 据 , 查 询 数 据 , 更 新 数 据 和 删 除 数 据 。3、 编 写 程 序 实 现 对 学 生 信 息 表 的 数 据 进 行 查 询 、 修 改 、 增 加 和 删 除 操 作 。三 、 设 计 思 路1、 程 序 结 构( 1) 创 建 文 件 夹 StuInfo, 包 含 工 程 所 有 的 文 件 。( 2) 在 工

3、 程 中 添 加 一 个 main.py文 件 作 为 程 序 的 主 文 件 。( 3) 程 序 在 运 行 中 , 会 生 成 一 个 stu.db的 数 据 库 放 在 工 程 中 。2、 数 据 设 计学 生 表 设 计 如 下 :表1学生表属 性 类 型 含 义id int 学 员 IDname varchar(50) 姓 名sex char( 2) 性 别age int 年 龄score int 分 数4、 函 数 设 计( 1) ExecuteSql( ) 函 数 :函 数 功 能 是 根 据 传 入 的 数 据 库 对 象 和 SQL语 句 , 利 用 数 据 库对 象 执 行

4、 SQL语 句 并 提 交 。( 2) AddData()函 数 : 通 过 传 入 的 数 据 库 操 作 对 象 和 SQL 添 加 语 句 , 使 用 数 据 库 操 作对 象 执 行 SQL添 加 语 句 。( 3) SelectData()函 数 : 该 函 数 可 以 根 据 输 入 的 学 生 编 号 , 生 成 一 条 查 询 语 句 , 然 后调 用 ExecuteSql()操 作 函 数 进 行 数 据 查 询 。( 4) DelStuData()函 数 : 通 过 传 入 的 学 生 编 号 , 首 先 查 询 学 生 是 否 存 在 , 如 果 存 在 则 删除 , 不

5、 存 在 则 提 示 没 有 该 学 生 。( 5) AltStuData()函 数 : 通 过 传 入 的 学 生 编 号 , 首 先 查 询 学 生 是 否 存 在 , 如 果 存 在 , 用户 输 入 修 改 信 息 , 程 序 创 建 一 条 修 改 该 学 生 的 SQL语 句 , 并 执 行 。( 6) 显 示 函 数 display( ) : 该 函 数 在 控 制 台 使 用 print()函 数 打 印 的 程 序 的 操 作 功 能 。四 、 任 务 实 施步 骤 一 、 NavicatforSQLite 下 载 安 装 与 使 用( 1) 下 载 与 安 装 从 官 网

6、下 载下 载 地 址 为 : https:/ 版 本 选 择NavicatforSQLite 的 版 本 有 32位 和 64位 , 而 我 们 这 里 使 用 的 是 64位 , Navicat这个 软 件 主 要 是 帮 助 我 们 以 视 图 模 式 查 看 程 序 中 创 建 的 数 据 库 内 容 , 下 载 版 本 如 下 :图1下载试用版Navicat 安 装 程 序双 击 运 行 , 默 认 安 装 即 可 。图2安装Navicat 运 行 程 序安 装 成 功 后 , 从 桌 面 上 找 到 图 标 双 击 运 行 即 可 , 可 以 选 择 试 用 模 式 , 如 下 图

7、所 示 :图3运行程序 Navicat界 面 显 示 如 下 :图4 Navicat窗口( 2) 创 建 数 据 库 连 接 数 据 库在 指 定 路 径 下 手 动 创 建 一 个 数 据 库 文 件 stu.db, 鼠 标 左 键 点 击 连 接 附 加 数 据 库 , 出 现如 下 窗 口 , 数 据 连 接 名 : sziit, 选 择 类 型 为 新 建 SQLite3, 点 击 选 择 指 定 数 据 库 的 路 径 。图5连接数据库 创 建 好 之 后 显 示 如 下 :图6显示数据库 执 行 SQL语 句如 果 需 要 执 行 SQL 语 句 , 那 么 需 要 打 开 命 令

8、 窗 口 , 鼠 标 右 键 点 击 main, 选 择 择 命 令 列界 面 , 如 下 所 示 :图7显示命令界面( 3) SQL基 本 语 法 创 建 数 据 表创 建 数 据 表 使 用 CREATETABLE 语 句 。 该 语 句 用 于 在 当 前 库 中 创 建 数 据 表 , 创 建 数 据表 语 句 的 语 法 格 式 如 下 :创 建 数 据 表 语 句 要 明 确 数 据 表 的 结 构 、 各 字 段 的 名 称 、 类 型 及 长 度 等 信 息 。例 如 创 建 以 下 数 据 表 stuinfo, 命 令 执 行 结 果 如 下 图 所 示 :图8数据库stui

9、nfo表创建 数 据 类 型数 据 类 型 包 括 整 数 类 型 、 浮 点 数 类 型 、 字 符 串 类 型 。表2数据类型数 据 类 型 关 键 字 存 储 空 间 (字 节 )整 数 类 型 INT 4浮 点 数 类 型 FLOAT 4字 符 串 类 型 VARCHAR 0 255CREATETABLE 表 名 (字 段 名 类 型 (长 度 ), 字 段 名 类 型 (长 度 );( 4) SQL基 本 操 作 插 入 语 句INSERT语 句 就 是 插 入 语 句 , 语 法 格 式 如 下 :此 时 , VALUES后 面 的 值 的 排 列 要 与 该 表 中 存 储 的

10、列 名 排 列 一 致 。例 如 对 stuinfo表 中 插 入 一 行 语 句 , 命 令 执 行 结 果 如 下 图 所 示 。图9插入语句也 可 以 指 定 要 插 入 数 据 的 列 , 语 法 格 式 如 下 :此 时 , VALUES后 面 的 值 的 排 列 要 与 INTO子 句 后 面 的 列 名 排 列 一 致 。例 如 只 对 stuinfo表 中 的 id和 name 两 个 列 名 进 行 插 入 , 命 令 执 行 结 果 如 下 图 所 示 。图10插入语句 修 改 语 句表 里 的 记 录 值 可 以 通 过 UPDATE命 令 进 行 修 改 , 语 法 格

11、 式 如 下 :SET关 键 字 表 示 要 修 改 的 列 , WHERE 表 示 要 修 改 的 条 件 。例 如 修 改 stuinfo表 中 name 的 值 为 “ 张 玲 ” 的 改 为 “ 张 小 玲 ” , 命 令 执 行 结 果 如 下 图 所示 。图11修改语句 删 除 语 句如 果 记 录 不 再 需 要 , 则 可 以 用 DELETE 命 令 进 行 删 除 , 语 法 格 式 如 下 :WHERE 表 示 要 修 改 的 条 件 ,在 删 除 时 , 如 果 不 加 限 制 条 件 , 则 会 把 表 的 所 有 记 录 都 删除 , 因 此 在 执 行 删 除 操

12、 作 时 要 慎 重 。例 如 删 除 stuinfo表 中 name 的 值 为 “ xiaoming” , 命 令 执 行 结 果 如 下 图 所 示 。图12删除语句INSERTINTO 表 名 VALUES(值 1, 值 2,.);INSERTINTO 表 名 (列 1, 列 2,.)VALUES(值 1, 值 2,.);UPDATE 表 名 SET 列 名 = 新 值 WHERE 列 名 = 某 值 ;DELETEFROM 表 名 WHERE 列 名 = 值 ; 查 询 数 据SQL数 据 查 询 语 句 是 SELECT语 句 , 基 本 的 SELECT语 句 的 语 法 格 式

13、 如 下 :查 询 语 句 中 如 果 没 有 加 入 条 件 的 话 , 查 询 的 是 所 有 数 据 , 这 里 的 字 段 可 以 用 * 表 示 ,查 询 的 是 所 有 字 段 。例 如 , 查 询 stuinfo表 所 有 数 据 , 命 令 执 行 结 果 如 下 图 所 示 。图13查询语句在 大 多 数 情 况 下 , 用 户 并 不 需 要 查 询 表 内 所 有 记 录 , 而 是 需 要 根 据 特 定 条 件 来 查 询 部 分数 据 , 此 时 , 可 以 用 WHERE关 键 字 实 现 条 件 查 询 。 条 件 查 询 的 语 法 格 式 如 下 :例 如

14、, 先 往 stuinfo表 中 添 加 一 条 age为 22的 学 生 数 据 , 然 后 查 询 stuinfo表 中 age的 值为 22的 记 录 , 命 令 执 行 结 果 如 下 图 所 示 。图14查询语句步 骤 二 : 创 建 工 程1、 启 动 PyCharm, 选 择 【 File】 【 NewProject】 , 在 “ CreateProject” 窗 口 设 置 “ Location”工 程 文 件 夹 , 在 路 径 尾 部 添 加 工 程 名 : StuInfoManagement, 点 击 “ Create” 按 钮 创 建 空 工 程 。如 下 图 所 示

15、:SELECT 字 段 FROM 表 名 ;SELECT 字 段 FROM 表 名 WHERE 条 件 ;图15工程路径设置2、 在 空 的 工 程 中 鼠 标 右 键 点 击 工 程 , 鼠 标 右 键 点 击 工 程 , 选 择 【 New】 【 PythonFile】 ,编 写 文 件 名 : main。 回 车 创 建 main.py文 件 。如 下 图 所 示 :图16项目文件创建3、 在 空 的 工 程 中 鼠 标 右 键 点 击 工 程 , 鼠 标 右 键 点 击 工 程 , 选 择 【 New】 【 PythonFile】 ,编 写 文 件 名 : funcModule。 回

16、车 创 建 funcModule.py模 块 文 件 。如 下 图 所 示 :图17项目文件创建步 骤 三 : 编 写 funcModule 模 块 代 码操 作 数 据 库 时 , 首 先 需 要 导 入 模 块 , 而 我 们 python3中 已 自 带 该 模 块 所 以 使 用 该 模 块 之前 我 们 声 明 一 下 即 可 。1、 在 funcModule.py文 件 中 添 加 模 块 sqlite3importsqlite32、 在 funcModule.py文 件 中 创 建 display()函 数 。该 函 数 在 控 制 台 使 用 print()函 数 打 印 的

17、程 序 的 操 作 功 能 。3、在 funcModule.py文 件 中 创 建 OperateDb类 , 该 类 成 员 涵 盖 了 对 数 据 库 所 有 操 作 。( 1) 创 建 OperateDb类 。( 2) 添 加 一 个 执 行 数 据 库 操 作 的 ExecuteSql()函 数 。函 数 功 能 是 根 据 传 入 的 数 据 库 对 象 和 SQL语 句 , 利 用 数 据 库 对 象 执 行 SQL语 句 并 提 交 。( 3) 创 建 查 询 数 据 函 数 。该 函 数 可 以 根 据 输 入 的 学 生 编 号 , 生 成 一 条 查 询 语 句 , 然 后

18、调 用 ExecuteSql()操 作 函 数进 行 数 据 查 询#界 面 显 示definit():print(欢 迎 来 到 学 生 管 理 系 统 )print(1.查 询 学 生 信 息 )print(2.修 改 学 生 信 息 )print(3.增 加 学 生 信 息 )print(4.删 除 学 生 信 息 )print(5.退 出 )#创 建 OperateDb类classOperateDb:#添 加 数 据defExecuteSql(self,sqlite,sqlstr, IsSel):ifIsSel=0:# 创 建 游 标 对 象cur=sqlite.cursor()# 执

19、 行 SQL语 句cur.execute(sqlstr)# 获 取 数 据su=cur.fetchall()# 返 回 数 据returnsuifIsSel=1:# 执 行 SQL数 据 库 语 句sqlite.execute(sqlstr)# 提 交 执 行 的 数 据 库 语 句mit()return1# 查 询 表 格 数 据 数 据defSelStuData(self,sqlite):id=input(请 输 入 要 查 询 的 学 生 编 号 )sqlstr=select * fromstuinfo whereid=+id( 4) 创 建 AltStuData()函 数 : 通 过

20、传 入 的 学 生 编 号 , 首 先 查 询 学 生 是 否 存 在 , 如 果 存 在 ,用 户 输 入 修 改 信 息 , 程 序 创 建 一 条 修 改 该 学 生 数 据 的 SQL语 句 , 并 执 行 。( 4) 创 建 AddStuData()函 数 , 给 表 格 添 加 一 个 新 学 生 信 息 。( 5) 创 建 DelStuData()函 数 , 指 定 学 生 编 号 , 然 后 删 除 该 学 生 信 息 。 如 果 没 有 查 询 到该 学 生 , 要 删 除 的 学 生 不 在 数 据 库 中 。# 调 用 操 作 数 据 库 函 数 , 执 行 查 询sel

21、_result=self.ExecuteSql(sqlite,sqlstr,IsSel=0)returnsel_result# 修 改 学 生 数 据 函 数defAltStuData(self,sqlite):id=input(请 输 入 要 修 改 的 学 生 编 号 : )sqlstr=select * fromstuinfo_table whereid=+id# 查 看 学 生 数 据 是 否 存 在selresult=self.ExecuteSql(sqlite,sqlstr,IsSel=0)iflen(selresult)=0: # 不 存 在 则 不 处 理print(学 生 数

22、 据 不 存 在 )return0else:# 执 行 SQL数 据 库 语 句name=input(请 重 新 输 入 学 生 姓 名 : )sex1=input(请 重 新 输 入 学 生 性 别 : )age=input(请 重 新 输 入 学 生 年 龄 : )score=input(请 重 新 输 入 学 生 分 数 : )#要 特 别 小 心 数 据 库 表 格 字 段 名 字 是 否 有 空 格strAlt=updatestuinfo_tableset name=+name+, sex=+sex1+, age= +age+ , score=+score+ where id=+id

23、su=self.ExecuteSql(sqlite,strAlt,IsSel=1)return1# 给 表 格 添 加 行 数 据 函 数defAddStuData(self,sqlite):# 执 行 SQL数 据 库 语 句id=input(请 输 入 学 生 编 号 : )name=input(请 输 入 学 生 姓 名 : )sex=input(请 输 入 学 生 性 别 : )age=input(请 输 入 学 生 年 龄 : )score=input(请 输 入 学 生 分 数 : )str_insert= insertintostuinfo_tablevalues ( +id+,

24、 +name+, +sex+ , +age+ , +score+ )insert_result=self.ExecuteSql(sqlite,str_insert,IsSel=1)return1步 骤 四 : 编 写 main 文 件 代 码1、 在 main.py文 件 中 声 明 一 下 sqlite3模 块 , 并 导 入 funcModule模 块 。2、 添 加 连 接 数 据 库 代 码3、 调 用 显 示 界 面 函 数4、 创 建 循 环 语 句 , 对 应 显 示 函 数 的 5种 操 作 , 开 始 编 程 对 数 据 库 进 行 相 应 操 作 。# 删 除 指 定 表

25、格 中 的 学 生 数 据defDelStuData(self,sqlite):id=input(请 输 入 要 删 除 的 学 生 编 号 : )sqlstr=select * fromstuinfo_table whereid=+id# 执 行 SQL语 句selresult=self.ExecuteSql(sqlite,sqlstr,IsSel=0)# 判 断 输 入 的 编 号 是 否 存 在iflen(selresult)=0:print(要 删 除 的 学 生 不 在 数 据 库 中 )return0else:# 执 行 SQL数 据 库 语 句str_Del=deletefrom

26、stuinfo_tablewhere id=+iddel_result=self.ExecuteSql(sqlite,str_Del,IsSel=1)return1# 提 交 执 行 的 数 据 库 语 句importsqlite3importfuncModulestrDB=stu.dbsqlite=sqlite3.connect(strDB)#创 建 一 个 操 作 数 据 库 对 象operateDb =funcModule.OperateDb()funcModule.display()# 显 示 界 面flag=1whileflag!=5:flag=int(input(请 选 择 操 作

27、 序 号 : )#查 询 学 生 数 据ifflag=1:list=operateDb.SelStuData(sqlite)iflen(list)=0:print(数 据 库 中 没 有 该 学 生 )步 骤 五 : 运 行 测 试1、 程 序 执 行 后 进 行 显 示 界 面 , 如 下 图 所 示 。图18显示界面2、 程 序 执 行 查 询 编 号 为 1的 同 学 结 果 , 如 下 图 所 示 。else:foriinlist:print(i)elifflag=2:temp=operateDb.AltStuData(sqlite)iftemp=1:print(修 改 成 功 )el

28、se:print(没 有 该 编 号 的 学 生 ! )elifflag=3:temp=operateDb.AddStuData(sqlite)iftemp=1:print(增 加 成 功 )else:print(增 加 不 成 功 )# 关 闭 数 据 库#增 加 学 生 信 息ifflag=4:# 删 除 指 定 学 生 编 号 的 数 据temp=operateDb.DelStuData(sqlite)iftemp=1:print(删 除 成 功 )else:print(删 除 不 成 功 )sqlite.close()图19查询运行结果3、 程 序 执 行 修 改 编 号 为 1的 同 学 结 果 , 把 姓 名 改 为 许 强 , 具 体 如 下 图 所 示 。图20修改运行结果4、 程 序 执 行 增 加 编 号 为 3的 学 生 数 据 , 具 体 如 下 图 所 示 。图21增加学生数据5、 程 序 执 行 删 除 编 号 为 1的 学 生 数 据 , 具 体 如 下 图 所 示 。图22删除学生数据6、 选 择 退 出 程 序 , 具 体 如 下 图 所 示 。图23退出程序五 、 提 交 报 告1、 提 交 StuInfo 项 目 文 件 ;2、 撰 写 并 提 交 实 训 报 告 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报