您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)C語言如何實(shí)現(xiàn)財(cái)務(wù)管理系統(tǒng),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
具體內(nèi)容如下
包括
1.錄入班級(jí)成員信息
2.排序
3.修改學(xué)生信息
4.刪除指定學(xué)號(hào)學(xué)生
5.查找學(xué)生
6.添加財(cái)務(wù)信息
7.查詢?cè)敿?xì)表
8.顯示所有學(xué)生信息
9.退出
詳細(xì)事項(xiàng):本系統(tǒng)包括管理員登錄和普通同學(xué)登錄,兩種登錄方式的權(quán)限不一樣,例如:同學(xué)登錄只能修改自己學(xué)號(hào)的信息。初次使用(本地文件為空)需要初始化系統(tǒng)。每次使用完一個(gè)功能,會(huì)自動(dòng)返回主函數(shù)。使用時(shí)需要注意本地文件是否齊全,包括:student.txt(儲(chǔ)存學(xué)生信息),account.txt(儲(chǔ)存財(cái)務(wù)信息),zh2.txt(儲(chǔ)存賬戶信息),zh3.txt(儲(chǔ)存賬戶信息),file2.txt(儲(chǔ)存密碼信息),file1.txt(儲(chǔ)存密碼信息)。本代碼使用鏈表和文件系系統(tǒng)。本代碼只是抱磚引玉。
/*首次使用,進(jìn)行系統(tǒng)初始化 */ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<stdbool.h> #include<windows.h> #include<conio.h> char password[9]; //記錄密碼 char password2[9]; //記錄密碼 int log; //登錄狀態(tài)函數(shù) int ac; struct student { char num[15]; //學(xué)號(hào) char name[20]; //姓名 char sex; //性別 int age; //年齡 int clas; //班級(jí) char mail[20]; //郵箱 char number[13]; //電話號(hào)碼 }; typedef struct node{ //定義一個(gè)結(jié)構(gòu)體 struct student data; struct node *next; }s; void in(s *head); //信息的讀取 void menu(); //菜單函數(shù) void add(s *head); //錄入函數(shù) void dele(s *head); //刪除函數(shù) void mod(s *head); //修改函數(shù) void query(s *head); //查詢函數(shù) void sort(s *head); //排序函數(shù) void account(); //財(cái)務(wù)收入 void print() ; //顯示總財(cái)務(wù) void printall(); //顯示所有學(xué)生信息 void out(s *head); //信息的存儲(chǔ) void in(s *head) { FILE *fp; s *p; fp = fopen("student.txt","r"); while (!feof(fp)) { p= (s*)malloc(sizeof(s)); fscanf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,&p->data.sex,&p->data.age,&p->data.clas,p->data.mail,p->data.number); p->next=NULL; s *last=head->next; if(last!=NULL){ //當(dāng)鏈表不為空時(shí) ,才可以讓last=head while(last->next){ //當(dāng)last不為空時(shí) ,當(dāng)while結(jié)束時(shí),這個(gè)last指向的就是最后一個(gè)結(jié)點(diǎn) last=last->next; } last->next=p; }else{ head->next=p; //鏈表為空 } } fclose(fp); } void out(s *head) { s *p; FILE *fp; if((fp=fopen("student.txt","w"))==NULL){ printf("File open error!\n"); exit(0); } for(p=head->next;p;p=p->next) //把學(xué)生信息存進(jìn)文件中 fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); fclose(fp); } void menu() { char ch[6],*m,ch3; system("cls"); /*實(shí)現(xiàn)清屏操作,即清除之前輸入的東西*/ s *head=(s*)malloc(sizeof(s)); head->next=NULL; int i; if(log==1) { printf("1.錄入班級(jí)成員信息\n"); printf("2.排序\n"); printf("3.修改學(xué)生信息\n"); printf("4.刪除指定學(xué)號(hào)學(xué)生\n"); printf("5.查找學(xué)生\n"); printf("6.添加財(cái)務(wù)信息\n"); printf("7.查詢?cè)敿?xì)表\n"); printf("8.顯示所有學(xué)生信息\n"); printf("9.退出\n"); for(i=1;i<=50;i++) //分割線 printf("-"); printf("\n請(qǐng)選擇(可多選):"); scanf("%s",ch); m=ch; for(;*m!='\0';m++) //用數(shù)組指針實(shí)現(xiàn)多函數(shù)操作 { switch(*m){ case '1':system("cls");add(head);break; case '2':system("cls");sort(head);break; case '3':system("cls");mod(head);break; case '4':system("cls");dele(head);break; case '5':system("cls");query(head);break; case '6': account();break; case '7': print();break; case '8':printall();break; case '9':exit(0); } } system("cls"); } if(log==2) { printf("因?yàn)闄?quán)限問題,您只能使用一下功能\n"); printf("3.修改學(xué)生信息\n"); printf("4.查詢信息\n"); printf("6.添加財(cái)務(wù)信息\n"); printf("7.查詢?cè)敿?xì)表\n"); printf("8.顯示所有學(xué)生信息\n"); printf("9.退出\n"); for(i=1;i<=50;i++) //分割線 printf("-"); printf("\n請(qǐng)選擇(可多選):"); scanf("%s",ch); m=ch; for(;*m!='\0';m++) //用數(shù)組指針實(shí)現(xiàn)多函數(shù)操作 { switch(*m){ case '3':system("cls");mod(head);break; case '4':system("cls");dele(head);break; case '6': account();break; case '7': print();break; case '8':printall();break; case '9':return; } } system("cls"); } } void add(s *head) { //錄入函數(shù) FILE *fp; int i,temp=0,sum; //temp用來標(biāo)記郵箱 sum用來標(biāo)記電話號(hào)碼的位數(shù) int x; system("cls"); s *p; do{ p=(s*)malloc(sizeof(s)); //申請(qǐng)一個(gè)內(nèi)存; printf("請(qǐng)輸入學(xué)號(hào):\n"); scanf("%s",p->data.num); //獲取學(xué)號(hào) s *q; q=head->next; //指針指向下一個(gè) while(q!=NULL){ //p已經(jīng)指向尾部了,所以要定義一個(gè)別的指針來做for循環(huán)遍歷 if(strcmp(p->data.num,q->data.num)==0){ getchar(); printf("學(xué)號(hào)重復(fù),請(qǐng)重新輸入:\n"); scanf("%s",p->data.num); } q=q->next; } getchar(); printf("\n請(qǐng)輸入姓名:\n"); scanf("%s",p->data.name); getchar(); printf("\n請(qǐng)輸入性別(男生填m,女生填w):\n"); scanf("%c",&p->data.sex); while(1){ if((p->data.sex=='w')||(p->data.sex=='m')) break; else{ getchar(); //要在每一項(xiàng)輸入之后,讀入任意一個(gè)字符才能下一步操作 printf("性別符號(hào)輸入錯(cuò)誤,請(qǐng)重新輸入:\n"); //防止出入其他符號(hào) scanf("%c",&p->data.sex); } } getchar(); printf("\n請(qǐng)輸入年齡:\n"); scanf("%d",&p->data.age); getchar(); printf("\n請(qǐng)?zhí)钊氚嗉?jí),僅數(shù)字:\n"); scanf("%d",&p->data.clas); getchar(); printf("\n請(qǐng)輸入郵箱(必須有@):\n"); scanf("%s",p->data.mail); while(1){ for(i=0;p->data.mail[i]!='\0';i++){ if(p->data.mail[i]=='@'){ temp=1; } } if(temp==0){ printf("郵箱中不包含@,請(qǐng)重新輸入:\n"); scanf("%s",p->data.mail); }else break; } getchar(); printf("\n請(qǐng)輸入電話號(hào)碼,必須是11位:\n"); scanf("%s",p->data.number); while(1){ sum=0; for(i=0;p->data.number[i]!='\0';i++){ sum+=1; } if(sum!=11){ getchar(); printf("號(hào)碼位數(shù)超過11位或者少于11位,請(qǐng)重新輸入:\n"); scanf("%s",p->data.number); }else break; } p->next=NULL; s *last=head->next; if(last!=NULL){ //當(dāng)鏈表不為空時(shí) ,才可以讓last=head while(last->next){ //當(dāng)last不為空時(shí) ,當(dāng)while結(jié)束時(shí),這個(gè)last指向的就是最后一個(gè)結(jié)點(diǎn) last=last->next; } last->next=p; }else{ head->next=p; //鏈表為空 } getchar(); printf("\n是否還要繼續(xù)錄入,是請(qǐng)輸入1,否請(qǐng)輸入0\n"); scanf("%d",&x); if(x==0) break; if(x==1) system("cls"); //清空屏幕 }while(1); if((fp=fopen("student.txt","a"))==NULL){ printf("File open error!\n"); exit(0); } for(p=head->next;p;p=p->next) //把學(xué)生信息存進(jìn)文件中 fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); fclose(fp); printf("\n信息已經(jīng)存入文件\n"); system("pause"); s *k; p=head->next; while(p!=NULL){ //清空鏈表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; if(x==0) menu(); } void dele(s *head) { //刪除函數(shù) int temp=0,i,flag2; in(head); //信息的讀取 s *p,*q; char numb[15]; FILE *fpw=fopen("tmp.txt","w"); char ch2; ch2='-'; system("cls"); printf("請(qǐng)輸入學(xué)號(hào):"); scanf("%s",numb); for(q=head,p=head->next;p;q=p,p=p->next){ //遍歷鏈表,條件是p存在 if(strcmp(numb,p->data.num)==0){ temp=1; system("cls"); printf("學(xué)生信息如下:"); printf("學(xué)號(hào):%s\n",p->data.num); printf("姓名:%s\n",p->data.name); printf("性別:%c\n",p->data.sex); printf("年齡:%d\n",p->data.age); printf("班級(jí):%d\n",p->data.clas); printf("郵箱:%s\n",p->data.mail); printf("電話號(hào)碼:%s\n",p->data.number); for(i=1;i<=50;i++){ //分割線 printf("%c",ch2); } printf("\n"); printf("是否要?jiǎng)h除此學(xué)生信息?(1或2)\n"); scanf("%d",&flag2); if(flag2==2) { printf("取消刪除,三秒后返回主菜單"); Sleep(3000); menu(); } if(flag2==1){ if(q){ q->next=p->next; //將前一個(gè)指針指向要?jiǎng)h除的后一個(gè)結(jié)點(diǎn) out(head); } else{ head->next=p->next; out(head); } free(p); printf("信息已刪除"); printf("三秒后返回主菜單"); Sleep(3000); menu(); } } } if(temp==1){ //如果temp等于一說明信息已經(jīng)刪除,把改過后的鏈表重新寫入文件中 out(head); } if(temp==0){ //沒有找到學(xué)生的信息 for(i=1;i<=50;i++) printf("%c",ch2); printf("\n沒有找到此學(xué)生信息,按任意鍵退出\n"); printf("三秒后返回主菜單"); Sleep(3000); menu(); } s *k; p=head->next; while(p!=NULL){ //清空鏈表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; } void mod(s *head) { //修改函數(shù) int nums; FILE *fp; system("cls"); //清空屏幕 s *p,*q; //作為鏈表中的指針 in(head); char *m; //用來控制修改的信息編號(hào) int temp=0; int i,sui,ban,j=1;//代表修改的年齡班級(jí) char num1[15]; char ch[8]; char xuehao[15],ming[20],xingbie,youxiang[20],haoma[20];//代表要修改的信息名 printf("請(qǐng)輸入要修改的學(xué)生的學(xué)號(hào):\n"); getchar(); scanf("%s",num1); nums= atoi(num1); // printf("%d",nums); if(log==2) { if(nums != ac) { while(j) { printf("您只能修改自己的信息,請(qǐng)輸入正確信息"); scanf("%s",num1); nums= atoi(num1); if(ac==nums) { j=0; } } } } for(p=head->next;p;p=p->next){ //遍歷列表,尋找與輸入相同的學(xué)號(hào) if(strcmp(num1,p->data.num)==0){ temp=1; //找到信息后的標(biāo)記 printf("1.學(xué)號(hào):%s\n",p->data.num); //找到后顯示出完整信息 printf("2.姓名:%s\n",p->data.name); printf("3.年齡:%d\n",p->data.age); printf("4.班級(jí):%d\n",p->data.clas); printf("5.郵箱:%s\n",p->data.mail); printf("6.電話號(hào)碼:%s\n",p->data.number); printf("0.退出\n"); for(i=1;i<=50;i++){ //分割線 printf("-"); } printf("\n"); printf("請(qǐng)輸入要修改信息的相應(yīng)序號(hào)(可多選):\n"); scanf("%s",ch); getchar(); m=ch; for(;*m!='\0';m++){ //用循環(huán)來解決修改多個(gè)學(xué)生信息的問題 switch(*m){ case '1':printf("請(qǐng)輸入要修改學(xué)號(hào)的內(nèi)容:\n"); scanf("%s",xuehao); strcpy(p->data.num,xuehao);break; case '2':printf("\n請(qǐng)輸入要修改姓名的內(nèi)容:\n"); scanf("%s",ming); strcpy(p->data.name,ming);break; case '3':printf("\n請(qǐng)輸入要修改年齡的內(nèi)容:\n"); scanf("%d",&sui); p->data.age=sui;break; case '4':printf("\n請(qǐng)輸入要修改班級(jí)的內(nèi)容:\n"); scanf("%d",&ban); p->data.clas=ban;break; case '5':printf("\n請(qǐng)輸入要修改郵箱的內(nèi)容:\n"); scanf("%s",youxiang); strcpy(p->data.mail,youxiang);break; case '6':printf("\n請(qǐng)輸入要修改電話號(hào)碼的內(nèi)容:\n"); scanf("%s",haoma); strcpy(p->data.number,haoma);break; case '0':break; } } getchar(); printf("修改后的信息如下:\n"); printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);//輸出修改后的信息 system("pause");//防止閃屏 } } if(temp==1){ //如果temp等于一說明信息已經(jīng)刪除,把改過后的鏈表重新寫入文件中 out(head); } if(temp==0){ //沒找到學(xué)生信息 printf("沒有此學(xué)生的信息\n"); system("pause"); } s *k; p=head->next; while(p!=NULL){ //清空鏈表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; printf("三秒后返回主菜單"); Sleep(3000); menu(); } void query(s *head) { //查詢函數(shù) s *p; //p用來遍歷查找的內(nèi)容 in(head); p=head->next; system("cls"); int i,sui,ban,temp=0; //temp用來標(biāo)記是否找到信息 char ch; char xuehao[15],ming[20],xingbie,youxiang[20],haoma[20]; //用來輸入查找的信息 printf("1.學(xué)號(hào)\n"); printf("2.姓名\n"); printf("3.年齡\n"); printf("4.班級(jí)\n"); printf("5.郵箱\n"); printf("6.電話號(hào)碼\n"); printf("7.顯示所有學(xué)生的信息\n"); printf("0.退出\n"); for(i=1;i<=50;i++){ printf("-"); //分割線 } printf("\n"); printf("請(qǐng)選擇輸入要查詢的信息編號(hào):\n"); getchar(); ch=getchar(); if(ch=='1'){ getchar(); printf("請(qǐng)輸入要查找的信息內(nèi)容:\n"); scanf("%s",xuehao); temp=1; while(p){ if(strcmp(xuehao,p->data.num)==0){ //找到的話輸出 printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='2'){ getchar(); printf("請(qǐng)輸入要查找的信息內(nèi)容:\n"); scanf("%s",ming); temp=1; while(p){ if(strcmp(ming,p->data.name)==0){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='3'){ getchar(); printf("請(qǐng)輸入要查找的信息內(nèi)容:\n"); scanf("%c",&xingbie); temp=1; while(p){ if(xingbie==p->data.sex){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='4'){ getchar(); printf("請(qǐng)輸入要查找的信息內(nèi)容:\n"); scanf("%d",&sui); temp=1; while(p){ if(sui==p->data.age){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='5'){ getchar(); printf("請(qǐng)輸入要查找的信息內(nèi)容:\n"); scanf("%d",&ban); temp=1; while(p){ if(ban==p->data.clas){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='6'){ getchar(); printf("請(qǐng)輸入要查找的信息內(nèi)容:\n"); scanf("%s",youxiang); temp=1; while(p){ if(strcmp(youxiang,p->data.name)==0){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='7'){ getchar(); printf("請(qǐng)輸入要修查找的信息內(nèi)容:\n"); scanf("%s",haoma); temp=1; while(p){ if(strcmp(haoma,p->data.name)==0){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='8'){ getchar(); temp=1; while(p){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); p=p->next; } } if(temp==0) { printf("沒有找到此學(xué)生的信息\n"); printf("三秒后返回主菜單"); Sleep(3000); menu(); } s *k; p=head->next; while(p!=NULL){ //清空鏈表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; printf("查詢完畢\n"); printf("三秒后返回主菜單"); Sleep(3000); menu(); } void sort(s *head) { //排序函數(shù) system("cls"); //清空屏幕 s *p,*q; in(head); q=head; p=head->next; s *w; w=head->next; char ch; printf("請(qǐng)輸入要排序的內(nèi)容(1是學(xué)號(hào)、2是年齡):\n"); getchar(); scanf("%c", &ch); if (ch == '1'){ s *temp = (s*)malloc(sizeof(s)); while (p != NULL) { while (p->next != NULL) //按照學(xué)號(hào)大小排序 { if (strcmp(p->data.num, p->next->data.num)<0) { temp->data = p->data; p->data = p->next->data; p->next->data = temp->data; } p = p->next; } p = q->next; q = p; } } else{ s *temp = (s*)malloc(sizeof(s)); while (p != NULL) { while (p->next != NULL) //按照年齡大小排序 { if (p->data.age < p->next->data.age) { temp->data = p->data; p->data = p->next->data; p->next->data = temp->data; } p = p->next; } p = q->next; q = p; } } printf("\n排序后的信息如下:\n"); while (w != NULL){ //將排序后的鏈表輸出 printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",w->data.num,w->data.name,w->data.sex,w->data.age,w->data.clas,w->data.mail,w->data.number); w = w->next; }system("pause"); out(head); s *k; p=head->next; while(p!=NULL){ //清空鏈表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; printf("三秒后返回主菜單"); Sleep(3000); menu(); } void account() { int n; char date[25]; char item[40]; char s1[45]; char count[12]; FILE *fp; if((fp=fopen("account.txt","at"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } printf("請(qǐng)輸入次數(shù)"); scanf("%d",&n); while(n) { printf("請(qǐng)輸入姓名\n"); scanf("%s",&s1); fputs(s1,fp); printf("請(qǐng)輸入日期\n"); scanf("%s",&date); fputs(date,fp); printf("請(qǐng)輸入名稱\n"); scanf("%s",&item); fputs(item,fp); printf("請(qǐng)輸入金額"); scanf("%s",&count); fputs(count,fp); n--; } fclose(fp); printf("三秒后返回主菜單"); Sleep(3000); menu(); } void print() { //打印所有財(cái)務(wù)數(shù)據(jù) char str[10000]; FILE *fp; int qq; if((fp=fopen("account.txt","rt"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } fgets(str,1000,fp); //獲取文件內(nèi)容 printf("%s",str); //打印內(nèi)容 printf("\n"); printf("1返回主菜單");fclose(fp); //關(guān)閉文件 scanf("%d",&qq); if(qq==1) { menu(); } } void printall() { //打印所有是學(xué)生信息函數(shù) char str[1000]; FILE *fp; int qq; if((fp=fopen("student.txt","rt"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); //找不到文件退出程序 } while((fgets(str,1024,fp))!=NULL) { printf(str); } //打印內(nèi)容 fclose(fp); //關(guān)閉文件 printf("1返回主菜單"); scanf("%d",&qq); if(qq==1) { menu(); } } void first() { //讀取文件 FILE *fp,*fp1; /*定義文件指針*/ char s[9],s1[9],s2[9],s3[9],ch,n; int i; ch='_'; if((fp=fopen("file.txt","r"))==NULL) { printf("\n 請(qǐng)進(jìn)行初始化操作!\n"); for(i=1;i<=50;i++)/*用來做分割線*/ printf("%c",ch); getch(); /*是輸入一個(gè)字符,但不顯示在屏幕上*/ do{ printf("\n 設(shè)置密碼,不得超過八位數(shù) \n"); for(i=0;i<8&&((s[i]=getch())!=13);i++) /*13代表的是回車*/ putch('*'); /*顯示字符*/ printf("\n 再確認(rèn)一次密碼 \n"); for(i=0;i<8&&((s1[i]=getch())!=13);i++) putch('*'); s[i]='\0'; s1[i]='\0'; if(strcmp(s,s1)!=0) /*判斷兩次密碼輸入是否一致*/ printf("\n 兩次密碼輸入不一致,請(qǐng)重新輸入 \n"); else break; } while(1); /*當(dāng)括號(hào)里是1時(shí)表示無限循環(huán)*/ if((fp1=fopen("file.txt","w"))==NULL){ printf("\n 系統(tǒng)創(chuàng)建失敗,請(qǐng)按任意鍵退出 \n"); /*打開文件,把密碼存進(jìn)去*/ getch(); exit(1); } for(i=0;s[i]!='\0';i++) putw(s[i],fp1); /*將數(shù)組元素(即密碼)放入文件中*/ fclose(fp1); /*關(guān)閉文件*/ printf("\n 系統(tǒng)初始化成功,按任意鍵退出后,再重新進(jìn)入 \n"); getch(); exit(1); } else{ i=0; while(!feof(fp)&&i<8) s2[i++]=getw(fp); /*從文件讀出字符賦給數(shù)組*/ s2[i]='\0'; strcpy(password,s2); /*將數(shù)組s2的字符復(fù)制給password*/ // enroll(); } if((fp=fopen("file2.txt","r"))==NULL) { printf("\n 請(qǐng)進(jìn)行初始化操作!\n"); for(i=1;i<=50;i++)/*用來做分割線*/ printf("%c",ch); getch(); /*是輸入一個(gè)字符,但不顯示在屏幕上*/ do{ printf("\n 設(shè)置密碼,不得超過八位數(shù) \n"); for(i=0;i<8&&((s[i]=getch())!=13);i++) /*13代表的是回車*/ putch('*'); /*顯示字符*/ printf("\n 再確認(rèn)一次密碼 \n"); for(i=0;i<8&&((s1[i]=getch())!=13);i++) putch('*'); s[i]='\0'; s1[i]='\0'; if(strcmp(s,s1)!=0) /*判斷兩次密碼輸入是否一致*/ printf("\n 兩次密碼輸入不一致,請(qǐng)重新輸入 \n"); else break; } while(1); /*當(dāng)括號(hào)里是1時(shí)表示無限循環(huán)*/ if((fp1=fopen("file2.txt","w"))==NULL){ printf("\n 系統(tǒng)創(chuàng)建失敗,請(qǐng)按任意鍵退出 \n"); /*打開文件,把密碼存進(jìn)去*/ getch(); exit(1); } for(i=0;s[i]!='\0';i++) putw(s[i],fp1); /*將數(shù)組元素(即密碼)放入文件中*/ fclose(fp1); /*關(guān)閉文件*/ printf("\n 系統(tǒng)初始化成功,按任意鍵退出后,再重新進(jìn)入 \n"); getch(); exit(1); } else{ i=0; while(!feof(fp)&&i<8) s3[i++]=getw(fp); /*從文件讀出字符賦給數(shù)組*/ s2[i]='\0'; strcpy(password2,s3); /*將數(shù)組s2的字符復(fù)制給password*/ } // enroll(); } void enroll() { //登錄函數(shù) int flag=0; int i,n=5; char str[9]; printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf(" ---------------------------------------------------------------- \n"); printf(" | 歡迎使用財(cái)務(wù)管理系統(tǒng) | \n"); printf(" | | \n"); printf(" | 請(qǐng)選擇登錄方式:1管理員登錄 2班級(jí)成員登錄 | \n"); printf(" ---------------------------------------------------------------- \n"); if(getch()=='1') { log=1; }else { log=2; } switch(log) { case 1: printf("請(qǐng)輸入賬號(hào)\n"); scanf("%d",&ac); while(n) { printf("\n"); printf("請(qǐng)輸入密碼"); for(i=0;i<8&&((str[i]=getch())!=13);i++) putch(str[i]); //獲取鍵盤輸入的內(nèi)容 str[i]='\0'; for(int j=0;j<i;j++) { if(str[j]!=password[j]) { flag=1; //判斷輸入的密碼和本地文件內(nèi)的密碼是否相同 } else{ flag=0; } } if(flag) { printf("輸入錯(cuò)誤密碼"); n--; //密碼錯(cuò)誤可用次數(shù)減一 } if(flag==0) { break; //密碼正確退出循環(huán) } } if(n=0 ) { printf("你輸入五次錯(cuò)誤密碼,請(qǐng)退出"); getch(); exit(1); /*非正常運(yùn)行導(dǎo)致退出程序*/ } break; case 2: printf("請(qǐng)輸入賬號(hào)\n"); scanf("%d",&ac); while(n) { printf("\n"); printf("請(qǐng)輸入密碼"); for(i=0;i<8&&((str[i]=getch())!=13);i++) putch(str[i]); //獲取鍵盤輸入的內(nèi)容 str[i]='\0'; for(int j=0;j<i;j++) { if(str[j]!=password2[j]) { flag=1; //判斷輸入的密碼和本地文件內(nèi)的密碼是否相同 } else{ flag=0; } } if(flag) { printf("你輸入錯(cuò)誤密碼"); n--; //密碼錯(cuò)誤可用次數(shù)減一 } if(flag==0) { break; //密碼正確退出循環(huán) } } if(n=0) { printf("你輸入五次錯(cuò)誤密碼,請(qǐng)退出"); getch(); exit(1); /*非正常運(yùn)行導(dǎo)致退出程序*/ } break; default: printf("您輸入了無效數(shù)字"); break; } } int main() { first(); //啟動(dòng)初始化函數(shù) enroll(); //啟動(dòng)登錄函數(shù) menu(); //啟動(dòng)菜單函數(shù) }
關(guān)于“C語言如何實(shí)現(xiàn)財(cái)務(wù)管理系統(tǒng)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。