




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)生信息管理系統(tǒng)201902140231張楊易《Python程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告題目學(xué)生信息管理系統(tǒng)學(xué)院學(xué)院班級(jí)姓名學(xué)號(hào)指導(dǎo)教師2020年12月26日《Python程序設(shè)計(jì)》課程設(shè)計(jì)計(jì)劃書(shū)設(shè)計(jì)題目學(xué)生信息管理系統(tǒng)已知技術(shù)參數(shù)和設(shè)計(jì)要求整個(gè)系統(tǒng)可以設(shè)計(jì)為錄入學(xué)生信息、查找學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、統(tǒng)計(jì)學(xué)生總?cè)藬?shù)五個(gè)模塊。信息記錄要存放到數(shù)據(jù)庫(kù)文件中去;要實(shí)現(xiàn)數(shù)據(jù)的插入、刪除、修改和顯示功能,因而要實(shí)現(xiàn)插入、刪除、修改和顯示操作;要實(shí)現(xiàn)按id進(jìn)行查詢(xún)的功能,因而要提供查找操作;另外還應(yīng)該提供鍵盤(pán)式選擇菜單以實(shí)現(xiàn)功能選擇設(shè)計(jì)內(nèi)容與步驟采用數(shù)據(jù)庫(kù)技術(shù),共制作五個(gè)模塊:(1)錄入學(xué)生信息;(2)查找學(xué)生信息;(3)刪除學(xué)生信息;(4)修改學(xué)生信息;(5)統(tǒng)計(jì)學(xué)生總?cè)藬?shù)。設(shè)計(jì)工作計(jì)劃與進(jìn)度安排12月28日:設(shè)計(jì)算法,并驗(yàn)證。12月30日:完成程序。12月30日:檢查程序是否滿(mǎn)足設(shè)計(jì)要求并完善。12月30日:完成設(shè)計(jì)報(bào)告。設(shè)計(jì)考核要求編寫(xiě)程序,調(diào)試,測(cè)試完成設(shè)計(jì)報(bào)告完成答辯學(xué)生信息管理系統(tǒng)張楊易土木工程學(xué)院2019級(jí)土木1902班1引言學(xué)習(xí)了Python程序設(shè)計(jì)這門(mén)課程之后,使我對(duì)程序設(shè)計(jì)有了一定的了解,為了熟練掌握Python語(yǔ)言的語(yǔ)法特點(diǎn)、及其數(shù)據(jù)庫(kù)處理技術(shù),提高自身編寫(xiě)程序的能力。通過(guò)課程設(shè)計(jì)實(shí)現(xiàn)理論知識(shí)與實(shí)際情況的結(jié)合,使所學(xué)知識(shí)能夠在現(xiàn)實(shí)社會(huì)中起到一定的作用,防止所編寫(xiě)的程序脫離實(shí)際,讓程序可以更好的發(fā)揮作用,以便減輕實(shí)際工作中所遇到的繁瑣步驟,提高現(xiàn)實(shí)工作中的效率。2設(shè)計(jì)方案2.1設(shè)計(jì)思路建立一個(gè)函數(shù),用來(lái)連接數(shù)據(jù)庫(kù)、添加、顯示、刪除、查詢(xún)、修改數(shù)據(jù)表記錄等信息,完成數(shù)據(jù)管理的功能。主程序可以調(diào)用六個(gè)函數(shù),分別完成錄入學(xué)生信息、查找學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、統(tǒng)計(jì)學(xué)生總?cè)藬?shù)、退出系統(tǒng)等功能。在主程序中可以以1、2、3、4、5、數(shù)字鍵分別可以執(zhí)行某個(gè)功能模塊3程序設(shè)計(jì)與實(shí)施3.1主函數(shù)及其流程圖設(shè)計(jì)主程序和一系列的功能函數(shù),只有通過(guò)這些函數(shù)才可實(shí)現(xiàn)學(xué)生信息管理的功能。主程序界面如下圖3.1所示。圖3.1系統(tǒng)流程圖3.2其余各個(gè)功能函數(shù)及其流程圖……流程圖及文本說(shuō)明。應(yīng)該有多個(gè)部份,課設(shè)論文核心內(nèi)容。4設(shè)計(jì)結(jié)果與分析程序運(yùn)行會(huì)看到如圖4.1所示界面。圖4.1程序運(yùn)行主界面輸入1顯示添加通訊錄界面,如下圖4.2所示。圖4.2XXXXXX輸入2按姓名顯示記錄,通訊錄界面如圖4.3所示。圖4.3XXXXX在主菜單輸入3顯示刪除通訊錄界面如下圖4.4所示。圖4.4XXX在主菜單界面輸入數(shù)字“3”,執(zhí)行刪除用戶(hù)。當(dāng)通訊錄執(zhí)行者輸入要?jiǎng)h除學(xué)生的姓名,系統(tǒng)會(huì)搜索數(shù)據(jù)庫(kù)并將搜索結(jié)果輸出。然后征求確認(rèn)。每次刪除成功后系統(tǒng)會(huì)詢(xún)問(wèn)是否繼續(xù)刪除,然后執(zhí)行相應(yīng)操作。刪除后,通訊錄里的顯示記錄顯示效果如圖4.5所示圖4.5XXXXXXXXXXXXXXXX刪除通訊錄記錄時(shí)首先選擇出名字,其次在顯示刪除后程序才真正的刪除,再進(jìn)入顯示界面就不會(huì)再顯示原來(lái)所謂信息。在主菜單輸入4顯示查詢(xún)通訊錄界面如圖4.6所示。圖4.6查詢(xún)信息界面提示通訊錄管理人員可以有姓名、電話兩種輸入方式,在此操作過(guò)程中選擇1、2分別可以按照姓名電話號(hào)碼進(jìn)行快速查詢(xún)。在主菜單輸入6顯示修改通訊錄界面如圖4.7所示。圖4.7XXXXX每次修改結(jié)束后,系統(tǒng)輸出詢(xún)問(wèn)是否繼續(xù)修改信息,然后執(zhí)行if語(yǔ)句,如果返回值是“Y”,則繼續(xù)執(zhí)行修改信息,否則返回主菜單。5源程序#學(xué)生成績(jī)數(shù)據(jù)管理系統(tǒng).pyimportos
importre
importsqlite3
defmain():
ctrl=True
while(ctrl):
menu()
option=input("請(qǐng)選擇:")
option_str=re.sub("\D","",option)
ifoption_strin['0','1','2','3','4','5','6','7']:
option_int=int(option_str)
ifoption_int==0:
print('您已退出學(xué)生信息管理系統(tǒng)')
ctrl=False
elifoption_int==1:
insert()
elifoption_int==2:
search()
elifoption_int==3:
delete()
elifoption_int==4:
modify()
elifoption_int==5:
sort()
elifoption_int==6:
total()
else:
print('輸入錯(cuò)誤請(qǐng)重新輸入')
#菜單
defmenu():
print('學(xué)生信息管理系統(tǒng)\n')
print('功能菜單\n')
print('1錄入學(xué)生信息\n')
print('2查找學(xué)生信息\n')
print('3刪除學(xué)生信息\n')
print('4修改學(xué)生信息\n')
print('5排序\n')
print('6統(tǒng)計(jì)學(xué)生總?cè)藬?shù)\n')
print('0退出系統(tǒng)\n')
print('\n')
print('說(shuō)明:通過(guò)數(shù)字鍵或↑↓方向鍵選擇菜單\n')
definsert():
studentList=[]
mark=True
whilemark:
id=input('請(qǐng)輸入id:')
ifnotid:
break
name=input('請(qǐng)輸入名字')
ifnotname:
break
try:
english=int(input('請(qǐng)輸入英語(yǔ)成績(jī):'))
python=int(input('請(qǐng)輸入Python成績(jī):'))
c=int(input('請(qǐng)輸入C語(yǔ)言成績(jī):'))
except():
print('請(qǐng)輸入整數(shù)成績(jī)!')
continue
student={'id':id,'name':name,'english':english,'python':python,'c':c}
cur.execute("insertintostu(id,name,english,python,c,total)values('%s','%s','%d','%d','%d','%d')"%(student['id'],student['name'],student['english'],student['python'],student['c'],student['c']+student['english']+student['python']))
inputMark=input('是否繼續(xù)添加(y/n):')
ifinputMark=='y':
mark=True
else:
mark=False
print('學(xué)生信息錄入完成!')
#刪除
defdelete():
mark=True
whilemark:
studentID=input('請(qǐng)輸入要?jiǎng)h除的學(xué)生ID:')
sql="deletefromstuwhereid='%s'"%studentID
try:
cur.execute(sql)
mit()
print('刪除學(xué)生信息成功!')
except:
print('刪除失敗...')
Mark=input('是否繼續(xù)刪除(y/n):')
ifMark=='y':
mark=True
else:
mark=False
#排序
defmodify():
mark=True
whilemark:
studentID=input('請(qǐng)輸入需要修改的學(xué)生ID')
name=input('請(qǐng)輸入姓名:')
english=int(input('請(qǐng)輸入英語(yǔ)成績(jī):'))
python=int(input('請(qǐng)輸入Python成績(jī):'))
c=int(input('請(qǐng)輸入c語(yǔ)言成績(jī):'))
sql="updatestusetname='%s',english='%d',python='%d',c='%d',total='%d'whereid='%s'"%(name,english,python,c,english+python+c,studentID)
try:
cur.execute(sql)
mit()
print('修改學(xué)生信息成功!')
except:
print('修改失敗...')
inputMark=input('是否繼續(xù)修改其他學(xué)生信息(y/n):')
ifinputMark=='y':
mark=True
else:
mark=False
#查詢(xún)
defsearch():
mark=True
whilemark:
studentID=input('請(qǐng)輸入需要查詢(xún)的學(xué)生ID')
sql="select*fromstuwhereid='%s'"%studentID
try:
cur.execute(sql)
result=cur.fetchall()
name=result[0][1]
english=int(re.sub("\D","",result[0][2]))
python=int(re.sub("\D","",result[0][3]))
c=int(re.sub("\D","",result[0][4]))
print("姓名:'%s',英語(yǔ)成績(jī):'%d',Python成績(jī):'%d',C成績(jī):'%d',總分:'%d'"%(name,english,python,c,english+python+c))
print('查詢(xún)學(xué)生信息成功!')
except:
print('查詢(xún)失敗...')
inputMark=input('是否繼續(xù)查詢(xún)(y/n):')
ifinputMark=='y':
mark=True
else:
mark=False
#統(tǒng)計(jì)
deftotal():
cur.execute("select*fromstu")
result=cur.fetchall()
ifresult:
print('一共有%d名學(xué)生!'%len(result))
else:
print('還沒(méi)有錄入學(xué)生信息!')
#排序
defsort():
sql=('select*fromstu')
cur.execute(sql)
result=cur.fetchall()
result_a=['id','name','english','python','c']
result_dic=[]
foriinrange(len(result)):
result_dic.append(dict(zip(result_a,result[i])))
student_new=result_dic
ascORdesc=input('請(qǐng)選擇(0升序;1降序):')
ifascORdesc=='0':
ascORdescBool=False
elifascORdesc=='1':
ascORdescBool=True
else:
print('您的輸入有誤,請(qǐng)重新輸入!')
sort()
mode=input('請(qǐng)選擇排序方式(1按英語(yǔ)成績(jī)排序;2按Python成績(jī)排序;3按C語(yǔ)言成績(jī)排序;4按總成績(jī)排序):')
ifmode=='1':
student_new.sort(key=lambdax:x['english'],reverse=ascORdescBool)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)應(yīng)力張拉方法
- 施工作業(yè)人員法律法規(guī)告知
- Brand KPIs for neobanking Banco Original in Brazil-英文培訓(xùn)課件2025.4
- Brand KPIs for hotels:Best Western in the United States-英文培訓(xùn)課件2025.5
- 雙頻共口徑高隔離陣列天線設(shè)計(jì)
- 汽車(chē)傳感器與檢測(cè)技術(shù)電子教案:空氣質(zhì)量傳感器
- 房地產(chǎn)企業(yè)計(jì)稅成本的扣除變化分析
- 佛山新中源國(guó)際商務(wù)公寓營(yíng)銷(xiāo)策劃報(bào)告41p
- 城鄉(xiāng)醫(yī)療住院管理制度
- 中考地理復(fù)習(xí)教案第9課時(shí) 東南亞南亞西亞歐洲西部極地地區(qū)
- 線性代數(shù)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋廣西師范大學(xué)
- 2024年江西省高考化學(xué)試卷(真題+答案)
- 末梢采血課件
- 紅外線測(cè)溫技術(shù)方案
- 土地勘測(cè)定界技術(shù)說(shuō)明
- ISO 9001:2015新版質(zhì)量管理體系詳解與案例文件匯編
- 血標(biāo)本溶血或凝血的應(yīng)急預(yù)案程序
- 八年級(jí)下劍橋第2課課件
- 信息安全管理體系認(rèn)證方案-北京中大華遠(yuǎn)認(rèn)證中心
- GB∕T 15468-2020 水輪機(jī)基本技術(shù)條件
- “克勤克儉、厲行節(jié)約”P(pán)PT課件:如何過(guò)“緊日子”
評(píng)論
0/150
提交評(píng)論