一、问题一
“远程网络教学系统”的功能需求如下:学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教学心得、修改教学心得。系统管理员负责对网站页面的维护、审核不合法课件和不合法教学信息、批准用户注册。
1、学生需要登录“远程网络教学系统”后才能正常使用该系统的所有功能。如果忘记密码,可与通过“找回密码”功能恢复密码。请画出学生参与者的用例图。 2、教师如果忘记密码,可以通过“找回密码”功能找回密码。请画出教师参与者的用例图。
二、问题二
设计开发一个新闻发布系统。
假设管理员可以在后台对新闻、评论、注册会员进行管理,并发布新闻;任何游客可以浏览新闻,浏览者注册后可以成为系统会员;注册会员可以发表新闻评论。新闻信息实体的主要属性主要包含标题(title)、内容(content)、发布日期(DateTime),主要操作有添加新闻(Addnews)、删除新闻(Delnews)、修改新闻(Modinews); 评论实体的主要属性包含新闻标识(ArticleID)、评论者名(UserName)和评论内容(body),主要操作有添加评论(AddRemark)、删除评论(DelRemark); 会员实体的主要属性有会员编号(MemberNo)、会员密码(Memberpsw)、会员名字(MemberName)、会员描述等,主要操作有登陆(Login);管理员实体的主要属性有管理员编号(AdmNo)、会员密码(Admpsw)、会员名字(AdmName)等, 主要操作有添加用户(Adduser)、删除新闻(Deluser)。
请完成下列工作:
(1)画出系统用例图 (2)画出“新闻管理”的活动图 (3)画出分析类图和初步的设计类图
三、问题三
设计一款基于贷款支付额度的GUI简单应用程序。然后根据你的GUI程序画出类图。建议用最简单的tkinter来编写。 程序效果展示:
import tkinter
class App():
def __init__(self):
action = Action()
windows = tkinter.Tk()
windows.geometry('800x700')
Label_title = tkinter.Label(windows,text="个人贷款计算器",font=('黑体',16), )
Label_title.place(relx=0.4,rely=0.015)
#输入数据区摆放
self.frame_input = tkinter.LabelFrame(windows,text="输入数据", font=('黑体',14 ) ,labelanchor="n")
self.frame_input.place( relx=0.05,rely=0.1,relwidth=0.9,relheight=0.4)
self.Label_money = tkinter.Label(self.frame_input,text="贷款金额(元):",font=('黑体',10), )
self.Label_money.place(relx=0.28,rely=0.12)
self.Label_term = tkinter.Label( self.frame_input,text="贷款期限(年): ",font=('黑体',10))
self.Label_term.place( relx=0.28,rely=0.32)
self.Label_rate = tkinter.Label(self.frame_input,text="年利率(%):" ,font=('黑体',10))
self.Label_rate.place( relx=0.28,rely=0.52)
self.Entry_money = tkinter.Entry(self.frame_input , width=30)
self.Entry_money.place( relx=0.42,rely=0.12)
self.Entry_term = tkinter.Entry(self.frame_input, width=30)
self.Entry_term.place( relx=0.42,rely=0.32)
self.Entry_rate = tkinter.Entry( self.frame_input, width=30)
self.Entry_rate.place( relx=0.42,rely=0.52)
self.Button_count = tkinter.Button(self.frame_input , text='计算',command=action.show)
self.Button_count.place( relx=0.45,rely=0.75)
self.Button_count = tkinter.Button( self.frame_input , text='重置',command=action.cle)
self.Button_count.place(relx=0.62,rely=0.75)
#等额本息还款法结果区摆放
self.frame_output = tkinter.LabelFrame(windows,text="等额本息还款法" ,font=('黑体',14),labelanchor="n")
self.frame_output.place(relx=0.05,rely=0.55,relwidth=0.4,relheight=0.4 )
self.Label_months_money = tkinter.Label(self. frame_output,text="每月还款(元):" ,font=('黑体',10))
self.Label_months_money.place(relx=0.06,rely=0.16)
self.Label_total_rates = tkinter.Label(self.frame_output,text="总支付利息(元): ",font=( '黑体',10))
self.Label_total_rates.place(relx=0.06,rely=0.44)
self.Label_total_money = tkinter.Label(self.frame_output,text="本息合计(元):" ,font=("黑体" ,10))
self.Label_total_money.place( relx=0.06,rely=0.72)
self.Text_months_money = tkinter.Text( self. frame_output , width=20,height=1)
self.Text_months_money.place( relx=0.45,rely=0.16)
self.Text_total_rates = tkinter.Text(self.frame_output , width=20,height=1)
self.Text_total_rates.place( relx=0.45,rely=0.44)
self.Text_total_money = tkinter. Text( self. frame_output, width=20,height=1)
self.Text_total_money.place( relx=0.45,rely=0.72)
#等额本金还款法结果区摆放
self.frame_output_Equalloan = tkinter.LabelFrame(windows,text="等额本金还款法" , font=("黑体",14),labelanchor="n")
self.frame_output_Equalloan.place(relx=0.55,rely=0.55,relwidth=0.4,relheight=0.4)
self.Label_months_money_Equalloan = tkinter.Label(self. frame_output_Equalloan,text="每月还款(元): ",font=('黑体',10), )
self.Label_months_money_Equalloan.place(relx=0.06,rely=0.16)
self.Label_total_rates_Equalloan = tkinter.Label(self.frame_output_Equalloan,text="总支付利息(元): ",font=('黑体',10), )
self.Label_total_rates_Equalloan.place(relx=0.06,rely=0.44)
self.Label_total_money_Equalloan = tkinter.Label( self. frame_output_Equalloan,text="本息合计(元): ",font=('黑体',10), )
self.Label_total_money_Equalloan.place( relx=0.06,rely=0.72)
self.Button_months_money_Equalloan = tkinter.Button( self.frame_output_Equalloan,text="点击查看" , command=action.revise)
self.Button_months_money_Equalloan.place( relx=0.45,rely=0.15)
self. Text_total_rates_Equalloan = tkinter.Text(self. frame_output_Equalloan, width=20, height=1)
self.Text_total_rates_Equalloan.place( relx=0.45,rely=0.44)
self.Text_total_money_Equalloan = tkinter.Text(self. frame_output_Equalloan, width=20,height=1)
self.Text_total_money_Equalloan.place( relx=0.45,rely=0.72)
windows.mainloop()
class Action():
def __init__(self):
return
def count(self):
self.Loan_money = int(self.Entry_money.get()) # 获取输入的贷款本金
self.Loan_term = int(self.Entry_term.get()) # 获取输入的贷款年限
self.Loan_rate = float(self.Entry_rate.get()) # 获取输入的贷款年利率
self.Loan_term_month = self.Loan_term*12 # 把贷款年限的单位由年转换成月
self.Loan_rate_month = self.Loan_rate/100/12 # 把年利率转换成月利率
# 计算等额本息法每月还款金额
self.repayment_months_money = self.Loan_money*self.Loan_rate_month*pow((1+self.Loan_rate_month),self.Loan_term_month)/(pow((1+self.Loan_rate_month),self.Loan_term_month)-1)
self.repayment_months_money_2 = round(self.repayment_months_money,2)
# 计算等额本息法总共要还的本息之和
self.repayment_all_money = self.repayment_months_money_2 * self.Loan_term_month
self.repayment_all_money_2 = round(self.repayment_all_money,2)
# 计算等额本息法要还的利息
self.repayment_rate_money = self.repayment_all_money - self.Loan_money
self.repayment_rate_money_2 = round(self.repayment_rate_money,2)
# 等额本金法每月需要还款本金:贷款本金÷还款月数
self.money_month = self.Loan_money/self.Loan_term_month
def show(self):
self.count()
# 把等额本息还款法的结果插入对应的Text组件
self.Text_months_money.delete(1.0, "end")
self.Text_months_money.insert('end',self.repayment_months_money_2)
self.Text_total_rates.delete(1.0, "end")
self.Text_total_rates.insert('end',self.repayment_rate_money_2)
self.Text_total_money.delete(1.0, "end")
self.Text_total_money.insert('end',self.repayment_all_money_2)
# 计算等额本金法还款本息之和和还款利息
self.all_money_Equalloan = 0
for i in range(self.Loan_term_month):
self.repayment_months_money = self.money_month + (self.Loan_money-(self.money_month*i))*self.Loan_rate_month
self.repayment_months_money_2 = round(self.repayment_months_money,2)
self.all_money_Equalloan += self.repayment_months_money_2
self.all_money_Equalloan_2 = round(self.all_money_Equalloan,2)
self.Loan_money_Equalloan = self.all_money_Equalloan_2 - self.Loan_money
self.Loan_money_Equalloan_2 = round(self.Loan_money_Equalloan,2)
# 把等额本金还款法的结果插入对应的Text组件
self.Text_total_rates_Equalloan.delete(1.0, "end")
self.Text_total_rates_Equalloan.insert('end',self.Loan_money_Equalloan_2)
self.Text_total_money_Equalloan.delete(1.0, "end")
self.Text_total_money_Equalloan.insert('end',self.all_money_Equalloan_2)
def cle(self):
self.Entry_money.delete(0,"end")
self.Entry_term.delete(0,"end")
self.Entry_rate.delete(0,"end")
self.Text_months_money.delete(1.0, "end")
self.Text_total_rates.delete(1.0, "end")
self.Text_total_money.delete(1.0, "end")
self.Text_total_rates_Equalloan.delete(1.0, "end")
self.Text_total_money_Equalloan.delete(1.0, "end")
def revise(self):
# 构建个顶级窗口
self.top_repayment = tkinter.Toplevel()
self.top_repayment.title('每月还款')
self.top_repayment.geometry('300x500')
self.top_repayment.configure()
# 设置带滚动条的Text组件
scr = tkinter.Scrollbar(self.top_repayment)
scr.pack(side='right', fill='y')
Text_repayment_month = tkinter.Text(self.top_repayment, width=60, height=40, font=('黑体',12),yscrollcommand=scr.set)
Text_repayment_month.pack(expand='yes',fill='both')
# 计算等额本金还款法每月还款金额,并插入到Text组件里
for i in range(self.Loan_term_month):
self.repayment_months_money = self.money_month + (self.Loan_money-(self.money_month*i))*self.Loan_rate_month
self.repayment_months_money_2 = round(self.repayment_months_money,2)
Text_repayment_month.insert("end", " 第 %s 月: %s元" % (i+1,self.repayment_months_money_2))
Text_repayment_month.insert(tkinter.INSERT, '\n') # 换行
if __name__ == "__main__":
App()
类图如下:
四、问题四
游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征。当前设计为有四类鸭子RubberDuck、MallardDuck、CottonDuck和RedHeadDuck。每类鸭子都为支持将来能够模拟更多种类鸭子的特征,采用某设计模式设计来实现模拟。请选择一个设计模式,并做写出程序框架,解释选择该设计模式的理由
五、问题五
用户登录火车票网上订票系统后,在用户界面上选择出发站、到站、日期和车次,提交订单给处理中心,并在45分钟之内在支付中心完成网上支付,视为订票成功。画出顾客成功订票的序列图。
标签:练习题,tkinter,Text,self,类图,Equalloan,用例,repayment,money From: https://blog.51cto.com/u_15229916/5734805