C語(yǔ)言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)的具體代碼,供大家參考,具體內(nèi)容如下
某公司有四個(gè)銷售員(編號(hào): 1-4), 負(fù)責(zé)銷售五種產(chǎn)品(編號(hào): 1-5)。 每個(gè)銷售員都將當(dāng)天出售的每種產(chǎn)品各寫(xiě)一 張便條交上來(lái)。每張便條包含內(nèi)容:銷售員的代號(hào)、產(chǎn)品的代號(hào)、這種產(chǎn)品的當(dāng)天的銷售額。每位銷售員每天上繳1張便條。
試設(shè)計(jì)一個(gè)便條管理系統(tǒng),使之能提供以下功能:
1、系統(tǒng)以菜單方式工作
2、便條信息錄入功能——輸入(支持便條信息文件導(dǎo)入)
3、便條信息修改功能
4、便條信息刪除功能
5、收集到了上個(gè)月的所有便條后,讀取銷售情況
1)計(jì)算每個(gè)人每種產(chǎn)品的銷售額。
2)按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào))
3)統(tǒng)計(jì)每種產(chǎn)品的總銷售額,對(duì)這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號(hào)和銷售額)
詳情請(qǐng)參考代碼,注釋寫(xiě)的很詳細(xì),希望能給你幫助.
最后的最后有截圖展示效果.
#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define M 155 ? ///這些函數(shù)下面會(huì)詳細(xì)的介紹的滴! void detail(); void foreach(); void menu(); void product(); void readdata(); void seller(); void total(); void choice(); void add(); void deleteing(); void update(); void clearing(); ? ? struct ss{ ? ? int sid;///銷售代碼 ? ? int pid;///產(chǎn)品代號(hào) ? ? int sn;///銷售額 }ss[M]; int n;///便條數(shù)目 int s[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};///用戶保存員工和產(chǎn)品信息 ? ///從文件讀取數(shù)據(jù) void readdata() { ? ? FILE *fp;///定義文件指針 ? ? ///調(diào)用fopen函數(shù),以只讀模式打開(kāi)d:\list.txt文件,并驗(yàn)證返回值是否為空 ? ? if((fp=fopen("d:\\list.txt","r"))==NULL) ? ? ? { ? ? ? ? printf("文件打開(kāi)失??!\n"); ? ? ? ? exit(0);///表示正常的退出 ? ? } ? ? else ? ? /**feof是輸入輸出函數(shù),檢查文件是否結(jié)束,如結(jié)束,則返回非零值, ? ? 否則返回0 .函數(shù)原型為:int feof(FILE *fp)**/ ? ? ? ? for(n=0;!feof(fp);n++) ? ? ? ? { ? ? ? ? ? ? fscanf(fp,"%d %d %d\n",&ss[n].sid,&ss[n].pid,&ss[n].sn); ? ? ? ? } ///保存文件數(shù)據(jù)到結(jié)構(gòu)體 ? ? ?fclose(fp);///關(guān)閉文件 } ? ///從便條讀到的數(shù)據(jù)分類整理統(tǒng)計(jì) void foreach() { ? ? int i; ? ? for(i=0;i<n;i++)///遍歷所有紙條 ? ? { ? ? ? ? switch(ss[i].pid)///按產(chǎn)品分類,再按銷售員分類,累加各人各產(chǎn)品銷售額 ? ? ? ? { ? ? ? ? ? ? case 1:///當(dāng)ss[i].pid為1的時(shí)候,也就是當(dāng)產(chǎn)品代號(hào)為1的時(shí)候 ? ? ? ? ? ? switch(ss[i].sid)///查看銷售代碼 ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ///當(dāng)銷售代碼為1的時(shí)候,累加1號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? ? ? case 1:s[0][0]+=ss[i].sn;break; ? ? ? ? ? ? ? ? ///當(dāng)銷售代碼為2的時(shí)候,累加2號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? ? ? case 2:s[1][0]+=ss[i].sn;break; ? ? ? ? ? ? ? ? ///當(dāng)銷售代碼為3的時(shí)候,累加3號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? ? ? case 3:s[2][0]+=ss[i].sn;break; ? ? ? ? ? ? ? ? ///當(dāng)銷售代碼為4的時(shí)候,累加4號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? ? ? case 4:s[3][0]+=ss[i].sn;break; ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? ? ? ? ? ///以下代碼同理可得 ? ? ? ? ? ? case 2: ? ? ? ? ? ? switch(ss[i].sid) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case 1:s[0][1]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 2:s[1][1]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 3:s[2][1]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 4:s[3][1]+=ss[i].sn;break; ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? switch(ss[i].sid) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case 1:s[0][2]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 2:s[1][2]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 3:s[2][2]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 4:s[3][2]+=ss[i].sn;break; ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? ? ? ? ? ? case 4: ? ? ? ? ? ? switch(ss[i].sid) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case 1:s[0][3]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 2:s[1][3]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 3:s[2][3]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 4:s[3][3]+=ss[i].sn;break; ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? ? ? ? ? ? case 5: ? ? ? ? ? ? switch(ss[i].sid) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case 1:s[0][4]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 2:s[1][4]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 3:s[2][4]+=ss[i].sn;break; ? ? ? ? ? ? ? ? case 4:s[3][4]+=ss[i].sn;break; ? ? ? ? ? ? }; ? ? ? ? ? ? break; ? ? ? ? } ? ? } } ? ///菜單選項(xiàng) void menu() { ? ? int c; ? ? puts("\t\t*********菜單*********************\n\n"); ? ? puts("\t\t 1.查看每人每種產(chǎn)品的銷售額\n"); ? ? puts("\t\t 2.按銷售額對(duì)銷售員排序(銷售員代號(hào))\n"); ? ? puts("\t\t 3.對(duì)每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號(hào)和銷售額)\n"); ? ? puts("\t\t 4.輸出統(tǒng)計(jì)報(bào)表\n"); ? ? puts("\t\t 5.錄入一條便條信息\n"); ? ? puts("\t\t 6.修改一條便條信息\n"); ? ? puts("\t\t 7.刪除一條便條信息\n"); ? ? puts("\t\t 8.退出\n"); ? ? puts("\n\n\t\t*********************************************\n"); ? ? printf("請(qǐng)選擇(1-8):[ ]\b\b"); ? ? scanf("%d",&c); ? ? if(c<1||c>8)///錯(cuò)誤輸入,重新獲取輸入 ? ? { ? ? ? ? printf("您輸入的選項(xiàng)不在我們服務(wù)范圍之內(nèi)\請(qǐng)確定好您要選擇的服務(wù),重新輸入?。?!\n"); ? ? ? ? menu(); ? ? } ? ? else///正確輸入 ? ? switch(c)///根據(jù)輸入實(shí)現(xiàn)相應(yīng)函數(shù)調(diào)用 ? ? { ? ? ? ? case 1:detail(); ? ? ? ? break; ? ? ? ? ? case 2:seller(); ? ? ? ? break; ? ? ? ? ? case 3:product(); ? ? ? ? break; ? ? ? ? ? case 4:total(); ? ? ? ? break; ? ? ? ? ? case 5:add(); ? ? ? ? break; ? ? ? ? ? case 6:update(); ? ? ? ? break; ? ? ? ? ? case 7:deleteing(); ? ? ? ? break; ? ? ? ? ? case 8:exit(0); ? ? } } ? ///計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷售額 void detail() { ? ? int i,j; ? ? for(i=0;i<4;i++) ? ? { ? ? ? ? printf("\n\t\t%d 號(hào)銷售員銷售情況:\n",i+1); ? ? ? ? for(j=0;j<5;j++) ? ? ? ? ? ? ?printf("\t\t%d 號(hào)產(chǎn)品銷售額:%d\n",j+1,s[i][j]); ? ? } ? ? choice(); } ? ///按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào)) void seller() { ? ? int i,j,k; ? ? int sp[4]={0,0,0,0};///存銷售員的銷售額 ? ? for(i=0;i<4;i++)///統(tǒng)計(jì)銷售員的銷售額 ? ? ? ? for(j=0;j<5;j++) ? ? ? ? ? ? sp[i]+=s[i][j]; ? ? ? for(i=0;i<4;i++)///排序 ? ? { ? ? ? ? k=0; ? ? ? ? for(j=0;j<4;j++) ? ? ? ? { ? ? ? ? ? ? if(sp[k]<sp[j]) ? ? ? ? ? ? ? ? k=j; ? ? ? ? } ? ? ? ? printf("\t\t第%d名是%d號(hào)銷售員!\n",i+1,k+1); ? ? ? ? sp[k]=-1; ? ? } ? ? choice(); } ? ///對(duì)每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號(hào)和銷售額) void product() { ? ? int i,j,k; ? ? int p[5]={0,0,0,0,0};///存每種產(chǎn)品的銷售額 ? ? for(i=0;i<5;i++)///統(tǒng)計(jì)每種產(chǎn)品的銷售額 ? ? ? ? for(j=0;j<4;j++) ? ? ? ? ? ? p[i]+=s[j][i]; ? ? ? for(i=0;i<5;i++)///將產(chǎn)品的銷售額進(jìn)行排序 ? ? { ? ? ? ? k=0; ? ? ? ? for(j=0;j<5;j++) ? ? ? ? { ? ? ? ? ? ? if(p[k]<p[j]) ? ? ? ? ? ? ? ? k=j; ? ? ? ? } ? ? ? ? printf("\t\t第%d名是%d號(hào)產(chǎn)品!\銷售額為%d!\n",i+1,k+1,p[k]); ? ? ? ? p[k]=-1; ? ? } ? ? choice(); } ? ///輸出統(tǒng)計(jì)報(bào)表(輸出銷售代號(hào),產(chǎn)品代號(hào)和銷售額) void total() { ? ? int i,j; ? ? printf("\n\t銷售員\t產(chǎn)品\t銷售額\n"); ? ? for(i=0;i<4;i++) ? ? ? ? for(j=0;j<5;j++) ? ? ? ? ? ? printf("\t%d\t%d\t%d\n",i+1,j+1,s[i][j]); ? ? choice(); } ? ///選擇退出系統(tǒng)或返回主菜單 void choice() { ? ? int c; ? ? printf("請(qǐng)選擇接下來(lái)想做什么:\n1.返回菜單\n2.退出系統(tǒng)\n"); ? ? scanf("%d",&c); ? ? if(c==1) ? ? ? ? menu(); ? ? else ? ? ? ? exit(0); } ? ///錄入一條便條信息 void add() { ? ? printf("請(qǐng)?zhí)顚?xiě)您要錄入的便條的信息:銷售代碼,產(chǎn)品代碼,銷售額\n"); ? ? /**接著readdata()統(tǒng)計(jì)的文本中便條的信息到結(jié)構(gòu)體數(shù)組里, ? ? 將添加的信息首先保存在那些信息的后面**/ ? ? scanf("%d %d %d",&ss[n].sid,&ss[n].pid,&ss[n].sn); ? ? FILE *fp;///定義文件指針 ? ? char *str="d:\\list.txt"; ? ? printf("該條記錄正在寫(xiě)入文件 list.txt~~~~\n"); ? ? fp=fopen(str,"a");///參數(shù)"a"意思是說(shuō)將新添加的數(shù)據(jù)接著文本里的數(shù)據(jù)寫(xiě),不會(huì)覆蓋文本里的內(nèi)容 ? ? fprintf(fp,"\n%d\t%d\t%d",ss[n].sid,ss[n].pid,ss[n].sn);///將結(jié)構(gòu)體里的信息寫(xiě)入文本 ? ? fclose(fp);///關(guān)閉文件 ? ? printf("\n該條記錄已經(jīng)寫(xiě)入文件 list.txt,請(qǐng)前往查看!\n"); ? ? switch(ss[n].pid)///借用foreach()函數(shù)里的代碼,詳情請(qǐng)參考foreach()函數(shù) ? ? { ? ? ? ? case 1:///當(dāng)ss[i].pid為1的時(shí)候,也就是當(dāng)產(chǎn)品代號(hào)為1的時(shí)候 ? ? ? ? switch(ss[n].sid)///查看銷售代碼 ? ? ? ? { ? ? ? ? ? ? ///當(dāng)銷售代碼為1的時(shí)候,累加1號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? case 1:s[0][0]+=ss[n].sn;break; ? ? ? ? ? ? ///當(dāng)銷售代碼為2的時(shí)候,累加2號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? case 2:s[1][0]+=ss[n].sn;break; ? ? ? ? ? ? ///當(dāng)銷售代碼為3的時(shí)候,累加3號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? case 3:s[2][0]+=ss[n].sn;break; ? ? ? ? ? ? ///當(dāng)銷售代碼為4的時(shí)候,累加4號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額 ? ? ? ? ? ? case 4:s[3][0]+=ss[n].sn;break; ? ? ? ? } ? ? ? ? break; ? ? ? ? ///以下代碼同理可得 ? ? ? ? case 2: ? ? ? ? switch(ss[n].sid) ? ? ? ? { ? ? ? ? ? ? case 1:s[0][1]+=ss[n].sn;break; ? ? ? ? ? ? case 2:s[1][1]+=ss[n].sn;break; ? ? ? ? ? ? case 3:s[2][1]+=ss[n].sn;break; ? ? ? ? ? ? case 4:s[3][1]+=ss[n].sn;break; ? ? ? ? } ? ? ? ? break; ? ? ? ? ? case 3: ? ? ? ? switch(ss[n].sid) ? ? ? ? { ? ? ? ? ? ? case 1:s[0][2]+=ss[n].sn;break; ? ? ? ? ? ? case 2:s[1][2]+=ss[n].sn;break; ? ? ? ? ? ? case 3:s[2][2]+=ss[n].sn;break; ? ? ? ? ? ? case 4:s[3][2]+=ss[n].sn;break; ? ? ? ? } ? ? ? ? break; ? ? ? ? ? case 4: ? ? ? ? switch(ss[n].sid) ? ? ? ? { ? ? ? ? ? ? case 1:s[0][3]+=ss[n].sn;break; ? ? ? ? ? ? case 2:s[1][3]+=ss[n].sn;break; ? ? ? ? ? ? case 3:s[2][3]+=ss[n].sn;break; ? ? ? ? ? ? case 4:s[3][3]+=ss[n].sn;break; ? ? ? ? } ? ? ? ? break; ? ? ? ? ? case 5: ? ? ? ? switch(ss[n].sid) ? ? ? ? { ? ? ? ? ? ? case 1:s[0][4]+=ss[n].sn;break; ? ? ? ? ? ? case 2:s[1][4]+=ss[n].sn;break; ? ? ? ? ? ? case 3:s[2][4]+=ss[n].sn;break; ? ? ? ? ? ? case 4:s[3][4]+=ss[n].sn;break; ? ? ? ? }; ? ? ? ? break; ? ? } ? ? n++; ? ? choice(); } ? /**刪除便條信息流程:新建一個(gè)臨時(shí)文件,將不被刪除的便條信息存到臨時(shí)文件里, 然后刪除原文件,再將臨時(shí)文件改名為原文件的文件名**/ void deleteing() { ? ? printf("請(qǐng)輸入您要?jiǎng)h除的便條的信息:銷售代碼,產(chǎn)品代碼,銷售額\n"); ? ? int a,b,c;///存用戶需要?jiǎng)h除的便條的信息 ? ? scanf("%d %d %d",&a,&b,&c); ? ? printf("請(qǐng)稍等,您選擇的便條正在刪除~~~\n"); ? ? FILE *fin,*ftp; ? ? int x,y,z; ? ? fin=fopen("d:\\list.txt","r");///讀打開(kāi)原文件list.txt ? ? ftp=fopen("d:\\tmp.txt","w");///寫(xiě)打開(kāi)臨時(shí)文件tmp.txt ? ? if(fin==NULL || ftp==NULL){ ? ? ? ? printf("文件打開(kāi)失敗!\n"); ? ? ? ? exit(0); ? ? } ? ? int m=0;///該變量是控制寫(xiě)入文本是首行不自動(dòng)換行 ? ? for(int i=0;!feof(fin);i++) ? ? { ? ? ? ? fscanf(fin,"%d %d %d\n",&x,&y,&z);///從原文件讀取到的一行數(shù)據(jù)放到x,y,z三個(gè)變量中 ? ? ? ? if(x==a&&y==b&&z==c)///所有的數(shù)據(jù)相等,說(shuō)明是要?jiǎng)h除的便條,則不寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? continue; ? ? ? ? else///將不是要?jiǎng)h除的其他便條信息寫(xiě)入臨時(shí)文件 ? ? ? ? { ? ? ? ? ? ? if(m==0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? fprintf(ftp,"%d\t%d\t%d",x,y,z);///不是則將這一行寫(xiě)入臨時(shí)文件tmp.txt ? ? ? ? ? ? ? ? m++; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///不是則將這一行寫(xiě)入臨時(shí)文件tmp.txt ? ? ? ? } ? ? } ? ? fclose(fin); ? ? fclose(ftp); ? ? system("DEL/f d:\\list.txt");///刪除原文件,如果刪除錯(cuò)誤,會(huì)報(bào)原因 ? ? ///unlink("d:\\list.txt");///刪除原文件 ? ? rename("d:\\tmp.txt","d:\\list.txt");///將臨時(shí)文件名改為原文件名 ? ? printf("您選擇的便條已經(jīng)刪除,請(qǐng)打開(kāi)文件查看!\n"); ? ? clearing(); ? ? readdata(); ? ? foreach(); ? ? choice(); } ? ///清空之前所統(tǒng)計(jì)的原文件里的銷售員和銷售產(chǎn)品所對(duì)應(yīng)的銷售額 void clearing() { ? ? for(int i=0;i<4;i++) ? ? { ? ? ? ? for(int j=0;j<5;j++) ? ? ? ? ? ? s[i][j]=0; ? ? } } ? /**更新便條信息流程:新建一個(gè)臨時(shí)文件,將原文件里的東西復(fù)制到臨時(shí)文件中,在復(fù)制的過(guò)程中, 需要修改的東西修改之后再放入臨時(shí)文件,然后刪除原文件,將臨時(shí)文件改名為原文件的名字**/ void update() { ? ? printf("請(qǐng)輸入您要修改的便條的信息:銷售代碼,產(chǎn)品代碼,銷售額\n"); ? ? int a,b,c,d,e,x,y,z; ? ? scanf("%d %d %d",&a,&b,&c); ? ? printf("請(qǐng)問(wèn)您要修改該便條中那一項(xiàng)信息:\n(1)銷售代碼\n(2)產(chǎn)品代碼\n(3)銷售額\n"); ? ? scanf("%d",&d); ? ? printf("請(qǐng)問(wèn)您要將該項(xiàng)信息修改成什么(請(qǐng)輸入數(shù)字):\n"); ? ? scanf("%d",&e); ? ? printf("您選擇的便條正在修改中~~~~~\n"); ? ? FILE *fin=fopen("d:\\list.txt","r"); ? ? FILE *ftp=fopen("d:\\tmp.txt","w"); ?///是充當(dāng)臨時(shí)文件作用 ? ? if(!fin) ? ? { ? ? ? ? printf("不能打開(kāi)list.txt文件\n"); ? ? ? ? exit(1); ? ? } ? ? if(!ftp) ? ? { ? ? ? ? printf("不能打開(kāi)tmp.txt文件\n"); ? ? ? ? exit(1); ? ? } ? ? int m=0;///該變量是控制寫(xiě)入文本時(shí)首行不自動(dòng)換行 ? ? ///開(kāi)始復(fù)制 ? ? switch(d)///根據(jù)選項(xiàng)修改(1)銷售代碼 (2)產(chǎn)品代碼 (3)銷售額 ? ? { ? ? ? ? case 1:///(1)銷售代碼 ? ? ? ? { ? ? ? ? ? ? ? ?for(int i=0;!feof(fin);i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fscanf(fin,"%d %d %d\n",&x,&y,&z); ? ? ? ? ? ? ? ? ? ? if(x==a&&y==b&&z==c)///檢驗(yàn)是要修改的行嗎 ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? x=e; ? ? ? ? ? ? ? ? ? ? ? ? if(m==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? m++; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將修改過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? if(m==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"%d\t%d\t%d",x,y,z);///將原本的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? m++; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將原本過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? ? ? ? ///以下代碼同理可得 ? ? ? ? case 2: ? ? ? ? { ? ? ? ? ? ? for(int i=0;!feof(fin);i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fscanf(fin,"%d %d %d\n",&x,&y,&z); ? ? ? ? ? ? ? ? ? ? if(x==a&&y==b&&z==c)///檢驗(yàn)是要修改的行嗎 ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? y=e; ? ? ? ? ? ? ? ? ? ? ? ? if(m==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? m++; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將修改過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? if(m==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"%d\t%d\t%d",x,y,z);///將原本的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? m++; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將原本過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? break; ? ? ? ? ? case 3: ? ? ? ? { ? ? ? ? ? ? for(int i=0;!feof(fin);i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fscanf(fin,"%d %d %d\n",&x,&y,&z); ? ? ? ? ? ? ? ? ? ? if(x==a&&y==b&&z==c)///檢驗(yàn)是要修改的行嗎 ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? z=e; ? ? ? ? ? ? ? ? ? ? ? ? if(m==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? m++; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將修改過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? if(m==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"%d\t%d\t%d",x,y,z);///將原本的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? m++; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將原本過(guò)的數(shù)據(jù)寫(xiě)入臨時(shí)文件 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? break; ? ? } ? ? fclose(fin); ? ? fclose(ftp); ? ? ?printf("您選擇的便條已經(jīng)修改完畢,請(qǐng)打開(kāi)文件查看!\n"); ? ? system("DEL/f d:\\list.txt");///刪除原文件,刪除錯(cuò)誤的時(shí)候會(huì)報(bào)提示信息 ? ? ///unlink("d:\\list.txt");///刪除原文件 ? ? rename("d:\\tmp.txt","d:\\list.txt");///改名 ? ? clearing(); ? ? readdata(); ? ? foreach(); ? ? choice(); } ? int main() { ? ? readdata();///讀取文件數(shù)據(jù) ? ? foreach();///初始化數(shù)組 ? ? menu();///顯示主菜單 }
首先在D盤(pán)下新建一個(gè)文本文檔 ,名為 list.txt,在文本文檔里存入的數(shù)據(jù)如下(數(shù)據(jù)僅供參考):
然后我們開(kāi)始運(yùn)行該程序:
對(duì)于上圖第五項(xiàng)添加便條信息的操作,我們 來(lái)看一看文本里的內(nèi)容(最后一行就是新添的數(shù)據(jù))
在我們執(zhí)行第六個(gè)選項(xiàng)的時(shí)候,首先需要在D盤(pán)下新建一個(gè)文本文檔 tmp.txt,至于為啥,詳情請(qǐng)參考代碼,代碼里面有詳細(xì)的解釋
我們?cè)偃ゲ榭碊盤(pán)里的文件,這時(shí)tmp.txt不見(jiàn)了,只剩下 list.txt,里面的內(nèi)容如下(為什么會(huì)醬紫呢?快去查看代碼吧):
在我們執(zhí)行第七個(gè)選項(xiàng)的時(shí)候,需要在D盤(pán)下重新新建一個(gè)文本文檔 tmp.txt,至于為啥,詳情請(qǐng)參考代碼,代碼里面有詳細(xì)的解釋
我們?cè)偃ゲ榭碊盤(pán)里的文件,這時(shí)tmp.txt不見(jiàn)了,只剩下 list.txt,里面的內(nèi)容如下(為什么會(huì)醬紫呢?快去查看代碼吧):
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)查看進(jìn)程是否存在的方法示例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)查看進(jìn)程是否存在的方法,涉及C語(yǔ)言針對(duì)進(jìn)程操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07使用QGraphicsView實(shí)現(xiàn)氣泡聊天窗口+排雷功能
這篇文章主要介紹了使用QGraphicsView實(shí)現(xiàn)氣泡聊天窗口+排雷,重點(diǎn)給大家介紹使用QWebEngineView控件內(nèi)嵌html+CSS的實(shí)現(xiàn)方式,需要的朋友可以參考下2022-04-04C++實(shí)現(xiàn)LeetCode(86.劃分鏈表)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(86.劃分鏈表),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07