当前位置: 首页 > 后端技术 > Python

用Python写一个成绩管理分析系统(故事更新版)

时间:2023-03-26 17:37:13 Python

项目概况生活故事介绍清风暖暖,散落在办公桌上的小试卷还是有点“烫手”。在小学当助教的小王老师刚刚批改完昨天的语文单元测评,看上去有些疲惫,但脸上的表情却慢慢松了口气。似乎通过近期监督学习模式的改造和实践,他们的成绩有了很大的提升,正要和办公室里的其他老师分享这种学习方法时,上课铃响了。和往常一样,教室外的小朋友陆续钻进教室,清脆的“老师好!”“享受”感觉就像是一种动力,可以加快每位老师的转化率。想要休息的小王老师想了想,下一节课就是他的课,只好先登记成绩,等会儿公布给大家,顺便分析一下成绩。当我正准备像往常一样新建一个Excel表格时,电脑桌面弹出了一个广告页面“学习Python,升职加薪……”,我在心里嘀咕:“现在电脑自动blockingfunctionisnotworkingwell.”,正要关闭的时候,小王老师发现自己前几天在自学Python,感觉掌握基本语法用处不大。能不能用Python写一个分数录入和分析智能的小程序,这样就不用每次都打开Excel,点各种排序,各种函数来分析了。它喜欢在工作日进行创新。我在考虑要不要实施。就在这时,窗外传来几道声音:“快来!”他试探着自己的欲望。原来,体育课二班正在组织跑步比赛。他有些犹豫,但现在他似乎被这些突如其来的鼓励感动了。别说35分钟了,他不试试怎么知道?是否可以?于是他就信心满满的打开了之前安装好的pycharm...对项目思路进行了一些思考之后,在编辑器屏幕上输入了需要实现的功能,然后开始搭建框架,封装功能了,先介绍下两个库importnumpyasnpiimportcsvproject来实现这次,小王老师开始码代码,说来不及再快,但是idea来了却停不下来,花了15分钟写了frameworkcode,结果试了几次觉得不够智能,因为写入的记录只是存入电脑内存,没有写入磁盘,所以每次操作完就没了,他想了想一会儿,要是录不完,下次是不是要从头再来。他想了想,不行,只好把文件写了,这样下次运行就可以直接从上次录入没完成的时候开始,花了几分钟时间来完善这个。功能改进测试成功后,他发现可以根据自己的需要选择场景按钮。如果他想重新进入,他可以直接清除之前的。如果他不想清除它,他可以将它追加到文件的末尾。代码结构如下:defwrite_record_0():importcsva=[]dict=records[0]forheadersinsorted(dict.keys()):#提取字典的keya.append(headers)header=a#提取列名并使用列表形式呈现withopen('scoredata.csv','w',newline='',encoding='utf-8')asf:writer=csv.DictWriter(f,fieldnames=header)#提前预览列名,下面代码写数据的时候会一一匹配。writer.writheader()#写入列名writer.writerows(records)#写入数据defwrite_record_1():importcsvwithopen('Scoredata.csv','w',newline='',encoding='utf-8')asf:foriinrecords:data=[]data.append(i['name'])data.append(i['score'])wf=csv.writer(f)wf.writerow(data)#写一行数据,一个是加一个覆盖。这里不发送a属性,而是用自己的方法设计一个。这仍然是可能的。如果使用了a属性,后面测试过程中有个小功能貌似不可能。很完美,但是王老师又发现了一个问题。如果他在输入的过程中过于兴奋,快速点击按钮总是会报错。不会是bug吧?如果他想把它推广给其他老师,那么他们就会抱怨我。他开始改了一些代码,发现bug现在可以避免了。优化之后好像没发现什么bug。利用Python的异常处理和循环判断控制,最大限度的方便了用户。代码显示函数打印函数defprint_menu():print("""t学生成绩管理系统-智能输入+分析系统0-退出1-打印功能菜单栏2-显示所有学生信息3-添加学生信息4-查找学生信息5-删除学生信息6-排序功能7-写入操作数据并完成更新8-数据分析显示功能(最高分,最低分,平均分,通过人数,通过率,分数段明细)""")fileLoadfunctiondefcsv_students():globalstudent_infosglobalrecordsimportcsvstudent_infos=[]withopen(r"scoredata.csv",encoding='utf-8-sig')asfile:#把你的CSV文件和程序文件放在Af_csv=csv下面的文件夹。reader(file)#读取文件中的每一行数据,转换成列表赋值给新的变量header=next(f_csv)#使用迭代的方式直接取出headerline(标题行),更新f_csv的数据,并删除f_csv中行的标题行:student_info={}forindexinrange(2):ifindex==0:student_info[header[index]]=row[index]ifindex==1:student_info[header[index]]=float(row[index])#print(type(student_info[header[index]]))student_infos.append(student_info)records=student_infosfunctionbuttonfunctiondefuser_choice():try:choice=input("Pleasechoose(0~8):")#确保用户的选择在0~8之间whileint(choice)>8orint(choice)<0:choice=input("Pleasechooseagain(0~8):")returnchoiceexcept:print("你输入错误,程序已经结束!请慢慢输入!")增删改查函数defadd_record():name=input('请输入学生姓名:')whilename=='':name=input('请输入thestudent'sname:')#判断记录中的info是否输入了学生信息:ifinfo['name']==name:print("该学生已经存在")breakelse:score=float(input('Please输入分数(0~100):'))whilescore<0.0orscore>100.0:score=float(input('请输入分数(0~100):'))info={'name':name,'score':score}records.append(info)print(records)defdisplay_records():print("tAllstudentinformation")forinfoinrecords:print("Name:",info['name'],'tGrade:',info['score'])defsearch_record():name=input('请输入学生姓名:')whilename=='':name=input('请输入学生姓名:')forinfoinrecords:ifinfo['name']==name:print("该学生成绩为:",info['分数'])breakelse:print("没有该学生")defdel_record():name=input('请输入学生姓名:')whilename=='':name=input('Pleaseenterstudent'sname:')forinfoinrecords:ifinfo['name']==name:records.remove(info)print("Removed!")breakelse:print("没有这个用户")数据分析函数defdis_data():pjj=[]forpjinrecords:pjj.append(float((pj['score'])))print("tAverageofthethistime'sscoredatathe要点是:{}".format(round(np.mean(pjj)),3))bjg=int(sum(i<60foriinpjj))print("t这次数据失败{}People!".format(bjg))zs=int(len(pjj))print("这一次数据通过率为{}".format((zs-bjg)/zs))print("有{}人t大于90分,t成绩优秀!".format(sum(i>90foriinpjj)))print("T80-90分有{}人t成绩好!".format(sum(90>=i>80foriinpjj)))print("t70-80分有{}人t的成绩中等!".format(sum(80>=i>70foriinpjj)))print("{}人t60-70的成绩合格!".format(sum(70>=i>60foriinpjj)))print("如果t小于60,则有{}个人t成绩差!".format(bjg))效果演示为敲代码完成,王老师发现了一个道理,这是一个很实际的项目,需要自己去寻找漏洞并让他们尝试这个,然后他去上课。现在,你认为他是要激励学生还是奖励学生?该项目适用于o1.平时的小考成绩登记分析2.批改作业登记3.体育考试登记4.单科成绩管理5....时间过得真快,王老师慢慢发现这个代码被很多人使用,于是他写了一篇博客,发现阅读量很大,所以他在这个项目中投入了算法设计和Python代码希望大家喜欢故事的解释,故事都是虚构的,我不是那个先生。汪,哈哈哈,需要代码的请私信我,发上自己的力量,帮你解决更多日常烦恼!每篇文章,每一句话,自己的故事总是讲给别人听,只能讲给自己听,己所不欲,勿施于人