用户登陆系统, 分为管理员登陆和学生登陆;
1.管理员登陆, 可以操作:
管理员密码修改;
添加学生的信息;
删除学生的信息;
修改学生的信息;
查询学生的信息;
根据学号查找;
根据姓名查找;
查看所有学生的信息;
退出系统;
2.学生登录:
查询个人信息;
修改信息;
修改姓名;
修改年龄;
修改密码;
学生信息包括:
学号, 姓名, 性别, 班级, 出生年月, 用户名, 密码
学生用户名和学号保持一致;
管理员信息包括:
用户名, 密码。
def Info():
print("-" * 40)
print(" 学生管理系统 ")
print(" 1.添加学生的信息")
print(" 2.删除学生的信息")
print(" 3.修改学生的信息")
print(" 4.查询学生的信息")
print(" 5.遍历所有学生的信息")
print(" 6.退出系统")
print('-' * 40)
students = []
while True:
Info()
choice = int(input("请选择功能(序号):"))
if choice == 1:
print("您选择了添加学生信息功能")
name = input("请输入学生姓名:")
stuId = input("请输入学生学号(学号不可重复):")
age = input("请输入学生年龄:")
passwd = input("请输入学生密码:")
gender = input("请输入学生性别(1-男,2-女):")
date = input("请输入学生出生日期:")
i = 0
leap = 0
for temp in students:
if temp['id'] == stuId:
leap = 1
break
else:
i = i + 1
if leap == 1:
print("输入学生学号重复,添加失败!")
break
else:
stuInfo = {}
stuInfo['name'] = name
stuInfo['id'] = stuId
stuInfo['age'] = age
stuInfo['passwd'] = passwd
stuInfo['gender'] = gender
stuInfo['date'] = date
students.append(stuInfo)
print("添加成功!")
elif choice == 2:
print("您选择了删除学生功能")
delId = input("请输入要删除的学生学号:")
i = 0
leap = 0
for temp in students:
if temp['id'] == delId:
leap = 1
break
else:
i = i + 1
if leap == 0:
print("没有此学生学号,删除失败!")
else:
del students[i]
print("删除成功!")
elif choice == 3:
print("您选择了修改学生信息功能")
alterId = input("请输入你要修改学生的学号:")
i = 0
leap = 0
for temp in students:
if temp['id'] == alterId:
leap = 1
break
else:
i = i + 1
if leap == 1:
while True:
alterNum = int(input(" 1.修改学号\n 2.修改密码 \n 3.修改年龄 \n 4.退出修改\n"))
if alterNum == 1:
newId = input("输入更改后的学号:")
i = 0
leap1 = 0
for temp1 in students:
if temp1['id'] == newId:
leap1 = 1
break
else:
i = i + 1
if leap1 == 1:
print("输入学号不可重复,修改失败!")
else:
temp['id'] = newId
print("学号修改成功")
elif alterNum == 2:
newName = input("输入更改后的密码:")
temp['passwd'] = passwd
print("密码修改成功")
elif alterNum == 3:
newAge = input("输入更改后的年龄:")
temp['age'] = newAge
print("年龄修改成功")
elif alterNum == 4:
break
else:
print("输入错误请重新输入")
else:
print("没有此学号,修改失败!")
elif choice == 4:
print("您选择了查询学生信息功能")
searchID = input("请输入你要查询学生的学号:")
i = 0
leap = 0
for temp in students:
if temp['id'] == searchID:
leap = 1
break
else:
i = i + 1
if leap == 0:
print("没有此学生学号!")
else:
print("找到此学生,信息如下:")
print("学号:%s\n姓名:%s\n年龄: %s\n性别: %s\n出生日期: %s\n" % (temp['id'], temp['name'], temp['age'], temp['gender'],temp['date']))
elif choice == 5:
print('*' * 40)
print("接下来进行遍历所有的学生信息...")
print("id 姓名 年龄 性别 出生日期")
for temp in students:
print("%s %s %s %s %s" % (temp['id'], temp['name'], temp['age'], temp['gender'],temp['date']))
print("*" * 40)
elif choice == 6:
quitconfirm = input("确认退出? (yes或者no)")
if quitconfirm == 'yes':
print("欢迎下次使用,谢谢!")
break;
else:
print("您输入有误,请重新输入")
2.练习题
1.(2017-腾讯-在线编程题)
- 题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10, 分别为(5, 5), (3, 7))
- 输入描述:
输入包括一个整数n, (3 ≤ n < 1000)
- 输出描述:
输出对数
- 示例1:
输入:
10
输出:
2
num=int(input("输入一个正整数:"))
a=[2]
b=[]
count=0
for i in range(3,1000):
for j in range(2,i):
if i % j ==0:
count+=1
if count==0:
a.append(i)
count=0
k=0
for i in a:
if (num-int(i)) in a and int(i)<=(num-int(i)):
b.append([i,num-int(i)])
k+=1
print("共有%s对质数的和为%d,分别为"%(k,num))
print(b)
2.字符串最后一个单词的长度
题目描述:计算字符串最后一个单词的长度,单词以空格隔开。
输入描述: 一行字符串,非空,长度小于5000。
输出描述: 整数N,最后一个单词的长度。
示例1:
输入:hello world
输出:5
3.字典练习1_重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
s = input("s:") # "hello java hello python"
# hello 3
# java 2
# python 1
# 1. 把每个单词分割处理;
s_li = s.split()
print(s_li)
# 2. 通过字典存储单词和该单词出现的次数;
words_dict = {}
# 3. 依次循环遍历列表,
如果列表元素不在字典的key中,将元素作为key, 1作为value加入字典;
如果列表元素在字典的key中,直接更新value值, 即在原有基础上加1
li = ['hello', 'java', 'hello', 'python']
words_dict = {'hello':2,'java':1 }
for item in s_li:
if item not in words_dict:
words_dict[item] = 1
else:
# words_dict[item] = words_dict[item] + 1
words_dict[item] += 1
# 4. 打印生成的字典;
print(words_dict)
4.字典练习2
# 数字重复统计:
1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;
import random
# 1). 随机生成1000个整数;
all_nums = []
for item in range(1000):
# 2).数字的范围[20, 100],
all_nums.append(random.randint(20,100))
# 3). 升序输出所有不同的数字及其每个数字重复的次数;
# # - 对生成的1000个数字进行排序, 然后在加入到字典中,计算个数;
# sorted_nums = sorted(all_nums)
# nums_dict = {}
# for num in sorted_nums:
# if num in nums_dict:
# nums_dict[num] += 1
# else:
# nums_dict[num] = 1
# print(nums_dict)
nums_dict = {}
for num in all_nums:
if num in nums_dict:
nums_dict[num] += 1
else:
nums_dict[num] = 1
sort_num_dict = {}
print(sorted(nums_dict.keys()))
#
for num in sorted(nums_dict.keys()):
sort_num_dict[num]= nums_dict[num]
print(sort_num_dict)
5.字典练习3
# 1. 随机生成100个卡号;
# 卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
# 2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";
# 3. 输出卡号和密码信息, 格式如下:
卡号 密码
6102009001 000000
# 存储所有卡号的列表, 也可以通过集合来存储;
card_ids = []
# 生成100个卡号的过程;
for i in range(100):
# %.3d代表这个整形数占3位。 eg: 1--> 001;
s = "6102009%.3d" %(i+1)
# 将每次生成的卡号加入列表中;
card_ids.append(s)
card_ids_dict = {}.fromkeys(card_ids, 'redhat')
# print(card_ids_dict)
print("卡号\t\t\t\t\t密码")
for key in card_ids_dict:
print("%s\t\t\t%s" %(key, card_ids_dict[key]))
# print({}.fromkeys('hello', 'redhat'))