北京看白癜风比较好专科医院 https://disease.39.net/yldt/bjzkbdfyy/本节我们来用python写一个学生管理系统,一般在学完c语言后,都会有一个大作业,而学生管理系统是选择最多的,我们下面用python完成学生管理系统.
话不多说,直接上代码:
#-*-coding:UTF-8-*-
#注:该学生信息是以单链表的数据结构来存储的,即每一个学生信息都是一个链表节点,节点中包含
#下一个学生的信息节点,还可以用列表结构来存储学生信息,那样更简单快捷,本节主要
#是熟悉链表的基本操作,故用链表结构来存储。
classstudent
/p>
def__init__(self,id1,name,score,next1=None)
/p>
self.id1=id1
self.name=name
self.score=score
self.next1=next1
classStu
/p>
def__init__(self)
/p>
self.head=None
defadd1(self,id1,name,score)
/p>
ifself.headisNone:
temp=student(id1,name,score)
self.head=temp
else:
temp=self.head
whiletemp.next1:
temp=temp.next1
temp.next1=student(id1,name,score)
defdelete1(self,id1):
ifself.headisNone:
print("链表没有元素,无法删除")
elifself.head.id1==id1:
self.head=self.head.next
else:
temp=self.head
flag=0
whiletemp.next1isnotNone:
iftemp.next1.id1==id1:
temp.next1=temp.next1.next1
flag=1
break
temp=temp.next1
ifflag==1:
print("删除信息成功")
elifflag==0:
print("没有该学号,删除信息失败")
defupdate1(self,id1):
temp=self.head
whiletempisnotNone:
iftemp.id1==id1:
break
temp=temp.next1
flag=1
whileflag:
print("选出你要修改的数据")
print("1:学号
2:姓名3:得分\n")
a=int(input("输出数字:"))
ifa==1:
b=int(input("输入修改后的学号:"))
temp.id1=b
flag=0
elifa==2:
b=input("输入修改后的姓名:")
temp.name=b
flag=0
elifa==3:
b=int(input("输入修改后的得分:"))
temp.score=b
flag=0
else:
print("输入数字错误,重新输入\n")
print("修改数据信息成功\n")
deffind1(self):
temp=self.head
iftempisNone:
print("链表元素是空的\n")
else:
flag=1
ff=1
whileflag:
print("输入数字决定你要按什么条件查找\n")
print("1:学号
2:姓名\n")
a=int(input("输入数字:"))
ifa==1:
b=int(input("输入学号:"))
print("查找学号为%d的学生信息如下:"%b)
print("\n")
whiletemp:
iftemp.id1==b:
ff=0
print("学号:%d姓名:%s得分:%d\n"%(temp.id1,temp.name,temp.score))
break
temp=temp.next1
flag=0
elifa==2:
b=input("输入姓名:")
print("查找姓名为%s的学生信息如下:"%a)
print("\n")
whiletemp:
iftemp.name==b:
ff=0
print("学号:%d姓名:%s得分:%d\n"%(temp.id1,temp.name,temp.score))
temp=temp.next1
flag=0
else:
print("数字输入错误,重新输入\n")
ifff==1:
print("抱歉,没有找到该学生信息\n")
deffindall(self):
temp=self.head
iftempisNone:
print("信息库为空\n")
else:
print("所有学生信息如下:\n")
whiletemp:
print("学号:%d姓名:%s得分:%d"%(temp.id1,temp.name,temp.score))
print("\n")
temp=temp.next1
defmain1(self):
print("------------------------欢迎来到学生管理系统----------------------:")
whileTrue:
print("1:添加学生信息
2:删除学生信息")
print("3:修改学生信息4:查找学生信息")
print("5:输出所有学生信息
6:退出\n")
a=int(input("输入相应的数字:"))#用int强制转化为整数
ifa==1:
temp1=int(input("输入学生学号:"))
temp2=input("输入学生姓名:")
temp3=int(input("输入学生得分:"))#和前面一样,用int强制转化为整数
self.add1(temp1,temp2,temp3)
print("\n")
elifa==2:
temp=int(input("输入删除学生的学号:"))
self.delete1(temp)
print("\n")
elifa==3:
temp=int(input("输入要修改的学生学号:"))
self.update1(temp)
print("\n")
elifa==4:
self.find1()
print("\n")
elifa==5:
self.findall()
print("\n")
elifa==6:
break
else:
print("输入错误,重新输入")
if__name__==__main__:
a=Stu()
a.main1()
为了防止格式乱,我将其弄成图片格式,如下所示:
下面简单讲解一下代码里面各个函数的作用:
我们定义了两个类,其中student类包含单个学生的学号,姓名,分数等所有信息.
下面的Stu类则是封装了student类的各个操作方法,比如add1,delete1,update1,find1等函数,下面分别讲一下各个函数的作用:
1:add1函数
这个函数主要就是添加学生信息
2: delete1函数:
这个函数主要就是删除学生信息,他是根据用户输入的一个学号来删除的,没有找到就输出没有该学生信息
3: update1函数:这个函数就是修改学生信息,根据用户输入的学号来修改信息的,然后后面会询问你是要修改学号,还是姓名,输入对应的数字来决定相应要修改的数据
4: find1函数:
这个函数就是查找学生信息,可以按照学号或者姓名来查找学生信息
5
indall函数:
这个函数就是打印输出所有学生的信息
6:main1函数:
函数的主题部分,通过他来调用上面的函数
说明一下,我们这个学生管理系统是用链表结构来完成的,即每个学生信息都是一个链表节点,next1节点是后继学生的信息.当然也可以用其他数据结构来完成,这里就不写了