python实现数据结构单链表的简单教学系统功能

class Node():
    def __init__(self,sno,math,name,next=None):
        self.sno=sno
        self.math=math
        self.name=name
        self.next=next
def InsertData(head):
     sno=input("请输入学号")
     math=input("请输入成绩")
     name=input('请输入姓名')
     root=Node(sno,math,name)
     if head==None:#第一次放入数据
         return root
     else:
         if head.next==None:#只有一个头连接
             if head.sno>sno:
                 root.next=head
                 head=root
             else:
                 head.next=root
         else:
            f=-1
            p=head
            q=p
            while p!=None:
                if p.sno>sno:
                   if p==head:#在头部前插入数据
                       root.next=head
                       head=root
                   else:#在中间插入数据
                       root=q.next
                       p=root.next
                   f=1
                else:
                   p=p.next
                   q=p
            if f==-1:#在尾部插入数据
                root=q.next
     print('增加信息成功')
     return head
def PrintData(head):
    p=head
    while p!=None:
        print(p.sno,end="   ")
        print(p.math,end="   ")
        print(p.name,end="\n")
        p=p.next    
def DelData(head):
    de=-1
    p=head
    q=None
    if p==None:
        return None
    sno=input('请输入要删除数据的学号')
    while p!=None:
        if p.sno==sno and q!=None:
            q.next=p.next
            return head
            p==None
        elif p.sno==sno and q==None:#只有一条记录情况
            return None
        else:
            q=p
            p=p.next
    return head
def Updata(head):
    sno=input('请输入需要修改数据的学号')
    p=head
    up=-1
    while p!=None:
        if p.sno==sno:
            print('现成绩')
            print(p.math,end="\n")
            print('请输入需要修改的成绩',end='\n')
            math=input("请输入成绩")
            p.math=math
            up=1
            p=None
        else:
            p=p.next
    if up==-1:
        print('无此记录')
    else:
        print('修改成功')
    return head
def SeleteData(head):
    sno=input('请输入需要查询的学号')
    p=head
    up=-1
    while p!=None:
        if p.sno==sno:
            print(p.sno,end="   ")
            print(p.math,end="   ")
            print(p.name,end="\n")
            up=1
            p=None
        else:
            p=p.next
    if up==-1:
        print('无此记录')
    return head
def main():
    print('欢迎进入系统\n1.初次放入数据\n2增加数据\n3.删除数据\n4.搜索成绩\n5.修改成绩\n6.查看记录\n0.退出系统')
    nn=input('请输入指令')
    n=int(nn)
    while n!=0:
        if n==1:
            head=InsertData(None)
        if n==2:
            head=InsertData(head)
        if n==3:
            DelData(head)
        if n==4:
            SeleteData(head)
        if n==5:
            Updata(head)
        if n==6:
            PrintData(head)
        nn=input('请输入指令')
        n=int(nn)
    print('感谢您的使用')
if __name__=='__main__':main()

    

以上是全部代码,环境是在python3.5

运行截图

posted @ 2019-03-05 17:46  bigsmart  阅读(266)  评论(0)    收藏  举报