python语言与系统设计 大作业——背单词的小软件

这篇具有很好参考价值的文章主要介绍了python语言与系统设计 大作业——背单词的小软件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(一)需求和规格说明

问题描述:
这是一款帮助学生背单词的小软件。建立单词库:
第一个功能是学生帮助学生记单词,会显示单词库中单词的拼写、音标、词性、中文翻译,学生可以选择中途退出,再次进入的时候,可以从上次退出的位置继续,也可以重新开始,如果没有上一次的记录,则重头开始。
第二个功能是测试,有四种模式可以选择,一种是隐去单词部分字母,一种是给出中文然后默写单词,一种是给出单词选择对应的中文翻译,一种是给出翻译然后选择对应的单词。
第三个功能是增加单词,可以一个一个单词的增加,也可以读取文件增加。
第四个功能是删除单词,只能一个一个单词的删除。
第五个功能显示单词库中的所有单词。

编程任务:
(1)建立单词库,并可以方便地对单词库进行增加、删除。
(2)随机读取一个单词,随机隐去单词中的一些字母,规则是:长度为2~4空一个字母,5~7空二个字母,8~10空三个字母,11以上空四个字母。用随机数方式确定隐去哪几个位上的字母,并在屏幕上显示带空格单词。
(3)用户填充空格处的字母,程序判断填充是否正确。
(4)当用户结束游戏时,统计正确率,并输出相应的鼓励语句。
(5)随机读取一个单词,给出音标、中文翻译、词性,默写出相应的单词。
(6)随机获得单词库中一个单词的翻译,再随机选择三个单词,将四个单词随机排列,从中选择翻译对应的单词。
(7)随机获得单词库中一个单词,再随机选择三个单词的翻译,将四个单词的翻译随机排列,从中选择正确的翻译。
(8)增加单词,有增加单个单词和读取文件两种方式,读取文件不需输入文件名,只要按照需求建立指定文件并按照固定格式存储即可。
(9)删除单词,只要输入需要删除单词即可,对于该单词的所有信息都会删除。

注:由于单词中空格不容易辨认,故将空格改为下划线。

(二)设计

1.设计思想
在本次大作业中,采用excel表存储数据,通过pandas.read_excel获取excel表中的数据中,存储在一个DataFrame中,后续所有的操作都在这个Data Frame中完成,最后在完成操作后,将内容写回读取的excel表。
一级菜单包含五部分:1.记单词或测试,2.增加单词,3.删除单词,4.显示所有单词,5.退出。在第一部分中,包含除返回外的四个功能,默写单词、填补单词、根据单词选翻译、根据翻译选单词。在增加单词部分,包含增加单个单词和读取文件增加单个单词,如果选择增加单个单词,则单词、音标、词性、翻译全部需要自己输入,如果选择以读取文件的方式增加单词,则需提前准备好相应的文件,运行时仅需选择相应功能即可。删除单词时仅有删除单个单词这一个功能,仅需输入该单词即可,相关的音标、词性和翻译会一次性删除。

2. 设计表示
函数:
数据类型 函数名称 描述
void My_menu() 显示主菜单,一级菜单
void Recite_words() 显示二级菜单1,对应主菜单的第一个选项,可以进行记单词和测试
void recite_words(num) 选择记单词的方式,如果输入为1,则从头开始记单词,如果输入为2,则从上次退出的地方继续记单词,如果没有之前的记录,则判定为从头开始,如果输入为其他数字,则由Recite_words()判定并反馈
void Stop_recite(num) 输入的数字是单词的编号,以此记录本次记单词退出的位置,内容将会写入文本文档中,如果下次需要继续,则直接调用文件中记录的内容
void write_word_from_memory(choice_num) 选择测试的功能后,如果输入为1,则隐去部分字母,需要补全字母,并统计正确率,如果输入为2,则给予提示(音标、词性、翻译),要默写出单词,如果输入为其他数字,则由Recite_words()判定并反馈
void judge_translate_from_word(choice_num) 选择测试的功能后,如果输入为3,则根据单词的翻译,从四个单词的选项中选择正确的单词,并统计正确率,如果输入为4,则根据单词,从四个翻译中选择与该单词对应的翻译,如果输入为其他数字,则由Recite_words()判定并反馈
boolean judge_in_words(string) 判断输入的字符串(单词)是否在单词库中,如果在则返回False,如果不在则返回True
DataFrame Add_words() 显示二级菜单2,对应主菜单的第二个选项,可以进行单词添加,可以选择单个单词或者读取excel文件的方式添加单词
void Show_all_words() 显示单词库中的所有单词,对应主菜单的第四个选项
DataFrame Delete_words() 显示二级菜单3,对应主菜单的第三个选项,可以进行单词删除,输入单词后,在单词库中寻找,没有找到则返回原来的dataframe,如果找到则返回删除单词后的dataframe

3. 核心算法
核心算法主要是在记单词和测试、添加单词和删除单词三个部分。
1、在记单词和测试部分:
在记单词部分,如果是从新开始,则直接设置在Dataframe中开始的位置为0,如果是从上一次继续,则读取文件中记录的数字,如果读取到了,则将遍历Dataframe的开始位置设置为读取到的数字,如果没有读取到,则同样设置开始位置为0,从头遍历。在没有遍历完Dataframe的情况下,会持续遍历Dataframe的数据,打印出其中所有的数据,在循环中,如果选择停止,则会记录停止的位置到相应的文件中,然后退出,如果选择继续,则会打印输出下一个单词的信息,如果输入不符合规范,则打印提示,需要重新输入。
在测试部分,如果选择隐去单词部分字母,先建立一个空列表(列表1),在列表长度小于dataframe的行数时,处于循环中,在循环内,先生成一个规定范围的随机数,规定范围是dataframe行号范围,如果随机数在之前生成的列表(列表1)中,则重新生成,如果不在,则将该随机数添加到列表(列表1)中,添加之后,首先获得随机数对应dataframe处的单词,获得单词的长度,根据规则获得需要隐去字母的数量,然后生成随机数,获得相应数量的的随机数,放置到新的列表(列表2)中,对新的列表(列表2)中的数据排序,根据列表(列表2)数据将单词中指定位置的字母替换成下划线并打印出,根据输入字母判断是否正确,统计并计算正确率,根据正确率输出鼓励的话。
如果选择默写单词,在将随机数添加到列表(列表1)中后,直接打印出dataframe该位置单词的词性、音标、中文翻译,然后根据输入的单词判断是否正确,计算正确率,输出鼓励的话。
如果选择根据翻译选单词,开始流程与前面相同,在将随机数添加到列表(列表1)中后,获得dataframe中该随机数处的单词和中文翻译,将单词添加到一个空列表(列表3)中,再从dataframe中随机选择单词,如果单词不在列表(列表3)中,则添加到其中,如果在,则重新选择,直到列表(列表3)中有4个单词,再次生成一个随机数,范围为(0,3),按照前面的方法,通过空列表(列表4)判定是否将列表中(列表3)对应位置单词输出出去,输出所有单词后,输出中文翻译,输入与之对应的单词,计算正确率并输出。
如果选择根据单词选翻译,核心算法与上述(根据翻译选单词)相同,仅选择获取的数据不同。
2、在添加单词部分:
如果选择添加单个单词,可直接设定dataframe中的值,依据现有dataframe的行数,再添加一行,如果选择读取文件添加单词,先生成该文件的dataframe,然后遍历,如果该文件的dataframe中的单词在原dataframe中没有,则直接用loc[]函数设定,如果原dataframe中有,则跳过,最后将修改过的dataframe重新写入原文件中。
3、在删除单词部分:
仅能一个一个单词的删除,先设定标志,如果在dataframe中没有找到要删除的单词,则输出提示并结束,如果找到该单词,则用drop()函数直接删除对应行,然后修改dataframe中后续单词的编号,然后将修改后的dataframe写入源文件中。文章来源地址https://www.toymoban.com/news/detail-484856.html

import random
import pandas as pd

#单词以编号,单词,读音,词性,中文翻译几部分组成
words = pd.read_excel("Words_Library.xlsx")
indexs = words['Number'].notnull()
words = words[indexs]

def Stop_recite(num):#停止背单词,并记录停止时的单词编号
    file = open('Record.txt','r+')
    file.truncate()
    string = str(num)
    file.write(string)
    file.close()
    print("停止完成")

def recite_words(num):#二级菜单功能1
    if num == 1:
        number = 0
    else:
        print("您将从退出的位置继续。")
        file = open('Record.txt','r')
        string = file.read()
        if string == '':
            print("没有记录,请从新开始")
            number = 0
        else:
            number = int(string)

    print("输入next显示下一个单词,输入stop停止")    
    print("单词的读音、词性和中文翻译:")
    while number < len(words['Number']):
        print(words['Word'][number],words['Phonetics'][number],words['Word_class'][number],words['Translate'][number])
        recite_flag = input()
        if recite_flag == 'stop':
            Stop_recite(words['Number'][number]-1)
            return
        while recite_flag != 'next':
            print("输入错误,请重新输入")
            recite_flag = input()
        number = number+1
    print("词库结束。")

def write_word_from_memory(choice_num):
    judge = []
    right_number = 0
    false_number = 0
    
    while(len(judge)<len(words['Number'])):
        ch = random.randint(0,len(words['Number'])-1)
        if ch not in judge:
            judge.append(ch)

            if choice_num == 1:
                string = words['Word'][ch]
                word_len = len

到了这里,关于python语言与系统设计 大作业——背单词的小软件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教python打包exe,打包一个简易的小程序。tkinter,python初学者。编程初学者作业:用*填充出自己的名字

    【声明】这篇文章可能写的很差,作者技术不够。但是一定原创,一定用最简单的语言,最详细的描述让没有经验的读者能够懂得 【首言】exe是电脑上直接点击就可以使用的。当你写了一个.py文件,可以实现你的有趣功能,于是你高兴的把这个发送给你的朋友,但是你的朋友

    2024年02月01日
    浏览(52)
  • 【小黑嵌入式系统第六课】嵌入式系统软件设计基础——C语言简述、程序涉及规范、多任务程序设计、状态机建模(FSM)、模块化设计、事件触发、时间触发

    上一课: 【小黑嵌入式系统第五课】嵌入式系统开发流程——开发工具、交叉开发环境、开发过程(生成调试测试)、发展趋势 下一课: 【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现 1、为什么要用C语言? 理

    2024年02月06日
    浏览(65)
  • 基于微信小程序的英语单词记忆系统的设计与实现(论文+源码)_kaic

    摘  要 当前时期,国内的经济获得了非常快速的发展,互联网技术在持续的创新和完善,教育教学方面也在不断的进步,教育全面深化改革在发展,并且移动互联网技术在教育领域获得了大量的实践以及应用。语言的全球化慢慢的变成现今世纪非常重要的一种发展趋势,其中

    2024年02月12日
    浏览(38)
  • 【windows程序设计作业】用c#语言实现记事本

    使用Visual C# 2015设计一个Windows应用程序——记事本,通过本章的学习,可以进一步掌握MenuStrip(菜单)、ToolStrip(工具栏)、RichTextBox(高级文本框)和StatusStrip(状态栏控件)等控件的使用,以及如何使用CommonDialog(公共对话框)实现对文本的存取、格式设置等操作。 实现

    2024年02月05日
    浏览(63)
  • 一个简洁的背单词、背短语python程序——英文背记系统(自用)

    自己在备考英语竞赛,但是网上单词软件现有的词库都没有包含,索性自己写一个小程序,以来自用。 没有花里胡哨的功能,但自用刷词也够用了。 模拟练习模式、考试模式、查看词库模式(可直接修改词库) 模拟练习模式: 又细分为三种模式:正向答题(看英文写中文)

    2024年02月09日
    浏览(52)
  • C语言课设学生选修课程系统(大作业)

    (1)系统以菜单方式工作; (2)课程信息和学生信息的录入功能(课程信息有文件保存)----输入; (3)课程信息浏览功能----输出; (4)查询功能(至少一种查询方式)—算法; (5)按学分查询; (6)某门课程学生选修情况(可选项)。 大家可以点个关注后续会持续更新0.0(在此先谢过各位了

    2024年02月12日
    浏览(42)
  • Python 程序设计期末大作业

    Python 程序设计期末大作业 学生信息管理系统(Python) 简介:基本信息管理和学生成绩管理。基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。 一、功能模块: 基

    2024年02月12日
    浏览(51)
  • 程序设计基础大作业——学生管理系统

    声明:这是本人所写的程序设计期末大作业实验报告,可供大家学习和参考,也希望能得到一些建议和改正,但如果只为抄袭代码,本人必究! 目录 一、任务描述 二、代码实现 三、运行结果 四、实验体会 写一个命令行交互式C语言程序。该程序需要实现下述菜单功能: 1

    2024年02月10日
    浏览(57)
  • 奶茶店管理系统设计(mysql大作业)

    奶茶店管理系统设计 一. 建库语句: 创建数据库,数据库名称为“store”,基字符集设置为utf8。 CREATE DATABASE store CHARACTER SET utf8 COLLATE utf8_general_ci; USE store ; 二. 建表语句: 创建5张数据表(分店表branch_store,员工表employee,特权顾客表privilege,订单表orders,订单清单表menu)并

    2024年02月09日
    浏览(42)
  • C语言——整数各位数字求和

    我算是发现了,我是不管敲什么代码,都会崩【裂开】,甚至电脑管家说我写的东西是木马(其实我的程序没问题奥,放心看),还有,定义函数真的好方便 【问题描述】 编写函数int sum(int x),求整数x的各位数字之和。编写一个程序,调用sum函数计算任一输入的整数的各位

    2024年02月07日
    浏览(319)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包