用python 建立一个宿舍信息管理系统,要有菜单,功能包括录入宿舍入住信息(姓名、宿舍号),查看(从excel文件读取)、修改、查询、删除入住信息,宿舍入住信息存储在excel文件中。
时间: 2024-02-24 20:58:37 浏览: 79
好的,这个问题需要比较详细的代码实现,我可以给您提供一份基本的代码框架,供您参考。
首先,我们需要导入相关的库,包括`xlrd`,`xlwt`,`os`等:
```python
import xlrd
import xlwt
import os
```
然后,定义一个`Dormitory`类,用来管理宿舍信息:
```python
class Dormitory:
def __init__(self):
self.data = []
def load_data(self, filename):
pass
def save_data(self, filename):
pass
def add_data(self, name, dorm_num):
pass
def remove_data(self, name, dorm_num):
pass
def search_data(self, name):
pass
def modify_data(self, name, dorm_num):
pass
def print_data(self):
pass
```
在`__init__`方法中,我们初始化一个`data`列表,用来保存宿舍信息。`load_data`方法用来从Excel文件中读取宿舍信息,`save_data`方法用来保存宿舍信息到Excel文件中。`add_data`方法用来添加宿舍信息,`remove_data`方法用来删除宿舍信息,`search_data`方法用来查询宿舍信息,`modify_data`方法用来修改宿舍信息,`print_data`方法用来打印宿舍信息。
下面分别来看这些方法的具体实现。
`load_data`方法:
```python
def load_data(self, filename):
if not os.path.exists(filename):
return False
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0)
for i in range(1, sheet.nrows):
row = sheet.row_values(i)
name = row[0]
dorm_num = row[1]
self.data.append((name, dorm_num))
return True
```
该方法首先判断文件是否存在,如果不存在则返回False。然后使用`xlrd`库打开Excel文件,并获取第一个工作表。从第二行开始遍历每一行,提取姓名和宿舍号,并将它们保存到`data`列表中。
`save_data`方法:
```python
def save_data(self, filename):
workbook = xlwt.Workbook(encoding='utf-8')
sheet = workbook.add_sheet('Sheet1')
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '宿舍号')
for i, (name, dorm_num) in enumerate(self.data):
sheet.write(i+1, 0, name)
sheet.write(i+1, 1, dorm_num)
workbook.save(filename)
```
该方法首先创建一个新的Excel工作簿,并添加一个名为`Sheet1`的工作表。然后在第一行写入表头信息(姓名和宿舍号),并遍历`data`列表,将每个宿舍信息写入工作表中。最后保存工作簿到Excel文件中。
`add_data`方法:
```python
def add_data(self, name, dorm_num):
if (name, dorm_num) in self.data:
print('该宿舍信息已存在!')
else:
self.data.append((name, dorm_num))
print('宿舍信息添加成功!')
```
该方法首先检查宿舍信息是否已经存在,如果存在则提示错误信息。否则将宿舍信息添加到`data`列表中,并提示添加成功信息。
`remove_data`方法:
```python
def remove_data(self, name, dorm_num):
if (name, dorm_num) not in self.data:
print('该宿舍信息不存在!')
else:
self.data.remove((name, dorm_num))
print('宿舍信息删除成功!')
```
该方法首先检查宿舍信息是否存在,如果不存在则提示错误信息。否则从`data`列表中移除宿舍信息,并提示删除成功信息。
`search_data`方法:
```python
def search_data(self, name):
result = []
for (n, d) in self.data:
if n == name:
result.append((n, d))
if not result:
print('该姓名的宿舍信息不存在!')
else:
for (n, d) in result:
print('%s\t%s' % (n, d))
```
该方法遍历`data`列表,查找与给定姓名匹配的宿舍信息,并将其保存到`result`列表中。如果没有找到匹配的宿舍信息,则提示错误信息。否则遍历`result`列表,并打印每个宿舍信息。
`modify_data`方法:
```python
def modify_data(self, name, dorm_num):
for i, (n, d) in enumerate(self.data):
if n == name:
self.data[i] = (n, dorm_num)
print('宿舍信息修改成功!')
return
print('该姓名的宿舍信息不存在!')
```
该方法遍历`data`列表,查找与给定姓名匹配的宿舍信息,并将宿舍号修改为给定的宿舍号。如果没有找到匹配的宿舍信息,则提示错误信息。否则将修改后的宿舍信息保存到`data`列表中,并提示修改成功信息。
`print_data`方法:
```python
def print_data(self):
for (name, dorm_num) in self.data:
print('%s\t%s' % (name, dorm_num))
```
该方法遍历`data`列表,并打印每个宿舍信息。
最后,我们可以编写一个菜单函数,用来显示可用的操作:
```python
def menu():
print('1. 录入宿舍入住信息')
print('2. 查看宿舍入住信息')
print('3. 修改宿舍入住信息')
print('4. 删除宿舍入住信息')
print('5. 退出系统')
```
在主程序中,我们可以使用一个`while`循环来不断显示菜单,并根据用户选择执行相应的操作:
```python
if __name__ == '__main__':
dorm = Dormitory()
filename = 'dormitory.xls'
if dorm.load_data(filename):
print('宿舍信息加载成功!')
else:
print('宿舍信息文件不存在或为空!')
while True:
menu()
choice = input('请选择操作:')
if choice == '1':
name = input('请输入姓名:')
dorm_num = input('请输入宿舍号:')
dorm.add_data(name, dorm_num)
elif choice == '2':
dorm.print_data()
elif choice == '3':
name = input('请输入姓名:')
dorm_num = input('请输入新的宿舍号:')
dorm.modify_data(name, dorm_num)
elif choice == '4':
name = input('请输入姓名:')
dorm_num = input('请输入宿舍号:')
dorm.remove_data(name, dorm_num)
elif choice == '5':
dorm.save_data(filename)
print('宿舍信息保存成功,系统已退出!')
break
else:
print('无效的选择,请重新输入!')
```
在主程序中,我们首先创建一个`Dormitory`对象,并从Excel文件中加载宿舍信息。然后使用一个`while`循环来显示菜单,并根据用户选择执行相应的操作。当用户选择退出系统时,我们将宿舍信息保存到Excel文件中,并退出程序。
这样,一个简单的宿舍信息管理系统就完成了。当然,这只是一个基础的实现,您还可以根据自己的需求进行扩展。
阅读全文