직원 정보 테이블 표시 기능 구현
README:
1. 员工信息表程序,实现增删改查操作:
1).可进行模糊查询,语法至少支持下面3种:
select name,age from staff_table where age > 22
select * from staff_table where dept = "IT"
select * from staff_table where enroll_date like "2013"
最后显示有查到的条数
2).可创建新员工纪录,以phone做唯一键,staff_id需自增
3).可删除指定员工信息纪录,输入员工id,即可删除
4).可修改员工信息,语法如下:
UPDATE staff_table SET dept="Market" WHERE dept = "IT"
流程图:
代码:
# coding:utf8import sysimport redef select(staff, field): cmd = input("cmd>").strip() cmd = cmd.replace('FROM', 'from') cmd = cmd.replace('WHERE', 'where')if '*' in cmd:for i in field.keys(): sys.stdout.write(str(i) + ' ')print('')for line in staff: info_list = re.split(r',+', line.strip('\n')) cmd_list = re.split(r'[ ,;]+', cmd) f_index = cmd_list.index('from') search_field = cmd_list[1:f_index] from_field = cmd_list[f_index + 1]if from_field != 'staff_table':print('\033[31;1mplease select `staff_table`...\033[0m')breakif 'where' not in cmd_list:# 不存在where条件,显示所有view_list = []for i in range(len(search_field)):if search_field[i] == '*': view_list = info_list[:]else: view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))else:# 存在where条件w_index = cmd_list.index('where') where_str = ''.join(cmd_list[w_index + 1:])if re.search(r'like', where_str): sizeof = 'like'where_list = re.split(r'like', where_str)else: sizeof = re.search(r'[=><]+', where_str).group() where_list = re.split(r'[=><]+', where_str) where_field = where_list[0] value = where_list[1]if re.search(r'[\'\"]+', value): # 带'和"的表示字符,处理掉'和"value = value.replace('\"', '') value = value.replace('\'', '')else: value = float(value)# print(where_str, where_field, sizeof, value)# 条件判断 >, <, =, likeif sizeof == '>': v = info_list[field.get(where_field)]if float(v) > value: view_list = []for i in range(len(search_field)):if search_field[i] == '*': view_list = info_list[:]else: view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))elif sizeof == '<': v = info_list[field.get(where_field)]if float(v) < value: view_list = []for i in range(len(search_field)):if search_field[i] == '*': view_list = info_list[:]else: view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))elif sizeof == '=': v = info_list[field.get(where_field)]if field.get(where_field) == 2: v = float(v)if v == value: view_list = []for i in range(len(search_field)):if search_field[i] == '*': view_list = info_list[:]else: view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))elif sizeof == 'like': v = info_list[field.get(where_field)]if value in v: view_list = []for i in range(len(search_field)):if search_field[i] == '*': view_list = info_list[:]else: view_list.append(info_list[field.get(search_field[i])])else:print(','.join(view_list))else:passdef add(staff): staff.sort() num = int(re.split(r',', staff[-1])[0]) + 1phone = input("phone:").strip()for line in staff:if phone == line[3]:print("already exists...")return Falseif not re.match(r'^\d+$', phone) or len(phone) < 7:print("format error...")return False name = input("name:").strip() age = input("age:").strip() dept = input("dept:").strip() enroll_date = input("enroll_date:").strip()for s in (name, age, dept, enroll_date):if not len(s):print("input is null...")return Falseelse: staff.append('%s,%s,%s,%s,%s,%s\n' % (num, name, age, phone, dept, enroll_date))return staffdef update(staff, field): cmd = input("cmd>").strip() up_list = [] cmd = cmd.replace('SET', 'set') cmd = cmd.replace('WHERE', 'where')for line in staff: info_list = re.split(r',+', line.strip('\n')) cmd_list = re.split(r'[ ,;]+', cmd)if cmd_list[1] != 'staff_table':print('\033[31;1mplease update `staff_table`...\033[0m')breakset_index = cmd_list.index('set') where_index = cmd_list.index('where') set_list = re.split(r'=', ''.join(cmd_list[set_index + 1:where_index])) set_field = set_list[0] set_value = set_list[1]if re.search(r'[\'\"]+', set_value): set_value = set_value.replace('\'', '') set_value = set_value.replace('\"', '') where_list = re.split(r'=', ''.join(cmd_list[where_index + 1:])) where_field = where_list[0] where_value = where_list[1]if re.search(r'[\'\"]+', where_value): where_value = where_value.replace('\'', '') where_value = where_value.replace('\"', '')if info_list[field.get(where_field)] == where_value: info_list[field.get(set_field)] = set_valueprint(','.join(info_list)) up_list.append(','.join(info_list))else:return up_listdef delete(staff): del_id = input("delete id:").strip()for i in range(len(staff)):if re.split(r',', staff[i])[0] == del_id: staff.pop(i)print("id:%s delete success." % del_id)return staffelse:return Falsedef main(): staff_table = 'staff_table.txt'field = {'staff_id': 0,'name': 1,'age': 2,'phone': 3,'dept': 4,'enroll_date': 5} menu = '''\033[33;1m-- staff_table --\033[0m\033[29;1m S. 查询 h. 帮助 A. 新增 q. 退出 E. 修改 D. 删除\033[0m'''print(menu)while True:try: with open(staff_table, 'r') as f: staff = f.readlines() choice = input(">>").strip().lower()if choice == 'h': # helpprint(menu)elif choice == 'q':breakelif choice == 's': # search select(staff, field)elif choice == 'a': # addresult = add(staff)if not result:print('\033[31;1madd failed...\033[0m')continueelse: with open(staff_table, 'w') as f: f.writelines(result)elif choice == 'e': # updateresult = update(staff, field)if not result:print('\033[31;1mupdate failed...\033[0m')continueelse: with open(staff_table, 'w') as f:for line in result: f.write(line + '\n')elif choice == 'd': # deleteresult = delete(staff)if not result:print('\033[31;1mdelete failed...\033[0m')continueelse: with open(staff_table, 'w') as f: f.writelines(result)else:continueexcept:print("\033[31;1minput error...\033[0m")continueif __name__ == '__main__': main()
View Code
위 내용은 직원 정보 테이블 표시 기능 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Microsoft Word 문서는 저장 시 일부 메타데이터를 포함합니다. 이러한 세부 정보는 문서 작성 날짜, 작성자, 수정 날짜 등 문서 식별에 사용됩니다. 또한 문자 수, 단어 수, 단락 수 등과 같은 기타 정보도 있습니다. 다른 사람이 값을 알 수 없도록 작성자나 마지막 수정 정보 또는 기타 정보를 제거하려는 경우 방법이 있습니다. 이번 글에서는 문서 작성자와 최종 수정 정보를 제거하는 방법을 살펴보겠습니다. Microsoft Word 문서에서 작성자 및 마지막 수정 정보 제거 1단계 – 다음으로 이동

시스템 정보 사용 시작을 클릭하고 시스템 정보를 입력합니다. 아래 이미지에 표시된 대로 프로그램을 클릭하기만 하면 됩니다. 여기에서는 대부분의 시스템 정보를 찾을 수 있으며, 그 중 하나는 그래픽 카드 정보입니다. 시스템 정보 프로그램에서 구성 요소를 확장한 다음 표시를 클릭합니다. 프로그램이 필요한 모든 정보를 수집하도록 하고, 준비가 되면 시스템에서 그래픽 카드별 이름과 기타 정보를 찾을 수 있습니다. 그래픽 카드가 여러 개 있더라도 여기에서 컴퓨터에 연결된 전용 및 통합 그래픽 카드와 관련된 대부분의 콘텐츠를 찾을 수 있습니다. 장치 관리자 사용 Windows 11 대부분의 다른 Windows 버전과 마찬가지로 장치 관리자에서 컴퓨터의 그래픽 카드를 찾을 수도 있습니다. 시작을 클릭한 다음

iOS 17에는 두 개의 iPhone을 터치하여 누군가와 연락처 정보를 교환할 수 있는 새로운 AirDrop 기능이 있습니다. NameDrop이라고 하며 작동 방식은 다음과 같습니다. 전화를 걸거나 문자를 보내기 위해 새로운 사람의 전화번호를 입력하는 대신, NameDrop을 사용하면 iPhone을 상대방의 iPhone 근처에 두기만 하면 연락처 정보를 교환하여 상대방이 귀하의 전화번호를 알 수 있습니다. 두 장치를 함께 놓으면 연락처 공유 인터페이스가 자동으로 나타납니다. 팝업을 클릭하면 개인의 연락처 정보와 연락처 포스터가 표시됩니다(iOS17의 새로운 기능인 자신의 사진을 사용자 정의하고 편집할 수도 있습니다). 이 화면에는 "수신만" 또는 응답으로 자신의 연락처 정보를 공유하는 옵션도 포함되어 있습니다.

9월 2일 해당 사이트의 소식에 따르면, 닌텐도 공식 홈페이지에서 공개한 직원 데이터에 따르면 신입사원 유지율(2019년 4월 입사해 2022년 4월에도 계속 근무한 신입사원 비율)이 100%에 달한다. 98.8%가 100% 남성이고 100% 여성입니다. 이는 Nintendo가 채용하는 신규 직원 100명당 약 1명이 그만두기로 결정한다는 의미이며, 일본의 평균 신규 직원 유지율은 70%입니다. 주식회사 UZUZ의 오카모토 케이타케 대표는 "대기업은 대개 높은 급여와 좋은 복리후생을 제공하기 때문에 직원 유지율도 더 높다"며 "특히 닌텐도는 일본에서 인기 있는 대표 기업으로 지난해 닌텐도의 평균 1위"라고 말했다. 연봉은 988만엔(약 49만2000위안)이지만, 게임업계에는 닌텐도보다 연봉이 높은 회사도 있다.

현재 영상 3D 재구성 작업은 일반적으로 일정한 자연광 조건 하에서 여러 시점(멀티뷰)에서 대상 장면을 캡처하는 멀티뷰 스테레오 재구성 방식(Multi-view Stereo)을 사용합니다. 그러나 이러한 방법은 일반적으로 Lambertian 표면을 가정하므로 고주파수 세부 정보를 복구하는 데 어려움이 있습니다. 장면 재구성에 대한 또 다른 접근 방식은 고정된 시점에서 캡처한 이미지를 다양한 포인트 라이트로 활용하는 것입니다. 예를 들어 포토메트릭 스테레오 방법은 이 설정을 사용하고 해당 음영 정보를 사용하여 램버시안 개체가 아닌 개체의 표면 세부 정보를 재구성합니다. 하지만 기존의 싱글뷰 방식에서는 눈에 보이는 것을 표현하기 위해 보통 노멀맵이나 깊이맵을 사용하는 경우가 많습니다.

iOS17에는 아이폰 두 대를 동시에 터치해 누군가와 연락처 정보를 교환할 수 있는 새로운 에어드롭(AirDrop) 기능이 있다. NameDrop이라고 하며 실제 작동 방식은 다음과 같습니다. NameDrop을 사용하면 전화를 걸거나 문자를 보낼 때 새로운 사람의 전화번호를 입력할 필요가 없어 상대방이 귀하의 전화번호를 알 수 있습니다. iPhone을 상대방의 iPhone에 가까이 갖다 대기만 하면 연락처 정보를 교환할 수 있습니다. 두 장치를 함께 놓으면 연락처 공유 인터페이스가 자동으로 나타납니다. 팝업을 클릭하면 사람의 연락처 정보와 연락처 포스터(사용자 정의하고 편집할 수 있는 자신의 사진, iOS 17의 새로운 기능)가 표시됩니다. 이 화면에는 "수신 전용"도 포함되어 있거나 이에 대한 응답으로 자신의 연락처 정보를 공유할 수 있습니다.

WeChat의 정보 수신이 지연되는 이유는 네트워크 문제, 서버 부하, 버전 문제, 장치 문제, 메시지 전송 문제 또는 기타 요인 때문일 수 있습니다. 자세한 소개: 1. 네트워크 문제 WeChat의 정보 수신 지연은 네트워크 연결과 관련이 있을 수 있습니다. 네트워크 연결이 불안정하거나 신호가 약한 경우 휴대폰이 지연될 수 있습니다. 2. 서버 부하가 높을 때, 특히 바쁜 시간이나 많은 사용자가 WeChat을 사용할 때 정보 전송이 지연될 수 있습니다. 같은 시간 등등

ChatGPT가 물결을 일으킨 이후 많은 사람들은 AI가 인간의 일자리를 빼앗을 것이라고 걱정하고 있습니다. 그러나 현실은 더욱 잔혹할 수도 있다 QAQ... 취업 서비스 플랫폼 Resume Builder의 조사 통계에 따르면 조사에 참여한 1,000개 이상의 미국 기업 중 일부 직원을 대체하기 위해 ChatGPT를 사용하는 비율은 무려 48%에 달합니다. 이들 회사 중 49%는 이미 ChatGPT를 활성화했으며 30%는 진행 중입니다. CCTV Finance에서도 이에 대한 특별 보고서를 발표했습니다. 관련 주제가 한때 Zhihu 인기 목록에 급등했습니다. 많은 네티즌들은 ChatGPT와 같은 AIGC 도구가 이제 막을 수 없다는 점을 인정해야 한다고 말했습니다. 물결이 다가오고 있지만 발전하기는 어려울 것입니다. .퇴각. 일부 프로그래머는 또한 다음과 같이 지적했습니다. Copil을 사용한 후
