Курсовая работа: Разработка системной утилиты дефрагментации логического диска

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

1. Сбор информации о доступных разделах, их состоянии, сохранение информации в файле

2. Вывод информации о доступных разделах на рабочую область экрана

3. Выполнение анализа выбранного раздела на предмет необходимости выполнения дефрагментации

4. Сохранение отчета по проведенному анализу в файл, имя которого определяется временем и датой выполнения анализа

5. Вывод на рабочую область экрана содержания отчета

6. Выполнение дефрагментации выбранного раздела

7. Сохранение отчета о деталях проведенной дефрагментации в файл, имя которого определяется временем и датой выполнения дефрагментации

8. Вывод на рабочую область экрана содержания отчета

Разработка программы позволила, таким образом, закрепить не только навыки в области теории дефрагментации, но также получить дополнительный опыт в сфере программирования. Этот опыт полезен тем, что работа велась в достаточно узкой сфере работы с командной строкой.

Список использованных источников

1. Угринович Н.Д., «Информатика и ИКТ», Санкт-Петербург, 2006.

2. Акулов О.А., «Информатика», Москва, 2007.

3. Python 3 для начинающих [Электронный ресурс]: Модуль time - Режим доступа: http://pythonworld.ru/moduli/modul-time.html#

4. Python [Электронный ресурс]: Strip, Split, Join - Режим доступа: http://breys.ru/blog/521.html

5. Файловая система NTFS [Электронный ресурс]: Режим доступа: http://www.ixbt.com/storage/ntfs.html

6. Дефрагментация диска [Электронный ресурс]: Режим доступа: https://ru.wikipedia.org/wiki/Дефрагментация_диска

7. Файловая система [Электронный ресурс]: Режим доступа: http://citforum.ru/operating_systems/sos/glava_10.shtml#

8. Файловая система [Электронный ресурс]: Информационный центр - Режим доступа: https://ru.wikipedia.org/wiki/%D4%E0%E9%EB%EE%E2%E0%FF_%F1%E8%F1%F2%E5%EC%E0

9. Файловые системы [Электронный ресурс]: Режим доступа: http://www.bestreferat.ru/referat-219465.html

10. Логическая структура дисков [Электронный ресурс]: Режим доступа: http://5fan.ru/wievjob.php?id=39798

Приложение

Программный код утилиты дефрагментации

«Defragmentation Utility»

# -*- coding: utf-8 -*-

import os import time import sys

def console_header(drives): print("==== Defragmentation Utility ====\n\n"\

"Existing drives:\n")

print(" Том Имя Метка ФС Тип Размер Состояние Сведения\n"\

" ----- ---- --------- ---- -------- ------ --------- --------") for item in drives:

print(item)

print(" ---------------------------------------------------------------------------")

def get_drives_letters():

diskpart_file = "C:\drive_info.txt" drives = list()

os.system("chcp 65001 >> localhost") # использование в командной строке кодировки UTF-8

os.system("echo list volume|diskpart >>" + diskpart_file) # запись в файл списка дисковых устройств

for string in open(diskpart_file, "r", encoding='utf8').readlines():

if string.find("Том")!= -1: if string.find("NTFS")!= -1 or string.find("FAT32")!= -1:

drives.append(string)

os.system("del "+diskpart_file) return drives

def drives_analyzer(drive, drives):

letters = list()

drive_list = drive.split(", ") for item in drives:

letters.append(item[15]+":") if drive_list[0]!= "ALL":

try:

filename = "C:\ANALYSIS_" + timestamp() + ".log" os.system("chcp 65001 >> localhost")

error = os.system("defrag.exe " + " ".join(drive_list) + " /A >> " + filename) if error == 0:

return filename else:

return False except:

return False elif drive_list[0] == "ALL":

try:

filename = "C:\ANALYSIS_" + timestamp() + ".log" os.system("chcp 65001 >> localhost")

error = os.system("defrag.exe " + " ".join(letters) + " /A >> " + filename) if error == 0:

return filename else:

return False except:

return False else:

return False

def drives_defrager(drive, drives):

letters = list() drive_list = drive.split(", ") for item in drives:

letters.append(item[15]+":") if drive_list[0]!= "ALL":

try:

filename = "C:\DEFRAG_" + timestamp() + ".log" os.system("chcp 65001 >> localhost")

os.system("defrag.exe " + " ".join(drive_list) + " /V >> " + filename) return filename except:

return False elif drive_list[0] == "ALL":

try:

filename = "C:\DEFRAG_" + timestamp() + ".log" os.system("chcp 65001 >> localhost") os.system("defrag.exe /C /V >> " + filename) return filename except:

return False else:

return False

def timestamp():

return time.strftime("%d_%m_%Y[%H-%M-%S]", time.localtime())

if __name__ == "__main__": drives = get_drives_letters() while True:

os.system("cls") console_header(drives) key = input("A - analyze drives\n"

"D - defragment drives\n"

"EXIT - exit utility\n"

">>> ") if key == "A": os.system("cls") console_header(drives)

drive = input("Match drives by the comma.\n"

"Example: C:, D:\n" "(ALL - for all drives): ") os.system("cls")

print("Starting analysis drives: " + drive) print("Please, wait. It can take few minutes...") result = drives_analyzer(drive, drives)

if result:

os.system("cls") print("Analysis successful!\n" \ "Log file: " + result) print_key = input("Print log file? [y/n]") if print_key == "y": f = open(result, "r", encoding='utf8') os.system("cls") print(f.read())

f.close()

input("Press [ENTER] to continue...")

else:

os.system("cls")

print("Error occurred while analysis!") input("Press [ENTER] to continue...")

elif key == "D": os.system("cls") console_header(drives)

drive = input("Match name of drives by the comma.\n" "Example: C:, D:\n" "(ALL - for all drives): ") os.system("cls")

print("Starting defragmentation drives: " + drive) print("Please, wait. It can take a few minutes...") result = drives_defrager(drive, drives)

if result:

os.system("cls")

print("Defragmentation successful!\n" \

"Log file: " + result) print_key = input("Print log file? [y/n]") if print_key == "y": f = open(result, "r", encoding='utf8') os.system("cls") print(f.read())

f.close()

input("Press [ENTER] to continue...")

else:

os.system("cls")

print("Error occurred while defragmentation!") input("Press [ENTER] to continue...") elif key == "EXIT": os.system("cls")

os.system("del C:\Course\Defrag_test1\localhost")

sys.exit(0) else:

os.system("cls") console_header(drives) print("Wrong parameter!") input("Press [ENTER] to continue...")