1. 课程设计目的
《软件设计基础-Python》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖Python的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握Python这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2. 课程设计任务与要求
本次课程设计利用《软件设计基础-Python》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
- 对系统进行功能需求分析
- 设计合理的数据结构和系统框架
- 界面设计美观、清楚、合理
- 编程简练,程序功能齐全,能正确运行
- 具有一定的创新性
- 说明书、流程图要清楚
- 课题完成后必须按要求提交课程设计报告
任务:
- 将用户要记忆的单词,按字母排序后,存到文件中。
- 用户输入要删除的单词,将其从文件中存储的单词也删除。
- 用书输入要修改的单词,将其在文件中存储的单词也修改。
3. 课程设计说明书
1.主要数据和主要函数介绍:
主要数据:
Data.txt 用户单词系统所存储的文件。
主要函数:
input_file: 提示用户输入单词,并进行排序,最后存储到文件中。
Del_word: 打开单词系统文件,用户进行输入要删除的单词,最后进行删除,并重新存储。
change_word: 打开单词系统文件,用户进行输入要修改的单词和修改后的单词,最后进行修改,并重新存储。
2.流程图及代码实现:
程序流程图:
源代码:
def input_file():
# 输入单词
f = open("data.txt","w+")
n = int(input("请输入单词的个数:"))
word = list()
for i in range(1,n+1):
t = input("第%d个单词是:"%i)+","
word.append(t)
# 单词进行排序
word = sorted(word)
print("文件中保存的单词为:",word)
# 保存单词
f.writelines(word)
f.close()
print("输入成功!")
def del_word():
# 删除单词
with open("data.txt","r") as f:
line = f.readline()
del_word = input("请输入你要删除的单词!")
line = line.replace(del_word+",","")
with open("data.txt","w") as f:
f.writelines(line)
print("删除成功!")
def change_word():
# 修改单词
with open("data.txt","r") as f:
line = f.readline()
will_change_word = input("请输入你要修改的单词?")
change_word = input("请输入你要修改成什么?")
line = line.replace(will_change_word+",",change_word+",")
with open("data.txt","w") as f:
f.writelines(line)
print("修改成功!")
def main():
while(True):
print("--------英文单词学习系统--------")
print(" 1.输入单词")
print(" 2.删除单词")
print(" 3.修改单词")
print(" 4.退出")
choose = input("请输入你的选择:")
if(choose == "1"):
input_file()
if(choose == "2"):
del_word()
if(choose == "3"):
change_word()
if(choose == "4"):
exit(0)
main()
2.设计中遇到的问题
在删除和修改单词的时候不能直接使用字符串替换的功能,因为可能会把其他含有要修改单词子子串的单词也进行修改。为了解决该问题,本课设使用字符串采用在要修改或删除的单词后面加上一个逗号,由此可以非常简单方便的解决,误删除误修改的问题。
4. 课程设计成果
运行结果:
程序运行的最终结果图:
注意事项:请务必安按照程序提示得内容进行输入,请勿乱输!
5. 课程设计心得
在这次课设中,我对文件这一不常用,但是也是非常重要的内容进行练习,通过这次课设,我发现Python对文件处理真的是十分的方便和快捷。而且我还巩固了字符串的一些方法,例如replace和split方法,这让我以后处理字符串将会更加的熟练,迅速。