目录
一、系统功能
二、系统开发环境
三、实现代码
四、项目打包并生成.exe可执行文件
首页 后端开发 Python教程 python怎么实现简易的学生信息管理系统

python怎么实现简易的学生信息管理系统

May 12, 2023 am 09:43 AM
python

一、系统功能

1.录入学生信息

2.查找学生信息

3.修改学生信息

4.删除学生信息

5.成绩排序

6.统计学生总人数

7.显示所有学生信息

0.退出系统

二、系统开发环境

1.操作系统:win7

2.开发工具:PyCharm

3.Python内置模块:os,re

三、实现代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

import os

filename='students.txt'

def main():

    while True:

        menum()

        choice=int(input('请选择功能:'))

        if choice in [0,1,2,3,4,5,6,7]:

            if choice==0:

                answer=input('您确定要退出系统吗?(y/n)')

                if answer=='y' or answer=='Y':

                    print('感谢您的使用!')

                    break #退出while循环并退出系统

                else:

                    continue

            elif choice == 1:

                insert() #录入学生信息

            elif choice == 2:

                search() #查找学生信息

            elif choice == 3:

                delete() #删除学生信息

            elif choice == 4:

                modify() #修改学生信息

            elif choice == 5:

                sort() #成绩排序

            elif choice == 6:

                total() #统计学生总人数

            elif choice == 7:

                show() #显示所有学生信息

  

def insert():

    student_list=[] #用于存储学生信息,列表每个元素是字典。

    while True:

        id=input('请输入学生ID:')

        if not id:

            break

        name=input('请输入学生姓名:')

        if not name:

            break

        try:

            Englist=int(input('请输入英语成绩:'))

            Python=int(input('请输入Python成绩:'))

            Java=int(input('请输入Java成绩:'))

        except:

            print('输入无效,不是整数类型,请重新输入!')

            continue

        #将录入的学生信息保存到字典中

        student={'id':id,'name':name,'English':Englist,'Python':Python,'Java':Java}

        #将学生信息添加到列表中

        student_list.append(student)

        answer=input('是否继续添加?(y/n)')

        if answer=='y' or answer=='Y':

            continue

        else:

            break

  

    #将学生信息保存在文件中

    save(student_list)

    print('学生信息录入完毕!')

    pass

  

def search():

    student_query=[] #用列表存储,防止有同名学生。

    while True:

        id=''

        name=''

        if os.path.exists(filename):

            mode=input('按ID查找请输入1,按姓名查找请输入2:')

            if mode == '1':

                id=input('请输入要查找的学生ID:')

            elif mode == '2':

                name=input('请输入要查找的学生姓名:')

            else:

                print('您的输入有误,请重新输入!')

                search()

            with open(filename,'r',encoding='utf-8') as rfile:

                student=rfile.readlines()

                for item in student:

                    d=dict(eval(item))

                    if id!='':

                        if d['id']==id:

                            student_query.append(d)

                    elif name!='':

                        if d['name']==name:

                            student_query.append(d)

            #显示查询结果

            show_student(student_query)

            student_query.clear() #清空列表

            answer=input('是否要继续查询?(y/n)')

            if answer=='y' or answer=='Y':

                continue

            else:

                break

        else:

            print('暂未保存学生信息。')

            return

    pass

  

def delete():

    while True:

        student_id=input('请输入要删除的学生ID:')

        if student_id != '':

            if os.path.exists(filename): #判断文件是否存在

                with open(filename,'r',encoding='utf-8') as file:

                    student_old=file.readlines() #读取所有学生信息并保存在列表中

            else:

                student_old=[]

            flag=False #用于标记是否删除

            if student_old:

                with open(filename,'w',encoding='utf-8') as wfile:

                    d={}

                    for item in student_old: #遍历学生信息列表

                        d=dict(eval(item)) #将字符串转成字典

                        if d['id']!=student_id:

                            wfile.write(str(d)+'\n')

                        else:

                            flag=True

                    if flag:

                        print(f'id为{student_id}的学生信息已被删除')

                    else:

                        print(f'没有找到ID为{student_id}的学生信息')

            else:

                print('无此学生信息')

                break

            show() #删完之后重新显示所有学生信息

            answer=input('是否继续删除?(y/n)')

            if answer=='y' or answer=='Y':

                continue

            else:

                break

    pass

  

def modify():

    show()

    if os.path.exists(filename): #判断文件是否存在

        with open(filename,'r',encoding='utf-8') as rfile:

            student_old=rfile.readlines()

    else:

        return #结束函数

    student_id=input('请输入要修改信息的学生ID:')

    with open(filename,'w',encoding='utf-8') as wfile:

        for item in student_old:

            d=dict(eval(item))

            if d['id']==student_id:

                print('找到此学生信息,可以修改。')

                while True:

                    try:

                        d['name']=input('请输入学生姓名:')

                        d['English']=input('请输入English成绩:')

                        d['Python']=input('请输入Python成绩:')

                        d['Java']=input('请输入Java成绩:')

                    except:

                        print('您的输入有误请重新输入!')

                    else:

                        break

                wfile.write(str(d)+'\n')

                print('修改成功!')

            else:

                wfile.write(str(d)+'\n')

        answer=input('是否继续修改其他学生信息?(y/n)')

        if answer=='y':

            modify()

    pass

  

def sort():

    show()

    if os.path.exists(filename):

        with open(filename,'r',encoding='utf-8') as rfile:

            student_list=rfile.readlines()

        student_new=[]

        for item in student_list:

            d=dict(eval(item))

            student_new.append(d)

    else:

        return

    asc_or_desc=input('请选择(0:升序,1:降序):')

    if asc_or_desc=='0':

        asc_or_desc_bool=False

    elif asc_or_desc=='1':

        asc_or_desc_bool=True

    else:

        print('您的输入有误,请重新输入!')

        sort()

    mode=input('请选择排序方式(0:按总成绩排序,1:按English成绩排序,2:按Python成绩排序,3:按Java成绩排序)')

    if mode=='0':

        student_new.sort(key=lambda x: int(x['English'])+int(x['Python'])+int(x['Java']), reverse=asc_or_desc_bool)

    elif mode=='1':

        student_new.sort(key=lambda x:int(x['English']),reverse=asc_or_desc_bool)

    elif mode=='2':

        student_new.sort(key=lambda x: int(x['Python']), reverse=asc_or_desc_bool)

    elif mode=='3':

        student_new.sort(key=lambda x: int(x['Java']), reverse=asc_or_desc_bool)

    else:

        print('您的输入有误,请重新输入!')

        sort()

    show_student(student_new)

    pass

  

def total():

    if os.path.exists(filename):

        with open(filename,'r',encoding='utf-8') as rfile:

            students=rfile.readlines()

            if students:

                print(f'一共有{len(students)}名学生')

            else:

                print('还没有录入学生信息!')

    else:

        print('暂未保存学生信息......')

    pass

  

def show():

    student_lst=[]

    if os.path.exists(filename):

        with open(filename,'r',encoding='utf-8') as rfile:

            students=rfile.readlines()

            for item in students:

                student_lst.append(eval(item))

            if student_lst:

                show_student(student_lst)

    else:

        print('暂未保存过数据!')

    pass

  

def save(stu_list):

    try:

        stu_txt=open(filename,'a',encoding='utf=8')

    except:

        stu_txt=open(filename,'w',encoding='utf-8')

    for item in stu_list:

        stu_txt.write(str(item)+'\n')

    stu_txt.close()

  

def show_student(lst):

    if len(lst)==0:

        print('没有查到学生信息,无数据显示!')

        return

    #定义标题显示格式

    format_title='{:^6}\t{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:^8}'

    print(format_title.format('ID','姓名','English成绩','Python成绩','Java成绩','总成绩'))

    #定义内容显示格式

    format_data='{:^6}\t{:^12}\t{:^10}\t{:^18}\t{:^14}\t{:^8}'

    for item in lst:

        print(format_data.format(item.get('id'),item.get('name'),item.get('English'),item.get('Python'),item.get('Java'),str(int(item.get('English'))+int(item.get('Python'))+int(item.get('Java')))))

    pass

  

def menum():

    print('-------------------学生信息管理系统--------------------')

    print('-----------------------功能菜单------------------------')

    print('                    1.录入学生信息')

    print('                    2.查找学生信息')

    print('                    3.删除学生信息')

    print('                    4.修改学生信息')

    print('                    5.成绩排序')

    print('                    6.统计学生总人数')

    print('                    7.显示所有学生信息')

    print('                    0.退出系统')

    print('------------------------------------------------------')

  

main()

登录后复制

四、项目打包并生成.exe可执行文件

1.安装第三方模块,打开dos窗口,输入:pip install PyInstaller并回车,

2.输入:pyinstaller -F 程序文件具体位置,

3.回车后即可在输出内容的倒数第二行看到.exe文件的位置。

以上是python怎么实现简易的学生信息管理系统的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

vs code 可以在 Windows 8 中运行吗 vs code 可以在 Windows 8 中运行吗 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上运行,但体验可能不佳。首先确保系统已更新到最新补丁,然后下载与系统架构匹配的VS Code安装包,按照提示安装。安装后,注意某些扩展程序可能与Windows 8不兼容,需要寻找替代扩展或在虚拟机中使用更新的Windows系统。安装必要的扩展,检查是否正常工作。尽管VS Code在Windows 8上可行,但建议升级到更新的Windows系统以获得更好的开发体验和安全保障。

visual studio code 可以用于 python 吗 visual studio code 可以用于 python 吗 Apr 15, 2025 pm 08:18 PM

VS Code 可用于编写 Python,并提供许多功能,使其成为开发 Python 应用程序的理想工具。它允许用户:安装 Python 扩展,以获得代码补全、语法高亮和调试等功能。使用调试器逐步跟踪代码,查找和修复错误。集成 Git,进行版本控制。使用代码格式化工具,保持代码一致性。使用 Linting 工具,提前发现潜在问题。

notepad 怎么运行python notepad 怎么运行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中运行 Python 代码需要安装 Python 可执行文件和 NppExec 插件。安装 Python 并为其添加 PATH 后,在 NppExec 插件中配置命令为“python”、参数为“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通过快捷键“F6”运行 Python 代码。

vscode 扩展是否是恶意的 vscode 扩展是否是恶意的 Apr 15, 2025 pm 07:57 PM

VS Code 扩展存在恶意风险,例如隐藏恶意代码、利用漏洞、伪装成合法扩展。识别恶意扩展的方法包括:检查发布者、阅读评论、检查代码、谨慎安装。安全措施还包括:安全意识、良好习惯、定期更新和杀毒软件。

See all articles