《Python程序設(shè)計(jì)》課程設(shè)計(jì)-學(xué)生管理系統(tǒng)_第1頁(yè)
《Python程序設(shè)計(jì)》課程設(shè)計(jì)-學(xué)生管理系統(tǒng)_第2頁(yè)
《Python程序設(shè)計(jì)》課程設(shè)計(jì)-學(xué)生管理系統(tǒng)_第3頁(yè)
《Python程序設(shè)計(jì)》課程設(shè)計(jì)-學(xué)生管理系統(tǒng)_第4頁(yè)
《Python程序設(shè)計(jì)》課程設(shè)計(jì)-學(xué)生管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論