update,
This commit is contained in:
BIN
hdhdjshxh/task2/project/Assignment.pdf
Normal file
BIN
hdhdjshxh/task2/project/Assignment.pdf
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/HD_information_window.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/HD_information_window.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/Personal_info_window.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/Personal_info_window.png
(Stored with Git LFS)
Normal file
Binary file not shown.
12
hdhdjshxh/task2/project/doc/Pipfile
Normal file
12
hdhdjshxh/task2/project/doc/Pipfile
Normal file
@@ -0,0 +1,12 @@
|
||||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
markdown2docx = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[requires]
|
||||
python_version = "3.12"
|
312
hdhdjshxh/task2/project/doc/Pipfile.lock
generated
Normal file
312
hdhdjshxh/task2/project/doc/Pipfile.lock
generated
Normal file
@@ -0,0 +1,312 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "ce7bc21caf64cf9ad732d9869c89e2cf568c1b1d036c73753a58b09450611617"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.12"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"beautifulsoup4": {
|
||||
"hashes": [
|
||||
"sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051",
|
||||
"sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"
|
||||
],
|
||||
"markers": "python_full_version >= '3.6.0'",
|
||||
"version": "==4.12.3"
|
||||
},
|
||||
"bs4": {
|
||||
"hashes": [
|
||||
"sha256:a48685c58f50fe127722417bae83fe6badf500d54b55f7e39ffe43b798653925",
|
||||
"sha256:abf8742c0805ef7f662dce4b51cca104cffe52b835238afc169142ab9b3fbccc"
|
||||
],
|
||||
"version": "==0.0.2"
|
||||
},
|
||||
"lxml": {
|
||||
"hashes": [
|
||||
"sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04",
|
||||
"sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0",
|
||||
"sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739",
|
||||
"sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a",
|
||||
"sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1",
|
||||
"sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218",
|
||||
"sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9",
|
||||
"sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188",
|
||||
"sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138",
|
||||
"sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585",
|
||||
"sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637",
|
||||
"sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe",
|
||||
"sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d",
|
||||
"sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1",
|
||||
"sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095",
|
||||
"sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9",
|
||||
"sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81",
|
||||
"sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57",
|
||||
"sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536",
|
||||
"sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a",
|
||||
"sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052",
|
||||
"sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01",
|
||||
"sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98",
|
||||
"sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433",
|
||||
"sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1",
|
||||
"sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f",
|
||||
"sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4",
|
||||
"sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b",
|
||||
"sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6",
|
||||
"sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8",
|
||||
"sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5",
|
||||
"sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306",
|
||||
"sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5",
|
||||
"sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f",
|
||||
"sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4",
|
||||
"sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be",
|
||||
"sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919",
|
||||
"sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af",
|
||||
"sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66",
|
||||
"sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1",
|
||||
"sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af",
|
||||
"sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec",
|
||||
"sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b",
|
||||
"sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289",
|
||||
"sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a",
|
||||
"sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d",
|
||||
"sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102",
|
||||
"sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9",
|
||||
"sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc",
|
||||
"sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45",
|
||||
"sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa",
|
||||
"sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a",
|
||||
"sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c",
|
||||
"sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461",
|
||||
"sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708",
|
||||
"sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca",
|
||||
"sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd",
|
||||
"sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913",
|
||||
"sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da",
|
||||
"sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0",
|
||||
"sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5",
|
||||
"sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5",
|
||||
"sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96",
|
||||
"sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41",
|
||||
"sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3",
|
||||
"sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456",
|
||||
"sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c",
|
||||
"sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867",
|
||||
"sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0",
|
||||
"sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213",
|
||||
"sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619",
|
||||
"sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240",
|
||||
"sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c",
|
||||
"sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377",
|
||||
"sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b",
|
||||
"sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c",
|
||||
"sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54",
|
||||
"sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b",
|
||||
"sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53",
|
||||
"sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029",
|
||||
"sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6",
|
||||
"sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885",
|
||||
"sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94",
|
||||
"sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134",
|
||||
"sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8",
|
||||
"sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9",
|
||||
"sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863",
|
||||
"sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b",
|
||||
"sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806",
|
||||
"sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11",
|
||||
"sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9",
|
||||
"sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817",
|
||||
"sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95",
|
||||
"sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8",
|
||||
"sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc",
|
||||
"sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47",
|
||||
"sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b",
|
||||
"sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0",
|
||||
"sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a",
|
||||
"sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f",
|
||||
"sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56",
|
||||
"sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef",
|
||||
"sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851",
|
||||
"sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7",
|
||||
"sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62",
|
||||
"sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4",
|
||||
"sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a",
|
||||
"sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c",
|
||||
"sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533",
|
||||
"sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f",
|
||||
"sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e",
|
||||
"sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a",
|
||||
"sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3",
|
||||
"sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b",
|
||||
"sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4",
|
||||
"sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0",
|
||||
"sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d",
|
||||
"sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3",
|
||||
"sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5",
|
||||
"sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534",
|
||||
"sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4",
|
||||
"sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144",
|
||||
"sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd",
|
||||
"sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd",
|
||||
"sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860",
|
||||
"sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704",
|
||||
"sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8",
|
||||
"sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d",
|
||||
"sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9",
|
||||
"sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f",
|
||||
"sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad",
|
||||
"sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc",
|
||||
"sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510",
|
||||
"sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937",
|
||||
"sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a",
|
||||
"sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460",
|
||||
"sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85",
|
||||
"sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86",
|
||||
"sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0",
|
||||
"sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246",
|
||||
"sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7",
|
||||
"sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa",
|
||||
"sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08",
|
||||
"sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270",
|
||||
"sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a",
|
||||
"sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169",
|
||||
"sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e",
|
||||
"sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75",
|
||||
"sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd",
|
||||
"sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354",
|
||||
"sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c",
|
||||
"sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1",
|
||||
"sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb",
|
||||
"sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f",
|
||||
"sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==5.2.1"
|
||||
},
|
||||
"markdown2": {
|
||||
"hashes": [
|
||||
"sha256:18ceb56590da77f2c22382e55be48c15b3c8f0c71d6398def387275e6c347a9f",
|
||||
"sha256:855bde5cbcceb9beda7c80efdf7f406c23e6079172c497fcfce22fdce998e892"
|
||||
],
|
||||
"markers": "python_version >= '3.5' and python_version < '4'",
|
||||
"version": "==2.4.13"
|
||||
},
|
||||
"markdown2docx": {
|
||||
"hashes": [
|
||||
"sha256:026504ec82b59b9de2641366157fe11d5f3c4781b28cf6422460126dbbec7472",
|
||||
"sha256:a3a54f75be046e662630c7f2eb570d45cc98ada9892f17e84583db24c10a7510"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.1.0"
|
||||
},
|
||||
"pillow": {
|
||||
"hashes": [
|
||||
"sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c",
|
||||
"sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2",
|
||||
"sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb",
|
||||
"sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d",
|
||||
"sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa",
|
||||
"sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3",
|
||||
"sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1",
|
||||
"sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a",
|
||||
"sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd",
|
||||
"sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8",
|
||||
"sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999",
|
||||
"sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599",
|
||||
"sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936",
|
||||
"sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375",
|
||||
"sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d",
|
||||
"sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b",
|
||||
"sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60",
|
||||
"sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572",
|
||||
"sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3",
|
||||
"sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced",
|
||||
"sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f",
|
||||
"sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b",
|
||||
"sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19",
|
||||
"sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f",
|
||||
"sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d",
|
||||
"sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383",
|
||||
"sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795",
|
||||
"sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355",
|
||||
"sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57",
|
||||
"sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09",
|
||||
"sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b",
|
||||
"sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462",
|
||||
"sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf",
|
||||
"sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f",
|
||||
"sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a",
|
||||
"sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad",
|
||||
"sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9",
|
||||
"sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d",
|
||||
"sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45",
|
||||
"sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994",
|
||||
"sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d",
|
||||
"sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338",
|
||||
"sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463",
|
||||
"sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451",
|
||||
"sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591",
|
||||
"sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c",
|
||||
"sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd",
|
||||
"sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32",
|
||||
"sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9",
|
||||
"sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf",
|
||||
"sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5",
|
||||
"sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828",
|
||||
"sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3",
|
||||
"sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5",
|
||||
"sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2",
|
||||
"sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b",
|
||||
"sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2",
|
||||
"sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475",
|
||||
"sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3",
|
||||
"sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb",
|
||||
"sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef",
|
||||
"sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015",
|
||||
"sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002",
|
||||
"sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170",
|
||||
"sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84",
|
||||
"sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57",
|
||||
"sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f",
|
||||
"sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27",
|
||||
"sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==10.3.0"
|
||||
},
|
||||
"python-docx": {
|
||||
"hashes": [
|
||||
"sha256:5829b722141cf1ab79aedf0c34d9fe9924b29764584c0f2164eb2b02dcdf17c9",
|
||||
"sha256:bac9773278098a1ddc43a52d84e22f5909c4a3080a624530b3ecb3771b07c6cd"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.1.0"
|
||||
},
|
||||
"soupsieve": {
|
||||
"hashes": [
|
||||
"sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690",
|
||||
"sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==2.5"
|
||||
},
|
||||
"typing-extensions": {
|
||||
"hashes": [
|
||||
"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0",
|
||||
"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.11.0"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
1
hdhdjshxh/task2/project/doc/conv.bat
Normal file
1
hdhdjshxh/task2/project/doc/conv.bat
Normal file
@@ -0,0 +1 @@
|
||||
python ./to_docx.py
|
BIN
hdhdjshxh/task2/project/doc/result_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_10.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_10.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_10_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_10_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_11.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_11.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_11_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_11_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_12.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_12.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_12_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_12_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_13.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_13.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_13_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_13_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_13_2.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_13_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_14.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_14.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_14_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_14_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_14_2.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_14_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_1_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_1_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_2.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_2_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_2_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_3.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_3.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_3_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_3_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_4.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_4.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_4_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_4_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_5.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_5.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_5_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_5_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_6.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_6.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_6_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_6_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_7.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_7.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_7_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_7_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_8_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_8_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_8_2.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_8_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_8_3.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_8_3.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_8_4.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_8_4.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_9.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_9.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/result_9_1.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/result_9_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/summary_window.png
(Stored with Git LFS)
Normal file
BIN
hdhdjshxh/task2/project/doc/summary_window.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
hdhdjshxh/task2/project/doc/test - Copy.docx
Normal file
BIN
hdhdjshxh/task2/project/doc/test - Copy.docx
Normal file
Binary file not shown.
24
hdhdjshxh/task2/project/doc/test copy.md
Normal file
24
hdhdjshxh/task2/project/doc/test copy.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# TEST plan
|
||||
|
||||
### Gui
|
||||
|
||||
1. Validation on the input data and display appropriate error messages
|
||||
|
||||
1. Test Plan with test cases and test results.
|
||||
|
||||
| ID | Test Case Name | Procedure | Expected Output | Result | screen capture |
|
||||
| --- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 1 | Missing "Applicant Name" | 1. leave "applicant name" field empty.<br />1. Click "Next" button | The error MessageBox appears "name cannot empty."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 2 | Missing "Applicant Email" | 1. leave "applicant email" field empty.<br />1. Click "Next" button | The error MessageBox appears "email field cannot empty."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 3 | Missing "Date of Birth" | 1. leave "date of birth" field empty. <br />1. Click "Next" button | The error MessageBox appears "dob field cannot empty."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 4 | Missing Institution Name | 1. leave "Institution Name" field empty <br />1. Click "Next" button | The error MessageBox appears "Please enter all required information."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 5 | Missing Programme Title | 1. leave "Programme Title" field empty <br />1. Click "Next" button | The error MessageBox appears "Please enter all required information."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 6 | Missing GPA | 1. leave "GPA" field empty <br />1. Click "Next" button | The error MessageBox appears "Please enter all required information."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 7 | Missing Expected Graduation Year | 1. leave "Expected Graduation Year" field empty <br />1. Click "Next" button | The error MessageBox appears "Please enter all required information."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 8 | Showing summary if all input field fullfilled | 1. filling all required information in "Personal Information" <br />1. clici "Next" button <br /> 1. Filling all required information in"Higher Diploma Information" windows. <br />1. Click "Next" button<br /> 1. click "show" button to show summary | finally the summary window showing information in the page inputted before | Pass/Fail |  <br /><br /><br /> |
|
||||
| 9 | Date of birth should be in the past | 1. enter a day after today to the "date of birth" field <br /> 1. click next button | The error MessageBox appears "DOB: the day entered is latter than today."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail |  <br /> |
|
||||
| 10 | email entered should be valid | 1. enter an invalid email e.g. "ankitrai326.com" <br /> 1. click "next" button | The error MessageBox appears "email format error, it should be email."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail | <br /> |
|
||||
| 11 | GPA should be a number / decimal | 1. enter a non numeric value into "GPA" field <br />1. Click "Next" button | The error MessageBox appears "GPA field should be a number."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail | <br /> |
|
||||
| 12 | Expected graduation year should be in future | 1. enter a day in the past in "Graduation year" field <br />1. Click "Next" button | The error MessageBox appears "Expected graduation year should be after current year."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail | <br /> |
|
||||
| 13 | female appliciant | 1. select female in applicant gender field <br />1. Click "Next" button | The error MessageBox appears "Expected graduation year should be after current year."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail | <br /><br /> |
|
||||
| 14 | "Bachelor of Science in Computer Science and AI" in apply programme | 1. select female in applicant gender field <br />1. Click "Next" button | The error MessageBox appears "Expected graduation year should be after current year."<br />The error MessageBox appears "Please enter all required information." | Pass/Fail | <br /><br /> |
|
15
hdhdjshxh/task2/project/doc/test.csv
Normal file
15
hdhdjshxh/task2/project/doc/test.csv
Normal file
@@ -0,0 +1,15 @@
|
||||
ID , Test Case Name , Procedure , Expected Output , Result , screen capture ,
|
||||
1," Missing ""Applicant Name"" "," 1. leave ""applicant name"" field empty.<br />1. Click ""Next"" button "," The error MessageBox appears ""name cannot empty.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
2," Missing ""Applicant Email"" "," 1. leave ""applicant email"" field empty.<br />1. Click ""Next"" button "," The error MessageBox appears ""email field cannot empty.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
3," Missing ""Date of Birth"" "," 1. leave ""date of birth"" field empty. <br />1. Click ""Next"" button "," The error MessageBox appears ""dob field cannot empty.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
4, Missing Institution Name ," 1. leave ""Institution Name"" field empty <br />1. Click ""Next"" button "," The error MessageBox appears ""Please enter all required information.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
5, Missing Programme Title ," 1. leave ""Programme Title"" field empty <br />1. Click ""Next"" button "," The error MessageBox appears ""Please enter all required information.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
6, Missing GPA ," 1. leave ""GPA"" field empty <br />1. Click ""Next"" button "," The error MessageBox appears ""Please enter all required information.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
7, Missing Expected Graduation Year ," 1. leave ""Expected Graduation Year"" field empty <br />1. Click ""Next"" button "," The error MessageBox appears ""Please enter all required information.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
8, Showing summary if all input field fullfilled ," 1. filling all required information in ""Personal Information"" <br />1. clici ""Next"" button <br /> 1. Filling all required information in""Higher Diploma Information"" windows. <br />1. Click ""Next"" button<br /> 1. click ""show"" button to show summary ", finally the summary window showing information in the page inputted before , Pass/Fail ,  <br /><br /><br />,
|
||||
9, Date of birth should be in the past ," 1. enter a day after today to the ""date of birth"" field <br /> 1. click next button "," The error MessageBox appears ""DOB: the day entered is latter than today.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail ,  <br /> ,
|
||||
10, email entered should be valid ," 1. enter an invalid email e.g. ""ankitrai326.com"" <br /> 1. click ""next"" button "," The error MessageBox appears ""email format error"," it should be email.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail , <br />
|
||||
11, GPA should be a number / decimal ," 1. enter a non numeric value into ""GPA"" field <br />1. Click ""Next"" button "," The error MessageBox appears ""GPA field should be a number.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail , <br /> ,
|
||||
12, Expected graduation year should be in future ," 1. enter a day in the past in ""Graduation year"" field <br />1. Click ""Next"" button "," The error MessageBox appears ""Expected graduation year should be after current year.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail , <br /> ,
|
||||
13, female appliciant ," 1. select female in applicant gender field <br />1. Click ""Next"" button "," The error MessageBox appears ""Expected graduation year should be after current year.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail , <br /><br /> ,
|
||||
14," ""Bachelor of Science in Computer Science and AI"" in apply programme "," 1. select female in applicant gender field <br />1. Click ""Next"" button "," The error MessageBox appears ""Expected graduation year should be after current year.""<br />The error MessageBox appears ""Please enter all required information."" ", Pass/Fail , <br /><br />,
|
|
BIN
hdhdjshxh/task2/project/doc/test.docx
Normal file
BIN
hdhdjshxh/task2/project/doc/test.docx
Normal file
Binary file not shown.
285
hdhdjshxh/task2/project/doc/test.md
Normal file
285
hdhdjshxh/task2/project/doc/test.md
Normal file
@@ -0,0 +1,285 @@
|
||||
# TEST plan
|
||||
|
||||
### Test purpose
|
||||
|
||||
1. Validation on the input data and display appropriate error messages
|
||||
|
||||
1. Test Plan with test cases and test results.
|
||||
|
||||
### Test #1
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Test Case Name | Missing "Applicant Name" |
|
||||
| Procedure | 1. leave "applicant name" field empty.\n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "name cannot empty."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #2
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | Missing "Applicant Email" |
|
||||
| Procedure | 1. leave "applicant email" field empty.\n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "email field cannot empty."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #3
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | Missing "Date of Birth" |
|
||||
| Procedure | 1. leave "date of birth" field empty. \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "dob field cannot empty."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #4
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | Missing Institution Name |
|
||||
| Procedure | 1. leave "Institution Name" field empty \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "Please enter all required information."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #5
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | Missing Programme Title |
|
||||
| Procedure | 1. leave "Programme Title" field empty \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "Please enter all required information."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #6
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | Missing GPA |
|
||||
| Procedure | 1. leave "GPA" field empty \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "Please enter all required information."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #7
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | Missing Expected Graduation Year |
|
||||
| Procedure | 1. leave "Expected Graduation Year" field empty \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "Please enter all required information."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #8
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | Showing summary if all input field fullfilled |
|
||||
| Procedure | 1. filling all required information in "Personal Information" \n1. clici "Next" button \n 1. Filling all required information in"Higher Diploma Information" windows. \n1. Click "Next" button\n 1. click "show" button to show summary |
|
||||
| Expected Output | finally the summary window showing information in the page inputted before |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 3 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 4 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #9
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Test Case Name | Date of birth should be in the past |
|
||||
| Procedure | 1. enter a day after today to the "date of birth" field \n 1. click next button |
|
||||
| Expected Output | The error MessageBox appears "DOB: the day entered is latter than today."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #10
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | email entered should be valid |
|
||||
| Procedure | 1. enter an invalid email e.g. "ankitrai326.com" \n 1. click "next" button |
|
||||
| Expected Output | The error MessageBox appears "email format error |
|
||||
| Result | it should be email."\nThe error MessageBox appears "Please enter all required information." |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||
Pass/Fail
|
||||
|
||||
### Test #11
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Test Case Name | GPA should be a number / decimal |
|
||||
| Procedure | 1. enter a non numeric value into "GPA" field \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "GPA field should be a number."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #12
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Test Case Name | Expected graduation year should be in future |
|
||||
| Procedure | 1. enter a day in the past in "Graduation year" field \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "Expected graduation year should be after current year."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #13
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Test Case Name | female appliciant |
|
||||
| Procedure | 1. select female in applicant gender field \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "Expected graduation year should be after current year."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 3 screenshot
|
||||
|
||||

|
||||
|
||||
### Test #14
|
||||
|
||||
| del me | del me |
|
||||
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Test Case Name | "Bachelor of Science in Computer Science and AI" in apply programme |
|
||||
| Procedure | 1. select female in applicant gender field \n1. Click "Next" button |
|
||||
| Expected Output | The error MessageBox appears "Expected graduation year should be after current year."\nThe error MessageBox appears "Please enter all required information." |
|
||||
| Result | Pass/Fail |
|
||||
|
||||
### Screen capture
|
||||
|
||||
#### step 1 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 2 screenshot
|
||||
|
||||

|
||||
|
||||
#### step 3 screenshot
|
||||
|
||||

|
6
hdhdjshxh/task2/project/doc/to_docx.py
Normal file
6
hdhdjshxh/task2/project/doc/to_docx.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from Markdown2docx import Markdown2docx
|
||||
|
||||
print("writing Q9950_GetDocx")
|
||||
project = Markdown2docx('test')
|
||||
project.eat_soup()
|
||||
project.save()
|
38
hdhdjshxh/task2/project/doc/transpose.py
Normal file
38
hdhdjshxh/task2/project/doc/transpose.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import csv
|
||||
|
||||
|
||||
|
||||
print('''# TEST plan
|
||||
|
||||
### Test purpose
|
||||
|
||||
1. Validation on the input data and display appropriate error messages
|
||||
|
||||
1. Test Plan with test cases and test results.''')
|
||||
print('\n')
|
||||
print('\n')
|
||||
print('\n')
|
||||
|
||||
# read a csv file named test.csv
|
||||
with open('test.csv', 'r') as f:
|
||||
|
||||
# creating a csv reader object
|
||||
csvreader = csv.reader(f)
|
||||
|
||||
# extracting each data row one by one
|
||||
for row in csvreader:
|
||||
|
||||
print(f'### Test #{row[0]}')
|
||||
print('\n')
|
||||
print(f'| del me | del me |')
|
||||
print(f'| ----- | ----- |')
|
||||
print(f'| Test Case Name | {row[1]} |')
|
||||
print(f'| Procedure | {row[2].replace("<br />",'\\n')} |')
|
||||
print(f'| Expected Output | {row[3].replace("<br />",'\\n')} |')
|
||||
print(f'| Result | {row[4].replace("<br />",'\\n')} |')
|
||||
print('\n')
|
||||
print("### Screen capture")
|
||||
print( '\n'.join([ (f'\n#### step {i+1} screenshot\n'+x.strip()) for i, x in enumerate(row[5].split("<br />"))]) )
|
||||
print('\n')
|
||||
print('\n')
|
||||
|
508
hdhdjshxh/task2/project/src/Assignment.py
Normal file
508
hdhdjshxh/task2/project/src/Assignment.py
Normal file
@@ -0,0 +1,508 @@
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import datetime
|
||||
|
||||
import tkinter
|
||||
import tkinter.ttk
|
||||
|
||||
import tkinter.messagebox
|
||||
import tkinter.scrolledtext
|
||||
from tkinter import *
|
||||
|
||||
# class starts
|
||||
|
||||
|
||||
class HDinfo():
|
||||
# Attributes:
|
||||
# institutionName– a non-public string to store the HD institution name of the applicant.
|
||||
# programmeTitle – a non-public string to store the HD programme name of the applicant.
|
||||
# gpa – a non-public double to store the HD GPA of the applicant.
|
||||
# expectedGradeYear– a non-public int to store the Expected HD Graduation Year of the applicant.
|
||||
|
||||
# Methods:
|
||||
# init – initialize all attributes in HDinfo object. It is a Parameterized constructor.
|
||||
# str – return a string containing the Attributes of HDinfo object. This method is used to display in Summary ScrolledText.
|
||||
|
||||
# constructor __init__
|
||||
def __init__(self, institutionName="", programmeTitle="", gpa="", expectedGraYear=""):
|
||||
self.institutionName = institutionName
|
||||
self.programmeTitle = programmeTitle
|
||||
self.gpa = gpa
|
||||
self.expectedGraYear = expectedGraYear
|
||||
pass
|
||||
|
||||
# __str__ method
|
||||
def __str__(self):
|
||||
return """
|
||||
Higher Diploma Information:
|
||||
Institution Name: {hd_institution_name}
|
||||
Programme Title: {hd_programme_title}
|
||||
GPA: {hd_gpa}
|
||||
Expected Graduation Year: {expectedGraYear}
|
||||
""".strip().format(
|
||||
hd_institution_name=self.institutionName,
|
||||
hd_programme_title=self.programmeTitle,
|
||||
hd_gpa=self.gpa,
|
||||
expectedGraYear=self.expectedGraYear,
|
||||
)
|
||||
|
||||
|
||||
class Applicant():
|
||||
# Attributes:
|
||||
# name – a non-public string to store the name of the applicant.
|
||||
# email – a non-public string to store the email of the applicant.
|
||||
# gender – a non-public string to store the gender of the applicant.
|
||||
# dateOfBirth – a non-public string to store the applicant date of birth.
|
||||
# applyDegreeProgramme – a non-public string to store the applicant selected
|
||||
# degree programme
|
||||
# hdInfo– a non-public HDinfo(self-defined class) to store the applicant Higher
|
||||
# Diploma information
|
||||
|
||||
# Methods:
|
||||
# init – initialize all attributes in Applicant object. It is a Parameterized constructor.
|
||||
# setPeronalInfo – setter method to set the name, email, gender, dateOfBirth, applyDegreeProgrmme into the Applicant object.
|
||||
# setHDinfo – setter method to set the HDinfo object into the Applicant object.
|
||||
# str – return a string containing the Attributes of this Applicant. This function is used to display in Summary ScrolledText.
|
||||
|
||||
# constructor __init__
|
||||
def __init__(self, name="", email="", gender="", dateOfBirth="", applyDegreeProgramme="", hdInfo=HDinfo()):
|
||||
self.name = name
|
||||
self.email = email
|
||||
self.gender = gender
|
||||
self.dateOfBirth = dateOfBirth
|
||||
self.applyDegreeProgramme = applyDegreeProgramme
|
||||
pass
|
||||
|
||||
# Set Personal Info Method
|
||||
def setPeronalInfo(self, name, email, gender, dateOfBirth, applyDegreeProgramme):
|
||||
self.name = name
|
||||
self.email = email
|
||||
self.gender = gender
|
||||
self.dateOfBirth = dateOfBirth
|
||||
self.applyDegreeProgramme = applyDegreeProgramme
|
||||
|
||||
# Set HD Info Method
|
||||
def setHDInfo(self, hd):
|
||||
self.hd = hd
|
||||
pass
|
||||
|
||||
# __str__ method
|
||||
def __str__(self):
|
||||
"""
|
||||
Returns a string representation of the Applicant object.
|
||||
|
||||
Returns:
|
||||
str: A formatted string containing the applicant's name, email, gender, date of birth, and applied degree programme.
|
||||
Also includes a string representation of the Higher Diploma object.
|
||||
"""
|
||||
return """
|
||||
Applicant Name: {applicant_name}
|
||||
Applicant Email: {applicant_email}
|
||||
Gender: {gender}
|
||||
Date of Birth: {DOB}
|
||||
Apply Degree Programme: {applyDegreeProgramme}
|
||||
""".strip().format(
|
||||
applicant_name=self.name,
|
||||
applicant_email=self.email,
|
||||
gender=self.gender,
|
||||
DOB=self.dateOfBirth,
|
||||
applyDegreeProgramme=self.applyDegreeProgramme,
|
||||
) + '\n' + self.hd.__str__()
|
||||
|
||||
|
||||
applicant = Applicant()
|
||||
# class ends
|
||||
|
||||
|
||||
# Tkinter starts
|
||||
|
||||
|
||||
# Parent class for Personal and HighDiploma
|
||||
class ApplicationPage(tkinter.Frame):
|
||||
"""Base class for managed pages. Provides methods to be overridden by subclasses."""
|
||||
|
||||
def __init__(self, master):
|
||||
super().__init__(master)
|
||||
|
||||
def is_complete(self) -> bool:
|
||||
"""Check if the current page is complete."""
|
||||
return True
|
||||
|
||||
|
||||
class Personal(ApplicationPage):
|
||||
|
||||
def __init__(self, master):
|
||||
super().__init__(master)
|
||||
|
||||
frm_base = tkinter.Frame(self)
|
||||
frm_base.pack(fill=tkinter.BOTH, expand=True)
|
||||
|
||||
frm_title = tkinter.Frame(frm_base)
|
||||
frm_title.pack(fill=tkinter.BOTH)
|
||||
|
||||
lbl_title = tkinter.Label(
|
||||
frm_title, text="Personal Infromation", font=("bold", 15))
|
||||
lbl_title.pack(anchor=tkinter.W)
|
||||
|
||||
###
|
||||
# Write your coding here
|
||||
# Frame for the content
|
||||
frm_content = tkinter.Frame(frm_base)
|
||||
frm_content.pack(fill=tkinter.BOTH, expand=True)
|
||||
frm_content.grid_columnconfigure(2, weight=1)
|
||||
|
||||
# Row counter, to advance row in screen
|
||||
row = 0
|
||||
|
||||
# Label for applicant name
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="Applicant Name", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
# Entry box for applicant name
|
||||
self.ent_applicant_name = tkinter.Entry(frm_content)
|
||||
self.ent_applicant_name.insert(0, "")
|
||||
self.ent_applicant_name.grid(
|
||||
row=row, column=1, columnspan=2, sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
# Label for applicant email
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="Applicant Email", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
# Entry box for applicant email
|
||||
self.ent_applicant_email = tkinter.Entry(frm_content)
|
||||
self.ent_applicant_email.insert(0, "")
|
||||
self.ent_applicant_email.grid(
|
||||
row=row, column=1, columnspan=2, sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
# String variable to store the selected gender
|
||||
self.gender_select = tkinter.StringVar(value="Male")
|
||||
|
||||
# Label for gender
|
||||
lbl_gender = tkinter.Label(
|
||||
frm_content, text="Gender", anchor="w", justify="left", width=20)
|
||||
lbl_gender.grid(row=row, column=0)
|
||||
|
||||
# Radio buttons for gender selection
|
||||
rad_male = tkinter.Radiobutton(
|
||||
frm_content, variable=self.gender_select, text="Male", value="Male")
|
||||
rad_male.grid(row=row, column=1)
|
||||
|
||||
rad_female = tkinter.Radiobutton(
|
||||
frm_content, variable=self.gender_select, text="Female", value="Female")
|
||||
rad_female.grid(row=row, column=2)
|
||||
|
||||
row += 1
|
||||
|
||||
# Label for date of birth
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="Date of Birth", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
|
||||
# Entry box for date of birth
|
||||
self.ent_applicant_DOB = tkinter.Entry(frm_content)
|
||||
self.ent_applicant_DOB.insert(0, "")
|
||||
self.ent_applicant_DOB.grid(
|
||||
row=row, column=1, columnspan=2, sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
# Label for apply programme
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="Apply Programme", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
|
||||
# List of programme options and combobox for apply programme
|
||||
lst_programme = ["Bachelor of Science in Cybersecurity",
|
||||
"Bachelor of Science in Computer Science and AI"]
|
||||
self.applicant_programme = tkinter.ttk.Combobox(
|
||||
frm_content, textvariable=lst_programme, values=lst_programme, state="readonly",)
|
||||
self.applicant_programme.current(0)
|
||||
self.applicant_programme.grid(
|
||||
row=row, column=1, columnspan=2, sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
def is_complete(self):
|
||||
|
||||
###
|
||||
# Write your coding here
|
||||
entry_valid = True
|
||||
if self.ent_applicant_name.get() == "":
|
||||
tkinter.messagebox.showinfo("Information", "name cannot empty.")
|
||||
entry_valid = False
|
||||
|
||||
if self.ent_applicant_email.get() == "":
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "email field cannot empty.")
|
||||
entry_valid = False
|
||||
else:
|
||||
# check if email field valid
|
||||
# https://www.geeksforgeeks.org/check-if-email-address-valid-or-not-in-python/
|
||||
if not re.match(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b', self.ent_applicant_email.get()):
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "email: format error, it should be email.")
|
||||
entry_valid = False
|
||||
|
||||
if self.ent_applicant_DOB.get() == "":
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "dob field cannot empty.")
|
||||
entry_valid = False
|
||||
else:
|
||||
# python re to check if yyyy/mm/dd
|
||||
if not re.match(r'^\d{4}/\d{2}/\d{2}$', self.ent_applicant_DOB.get()):
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "DOB format error, it should be yyyy/mm/dd.")
|
||||
entry_valid = False
|
||||
|
||||
# ptyhon to check if the day entered is latter than today
|
||||
today = datetime.date.today()
|
||||
if datetime.datetime.strptime(self.ent_applicant_DOB.get(), '%Y/%m/%d').date() > today:
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "DOB the day enter is latter than today.")
|
||||
entry_valid = False
|
||||
|
||||
if (entry_valid):
|
||||
applicant.setPeronalInfo(
|
||||
self.ent_applicant_name.get(),
|
||||
self.ent_applicant_email.get(),
|
||||
self.gender_select.get(),
|
||||
self.ent_applicant_DOB.get(),
|
||||
self.applicant_programme.get()
|
||||
)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
class HighDiploma(ApplicationPage):
|
||||
def __init__(self, master):
|
||||
super().__init__(master)
|
||||
|
||||
frm_base = tkinter.Frame(self)
|
||||
frm_base.pack(fill=tkinter.BOTH, expand=True)
|
||||
|
||||
frm_title = tkinter.Frame(frm_base)
|
||||
frm_title.pack(fill=tkinter.BOTH)
|
||||
|
||||
lbl_title = tkinter.Label(
|
||||
frm_title, text="Higher Diploma Information", font=("bold", 15))
|
||||
lbl_title.pack(anchor=tkinter.W)
|
||||
|
||||
###
|
||||
# Write your coding here
|
||||
# Content frame for the form entries
|
||||
row = 0 # row counter for the form
|
||||
frm_content = tkinter.Frame(frm_base)
|
||||
frm_content.pack(fill=tkinter.BOTH)
|
||||
frm_content.grid_columnconfigure(2, weight=1)
|
||||
|
||||
# Label and entry for Institution name
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="Institution Name", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
self.ent_institution_name = tkinter.Entry(frm_content)
|
||||
self.ent_institution_name.insert(0, "")
|
||||
self.ent_institution_name.grid(
|
||||
row=row, column=1, columnspan=2, sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
# Label and entry for Programme Title
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="Programme Title", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
self.ent_programme_title = tkinter.Entry(frm_content)
|
||||
self.ent_programme_title.insert(0, "")
|
||||
self.ent_programme_title.grid(
|
||||
row=row, column=1, columnspan=2, sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
# Label and entry for GPA
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="GPA", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
self.ent_GPA = tkinter.Entry(frm_content)
|
||||
self.ent_GPA.insert(0, "")
|
||||
self.ent_GPA.grid(row=row, column=1, columnspan=2,
|
||||
sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
# Label and entry for Expected Graduation Year
|
||||
lbl_name = tkinter.Label(
|
||||
frm_content, text="Expected Graduation Year", anchor="w", justify="left", width=20)
|
||||
lbl_name.grid(row=row, column=0)
|
||||
self.expected_grad_year = tkinter.Entry(frm_content)
|
||||
self.expected_grad_year.insert(0, "")
|
||||
self.expected_grad_year.grid(
|
||||
row=row, column=1, columnspan=2, sticky="nsew", pady=(10, 10), padx=(10, 10))
|
||||
row += 1
|
||||
|
||||
###
|
||||
|
||||
def is_complete(self):
|
||||
###
|
||||
# Write your coding here
|
||||
|
||||
entry_valid = True
|
||||
if self.ent_institution_name.get() == "":
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "institution name field cannot empty.")
|
||||
entry_valid = False
|
||||
if self.ent_programme_title.get() == "":
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "programme title field cannot empty.")
|
||||
entry_valid = False
|
||||
|
||||
if self.ent_GPA.get() == "":
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "GPA field cannot empty.")
|
||||
entry_valid = False
|
||||
else:
|
||||
|
||||
# check if gpa field is a number
|
||||
try:
|
||||
float(self.ent_GPA.get())
|
||||
except ValueError:
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "GPA field should be a number.")
|
||||
entry_valid = False
|
||||
|
||||
if self.expected_grad_year.get() == "":
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "Expected graduation year field cannot empty.")
|
||||
entry_valid = False
|
||||
else:
|
||||
|
||||
# check if gpa field is a number
|
||||
try:
|
||||
int(self.expected_grad_year.get())
|
||||
|
||||
# check if expected grad year is after current year
|
||||
today = datetime.date.today()
|
||||
if int(self.expected_grad_year.get()) < today.year:
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "Expected graduation year should be after current year.")
|
||||
entry_valid = False
|
||||
|
||||
except ValueError:
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "Expected graduation year field should be a number.")
|
||||
entry_valid = False
|
||||
|
||||
hd = HDinfo(
|
||||
self.ent_institution_name.get(),
|
||||
self.ent_programme_title.get(),
|
||||
self.ent_GPA.get(),
|
||||
self.expected_grad_year.get()
|
||||
)
|
||||
|
||||
if (entry_valid):
|
||||
applicant.setHDInfo(hd)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
class Result(ApplicationPage):
|
||||
def __init__(self, master):
|
||||
super().__init__(master)
|
||||
|
||||
frm_base = tkinter.Frame(self)
|
||||
frm_base.pack(fill=tkinter.BOTH, expand=True)
|
||||
|
||||
frm_title = tkinter.Frame(frm_base)
|
||||
frm_title.pack(fill=tkinter.BOTH)
|
||||
|
||||
lbl_title = tkinter.Label(frm_base, text="Summary", font=("bold", 15))
|
||||
lbl_title.pack(anchor=tkinter.W)
|
||||
|
||||
# Summary Output
|
||||
###
|
||||
# Write your coding here
|
||||
row = 0
|
||||
frm_content = tkinter.Frame(frm_base)
|
||||
frm_content.pack(fill=tkinter.BOTH)
|
||||
frm_content.grid_columnconfigure(2, weight=1)
|
||||
|
||||
# textbox for summary
|
||||
self.txt_summary = tkinter.Text(frm_content, height=12)
|
||||
self.txt_summary.grid(row=row, column=1, columnspan=2,
|
||||
sticky="nsew", pady=(1, 1), padx=(1, 1))
|
||||
row += 1
|
||||
|
||||
# right justify button with text "show"
|
||||
btn_show = tkinter.Button(frm_base, text="Show", anchor=tkinter.E)
|
||||
btn_show.pack(side=tkinter.RIGHT)
|
||||
|
||||
# tkinter bind button click
|
||||
btn_show.bind("<Button-1>", self.show)
|
||||
|
||||
###
|
||||
|
||||
def show(self, _): # Show Button method
|
||||
###
|
||||
# Write your coding here
|
||||
self.txt_summary.insert(tkinter.INSERT, str(applicant))
|
||||
###
|
||||
|
||||
|
||||
class Application(tkinter.Tk):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
# Configure GUI
|
||||
self.title("Undergraduate Application Form")
|
||||
self.geometry("450x300")
|
||||
|
||||
# Content Frame
|
||||
frm_content = tkinter.Frame(self, relief=tkinter.RIDGE, borderwidth=1)
|
||||
frm_content.pack(fill=tkinter.BOTH, expand=True)
|
||||
frm_content.rowconfigure(0, weight=1)
|
||||
frm_content.columnconfigure(0, weight=1)
|
||||
|
||||
# Application Pages
|
||||
self.__frames: list[ApplicationPage] = [
|
||||
Personal(frm_content),
|
||||
HighDiploma(frm_content),
|
||||
Result(frm_content),
|
||||
]
|
||||
for i in self.__frames:
|
||||
i.grid(row=0, column=0, sticky=tkinter.NSEW)
|
||||
self.__current_page = 0
|
||||
self.__frames[self.__current_page].tkraise()
|
||||
|
||||
# Bottom Frame
|
||||
frm_button = tkinter.Frame(self, padx=4, pady=4)
|
||||
frm_button.pack(side=tkinter.BOTTOM, fill=tkinter.X)
|
||||
|
||||
# Next Button
|
||||
self.btn_next = tkinter.Button(
|
||||
frm_button, text="Next", command=self.next_page)
|
||||
self.btn_next.pack(side=tkinter.RIGHT)
|
||||
|
||||
# Quit Button
|
||||
self.btn_quit = tkinter.Button(
|
||||
frm_button, text="Quit", command=self.destroy)
|
||||
|
||||
def next_page(self):
|
||||
# Check if the current page is complete
|
||||
if not self.__frames[self.__current_page].is_complete():
|
||||
tkinter.messagebox.showinfo(
|
||||
"Information", "Please fill the missing fields."
|
||||
)
|
||||
return
|
||||
|
||||
# Navigate to next page
|
||||
self.__current_page += 1
|
||||
self.__frames[self.__current_page].tkraise()
|
||||
|
||||
# If we reached the last page, replace the next button with quit button
|
||||
if self.__current_page + 1 == len(self.__frames):
|
||||
self.btn_next.pack_forget()
|
||||
self.btn_quit.pack(side=tkinter.RIGHT)
|
||||
# Tkinter ends
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = Application()
|
||||
app.mainloop()
|
10
hdhdjshxh/task2/project/src/test.bat
Normal file
10
hdhdjshxh/task2/project/src/test.bat
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
@REM rm *.bas
|
||||
@REM rm *.frm
|
||||
@REM rm *.frx
|
||||
@REM timeout 1
|
||||
|
||||
:loop
|
||||
python ./Assignment.py
|
||||
timeout /t 1
|
||||
goto loop
|
BIN
hdhdjshxh/task2/project/test_report.docx
Normal file
BIN
hdhdjshxh/task2/project/test_report.docx
Normal file
Binary file not shown.
Reference in New Issue
Block a user