丨灵感来源(doge)
作为班级电教的我,怎能容忍别人乱动电脑?
对了,我们那个电脑没有键盘没有鼠标,就是一个希沃一体机,如果使用自带的锁屏系统,密码不是很容易被同学看到?作为电教的我,当然有办法解决这个问题啦!自己动手,丰衣足食!
效果:

丨你所具备能力
本教程综合难度为:※※(共10颗※)
您需要知道:Python语法基础。数据库基础。tkinter库基础。coco编辑器(原APP工匠)基础。
如果您在学习的过程中,遇到困难,可以直接百度获取详细帮助,本文章不深入说明。
丨思路准备
在制作程序之前我们需要做好准备工作,避免制作到一半没思路还要重新修改程序,降低效率。
丨丨网站服务器
在阿里云或腾讯云或其他供应商购买服务器(需要支持PHP+MySql)!用于电脑手机交互
丨丨实现禁用其他程序
通过任务管理器可以把作品上的东西全部“隐藏”,可通过这方法禁用其他程序,(针对没有鼠标键盘)!

丨丨不在电脑上直接输入密码
在电脑上输入密码(除非是动态的)就很容易被别有用心的人记住,那就如同虚设!那就需要不能直接输入密码!
丨丨老师才可以授权
不排除学生也可以带手机扫码,所以要用专门的扫码方式才可,需要在二维码上做点手脚,即使学生扫出来了也进不去!
丨思路流程

丨制作程序
丨丨数据库+授权界面

在数据库里创建数据表,分别为id和uid。第二个uid没用的。

这个授权界面,我直接给出代码把!(我已把数据库数据给打*)
<?php
if($_GET['uid']){
$servername = "localhost";
$username = "******";
$password = "*****";
$dbname = "*****";
$conn = new mysqli($servername, $username, $password,$dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$u=$_GET['uid']-4853256;
$sql = "UPDATE `logo` SET `id`='".$u."',`uid`='0' WHERE 1";
$result = $conn->query($sql);
$conn->close();
}
?>
<!--界面布局-->
<div id="cTMail-Wrap" helvetica="helvetica" neue="neue" sans="sans" gb="gb" yahei="yahei" ui="ui" yahei="yahei"></div>
<div class="main-content">
<table>
<tbody>
<tr>
<td></td>
<td>
<p></p>
<div id="cTMail-inner">
<table>
<tbody>
<tr>
<td></td>
<td>
<h1 id="cTMail-title">尊敬的老师:</h1>
<p id="cTMail-userName"><span>请点击下方按钮就可以进入电脑系统了。</span></p>
<p id="cTMail-userName"><span>感谢您来9班上课,您幸苦了!<span>谢谢老师!我们会一直记住您的!</span></span></p<p class="cTMail-content"><a id="cTMail-btn" href="http://pw.viyrs.com/logo.php?uid=<?php echo $_GET['id'];?>" rel="noopener" ><?php if($_GET['uid']) echo '已授权,可以关闭APP了!'; else echo '点击授权登录';?></a></p>
<dl>
<dd>
<p id="cTMail-sender">此致
<strong>9班全体同学</strong></p>
</dd>
</dl>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div id="cTMail-copy">
<table>
<tbody>
<tr>
<td></td>
<td>
<p id="cTMail-rights">广东省实验中学南海分校
制作者:冷鱼闲风</p>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<style type="text/css">
.qmbox style, .qmbox script, .qmbox head, .qmbox link, .qmbox meta {display: none !important;}
</style>
</div>
</div><!-- -->
<style>
#mailContentContainer .txt {height:auto;}
</style>
</div>
对于HTML和PHP语言您可以到菜鸟教程单独学习。这里不阐述。
丨丨PC端程序
我先分开说明如何实现,最后再给出完整代码。
rm = random.randint(1000000000, 9000000000)
img = qrcode.make("login://"+str(rm))
img.save("qr.png")
我们首先需要生成二维码图片,生成随机标识。然而图片不能直接展示密码,不然很明显就被别人盗取了。需要专门程序解密。
os.system("taskkill /f /im explorer.exe")
我们想要把桌面上的东西全部“隐藏”,那就要调用cmd的taskkill命令了,我们要强制杀死explore.exe进程
def login():
connection = pymysql.connect(host='****', port=3306, user='*****', password='*****',
db='***', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
sql = "SELECT * FROM `logo`"
cursor.execute(sql)
#查询数据库单条数据
result = cursor.fetchone()
connection.close()
if str(result['id']) == str(rm):
root.destroy()
os.system("explorer.exe")
sys.exit()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
root.geometry("%dx%d" % (w, h))
root.overrideredirect(1)
photo = PhotoImage(file=r"qr.png")
Label(root,justify=LEFT,text="
",compound=CENTER, font=("黑体", 30),fg="black").pack()
Label(root,justify=LEFT,image=photo,compound=CENTER, font=("黑体", 20), fg="black").pack()
Label(root,justify=LEFT,text="使用专用APP登录系统",compound=CENTER,font=("黑体", 20),fg="black").pack()
Button(root, text='登录校检', command=login, width=20, height=3, bg="white").pack()
mainloop()
这里是设置用户界面,用来把二维码展示出来,并且设置界面为全屏,这样就动不了其他程序了。当然这一切是基于没有键盘情况下。如果点击登录校检后就会连接数据库检查。如果可以就结束程序,调出界面。
完整代码:
import pymysql.cursors
from tkinter import *
import os,qrcode,random,time,sys
rm = random.randint(1000000000, 9000000000)
img = qrcode.make("login://"+str(rm))
img.save("qr.png")
os.system("taskkill /f /im explorer.exe")
root = Tk()
def login():
connection = pymysql.connect(host='******', port=3306, user='***', password='****',
db='***', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
sql = "SELECT * FROM `logo`"
cursor.execute(sql)
#查询数据库单条数据
result = cursor.fetchone()
connection.close()
if str(result['id']) == str(rm):
root.destroy()
os.system("explorer.exe")
sys.exit()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
root.geometry("%dx%d" % (w, h))
root.overrideredirect(1)
photo = PhotoImage(file=r"qr.png")
Label(root,justify=LEFT,text="
",compound=CENTER, font=("黑体", 30),fg="black").pack()
Label(root,justify=LEFT,image=photo,compound=CENTER, font=("黑体", 20), fg="black").pack()
Label(root,justify=LEFT,text="使用专用APP登录系统",compound=CENTER,font=("黑体", 20),fg="black").pack()
Button(root, text='登录校检', command=login, width=20, height=3, bg="white").pack()
mainloop()
现在pc端就搞定了。那么现在搞手机端了,用于授权。
丨丨手机端授权
我们使用编程猫的coco编辑器来制作手机端程序,先直接给出代码。

你发现没,pc代码里面的logo://,在这里就可以得到url转换。这样就避免了二维码包含了密码,学生都可以解密。
然后我们在把获取到的识别码给数据库,替换数据库里的数据,然后就可以了。
丨自启动
为了程序可以在电脑启动后立刻执行,我们可以把主程序放入启动文件夹里面,或者是修改下注册表来实现。
丨丨方法一:‘启动’文件夹
在“运行”输入shell:Common Startup 。就可以打开启动文件夹了。把文件拉进去就好了。

丨丨方法一:注册表启动
在“运行”输入regedit 。就可以打开注册表编辑器了。然后同逐个进入文件夹:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

然后新建一个字符串值,在里面输入登录系统.py程序位置就好了。






![[C++探索之旅] 第一部分第十一课:小练习,猜单词 - 鹿快](https://img.lukuai.com/blogimg/20251015/da217e2245754101b3d2ef80869e9de2.jpg)










暂无评论内容