當前位置:編程學習大全網 - 編程語言 - 關於C編程的問題

關於C編程的問題

主要是把基礎的東西學紮實了,比如c中的結構、函數、指針......再學壹些數據結構方面的知識.以後再做比較大的查詢系統時,就會思路很清晰的.下面給妳壹個有關企業職工管理的查詢系統.以做參考!其實壹些查詢系統的基本思路都是壹樣的.比如電話系統查詢、圖書管理系統等等.

還有具體把妳的查詢系統的功能描述壹下:e.g.要能輸入姓名查找到該用戶的電話,輸入電話號碼要能對應查找出該號碼的機主姓名.還要能實現電話的插入、姓名和號碼的更改保存等等.

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <conio.h>

#define N 100

struct employee//職工基本情況

{

int num;//工號

int position;//職位1為董事長2為總經理3為副總經理等

char name[8];//姓名

char sex[2];//性別f為女m為男

int age;//年齡

int cult;//文化程度1為專家2為博士3為碩士4為學士5為其他

int salary;//工資

int state;//健康情況分為good,general,bad

}em[N];

struct communication//職工通訊錄

{

char name[8];

char officetel[13];

char hometel[13];

char handtel[13];

char address[13];

}empc[N];

struct empsalary//職工工資與姓名的文件

{

char name[8];

int salary;

}emps[N];

void manage();

void query();

void communicate();

void input();

void display();

void change();

void del();

void add();

void count();

int changeposition();

int changecult();

int changesalary();

int changestate();

void querysalary();

void creat();

void inputcommunicate();

void querycommunicate();

void changecommunicate();

void changetel1();

void changetel2();

void changetel3();

char password[7]="123456";

void main()

{

int choice;

char s[7];

int flag=0;

int n=3;

do

{

printf("請妳輸入密碼:\n");

scanf("%s",s);

if(!strcmp(s,password))//若密碼正確

{

printf("恭喜妳成功登陸了\n\n\n");

flag=1;

break;

}

else

{

printf("輸入有錯誤請重新輸入:\n");

n--;

}

}while(n>0);

if(!flag)

{

printf("妳的輸入次數已到再見\n");

}

do

{

printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n");

printf("\t\t歡迎進入職工管理系統中文版\n");

printf("制作人:李華詩\t班級:計034班\t學號:2003041150\n");

printf("聯系地址:廣西工學院\n");

printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");

printf("\t\t請妳選擇操作類型:\n");

printf("==============\t\t==============\n");

printf("\t\t1進入管理系統\n");

printf("\t\t2進入查詢系統\n");

printf("\t\t3進入通訊錄\n");

printf("\t\t0退出系統\n");

printf("==============\t\t==============\n");

printf("說明:版權歸作者所有違者必究\n\n\n\n");

scanf("%d",&choice);

switch(choice)

{

case 1:

manage();

break;

case 2:

query();

break;

case 3:

communicate();

break;

case 0:

{

printf("謝謝使用再見\n");

exit(0);

}

default:

{

printf("輸入有錯誤請重新輸入:\n");

return;

}

}

}while(1);

}

void manage()

{

int choicemanage;

char choice='y';

while(choice=='y'||choice=='Y')

{

printf("\t\t歡迎進入管理系統\n");

printf("===================\n");

printf("\t\t請妳選擇操作類型:\n");

printf("\t\t1輸入職工信息\n");

printf("\t\t2顯示職工信息\n");

printf("\t\t3修改職工信息\n");

printf("\t\t4追加壹個職工信息\n");

printf("\t\t5刪除壹個職工信息\n");

printf("\t\t6統計職工信息\n");

printf("\t\t0返回\n");

printf("=====================\n");

scanf("%d",&choicemanage);

switch(choicemanage)

{

case 1:

input();//輸入職工信息

break;

case 2:

display();//顯示職工信息

break;

case 3:

change();//修改職工信息

break;

case 4:

add();//追加壹個職工信息

break;

case 5:

del();//刪除壹個職工信息

break;

case 6:

count();//統計職工信息

break;

case 0:

printf("謝謝妳的使用再見\n");

return;

default:

printf("妳的輸入有錯請重新輸入\n");

}

printf("是否繼續管理?(y/n)");

scanf("%s",&choice);

}

if(toupper(choice)=='N'||(choice)=='n')

{

printf("輸入完畢,任意鍵返回\n");

getch();

return;

}

}

void input()

{

FILE *fp;

int i=0;

char choiceinput='y';

if((fp=fopen("employee.txt","w"))==NULL)

return;

while(choiceinput=='y'||choiceinput=='Y')

{

i++;

printf("第%d個職工\n",i);

printf("\n");

printf("請妳輸入工號:\n");//輸入工號

scanf("%d",&em[i].num);

printf("\n");

printf("請妳輸入職位:\n");//輸入職位

printf("1為董事長2為總經理3為副總經理\n");

printf("4為經理5為副經理6為秘書\n");

printf("7為技術員8為領班9為員工\n");

scanf("%d",&em[i].position);

printf("\n");

printf("請妳輸入姓名:\n");//輸入姓名

scanf("%s",em[i].name);

printf("\n");

printf("請妳輸入性別以m為男f為女:\n");//輸入性別

scanf("%s",em[i].sex);

printf("\n");

printf("請妳輸入文化程度:\n");//輸入文化程度

printf("1為專家2為博士3為碩士4為學士5為其他\n");

scanf("%d",&em[i].cult);

printf("\n");

printf("請妳輸入工資:\n");//輸入工資

scanf("%d",&em[i].salary);

printf("\n");

printf("請妳輸入身體情況:\n");//身體情況

printf("1好2為壹般3為差\n");

scanf("%d",&em[i].state);

printf("\n");

printf("是否繼續輸入?(y/n)\n");

scanf("%s",&choiceinput);

fwrite(&em[i],sizeof(struct employee),1,fp);

}

if(toupper(choiceinput)=='N')

{

fclose(fp);

printf("輸入完畢,任意鍵返回\n");

getch();

return;

}

}

void display()//顯示職工信息

{

FILE *fp;

int i;

if((fp=fopen("employee.txt","r"))==NULL)

return;

printf("輸出結果:\n");

printf("工號 職位 姓名 性別 文化程度 工資 身體情況\n");

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

printf("工號%d\n",em[i].num);

printf("職位為%d\n",em[i].position);

printf("1為董事長2為總經理3為副總經理\n");

printf("4為經理5為副經理6為秘書\n");

printf("7為技術員8為領班9為員工\n");

printf("姓名為%s\n",em[i].name);

printf("性別為%s\n",em[i].sex);

printf("其中m為男f為女\n");

printf("文化程度為%d\n",em[i].cult);

printf("1為專家2為博士3為碩士4為學士5為其他\n");

printf("工資為%d\n",em[i].salary);

printf("身體情況為%d\n",em[i].state);

printf("1好2為壹般3為差\n");

}

printf("完畢按任意鍵返回\n");

getch();

fclose(fp);

return;

}

void change()

{

FILE *fp;

int i;

char chname[8];

int choicechange;

printf("請妳輸入要修改的人的姓名:\n");

scanf("%s",&chname);

if((fp=fopen("employee.txt","w+"))==NULL)

{

printf("不能夠打開這個文件\n");

return;

}

for(i=0;i<N;i++)

{

if(strcmp(chname,em[i].name)==0)

{

printf("這是妳要修改的人的信息\n");

printf("工號為%d職位為%d姓名為%s性別為%s文化程度為%d工資為%d身體為%d\n",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);

printf("------------------------------------------------------------\n");

printf("請妳輸入要修改的部分:\n");

printf("======================\n");

printf("1修改職位\n");

printf("2修改文化程度\n");

printf("3修改工資\n");

printf("4修改身體情況\n");

printf("0退出系統\n");

printf("======================\n");

printf("請選擇\n");

scanf("%d",&choicechange);

switch(choicechange)

{

case 1:

em[i].position=changeposition();

break;

case 2:

em[i].cult=changecult();

break;

case 3:

em[i].salary=changesalary();

break;

case 4:

em[i].state=changestate();

break;

case 0:

return;

default :

printf("輸入有錯誤");

}

fwrite(&em[i],sizeof(struct employee),1,fp);

}

}

fclose(fp);

printf("操作完成按任意鍵返回\n");

getch();

return;

}

int changeposition()

{

int newposition;

printf("請妳輸入新職位:\n");

printf("1為董事長2為總經理3為副總經理\n");

printf("4為經理5為副經理6為秘書\n");

printf("7為技術員8為領班9為員工\n");

scanf("%d",&newposition);

return(newposition);

}

int changecult()

{

int newcult;

printf("請妳輸入新的文憑:\n");

printf("1為專家2為博士3為碩士4為學士5為其他\n");

scanf("%d",&newcult);

return(newcult);

}

int changesalary()

{

int newsalary;

printf("請妳輸入新的工資:\n");

scanf("%d",&newsalary);

return(newsalary);

}

int changestate()

{

int newstate;

printf("請妳輸入現在的身體情況:\n");

printf("1好2為壹般3為差\n");

scanf("%d",&newstate);

return(newstate);

}

void add()//追加壹個職工信息

{

struct employee emp;

FILE *fp;

int i=0;

if((fp=fopen("employee.txt","ab+"))==NULL)

{

printf("不能夠打開這個文件\n");

getch();

return;

}

printf("請妳輸入新人的內容:\n");

printf("請妳輸入工號:\n");//輸入工號

scanf("%d",&emp.num);

printf("請妳輸入職位:\n");//輸入職位

printf("1為董事長2為總經理3為副總經理\n");

printf("4為經理5為副經理6為秘書\n");

printf("7為技術員8為領班9為員工\n");

scanf("%d",&emp.position);

printf("請妳輸入姓名:\n");//輸入姓名

scanf("%s",emp.name);

printf("請妳輸入性別以m為男f為女:\n");//輸入性別

scanf("%s",emp.sex);

printf("請妳輸入文化程度:\n");//輸入文化程度

printf("1為專家2為博士3為碩士4為學士5為其他\n");

scanf("%d",&emp.cult);

printf("請妳輸入工資:\n");//輸入工資

scanf("%d",&emp.salary);

printf("請妳輸入身體情況:\n");//身體情況

printf("1好2為壹般3為差\n");

scanf("%d",&emp.state);

fwrite(&emp,sizeof(struct employee),1,fp);

rewind(fp);

printf("插入完畢,按任意鍵返回\n");

getch();

fclose(fp);

return;

}

void del()//刪除壹個職工信息

{

int i=0;

char delname[8];

FILE *fp;

if((fp=fopen("employee.txt","w"))==NULL)

{

printf("文件為空,不能夠打開\n");

printf("按任意鍵返回\n");

getch();

return;

}

printf("請妳輸入要刪除的人的姓名:\n");//刪除的職工的信息

scanf("%s",delname);

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

if(strcmp(em[i].name,delname)!=0)

fwrite(&em[i],sizeof(struct employee),1,fp);

}

fclose(fp);

if((fp=fopen("employee.txt","r"))==NULL)//顯示新的職工的信息

return;

printf("新的職工的信息為:\n");

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

printf("工號%d",em[i].num);

printf("職位為%d",em[i].position);

printf("1為董事長2為總經理3為副總經理\n");

printf("4為經理5為副經理6為秘書\n");

printf("7為技術員8為領班9為員工\n");

printf("姓名為%s",em[i].name[8]);

printf("性別為%s",em[i].sex[2]);

printf("其中m為男f為女");

printf("文化程度為%d",em[i].cult);

printf("1為專家2為博士3為碩士4為學士5為其他\n");

printf("工資為%d",em[i].salary);

printf("身體情況為%d",em[i].state);

printf("1好2為壹般3為差\n");

fclose(fp);

}

}

void count()

{

FILE *fp;

int i=0;

int num=0;//總人數統計

int mnum=0,fnum=0;//性別人數統計

int expernum=0,doctornum=0,masternum=0,bechelornum=0,othernum=0;//學位人數統計

int dsznum=0,zglnum=0,fzglnum=0,glnum=0,fglnum=0;//職位人數統計

int mishunum=0,jsynum=0,lbnum=0,ygnum=0;

if((fp=fopen("employee.txt","r"))==NULL)

{

printf("不能夠打開這個文件\n");

printf("按任意鍵繼續\n");

getch();

return;

}

do

{

fread(&em[i],sizeof(struct employee),1,fp);

if(feof(fp))

break;

num++;

if(strcmp(em[i].sex,"m")==0)

mnum++;

if(strcmp(em[i].sex,"f")==0)

fnum++;

if(em[i].cult==1)

expernum++;

if(em[i].cult==2)

doctornum++;

if(em[i].cult==3)

masternum++;

if(em[i].cult=4)

bechelornum++;

if(em[i].cult=5)

othernum++;

if(em[i].position==1)//職位統計

dsznum++;

if(em[i].position==2)

zglnum++;

if(em[i].position==3)

fzglnum++;

if(em[i].position==4)

glnum++;

if(em[i].position==5)

fglnum++;

if(em[i].position==6)

mishunum++;

if(em[i].position==7)

jsynum++;

if(em[i].position==8)

lbnum++;

if(em[i].position==9)

ygnum++;

i++;

}while(1);

printf("總人數為%d\n",num);

printf("====性別分類=====\n");

printf("男人數為%d\n",mnum);

printf("女人數為%d\n",fnum);

printf("=====文憑分類=====\n");

printf("專家數為%d\n",expernum);

printf("博士數為%d\n",doctornum);

printf("碩士數為%d\n",masternum);

printf("學士數為%d\n",bechelornum);

printf("其他的數為%d\n",othernum);

printf("=====職位分類========\n");

printf("董事長數為%d\n",dsznum);

printf("總經理數為%d\n",zglnum);

printf("副總經理數為%d",fzglnum);

printf("經理數為%d",glnum);

printf("副經理數為%d",fglnum);

printf("秘書數為%d",mishunum);

printf("技術員數為%d",jsynum);

printf("領班人數為%d",lbnum);

printf("員工數為%d",ygnum);

fclose(fp);

return;

}

void query()

{

FILE *fp;

int i=0;

char quename[8];

if((fp=fopen("employee.txt","r"))==NULL)

{

printf("不能夠打開文件,按任意鍵返回\n");

getch();

return;

}

printf("請妳輸入要查詢的人的姓名\n");

scanf("%s",quename);

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

if(strcmp(em[i].name,quename)==0) /*找到,並顯示該職工記錄*/

{

printf("\t\t\n查詢到的職工號或姓名為的信息如下:\n");

printf("以下是妳要查詢的人的信息\n");

printf("工號%d",em[i].num);

printf("職位為%d",em[i].position);

printf("\t1為董事長2為總經理3為副總經理\n");

printf("\t4為經理5為副經理6為秘書\n");

printf("\t7為技術員8為領班9為員工\n");

printf("姓名為%s",em[i].name);

printf("性別為%s",em[i].sex);

printf("\t其中m為男f為女");

printf("文化程度為%d",em[i].cult);

printf("\t1為專家2為博士3為碩士4為學士5為其他\n");

printf("工資為%d",em[i].salary);

printf("身體情況為%d",em[i].state);

printf("\n");

printf("查詢完畢,按任意鍵返回\n");

getch();

fclose(fp);

return;

}

}

printf("沒有這樣的人,按任意鍵返回\n");

getch();

fclose(fp);

return;

}

void querysalary()

{

int i;

FILE *fp1,*fp2;

creat();

if((fp1=fopen("employee.txt","w+"))==NULL)

return;

for(i=0;fread(&em[i],sizeof(struct employee),1,fp1)!=0;i++)

{

printf("輸出結果為:\n");

printf("工號%d",em[i].num);

printf("職位為%d",em[i].position);

printf("1為董事長2為總經理3為副總經理\n");

printf("4為經理5為副經理6為秘書\n");

printf("7為技術員8為領班9為員工\n");

printf("姓名為%s",em[i].name[8]);

printf("性別為%s",em[i].sex[2]);

printf("其中m為男f為女");

printf("文化程度為%d",em[i].cult);

printf("1為專家2為博士3為碩士4為學士5為其他\n");

printf("工資為%d",em[i].salary);

printf("身體情況為%d",em[i].state);

printf("1好2為壹般3為差\n");

strcpy(emps[i].name,em[i].name);

emps[i].salary=em[i].salary;

}

if((fp2=fopen("empsalary.txt","w"))==NULL)

return;

for(i=0;i<N;i++)

fwrite(&emps[i],sizeof(struct empsalary),1,fp2);

fclose(fp1);

fclose(fp2);

}

void creat()

{

FILE *fp;

if((fp=fopen("employee.txt","w+"))==NULL)

return;

input();

fclose(fp);

}

void communicate()

{

int choicecommunicate;

printf("歡迎進入通訊錄系統\n");

printf("請妳選擇操作類型:\n");

printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");

printf("1為輸入通訊錄信息\n");

printf("2為查詢通訊錄信息\n");

printf("3為修改通訊錄信息\n");

printf("0為退出通訊錄系統\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

scanf("%d",&choicecommunicate);

switch(choicecommunicate)

{

case 1:

inputcommunicate();

break;

case 2:

querycommunicate();

break;

case 3:

changecommunicate();

break;

case 0:

{

printf("謝謝使用再見\n");

printf("按任意鍵返回\n");

getch();

return;

}

default:

printf("輸入有錯\n");

}

}

void inputcommunicate()

{

FILE *fp;

int choiceincom='y';

int i=0;

if((fp=fopen("empcom.txt","w"))==NULL)

{

printf("不能夠打開文件\n");

printf("任意鍵返回\n");

getch();

return;

}

printf("請妳輸入通訊錄的信息:\n");

while(choiceincom=='y'||choiceincom=='Y')

{

i++;

printf("第%d個職工\n",i);

printf("請妳輸入姓名:\n");

scanf("%s",empc[i].name);

printf("請妳輸入辦公室電話號碼:\n");

scanf("%s",empc[i].officetel);

printf("請妳輸入家庭電話號碼:\n");

scanf("%s",empc[i].hometel);

printf("請妳輸入手機號碼:\n");

scanf("%s",empc[i].handtel);

printf("請妳輸入地址:\n");

scanf("%s",empc[i].address);

printf("是否繼續輸入?(y/n)\n");

choiceincom=getch();

fwrite(&empc[i],sizeof(struct communication),1,fp);

}

if(toupper(choiceincom)=='N')

{

fclose(fp);

printf("輸入完畢,任意鍵返回\n");

return;

}

}

void querycommunicate()

{

FILE *fp;

int i=0;

char qcname[8];

if((fp=fopen("empcom.txt","r"))==NULL)

{

printf("不能夠打開文件,按任意鍵返回\n");

getch();

return;

}

printf("請妳輸入要查詢的人的姓名:\n");

scanf("%s",qcname);

for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)

{

if(strcmp(empc[i].name,qcname)==0)

{

printf("以下為您所要求的信息:\n");

printf("姓名為%s\n",empc[i].name);

printf("辦公室電話號碼為%s\n",empc[i].officetel);

printf("家庭電話號碼為%s\n",empc[i].hometel);

printf("手機號碼為%s\n",empc[i].handtel);

printf("家庭地址為%s\n",empc[i].address);

printf("查詢完畢,按任意鍵返回\n");

getch();

fclose(fp);

return;

}

}

printf("沒有這樣的人,按任意鍵返回\n");

getch();

fclose(fp);

return;

}

void changecommunicate()

{

FILE *fp;

int i=0;

char chcname[8];

int choicecom;

if((fp=fopen("empcom.txt","w+"))==NULL)

{

printf("打不開文件按任意鍵返回\n");

getch();

return;

}

printf("請妳輸入妳要修改的人的姓名:\n");

scanf("%s",chcname);

for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)

{

if(strcmp(empc[i].name,chcname)==0)

{

printf("以下為您所要修改的人的信息:\n");

printf("姓名為%s\n",empc[i].name);

printf("辦公室電話號碼為%s\n",empc[i].officetel);

printf("家庭電話號碼為%s\n",empc[i].hometel);

printf("手機號碼為%s\n",empc[i].handtel);

printf("家庭地址為%s\n",empc[i].address);

printf("請妳選擇要修改的東西:\n");

printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");

printf("1修改辦公室電話號碼\n");

printf("2修改家庭電話號碼\n");

printf("3修改手機電話號碼\n");

printf("0退出系統\n");

printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");

scanf("%d",&choicecom);

switch(choicecom)

{

case 1:

changetel1();

break;

case 2:

changetel2();

break;

case 3:

changetel3();

break;

case 0:

return;

default:

printf("輸入有錯\n");

}

}

}

}

void changetel1()

{

printf("參照上面有時間再編\n");

}

void changetel2()

{

printf("參照上面\n");

}

void changetel3()

{

printf("參照上面\n");

}

==============================================

編程愛好者群:24410693 只要對c有興趣就可以申請加入本群.

  • 上一篇:用手掌畫小火箭,用手掌畫小火箭怎麽畫
  • 下一篇:手環編程開發

    網頁

    要求

    科學

    知識

    更多

    搜索

    Mi頻段拆卸-電子電路-UP93論壇

    [圖文]今天給大家帶來的是mi band 1的拆解。在拆解之前,我會先拍壹張“活的”照片,稍後我會“解剖”它。1,正面2,背面3。用指甲鉗拆金屬前面板,防水塗層在下面。4.防水塗層還不錯,這裏是拆解後的防水塗層。...

  • copyright 2024編程學習大全網