1. Student Grade Form
Follow is a student grade form written in python. You can add data, delete data, change data, save data to a file or read it.
studentgrade.py | |
File Size: | 12 kb |
File Type: | py |
|
You can use this to test |
#!/usr/bin/python
def menu():
print '***********we are in the main menu**************'
print "'f' to open of save a file"
print "'c' to check or search data"
print "'e' to edit data"
print "'m' to menu"
print "'q' to quit"
def filemenu():
print '***********we are in the file menu**************'
print "'o' to read data from a file"
print "'s' to save data to a file"
print "'sa' to add data to a file"
print "'af' to add data from a file"
print "'m' to menu"
print "'q' to back"
def filemain(student_data,student_form,student_data_2,student_form_2):
m=''
filemenu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
filemenu()
elif m=='o':
student_data,student_form=openfile(student_data,student_form)
student_form=checkstform(student_data,student_form)
student_data=deloverall(student_data,student_form)
filemenu()
elif m=='af':
student_data,student_form=adddatafromfile(student_data,student_form,student_data_2,student_form_2)
student_form=checkstform(student_data,student_form)
student_data=deloverall(student_data,student_form)
filemenu()
elif m=='s':
savefile(student_data,student_form)
filemenu()
elif m=='sa':
addtofile(student_data,student_form,student_data_2,student_form_2)
filemenu()
elif m!='q':
print "I don't know what to do"
return (student_data,student_form)
def editmenu():
print '***********we are in the edit menu**************'
print "'ef' to edit standard form"
print "'as' to add a new student data"
print "'am' to add miss student data"
print "'asn' to just add a student name"
print "'es' to edit data we already have"
print "'c' to clear data"
print "'m' to menu"
print "'q' to back"
def editmain(student_data,student_form):
m=''
editmenu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
editmenu()
elif m=='ef':
student_form=editform(student_form)
student_data=deloverall(student_data,student_form)
editmenu()
elif m=='asn':
student_data=addname(student_data)
student_form=checkstform(student_data,student_form)
editmenu()
elif m=='as':
student_data=addstudent(student_data,student_form)
editmenu()
elif m=='am':
student_data=addmiss(student_data,student_form)
editmenu()
elif m=='es':
student_data=editstudata(student_data)
editmenu()
elif m=='c':
student_data,student_form=clear(student_data,student_form)
editmenu()
elif m!='q':
print "I don't know what to do"
return (student_data,student_form)
def checkmenu():
print '***********we are in the check menu**************'
print "'s' to search data."
print "'cid' to check a student data by student ID"
print "'cn' to check a student data by name"
print "'all' to check all students data"
print "'form' to check standard form"
print "'m' to menu"
print "'q' to back"
def checkmain(student_data,student_form):
m=''
checkmenu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
checkmenu()
elif m=='cid':
check(student_data)
checkmenu()
elif m=='s':
name=raw_input('What you want to search:')
searchdata(student_data,name)
checkmenu()
elif m=='all':
printall(student_data)
checkmenu()
elif m=='form':
print student_form
checkmenu()
elif m=='cn':
checkname(student_data)
checkmenu()
elif m!='q':
print "I don't know what to do"
def inputtry():
try:
n=raw_input()
int(n)
return n
except ValueError:
print 'Wrong Value. It is not a number.'
def compare(maindic,dic_form):
list1=maindic.keys()
list2=dic_form.keys()
list1.sort()
list2.sort()
if list1 != list2:
for key in maindic:
if key not in dic_form:
dic_form[key]=''
return dic_form
def checkkeys(dic,dic_form):
dic_form=compare(dic,dic_form)
for key in dic:
if type(dic[key])==dict:
if type(dic_form[key])!=dict:
dic_form[key]={}
dic_form[key]=checkkeys(dic[key],dic_form[key])
return dic_form
def checkstform(dic,dic_form):
for key in dic:
dic_form=checkkeys(dic[key],dic_form)
return dic_form
def openfile(student_data,student_form):
address=''
while address!='q':
try:
address=raw_input('Please input the file name,"q" to back:')
if address!='q':
f=open(address,'r')
student_data,student_form=eval(f.read())
f.close()
return (student_data,student_form)
except IOError:
print 'No such file'
def savefile(student_data,student_form):
address=raw_input('Please input the file name:')
f=open(address,'w')
f.write(str((student_data,student_form)))
f.close()
def addtofile(student_data,student_form,student_data_2,student_form_2):
address=''
while address!='q':
try:
address=raw_input('Please input the file name,"q" to back:')
if address!='q':
f=open(address,'r')
student_data_2,student_form_2=eval(f.read())
f.close()
f=open(address,'w')
student_data_2.update(student_data)
student_form_2.update(student_form)
f.write(str((student_data_2,student_form_2)))
f.close()
address='q'
except IOError:
print 'No such file'
def check(student_data):
print 'Please input the student ID:'
sid=inputtry()
sid=str(sid)
while sid not in student_data and sid!='0':
print 'No such student. Please input the right student ID.'
print 'input 0 to back'
sid=inputtry()
sid=str(sid)
if sid !='0':
print student_data[sid]
def printall(student_data):
if student_data!={}:
for sid in student_data:
print sid,':',student_data[sid]
else:
print 'We do not have any data.'
def checkname(student_data):
name=raw_input('please input a name:')
c=0
for sid in student_data:
if student_data[sid]['name']==name:
print student_data[sid]
c+=1
print 'there are %d students named %s'%(c,name)
def clear(student_data,student_form):
m=''
print "'1'to clear students data, '2' to clear standard form, '3' to clear all, other to back"
m=raw_input()
if m=='1':
student_data={}
elif m=='2':
student_form={}
elif m=='3':
student_form={}
student_data={}
else:
print 'Nothing is cleared'
return (student_data,student_form)
def adddatafromfile(student_data,student_form,student_data_2,student_form_2):
student_data_2,student_form_2=(student_data,student_form)
student_data,student_form=openfile(student_data,student_form)
student_data_2.update(student_data)
student_form_2.update(student_form)
student_data,student_form=(student_data_2,student_form_2)
return (student_data,student_form)
def editform(dic_form,addre='student'):
m=''
while m!='q':
print "'1' to add a new type, '2' to add or del a type in a already have, '3' to del a type, 'q' to back"
print "change form will also del data not in as form"
print "we are now in", addre
print addre,':',dic_form.keys()
m=raw_input('what you want to do:')
if m=='1':
name=raw_input('Please input the type:')
if name in dic_form:
print 'we already have',name
else:
dic_form[name]=''
elif m=='2':
name=raw_input('Please input where you want to add:')
if name in dic_form:
if type(dic_form[name])!=dict:
dic_form[name]={}
addre2=addre+'/'+str(name)
dic_form[name]=editform(dic_form[name],addre2)
if dic_form[name]=={}:
dic_form[name]=''
else:
print 'no such name'
elif m=='3':
name=raw_input('what you want to del:')
if name in dic_form:
del(dic_form[name])
else:
print 'No such name'
elif m!='q':
print 'Wrong input.'
return dic_form
def addname(student_data):
print 'Please input the Student ID(SID) you want to add First:'
sid=inputtry()
sid=str(sid)
if sid in student_data:
print 'we already have such SID.'
else:
name=raw_input('Which name you want to input:')
student_data[sid]={'name':name,'SID':sid}
return student_data
def addstudent(student_data,student_form):
print 'Please input the Student ID(SID) you want to add First:'
sid=inputtry()
if sid in student_data:
print 'we already have such SID.'
else:
if student_form=={}:
print 'our student standard form is empty. Please edit it first.'
else:
student_data[sid]={'SID':sid}
student_data[sid]=adddepdata(student_data[sid],student_form)
return student_data
def adddepdata(dic,dic_form,addre='student'):
for key in dic_form:
if type(dic_form[key])==dict:
addre_d=addre+'/'+key
if key not in dic:
dic[key]={}
adddepdata(dic[key],dic_form[key],addre_d)
else:
if key not in dic:
dic[key]=''
if dic[key]=='':
print 'Please input',addre,'/',key,':'
dic[key]=raw_input()
return dic
def addmiss(student_data,student_form):
if student_data=={}:
print 'We do not have any data. Please add a student first.'
else:
for key in student_data:
student_data[key]=adddepdata(student_data[key],student_form,str('student:'+key))
print 'We have filled everything'
return student_data
def editstudata(dic,addre='student'):
m=''
while m!='q':
print "'1' to edit a data, '2' to edit data in one group, '3' to del a data, 'q' to back"
print 'we are now in', addre
print addre,':',dic.keys()
m=raw_input('what you want to do:')
if m=='1':
name=raw_input('What you want to edit:')
if name not in dic:
print 'No such data.'
elif type(dic[name])==dict:
print "we can't edit a dictary directly, please go in it."
elif name=='SID':
print "we can't change SID."
else:
print 'we will change',dic[name],'to :'
dic[name]=raw_input()
elif m=='2':
name=raw_input('Please input where you want to go into:')
if name not in dic:
print 'no such data.'
elif type(dic[name])!=dict:
print 'we only can go into a dictary'
else:
addre2=addre+'/'+str(name)
dic[name]=editstudata(dic[name],addre2)
elif m=='3':
name=raw_input('what you want to del:')
if name in dic:
del(dic[name])
else:
print 'No such data'
elif m!='q':
print 'wrong input.'
return dic
def searchdata(dic,name,addre='student'):
for keys in dic:
if dic[keys]==name:
print 'we have find',name,'in',addre,'/',keys
print "'1' to edit,other to next"
m=raw_input('what you want to do:')
if m=='1':
if type(dic[keys])==dict:
editstudata(dic[keys],str(addre+'/'+str(keys)))
else:
if keys=='SID':
print "we can't change SID."
else:
print 'we will change',dic[keys],'to:'
dic[keys]=raw_input()
if type(dic[keys])==dict:
searchdata(dic[keys],name,str(addre+'/'+str(keys)))
def delover(dic,dic_form):
list1=[]
for key in dic:
if key not in dic_form:
list1.append(key)
for key in list1:
del dic[key]
for key in dic:
if type(dic[key])==dict and type(dic_form[key])!=dict:
dic[key]=''
elif type(dic[key])!=dict and type(dic_form[key])==dict:
dic[key]={}
for key in dic:
if type(dic[key])==dict:
delover(dic[key],dic_form[key])
return dic
def deloverall(dic,dic_form):
for key in dic:
delover(dic[key],dic_form)
return dic
def main(student_data,student_form,student_data_2,student_form_2):
m=''
menu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
menu()
elif m=='f':
student_data,student_form=filemain(student_data,student_form,student_data_2,student_form_2)
menu()
elif m=='c':
checkmain(student_data,student_form)
menu()
elif m=='e':
student_data,student_form=editmain(student_data,student_form)
menu()
elif m!='q':
print "I don't know what to do"
else:
print "bye"
return 0
r=1
while r:
try:
student_data={}
student_form={}
student_data_2={}
student_form_2={}
r=main(student_data,student_form,student_data_2,student_form_2)
except ValueError:
print 'You have input a error data'
except KeyError:
print 'You have input a error data'
except NameError:
print 'You have input a error data'
except IOError:
print 'error file name'
finally:
f=open('close.txt','w')
f.write(str((student_data,student_form)))
f.close()
def menu():
print '***********we are in the main menu**************'
print "'f' to open of save a file"
print "'c' to check or search data"
print "'e' to edit data"
print "'m' to menu"
print "'q' to quit"
def filemenu():
print '***********we are in the file menu**************'
print "'o' to read data from a file"
print "'s' to save data to a file"
print "'sa' to add data to a file"
print "'af' to add data from a file"
print "'m' to menu"
print "'q' to back"
def filemain(student_data,student_form,student_data_2,student_form_2):
m=''
filemenu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
filemenu()
elif m=='o':
student_data,student_form=openfile(student_data,student_form)
student_form=checkstform(student_data,student_form)
student_data=deloverall(student_data,student_form)
filemenu()
elif m=='af':
student_data,student_form=adddatafromfile(student_data,student_form,student_data_2,student_form_2)
student_form=checkstform(student_data,student_form)
student_data=deloverall(student_data,student_form)
filemenu()
elif m=='s':
savefile(student_data,student_form)
filemenu()
elif m=='sa':
addtofile(student_data,student_form,student_data_2,student_form_2)
filemenu()
elif m!='q':
print "I don't know what to do"
return (student_data,student_form)
def editmenu():
print '***********we are in the edit menu**************'
print "'ef' to edit standard form"
print "'as' to add a new student data"
print "'am' to add miss student data"
print "'asn' to just add a student name"
print "'es' to edit data we already have"
print "'c' to clear data"
print "'m' to menu"
print "'q' to back"
def editmain(student_data,student_form):
m=''
editmenu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
editmenu()
elif m=='ef':
student_form=editform(student_form)
student_data=deloverall(student_data,student_form)
editmenu()
elif m=='asn':
student_data=addname(student_data)
student_form=checkstform(student_data,student_form)
editmenu()
elif m=='as':
student_data=addstudent(student_data,student_form)
editmenu()
elif m=='am':
student_data=addmiss(student_data,student_form)
editmenu()
elif m=='es':
student_data=editstudata(student_data)
editmenu()
elif m=='c':
student_data,student_form=clear(student_data,student_form)
editmenu()
elif m!='q':
print "I don't know what to do"
return (student_data,student_form)
def checkmenu():
print '***********we are in the check menu**************'
print "'s' to search data."
print "'cid' to check a student data by student ID"
print "'cn' to check a student data by name"
print "'all' to check all students data"
print "'form' to check standard form"
print "'m' to menu"
print "'q' to back"
def checkmain(student_data,student_form):
m=''
checkmenu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
checkmenu()
elif m=='cid':
check(student_data)
checkmenu()
elif m=='s':
name=raw_input('What you want to search:')
searchdata(student_data,name)
checkmenu()
elif m=='all':
printall(student_data)
checkmenu()
elif m=='form':
print student_form
checkmenu()
elif m=='cn':
checkname(student_data)
checkmenu()
elif m!='q':
print "I don't know what to do"
def inputtry():
try:
n=raw_input()
int(n)
return n
except ValueError:
print 'Wrong Value. It is not a number.'
def compare(maindic,dic_form):
list1=maindic.keys()
list2=dic_form.keys()
list1.sort()
list2.sort()
if list1 != list2:
for key in maindic:
if key not in dic_form:
dic_form[key]=''
return dic_form
def checkkeys(dic,dic_form):
dic_form=compare(dic,dic_form)
for key in dic:
if type(dic[key])==dict:
if type(dic_form[key])!=dict:
dic_form[key]={}
dic_form[key]=checkkeys(dic[key],dic_form[key])
return dic_form
def checkstform(dic,dic_form):
for key in dic:
dic_form=checkkeys(dic[key],dic_form)
return dic_form
def openfile(student_data,student_form):
address=''
while address!='q':
try:
address=raw_input('Please input the file name,"q" to back:')
if address!='q':
f=open(address,'r')
student_data,student_form=eval(f.read())
f.close()
return (student_data,student_form)
except IOError:
print 'No such file'
def savefile(student_data,student_form):
address=raw_input('Please input the file name:')
f=open(address,'w')
f.write(str((student_data,student_form)))
f.close()
def addtofile(student_data,student_form,student_data_2,student_form_2):
address=''
while address!='q':
try:
address=raw_input('Please input the file name,"q" to back:')
if address!='q':
f=open(address,'r')
student_data_2,student_form_2=eval(f.read())
f.close()
f=open(address,'w')
student_data_2.update(student_data)
student_form_2.update(student_form)
f.write(str((student_data_2,student_form_2)))
f.close()
address='q'
except IOError:
print 'No such file'
def check(student_data):
print 'Please input the student ID:'
sid=inputtry()
sid=str(sid)
while sid not in student_data and sid!='0':
print 'No such student. Please input the right student ID.'
print 'input 0 to back'
sid=inputtry()
sid=str(sid)
if sid !='0':
print student_data[sid]
def printall(student_data):
if student_data!={}:
for sid in student_data:
print sid,':',student_data[sid]
else:
print 'We do not have any data.'
def checkname(student_data):
name=raw_input('please input a name:')
c=0
for sid in student_data:
if student_data[sid]['name']==name:
print student_data[sid]
c+=1
print 'there are %d students named %s'%(c,name)
def clear(student_data,student_form):
m=''
print "'1'to clear students data, '2' to clear standard form, '3' to clear all, other to back"
m=raw_input()
if m=='1':
student_data={}
elif m=='2':
student_form={}
elif m=='3':
student_form={}
student_data={}
else:
print 'Nothing is cleared'
return (student_data,student_form)
def adddatafromfile(student_data,student_form,student_data_2,student_form_2):
student_data_2,student_form_2=(student_data,student_form)
student_data,student_form=openfile(student_data,student_form)
student_data_2.update(student_data)
student_form_2.update(student_form)
student_data,student_form=(student_data_2,student_form_2)
return (student_data,student_form)
def editform(dic_form,addre='student'):
m=''
while m!='q':
print "'1' to add a new type, '2' to add or del a type in a already have, '3' to del a type, 'q' to back"
print "change form will also del data not in as form"
print "we are now in", addre
print addre,':',dic_form.keys()
m=raw_input('what you want to do:')
if m=='1':
name=raw_input('Please input the type:')
if name in dic_form:
print 'we already have',name
else:
dic_form[name]=''
elif m=='2':
name=raw_input('Please input where you want to add:')
if name in dic_form:
if type(dic_form[name])!=dict:
dic_form[name]={}
addre2=addre+'/'+str(name)
dic_form[name]=editform(dic_form[name],addre2)
if dic_form[name]=={}:
dic_form[name]=''
else:
print 'no such name'
elif m=='3':
name=raw_input('what you want to del:')
if name in dic_form:
del(dic_form[name])
else:
print 'No such name'
elif m!='q':
print 'Wrong input.'
return dic_form
def addname(student_data):
print 'Please input the Student ID(SID) you want to add First:'
sid=inputtry()
sid=str(sid)
if sid in student_data:
print 'we already have such SID.'
else:
name=raw_input('Which name you want to input:')
student_data[sid]={'name':name,'SID':sid}
return student_data
def addstudent(student_data,student_form):
print 'Please input the Student ID(SID) you want to add First:'
sid=inputtry()
if sid in student_data:
print 'we already have such SID.'
else:
if student_form=={}:
print 'our student standard form is empty. Please edit it first.'
else:
student_data[sid]={'SID':sid}
student_data[sid]=adddepdata(student_data[sid],student_form)
return student_data
def adddepdata(dic,dic_form,addre='student'):
for key in dic_form:
if type(dic_form[key])==dict:
addre_d=addre+'/'+key
if key not in dic:
dic[key]={}
adddepdata(dic[key],dic_form[key],addre_d)
else:
if key not in dic:
dic[key]=''
if dic[key]=='':
print 'Please input',addre,'/',key,':'
dic[key]=raw_input()
return dic
def addmiss(student_data,student_form):
if student_data=={}:
print 'We do not have any data. Please add a student first.'
else:
for key in student_data:
student_data[key]=adddepdata(student_data[key],student_form,str('student:'+key))
print 'We have filled everything'
return student_data
def editstudata(dic,addre='student'):
m=''
while m!='q':
print "'1' to edit a data, '2' to edit data in one group, '3' to del a data, 'q' to back"
print 'we are now in', addre
print addre,':',dic.keys()
m=raw_input('what you want to do:')
if m=='1':
name=raw_input('What you want to edit:')
if name not in dic:
print 'No such data.'
elif type(dic[name])==dict:
print "we can't edit a dictary directly, please go in it."
elif name=='SID':
print "we can't change SID."
else:
print 'we will change',dic[name],'to :'
dic[name]=raw_input()
elif m=='2':
name=raw_input('Please input where you want to go into:')
if name not in dic:
print 'no such data.'
elif type(dic[name])!=dict:
print 'we only can go into a dictary'
else:
addre2=addre+'/'+str(name)
dic[name]=editstudata(dic[name],addre2)
elif m=='3':
name=raw_input('what you want to del:')
if name in dic:
del(dic[name])
else:
print 'No such data'
elif m!='q':
print 'wrong input.'
return dic
def searchdata(dic,name,addre='student'):
for keys in dic:
if dic[keys]==name:
print 'we have find',name,'in',addre,'/',keys
print "'1' to edit,other to next"
m=raw_input('what you want to do:')
if m=='1':
if type(dic[keys])==dict:
editstudata(dic[keys],str(addre+'/'+str(keys)))
else:
if keys=='SID':
print "we can't change SID."
else:
print 'we will change',dic[keys],'to:'
dic[keys]=raw_input()
if type(dic[keys])==dict:
searchdata(dic[keys],name,str(addre+'/'+str(keys)))
def delover(dic,dic_form):
list1=[]
for key in dic:
if key not in dic_form:
list1.append(key)
for key in list1:
del dic[key]
for key in dic:
if type(dic[key])==dict and type(dic_form[key])!=dict:
dic[key]=''
elif type(dic[key])!=dict and type(dic_form[key])==dict:
dic[key]={}
for key in dic:
if type(dic[key])==dict:
delover(dic[key],dic_form[key])
return dic
def deloverall(dic,dic_form):
for key in dic:
delover(dic[key],dic_form)
return dic
def main(student_data,student_form,student_data_2,student_form_2):
m=''
menu()
while m!='q':
m=raw_input('What do you want to do:')
if m=='m':
menu()
elif m=='f':
student_data,student_form=filemain(student_data,student_form,student_data_2,student_form_2)
menu()
elif m=='c':
checkmain(student_data,student_form)
menu()
elif m=='e':
student_data,student_form=editmain(student_data,student_form)
menu()
elif m!='q':
print "I don't know what to do"
else:
print "bye"
return 0
r=1
while r:
try:
student_data={}
student_form={}
student_data_2={}
student_form_2={}
r=main(student_data,student_form,student_data_2,student_form_2)
except ValueError:
print 'You have input a error data'
except KeyError:
print 'You have input a error data'
except NameError:
print 'You have input a error data'
except IOError:
print 'error file name'
finally:
f=open('close.txt','w')
f.write(str((student_data,student_form)))
f.close()