C语言设备管理系统
1 需求分析
1.1 系統(tǒng)功能簡(jiǎn)述
設(shè)備管理系統(tǒng)包含各種設(shè)備的全部信息,每臺(tái)設(shè)備為一種記錄,包括設(shè)備編號(hào),設(shè)備名稱,設(shè)備型號(hào),設(shè)備廠家,設(shè)備購(gòu)買(mǎi)日期等。能夠顯示和統(tǒng)計(jì)各種設(shè)備信息。
1.2 需求規(guī)格
1.2.1 功能需求
系統(tǒng)功能列表如表1.1所示。
表1.1 系統(tǒng)功能列表
| 功能編號(hào) | 功能名稱 | 功能描述 |
| 1 | ?????系統(tǒng)登陸 | 根據(jù)驗(yàn)證碼輸入用戶名和密碼 |
| 2 | 功能選擇 | 為用戶提供進(jìn)行功能選擇的界面。功能選擇包括設(shè)備信息錄入、設(shè)備信息查詢、設(shè)備信息修改、設(shè)備信息刪除、維修記錄管理、設(shè)備信息管理系統(tǒng)制作人信息、推出 |
| 3 | 設(shè)備信息錄入 | 設(shè)備編號(hào)錄入、設(shè)備名稱錄入、設(shè)備型號(hào)錄入、設(shè)備廠家錄入、設(shè)備購(gòu)買(mǎi)日期錄入 |
| 4 | 設(shè)備信息更改 | 設(shè)備編號(hào)更改、設(shè)備名稱更改、設(shè)備型號(hào)更改、設(shè)備廠家更改、設(shè)備購(gòu)買(mǎi)日期更改 |
| 5 | 設(shè)備信息刪除 | 選擇編號(hào)進(jìn)行設(shè)備信息刪除 |
| 6 | 設(shè)備查找 | 根據(jù)編號(hào)信息進(jìn)行設(shè)備查找 |
| 7 | 維修記錄管理 | 進(jìn)行維修操作的記錄或查找 |
| 8 | 顯示所有設(shè)備 | 顯示系統(tǒng)所錄入的所有設(shè)備信息 |
| 9 | 關(guān)于 | 顯示管理系統(tǒng)制作人的各種信息 |
| 10 | 退出 | 按任意鍵退出系統(tǒng) |
2.2 總體設(shè)計(jì)
2.1.1 系統(tǒng)結(jié)構(gòu)
說(shuō)明系統(tǒng)模塊劃分情況。如圖。
2.1.2 處理流程
說(shuō)明系統(tǒng)處理流程。如圖2.2所示。
圖2.2 系統(tǒng)處理流程圖
2.2 接口設(shè)計(jì)?
2.2.1 用戶接口
說(shuō)明將向用戶提供的命令和它們的語(yǔ)法結(jié)構(gòu),以及軟件的回答信息,一般為用戶界面設(shè)計(jì),可用圖表示。
1.用戶登錄界面如圖2.3所示
圖2.3 系統(tǒng)登錄界面
?2.?用戶登入界面如圖2.4所示
圖2.4 用戶登入界面
3.設(shè)備信息錄入如圖2.5所示
?圖2.5 設(shè)備信息錄入界面
4.設(shè)備信息更改如圖2.6所示
?圖2.6 設(shè)備信息更改界面
5.設(shè)備查找如圖2.7所示
?圖2.7 設(shè)備查找界面
6.維修記錄管理如圖2.8和2.9和3.0所示
圖2.8
圖2.9?維修記錄頁(yè)面
圖3.0?維修查找頁(yè)面
?7.設(shè)備顯示如圖3.1所示
圖3.2?所有設(shè)備信息顯示頁(yè)面
?8.相關(guān)信息
?9.信心刪除界面如圖3.4所示
圖3.4?信息刪除頁(yè)面
2.2.2 外部接口
說(shuō)明本系統(tǒng)同外界的所有接口,包括軟件與硬件之間的接口、本系統(tǒng)與各支持軟件之間的接口關(guān)系。
在myfile.txt中建立或更改增加刪除信息。
2.2.3 內(nèi)部接口
說(shuō)明本系統(tǒng)之內(nèi)的各個(gè)系統(tǒng)元素之間的接口的安排,如函數(shù)接口。如表2.1所示。
表2.1 內(nèi)部接口
| 函數(shù)編號(hào) | 函數(shù)定義 | 函數(shù)說(shuō)明 |
| 1 | void RandomCode (char Rcode[]) | 隨機(jī)碼產(chǎn)生函數(shù) |
| 2 | int LandedApp (char *password[], char Rcode[]) | 登陸函數(shù) |
| 3 | void fprintE(Equipment *head)? | 輸出到文件 |
| 4 | void addEquipment(Equipment *head)? | 添加設(shè)備 |
| 5 | void deleteEquipment(Equipment *head,int num)? | 刪除設(shè)備信息 |
| 6 | void changeEquipment(Equipment *head,int num)? | 更新設(shè)備信息 |
| 7 | void findEquipment() | 設(shè)備信息查找 |
| 8 | Equipment* fscanE() | 讀取設(shè)備信息 |
| 9 | void repairEquipment() ??? | 維修信息管理 |
| 10 | void printList(Equipment *head)? | 輸出設(shè)備信息列表 |
| 11 | int checkNum(Equipment *head, int num) | 檢查設(shè)備信息 |
3.1 系統(tǒng)主控模塊設(shè)計(jì)
本模塊的主要功能是為用戶顯示選項(xiàng)功能。
具體算法如下:
puts ("\n成功登陸!\n\n");system("cls");Equipment *head = (Equipment*)malloc(sizeof(Equipment));head->next = NULL;int num = -1;while(num!=0){printf("\n\n\t◢█◣◢█◣\t~~~~~~~~歡迎進(jìn)入實(shí)驗(yàn)室設(shè)備管理系統(tǒng)!~~~~~~~\n");printf("\t██████\n");printf("\t◥████◤\n");printf("\t ◥██◤\n");printf("\t ◥◤\n");printf("\n\t\t~~~~~~~~~~請(qǐng)輸入您選擇的操作(0~7):~~~~~~~~~~~~~~\n");printf("\t\t1.設(shè)備信息錄入\t2.設(shè)備信息更改\t");printf("\t3.設(shè)備信息刪除\n\t\t4.設(shè)備查找\t5.維修記錄管理\t\t6.顯示所有設(shè)備\n\t\t7.關(guān)于\t\t0.退出\n");printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");system("color E9"); Sleep(5000);3.2 用戶注冊(cè)模塊設(shè)計(jì)
本模塊的主要功能是:?讓用戶輸入用戶名以及密碼,并為了安全起見(jiàn),需要輸入隨機(jī)碼進(jìn)行驗(yàn)證。若用戶名密碼以及隨機(jī)碼輸入正確,則進(jìn)行下一步,若輸入錯(cuò)誤三次之后自動(dòng)退出程序。
具體算法如下:
void RandomCode (char Rcode[]) /*隨機(jī)碼產(chǎn)生函數(shù)*/ { int i; srand ((unsigned int)time(NULL)); for (i = 0; i < 3; ++i) Rcode[i] = rand()%10 + '0'; Rcode[i] = '\0'; } /*登陸函數(shù),判斷信息是否匹配,若匹配返回bai1,否則返回0*/ int LandedApp (char *password[], char Rcode[]) { char name[10] = {0}; char pword[10] = {0}; char rcode[4] = {0}; printf ("用戶名 : "); gets (name); printf ("密碼 : "); gets (pword); printf ("隨機(jī)碼 : "); gets (rcode); if (strcmp (name, password[0]) != 0 || strcmp (pword, password[1]) != 0 || strcmp (rcode, Rcode) != 0) return 0; else return 1; } char * password[2] = {"admin", "admin123"}; //用戶名和密碼char rc[4] = {0}; //隨機(jī)碼int count = 3; //可輸入次數(shù)system("color E9"); puts("\t\t\t\t\t▼▼▼▼▼▼▼▼▼▼▼▼▼");puts ("\n\t\t\t\t\t請(qǐng)輸入用戶名,密碼和隨機(jī)碼:");while (count){RandomCode (rc);printf ("\t\t\t\t\t隨機(jī)碼 : %s\n\n", rc);puts("\t\t\t\t\t▲▲▲▲▲▲▲▲▲▲▲▲▲");if (LandedApp(password, rc) != 0)break;--count;if (count != 0)puts ("\n\t\t\t\t錯(cuò)誤的用戶名或密碼或隨機(jī)碼,請(qǐng)重新輸入: ");}輸入隨機(jī)驗(yàn)證碼進(jìn)行驗(yàn)證,若三次驗(yàn)證失敗則退出系統(tǒng)
void RandomCode (char Rcode[]) ???/*隨機(jī)碼產(chǎn)生函數(shù)*/
int LandedApp (char *password[], char Rcode[])???//登錄函數(shù)
3.3 輸出模塊設(shè)計(jì)
本模塊的主要功能是:文件的輸入輸出,錄入設(shè)備各種信息
具體算法如下:
//輸出到文件 void addEquipment(Equipment *head){Equipment *tail = head;while(tail->next!=NULL) tail = tail->next;Equipment *newnode = (Equipment*)malloc(sizeof(Equipment));printf("請(qǐng)輸入設(shè)備編號(hào):");scanf("%d",&newnode->num);if(checkNum(head,newnode->num)){printf("輸入編號(hào)已有,輸入失敗!\n");return;}printf("請(qǐng)輸入設(shè)備名稱:");scanf("%s",&newnode->name);printf("\n請(qǐng)輸入設(shè)備型號(hào):");scanf("%s",&newnode->model);printf("\n請(qǐng)輸入設(shè)備廠家:");scanf("%s",&newnode->factory);printf("\n請(qǐng)輸入設(shè)備購(gòu)買(mǎi)日期:");scanf("%s",&newnode->buy_date);tail->next = newnode;newnode->next = NULL;fprintE(head);printf("錄入成功!\n"); }3.4 輸入模塊設(shè)計(jì)
本模塊的主要功能是:設(shè)備信息的輸入
具體算法如下:
//輸入 void fprintE(Equipment *head){FILE *fp=fopen("data.txt","w");Equipment *current = head->next;while(current){fprintf(fp,"%d\n",current->num);fprintf(fp,"%s\n",current->name);fprintf(fp,"%s\n",current->model);fprintf(fp,"%s\n",current->factory);fprintf(fp,"%s\n",current->buy_date);current = current->next;}fclose(fp); }3.5 刪除模塊設(shè)計(jì)
本模塊的主要功能是:設(shè)備信息的確認(rèn)和刪除,先確認(rèn)查找的設(shè)備信息是否存在,若存在則根據(jù)需求進(jìn)行信息刪除,若不存在則進(jìn)行錯(cuò)誤提示。
具體算法如下:
//刪除 void deleteEquipment(Equipment *head,int num){if(head->next==NULL){printf("沒(méi)有設(shè)備!請(qǐng)先錄入設(shè)備! \n");return;}Equipment *current = head;Equipment *current_next = current->next;while(current_next){if(current_next->num==num){current->next = current_next->next;printf("刪除成功! \n");fprintE(head);return;}current = current->next;current_next = current_next->next;}printf("刪除失敗,沒(méi)有找到設(shè)備編號(hào)! \n"); }3.6 更新模塊設(shè)計(jì)
本模塊的主要功能是:設(shè)備信息的更新,先進(jìn)行設(shè)備信息的查找確認(rèn)是否存在,若存在則修改曾經(jīng)信息;若查找信息不存在則進(jìn)行錯(cuò)誤提示。
具體算法如下:
//更新 void changeEquipment(Equipment *head,int num){if(head->next==NULL){printf("沒(méi)有設(shè)備!請(qǐng)先錄入設(shè)備! \n");return;}Equipment *current = head->next;while(current && (current->num!=num)){current = current->next;}if(current!=NULL){printf("請(qǐng)輸入更新后的數(shù)據(jù):");printf("\n請(qǐng)輸入設(shè)備編號(hào):");scanf("%d",¤t->num);printf("\n請(qǐng)輸入設(shè)備名稱:");scanf("%s",¤t->name);printf("\n請(qǐng)輸入設(shè)備型號(hào):");scanf("%s",¤t->model);printf("\n請(qǐng)輸入設(shè)備廠家:");scanf("%s",¤t->factory);printf("\n請(qǐng)輸入設(shè)備購(gòu)買(mǎi)日期:");scanf("%s",¤t->buy_date);fprintE(head);}else{printf("操作失敗,沒(méi)有找到設(shè)備編號(hào)! \n");} }3.7 查找模塊設(shè)計(jì)
本模塊的主要功能是:設(shè)備信息的查找,輸入相關(guān)信息的編號(hào)進(jìn)行設(shè)備信息全顯示。
具體算法如下:
//查找 void findEquipment(){Equipment *head = fscanE();if(head->next==NULL){printf("沒(méi)有設(shè)備!請(qǐng)先錄入設(shè)備! \n");return;}int num;printf("請(qǐng)輸入查找設(shè)備的編號(hào):");scanf("%d",&num);while(head){if(head->num==num){printf("編號(hào)為%d的信息為:\n",num);printf("編號(hào):%d\n",head->num);printf("名稱:%s\n",head->name);printf("型號(hào):%s\n",head->model);printf("廠家:%s\n",head->factory);printf("生產(chǎn)日期:%s\n",head->buy_date);return;}head = head->next;}printf("查找失敗,沒(méi)有找到設(shè)備編號(hào)! \n");}3.8 文件讀取模塊設(shè)計(jì)
本模塊的主要功能是:從文件中讀取所儲(chǔ)存的設(shè)備信息。
具體算法如下:
//從文件讀取設(shè)備信息 Equipment* fscanE(){Equipment *head1 = (Equipment*)malloc(sizeof(Equipment));head1->next = NULL;Equipment *current = head1;FILE *fp = fopen("data.txt","r");while(!feof(fp)){Equipment *newnode = (Equipment*)malloc(sizeof(Equipment));fscanf(fp,"%d\n",&newnode->num);fscanf(fp,"%s\n",newnode->name);fscanf(fp,"%s\n",newnode->model);fscanf(fp,"%s\n",newnode->factory);fscanf(fp,"%s\n",newnode->buy_date);current->next = newnode;newnode->next = NULL;current = current->next;}fclose(fp);return head1; }3.9 信息全輸出模塊設(shè)計(jì)
本模塊的主要功能是:設(shè)備信息全輸出,先輸入編號(hào)進(jìn)行查找,若存在此信息,則輸出全信息,若不存在,則進(jìn)行錯(cuò)誤提示。?
具體算法如下:
//輸出 void printList(Equipment *head){if(head->next==NULL){printf("沒(méi)有設(shè)備,請(qǐng)先錄入設(shè)備! ");return;}Equipment *current = head->next;printf("--☆-★--☆-★--☆-☆--★-☆--★-☆--★---☆-★--☆-★--☆-☆\n\n");printf(" 編號(hào) 名稱 型號(hào) 廠家 生產(chǎn)日期 \n");while(current){printf("\t%d\t%s\t%s\t%s\t%s\n",current->num,current->name,current->model,current->factory,current->buy_date);current = current->next;}printf("--☆-★--☆-★--☆-☆--★-☆--★-☆--★---☆-★--☆-★--☆-☆\n\n"); }設(shè)備管理系統(tǒng)正確地實(shí)現(xiàn)了所要求的功能:用戶界面友好;程序運(yùn)行速度快,具有較高的可靠性;程序易讀,結(jié)構(gòu)清晰,具有良好的可擴(kuò)展性。
當(dāng)然系統(tǒng)仍然存在一些不足之處:檢索功能不夠完善,整體界面不夠美觀,背景只有單調(diào)的顏色,沒(méi)有動(dòng)畫(huà)效果這些都有待進(jìn)一步地開(kāi)放和實(shí)現(xiàn)。
通過(guò)本次項(xiàng)目實(shí)習(xí),不僅鞏固和掌握了C語(yǔ)言的知識(shí),數(shù)據(jù)結(jié)構(gòu)的知識(shí),結(jié)構(gòu)化程序設(shè)計(jì)的思想,而且對(duì)軟件開(kāi)發(fā)的過(guò)程有了一定的感性認(rèn)識(shí)。
代碼我放進(jìn)文件,需要可以自取
基于C語(yǔ)言的設(shè)備管理系統(tǒng).zip-C/C++文檔類(lèi)資源-CSDN下載
總結(jié)
- 上一篇: 机载激光雷达原理与应用科普(十一)
- 下一篇: java信息管理系统总结_java实现科