import os.path
# 创建一个学生列表,存放学生信息,每个元素都是字典类型
studentsList = []
def file11(no):# 文本读写相关操作代码
try:
with open(fn,"r",encoding='utf-8') as f:
lines = f.read().splitlines() #按行遍历整个文件,并将每一行的换行符去掉
for i in lines: #遍历每行内容
x=i.split(",") #用逗号来切割元素
#print(x,x[0])
if x[0]==no:
return True
return False
except:
#使用学生信息,创建学生对象 学生类(参数)
#s1 = S1(sno1, name1, age1)
#将学生对象添加到字典中
#student_list.append({"id":s1.sno,"name":s1.name,"age":s1.age})
#将列表转为字符串后再写入文本文件中存储起来,'a'表示追加模式。如果文件不存在,则创建文件。如果文件已存在,则将新内容添加到文件末尾
with open("ss.txt","a",encoding="utf-8") as f:
f.writelines(str("")+"\n")#必须要把结果转换为字符串后在写入
def insert():# 添加学生信息,然后写入到文本中
while True:
flagStudentId = 0 # 标记学生学号是否重复,0表示没有重复,1表示重复
sn1= str(input('请输入学生ID(如1001):'))
#判断学生信息是否存在, 学号是否存在. 判断字典的key是否存在
for i in studentsList:
if i['studentId'] == sn1:
flagStudentId = 1 # 有重复学号,修改标记
if flagStudentId==1:
print('此学号已存在,请重新输入!')
else:
name1 = input('姓名:')
age1 = input('成绩:')
# 将上面数据放到字典当中,方便管理
student = {
'studentId': sn1,
'name': name1,
'age': age1,
}
studentsList.append(student) # 将学生信息添加到studentsList中
print(f"{student}添加成功")
save() # 退出目录前,将信息保存到文件当中
answer = input('是否继续添加学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def delete():
while True:
student_id = input('请输入需要删除的学生ID:')
if student_id != '': #判断学生ID不为空
flagStudentId = 0 # 标记学生学号是否存在
for stu in studentsList: #遍历所有学生信息
if str(stu['studentId']) == student_id:
flagStudentId = 1
studentsList.remove(stu)
print("删除成功!")
break
else:
flagStudentId = 0
save()#调用save()函数,保存除需要删除的学生ID那一条信息外的所有信息到文本文件中
if flagStudentId==0:
print("此ID不存在,无法删除")
else:
print("此ID为空,无法删除")
answer = input('是否继续删除学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def update():
while True:
student_id = input('请输入要修改资料的学生ID:')
if student_id != '': #判断学生ID不为空
flagStudentId = 0 # 标记学生学号是否存在
for stu in studentsList: #遍历所有学生信息
if str(stu['studentId']) == student_id:
flagStudentId = 1
name1 = input('姓名:')
age1 = input('成绩:')
stu['name'] =name1
stu['age'] =age1
print("修改成功!")
break
else:
flagStudentId = 0
save()#调用save()函数,保存除需要删除的学生ID那一条信息外的所有信息到文本文件中
if flagStudentId==0:
print("此ID不存在,无法修改")
else:
print("此ID为空,无法修改")
answer = input('是否继续修改学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def check():
while True:
student_id = input('请输入需要查询的学生ID:')
if student_id != '': #判断学生ID不为空
flagStudentId = 0 # 标记学生学号是否存在
for stu in studentsList: #遍历所有学生信息
if str(stu['studentId']) == student_id:
flagStudentId = 1
print(f"查询成功,学号:{stu['studentId']},姓名:{stu['name']},成绩:{stu['age']}")
break
else:
flagStudentId = 0
if flagStudentId==0:
print("此ID不存在,无法查询")
else:
print("此ID为空,无法查询")
answer = input('是否继续查询学生信息(y/n):')
if answer == 'y' or answer == 'Y':
continue
else:
break
def show():
print('[显示学生] 开始!')
print('学号\t\t 姓名\t\t 成绩')
for s in studentsList: # 循环打印学生信息
print(f"{s['studentId']}\t\t {s['name']}\t\t {s['age']}")
print(f'[显示学生] 结束, 总共显示了{len(studentsList)}个学生信息!')
def save():
with open('ss.txt', 'w', encoding = 'utf8') as f: # 打开文件,f为文件对象,encoding是指定编码格式为utf8
for s in studentsList:
# 存到文件中的时候,每个信息间隔一个逗号,方便后面取出
f.write(f"{s['studentId']},{s['name']},{s['age']}\n")
def load():
if os.path.exists("ss.txt"): # 若是存在保存学生信息的文件
with open('ss.txt',"r",encoding="utf-8") as f:
for line in f: # 每次读取一行
# 针对每一行数据,按水平制表符划分,并存入到列表当中
# 切分前先将每一行数据后面的换行符去掉,strip()此方法可以将字符串首尾的空白符去掉(空白符包括:换行、制表符、空格等)
line = line.strip() #此方法可以将字符串首尾的空白符去掉
alist = line.split(',') # 按逗号切分字符串,并存入到列表中
if len(alist) != 3: # 检测数据是否划分正确
return
print('文件内容格式错误!')
student = {
'studentId': alist[0],
'name': alist[1],
'age': alist[2],
}
studentsList.append(student)
else:
print('暂无学生数据!!!')
def meun(): #打印目录函数
print('================学生信息管理功能================')
print('<1>--------添加学生信息')#insert
print('<2>--------删除学生信息')#delete
print('<3>--------修改学生信息')#update
print('<4>--------显示所有信息')#show
print('<5>--------按ID查学生信息')#check
print('<0>--------返回目录')#return
#print('<6>----------加载学生数据')#load
#print('<7>----------保存学生数据')#save
print('----------------------------------------------')
def main1(): #子函数1,系统运行过�
【Python学生成绩管理系统】有源码

【Python学生成绩管理系统】是一个基于Python编程语言开发的软件应用,主要目的是为了方便管理和记录学生的成绩信息。作为初学者的首个项目,它通常包含了基础的数据库操作、用户交互界面以及简单的数据分析功能。这个系统是学习和实践Python编程、数据库管理以及GUI(图形用户界面)设计的一个优秀起点。
Python作为一种强大的、易读性强的编程语言,非常适合初学者入门。在本项目中,Python的灵活性和丰富的库支持使得构建成绩管理系统变得相对简单。开发者可能使用了如SQLite这样的轻量级数据库来存储学生数据和成绩,因为SQLite无需独立服务器,可以直接嵌入到Python程序中,便于数据的持久化存储。
在描述中提到,这个系统被用来“备存”,意味着它是作者学习过程中的一个记录,可以随时回顾和改进。随着时间的推移,开发者可能会添加更多复杂的功能,比如成绩统计、排名展示、平均分计算等,以提升系统的实用性。
在标签中提到了"软件/插件",这表明该系统可能是一个独立的应用程序,用户可以通过图形界面与之交互。在Python中,可以使用Tkinter、PyQt或wxPython等库来创建GUI。这些库提供了各种控件,如按钮、输入框、表格等,用于构建用户友好的界面。
在压缩包内,"Py学生成绩管理系统"可能是整个项目的主文件或者包含主程序的文件夹。这个文件可能包括了Python源代码、数据库文件以及可能的资源文件(如图标、图片等)。通过解压并运行这个文件,用户可以启动成绩管理系统,进行成绩录入、查询、修改等操作。
系统的实现可能涉及以下关键知识点:
1. Python基础语法:包括变量、数据类型、条件语句、循环、函数等。
2. 数据库操作:SQLite的使用,包括连接数据库、创建表、插入、查询、更新和删除数据。
3. GUI编程:使用Python的GUI库创建窗口和控件,处理用户事件。
4. 文件操作:可能涉及到读写CSV或JSON文件,作为数据的备份或导入导出。
5. 错误处理:通过try-except结构来捕获和处理可能出现的异常。
6. 数据分析:可能包含对成绩的统计分析,如计算平均分、最高分、最低分等。
这个项目对于初学者来说是一个很好的实践项目,因为它涵盖了Python编程的多个方面,同时也锻炼了项目组织和问题解决的能力。通过实际操作,开发者可以深入理解Python的特性和实际应用,为将来更复杂的项目打下坚实的基础。

cyun716
- 粉丝: 29
最新资源
- 农业信息化建设问题模糊诊断分析与对策研究的论文-通信技术论文.docx
- 2022软件销售工作总结.docx
- 单片机的基本概念及种类演示教学.ppt
- 2022企业信息化管理和建设.docx
- 空间数据库安全访问方案的研究与实现的开题报告.docx
- GB T176041998橡胶管道接口用密封圈制造质量的建议疵点分类与类别.pdf
- 第2章-CAD系统的组成-(2)ppt课件.ppt
- 互联网产品规划设计方法 PPT.ppt
- 典型零件计算机辅助设计与制造.pptx
- 基于计算机集群的LCD大屏幕显示系统的设计与实现的开题报告.docx
- 2023年DIP实验报告形态学图像处理.doc
- 软件推广运营策划方案(1).docx
- 肖将秋浅谈企业如何做移动互联网营销的方式(1).doc
- PMP10大管理44个过程口诀背诵版.docx
- 第十七章、区网控制者Proxy服务器.docx
- 第11章--Logistic回归分析.ppt