c語言中用姓氏進行模糊查詢,c語言實現模糊查詢

本文目錄一覽:

c語言如何查詢有多少個姓氏

1、首先要打開c語言這款軟體。

2、其次編寫一個統計姓氏方法。

3、最後使用strcmp進行查詢即可。

c語言如何實現模糊查找?

1、首先,打開網頁-【C語言在線編程工具】。

2、接著,先定義一個大數字。

3、接著通過【數字轉換成字元串】,並逗號分隔。

4、最後,在主函數實現整體的功能。流程是【定義數字-轉換-輸出】。

5、輸出效果如下。

C語言 關於模糊查詢的問題

請查閱

string.h

strstr函數

函數名: strstr

功 能: 在串中查找指定字元串的第一次出現

用 法: char *strstr(char *str1, char *str2);

說明:返回指向第一次出現str2位置的指針,如果沒找到則返回NULL。

調用函數,判斷返回值是否等於NULL,決定是否輸出

如;

char *p=”.c”; //需要的子串

if(strstr(A,p)) printf(“%s”,A);

本貼來自ZDNetChina中文社區 ,本貼地址:

求助C語言學生系統中按照姓名進行查找學生

#include

#include

#include

struct Link/*定義結構體鏈表*/

{

int number;

char name[20];

char sex[4];

int chinese;

int math;

int lizong;

int english;

int sum;

float average;

struct Link*next;

};

void Picture(void);/*進行函數調用*/

char Menu1(void);

char Menu2(void);

struct Link *Append(struct Link *head);

void Print(struct Link*head);

struct Link *Delete(struct Link *head);

struct Link *Change(struct Link *head);

void Find(struct Link*head);

void Sort1(struct Link*head);

void Sort2(struct Link*head);

void Sort3(struct Link*head);

void Sort4(struct Link*head);

void Deletememory(struct Link*head);

void Beifen(struct Link*head);

struct Link*Huanyuan(struct Link*head);

int Total(struct Link*head);

const char *file=”wenjian”;

char *Mima(void);

int main()

{

char choice,ch,*shuru,mima[7]=”123456″;

struct Link *head=NULL;

system(“color 4f”);

Picture();

printf(“登陸身份認證:\n你是一位老師還是一名學生?(Teacher/Student)\n”);

scanf(“%c”,ch);

if(ch==’T’||ch==’t’)

{

do

{ printf(“請輸入6位密碼:\n”);

scanf(“%s”,shuru);

if(strcmp(shuru,mima)==0)

break;

else {printf(“輸入密碼不正確\n”);}

}while(strcmp(shuru,mima)!=0);

while(1)

{

system(“cls”);

choice=Menu1();

switch(choice)

{

case ‘1’:

head=Append(head);

system(“cls”);

break;

case ‘2’:

Print(head);

break;

case ‘3’:

head=Delete(head);

break;

case ‘4’:system(“cls”);

head=Change(head);

printf(“想要查看嗎?(Y/N)”);

scanf(” %c”,ch);

if(ch==’Y’||ch==’y’)

Print(head);

break;

case ‘5’:Find(head);

break;

case ‘6’:Sort1(head);

printf(“已經排好順序了\n”);

break;

case ‘7’:Sort2(head);

printf(“已經排好順序了\n”);

break;

case ‘8’:Sort3(head);

printf(“已經排好順序了\n”);

break;

case ‘9’:Sort4(head);

printf(“已經排好順序了\n”);

break;

case ‘A’:Beifen(head);

exit(0);

case ‘B’:head=Huanyuan(head);

char i=getchar();

printf(“您已經成功還原,按ENTER鍵返回主菜單\n”);

i=getchar();

break;

case ‘C’:Deletememory(head);

exit(0);

default:printf(“input error!”);

break;

}

}

}

else

{

while(1)

{

system(“cls”);

choice=Menu2();

switch(choice)

{

case ‘1’:

Print(head);

break;

case ‘2’:Find(head);

break;

case ‘3’:Sort1(head);

char i=getchar();

printf(“已經排好順序了,按ENTER鍵返回主菜單\n”);

i=getchar();

break;

case ‘4’:Sort2(head);

i=getchar();

printf(“已經排好順序了,按ENTER鍵返回主菜單\n”);

i=getchar();

break;

case ‘5’:Sort3(head);

i=getchar();

printf(“已經排好順序了,按ENTER鍵返回主菜單\n”);

i=getchar();

break;

case ‘6’:Sort4(head);

i=getchar();

printf(“已經排好順序了,按ENTER鍵返回主菜單\n”);

i=getchar();

Print(head);

break;

case ‘7’:head=Huanyuan(head);

i=getchar();

printf(“您已經成功還原,按ENTER鍵返回主菜單\n”);

i=getchar();

break;

case ‘8’:Deletememory(head);

exit(0);

default:printf(“input error!”);

break;

}

}

}

}

char Menu1(void)/*教師菜單*/

{

char ch;

printf(“%5\t教師菜單\n”);

printf(“創名校 做名師 育名人\n”);

printf(“%5\t1、增添\n”);

printf(“%5\t2、列表顯示\n”);

printf(“%5\t3、刪除\n”);

printf(“%5\t4、修改\n”);

printf(“%5\t5、查詢\n”);

printf(“%5\t6、以總分降序排列\n”);

printf(“%5\t7、以總分升序排列\n”);

printf(“%5\t8、以學號降序排列\n”);

printf(“%5\t9、以學號升序排列\n”);

printf(“%5\tA、備份文件\n”);

printf(“%5\tB、還原文件\n”);

printf(“%5\tC、退出\n”);

printf(“please enter your choice:\n”);

scanf(” %c”,ch);

return ch;

}

char Menu2(void)/*學生菜單*/

{

char ch;

printf(“%5\t學生菜單\n”);

printf(“規格嚴格 功夫到家\n”);

printf(“%5\t1、列表顯示\n”);

printf(“%5\t2、查詢\n”);

printf(“%5\t3、以總分降序排列\n”);

printf(“%5\t4、以總分升序排列\n”);

printf(“%5\t5、以學號降序排列\n”);

printf(“%5\t6、以學號升序排列\n”);

printf(“%5\t7、還原文件\n”);

printf(“%5\t8、退出\n”);

printf(“please enter your choice:\n”);

scanf(” %c”,ch);

return ch;

}

struct Link *Append(struct Link *head)/*增添的函數*/

{

char c;

do{

system(“cls”);

system(“color 1f”);

struct Link *p=NULL;

struct Link *pr=head;

p=(struct Link*)malloc(sizeof(struct Link));

if(p==NULL)

{

printf(“沒有足夠內存,返回主菜單\n”);

break;

}

if(head==NULL)

{

head=p;

}

else

{

while(pr-next!=NULL)

{

pr=pr-next;

}

pr-next=p;

}

pr=p;

printf(“請輸入學號\n”);

scanf(“%d”,p-number);

printf(“請輸入姓名\n”);

scanf(“%s”,p-name);

printf(“請輸入性別\n”);

scanf(“%s”,p-sex);

printf(“請輸入語文成績(0——150)\n”);

do{

scanf(“%d”,p-chinese);

if((p-chinese)chinese)150)

printf(“輸入分數有誤,請重新輸入\n”);

}while((p-chinese)chinese)150);

printf(“請輸入數學(0——150)\n”);

scanf(“%d”,p-math);

printf(“請輸入理科綜合成績(0——300)\n”);

scanf(“%d”,p-lizong);

printf(“請輸入英語成績(0——150)\n”);

scanf(“%d”,p-english);

p-sum=(p-chinese)+(p-math)+(p-lizong)+(p-english);

p-average=(float)(p-sum)/4;

pr-next=NULL;

printf(“\nnew nodes have been append!\n”);

printf(“\n是否想新增加一個新成員?(Y/N)\n”);

scanf(” %c”,c);

}

while(c==’Y’||c==’y’);

return head;

}

void Print(struct Link*head)/*列表顯示的函數*/

{

if(head==NULL)

{

char i=getchar();

printf(“無內容,無法顯示,按ENTER鍵返回菜單\n”);

i=getchar();

system(“cls”);

}

else{

printf(“學號 姓名 性別 語文 數學 理科綜合 英語 總分 平均分\n”);

struct Link*p=head;

while(p!=NULL)

{

printf(“\n%d %s %s %d”,p-number,p-name,p-sex,p-chinese);

printf(” %d %d %d %d %.2f”,p-math,p-lizong,p-english,p-sum,p-average);

p=p-next;

}

char i=getchar();

printf(“\n按ENTER鍵返回主菜單\n”);

i=getchar();

system(“cls”);

}

}

struct Link *Delete(struct Link *head)/*刪除的函數*/

{

if(head==NULL)

{

char i=getchar();

printf(“鏈表為空,沒有要刪除對象,按ENTER鍵返回主菜單\n”);

i=getchar();

system(“cls”);

}

else{

int c;

char ch;

do{

if(head==NULL)

{

char i=getchar();

printf(“鏈表為空,沒有要刪除對象,按ENTER鍵返回主菜單\n”);

i=getchar();

system(“cls”);

break;

}

printf(“請輸入要刪除的學號\n”);

scanf(“%d”,c);

struct Link *p=head,*pr=head;

while(c!=p-numberp-next!=NULL)

{

pr=p;

p=p-next;

}

if(c==p-number)

{

if(p==head)

{

head=p-next;

}

else

{

pr-next=p-next;

}

free(p);

printf(“您已經成功刪除”);

}

else printf(“沒有找到!”);

printf(“\n想繼續嗎?(Y/N)”);

scanf(” %c”,ch);

}while(ch==’Y’||ch==’y’);

system(“cls”);

}

return head;

}

struct Link *Change(struct Link *head)/*修改的函數*/

{

int c;

char ch;

do{

if(head==NULL)

{

printf(“鏈表為空,沒有要刪除對象\n”);

break;

}

printf(“請輸入要修改的學號\n”);

scanf(“%d”,c);

struct Link *p=head;

while(c!=p-numberp!=NULL)

{

p=p-next;

}

if(c==p-number)

{

printf(“請輸入改後學號\n”);

scanf(“%d”,p-number);

printf(“請輸入改後姓名\n”);

scanf(“%s”,p-name);

printf(“請輸入改後性別\n”);

scanf(“%s”,p-sex);

printf(“請輸入改後語文成績\n”);

scanf(“%d”,p-chinese);

printf(“請輸入改後數學\n”);

scanf(“%d”,p-math);

printf(“請輸入改後理科綜合成績\n”);

scanf(“%d”,p-lizong);

printf(“請輸入改後英語成績\n”);

scanf(“%d”,p-english);

p-sum=(p-chinese)+(p-math)+(p-lizong)+(p-english);

p-average=(float)(p-sum)/4;

printf(“您已經成功修改\n”);

}

else printf(“沒找到!\n”);

printf(“想繼續修改嗎?(Y/N)”);

scanf(” %c”,ch);

}while(ch==’Y’||ch==’y’);

return head;

}

void Find(struct Link*head)/*查找的函數*/

{

int c;

char ch;

struct Link*p=head;

do{

printf(“請輸入想要查詢的學號:\n”);

scanf(“%d”,c);

if(head==NULL)

{

printf(“鏈表為空,沒有查詢對象\n”);

break;

}

while(c!=p-numberp!=NULL)

{

p=p-next;

}

if(c==p-number)

{

printf(“學號 姓名 性別 語文 數學 理科綜合 英語 總分 平均分\n”);

printf(“\n%d %s %s %d”,p-number,p-name,p-sex,p-chinese);

printf(” %d %d %d %d %.2f”,p-math,p-lizong,p-english,p-sum,p-average);

}

else printf(“您的輸入有誤,暫時沒有此學號的學生,請查證後再查詢\n”);

printf(“想繼續查詢嗎?(Y/N)\n”);

scanf(” %c”,ch);

}while(ch==’Y’||ch==’y’);

}

void Picture(void)/*超豪華界面,後來發現可以比這更簡單,但已經做完了,就沒有修改*/

{

printf (“hello world”);

}

void Sort1(struct Link*head)/*排序函數1*/

{

struct Link*p;

int flag=0;

char temp1[20];

int temp2;

do

{

if(head==NULL)

{

char i=getchar();

printf(“鏈表為空,按ENTER鍵返回菜單\n”);

i=getchar();

break;

}

flag=0;

p=head;

while(p-next!=NULL)

{

if((p-sum)next-sum))/*只交換節點內容*/

{

temp2=(p-next-sum);//sum

(p-next-sum)=(p-sum);

(p-sum)=temp2;

strcpy(temp1,(p-next-name));//name

strcpy((p-next-name),(p-name));

strcpy((p-name),temp1);

strcpy(temp1,(p-next-sex));//sex

strcpy((p-next-sex),(p-sex));

strcpy((p-sex),temp1);

temp2=(p-next-chinese);

(p-next-chinese)=(p-chinese);

(p-chinese)=temp2;

temp2=(p-next-math);

(p-next-math)=(p-math);

(p-math)=temp2;

temp2=(p-next-lizong);

(p-next-lizong)=(p-lizong);

(p-lizong)=temp2;

temp2=(p-next-english);

(p-next-english)=(p-english);

(p-english)=temp2;

temp2=(p-next-average);

(p-next-average)=(p-average);

(p-average)=temp2;

flag=1;

}

p=p-next;

}

}while(flag);

}

void Sort2(struct Link*head)/*排序函數2*/

{

struct Link*p;

int flag=0;

char temp1[20];

int temp2;

do

{

if(head==NULL)

{

char i=getchar();

printf(“鏈表為空,按ENTER鍵返回菜單\n”);

i=getchar();

break;

}

flag=0;

p=head;

while(p-next!=NULL)

{

if((p-sum)(p-next-sum))/*只交換節點內容*/

{

temp2=(p-next-sum);//sum

(p-next-sum)=(p-sum);

(p-sum)=temp2;

strcpy(temp1,(p-next-name));//name

strcpy((p-next-name),(p-name));

strcpy((p-name),temp1);

strcpy(temp1,(p-next-sex));//sex

strcpy((p-next-sex),(p-sex));

strcpy((p-sex),temp1);

temp2=(p-next-chinese);

(p-next-chinese)=(p-chinese);

(p-chinese)=temp2;

temp2=(p-next-math);

(p-next-math)=(p-math);

(p-math)=temp2;

temp2=(p-next-lizong);

(p-next-lizong)=(p-lizong);

(p-lizong)=temp2;

temp2=(p-next-english);

(p-next-english)=(p-english);

(p-english)=temp2;

temp2=(p-next-average);

(p-next-average)=(p-average);

(p-average)=temp2;

flag=1;

}

p=p-next;

}

}while(flag);

}

void Sort3(struct Link*head)/*排序函數3*/

{

struct Link*p;

int flag=0;

char temp1[20];

int temp2;

do

{

if(head==NULL)

{

char i=getchar();

printf(“鏈表為空,按ENTER鍵返回菜單\n”);

i=getchar();

break;

}

flag=0;

p=head;

while(p-next!=NULL)

{

if((p-number)next-number))/*只交換節點內容*/

{

temp2=(p-next-sum);//sum

(p-next-sum)=(p-sum);

(p-sum)=temp2;

strcpy(temp1,(p-next-name));//name

strcpy((p-next-name),(p-name));

strcpy((p-name),temp1);

strcpy(temp1,(p-next-sex));//sex

strcpy((p-next-sex),(p-sex));

strcpy((p-sex),temp1);

temp2=(p-next-chinese);

(p-next-chinese)=(p-chinese);

(p-chinese)=temp2;

temp2=(p-next-math);

(p-next-math)=(p-math);

(p-math)=temp2;

temp2=(p-next-lizong);

(p-next-lizong)=(p-lizong);

(p-lizong)=temp2;

temp2=(p-next-english);

(p-next-english)=(p-english);

(p-english)=temp2;

temp2=(p-next-average);

(p-next-average)=(p-average);

(p-average)=temp2;

flag=1;

}

p=p-next;

}

}while(flag);

}

void Sort4(struct Link*head)/*排序函數4*/

{

struct Link*p;

int flag=0;

char temp1[20];

int temp2;

do

{

if(head==NULL)

{

char i=getchar();

printf(“鏈表為空,按ENTER鍵返回菜單\n”);

i=getchar();

break;

}

flag=0;

p=head;

while(p-next!=NULL)

{

if((p-number)(p-next-number))/*只交換節點內容*/

{

temp2=(p-next-sum);//sum

(p-next-sum)=(p-sum);

(p-sum)=temp2;

strcpy(temp1,(p-next-name));//name

strcpy((p-next-name),(p-name));

strcpy((p-name),temp1);

strcpy(temp1,(p-next-sex));//sex

strcpy((p-next-sex),(p-sex));

strcpy((p-sex),temp1);

temp2=(p-next-chinese);

(p-next-chinese)=(p-chinese);

(p-chinese)=temp2;

temp2=(p-next-math);

(p-next-math)=(p-math);

(p-math)=temp2;

temp2=(p-next-lizong);

(p-next-lizong)=(p-lizong);

(p-lizong)=temp2;

temp2=(p-next-english);

(p-next-english)=(p-english);

(p-english)=temp2;

temp2=(p-next-average);

(p-next-average)=(p-average);

(p-average)=temp2;

flag=1;

}

p=p-next;

}

}while(flag);

}

void Deletememory(struct Link *head)/*清楚內存*/

{

struct Link*p=head,*pr=NULL;

while(p!=NULL)

{

pr=p;

p=p-next;

free(pr);

}

}

void Beifen(struct Link*head)/*仿照資料庫的思路,用備份和還原的方法解決文件問題*/

{

FILE*fp;

struct Link*p=head;

int x=0;

fp=fopen(file,”w+”);

if(fp==NULL)

{

printf(“Can’t open %s file\n”,file);

exit(1);

}

x=Total(head);

fputc(x,fp);

while(p!=NULL)

{

fwrite(p,sizeof(struct Link),1,fp);

p=p-next;

}

printf(“您已經成功備份,按ENTER鍵退出系統\n”);

fclose(fp);

}

struct Link*Huanyuan(struct Link*head)/*還原文件*/

{

int m=1,n;

FILE*fp;

fp=fopen(file,”r+”);

if(fp==NULL)

{

printf(“Can’t open %s file\n”,file);

//exit(1);

}

struct Link*p=NULL;

struct Link*pr=NULL;

n=fgetc(fp);

pr=(struct Link*)malloc(sizeof(struct Link));

fread(pr,sizeof(struct Link),1,fp);

head=pr;

while(m=n)

{

p=(struct Link*)malloc(sizeof(struct Link));

fread(p,sizeof(struct Link),1,fp);

pr-next=p;

pr=p;

pr-next=NULL;

m=m+1;

}

return head;

}

int Total(struct Link*head)/*計算輸入的學生總數,在還原函數中要用到*/

{

struct Link*p=head;

int n=-1;

while(p!=NULL)

{

n++;

p=p-next;

}

return n;

}

C語言學生管理系統

#includestdio.h

#includestring.h

#includestdlib.h

#includeconio.h

#define max 20

typedef struct student //學生

{

char sno[max]; // 學號

char sname[max]; //姓名

char sex[max]; //性別

char age[max]; //年齡

char depart[max]; //系

char classs[max]; //班

char grade[max]; //年級

struct student* next;

} student;

student* head;

int LogOn() //登錄模塊,已實現輸入密碼不回顯,如果中途發現輸錯某幾位,可退格鍵重輸

{

char username[max],password[max];

printf(“\n請輸入用戶名:”);

scanf(“%s”,username);

printf(“\n請輸入密碼(最多15位):”);

//開始以不回顯且支持退格方式獲取輸入密碼

int i=0;

while((i=0)(password[i++]=getch())!=13)//條件i=0是用於限制退格的範圍

{

if(password[i-1]==’\b’)//對退格鍵的處理

{

printf(“%c%c%c”,’\b’,’\0′,’\b’);

i=i-2;

}

else

printf(“*”);

}

password[–i]=’\0′;

//已獲取密碼。驗證用戶身份

if(!strcmp(username,”zhang”)!strcmp(password,”8147086″))

{

printf(“\n登錄成功!”);

return 1;

}

else

return 0;

}

void regist()

{

char ch;

student *s,*ptr; //s用來建新結點,ptr用來暫存頭結點

do

{

s=(student*)malloc(sizeof(student)); // 新建一個學生結點

printf(“\n開始註冊…”); //開始註冊

printf(“\n請輸入該學生的學號:”);

scanf(“%s”,s-sno);

printf(“\n請輸入該學生的姓名:”);

scanf(“%s”,s-sname);

printf(“\n請輸入該學生的性別:”);

scanf(“%s”,s-sex);

printf(“\n請輸入該學生的年齡:”);

scanf(“%s”,s-age);

printf(“\n請輸入該學生的系:”);

scanf(“%s”,s-depart);

printf(“\n請輸入該學生所在的班:”);

scanf(“%s”,s-classs);

printf(“\n請輸入該學生所在的年級”);

scanf(“%s”,s-grade);

ptr=head;

head=s;//將新結點插入隊頭

s-next=ptr;

fflush(stdin);

printf(“\n請問是否繼續註冊?(Y/N)”);

scanf(“%c”,ch);

}while(ch==’Y’||ch==’y’);

return;

}

void ElePrint(char str[]) //輸出單個元素

{

if(str==NULL) exit(0);

printf(“%s”,str);

for(unsigned int i=0;i12-strlen(str);i++) printf(” “);//為了對齊輸出,需插入一些空格

return;

}

int LinePrint(student *ptr) //輸出一行

{

if(ptr==NULL) //檢查傳進來的指針

return 0;

printf(“\n”);

ElePrint(ptr-sno);

ElePrint(ptr-sname);

ElePrint(ptr-age);

ElePrint(ptr-sex);

ElePrint(ptr-depart);

ElePrint(ptr-classs);

ElePrint(ptr-grade);

return 1;

}

void print() //輸出全部學生信息

{

student *ptr=head;

printf(“\n學號 姓名 年齡 性別 系 班 年級 “);

while(ptr)

{

LinePrint(ptr);

ptr=ptr-next;

}

printf(“\n”);

return;

}

void search()//查詢模塊

{

int method;//查詢方式

char no[max],name[max],departm[max],clss[max],grades[max]; //用來接收查詢關鍵字

while(1)

{

printf(“\n請選擇查詢方式”);

printf(“\n1.按學號查詢”);

printf(“\n2.按姓名查詢”);

printf(“\n3.按所在系查詢”);

printf(“\n4.按所在班級查詢”);

printf(“\n5.按所在年級查詢”);

printf(“\n6.列印全部學生信息”);

printf(“\n7.返回主菜單\n”);

scanf(“%d”,method);

student *p=head,*temp;

switch(method)

{

case 1:

printf(“\n請輸入要查詢的學號:”);

scanf(“%s”,no);

while(p)

{

if(!strcmp(p-sno,no))

break;

else

{

temp=p;

p=p-next;

}

}

printf(“\n學號 姓名 年齡 性別 系 班 年級 “);

LinePrint(p);

break;

case 2:

printf(“\n請輸入要查詢的姓名:”);

scanf(“%s”,name);

printf(“\n學號 姓名 年齡 性別 系 班 年級 “);

while(p)

{

if(!strcmp(p-sname,name))

LinePrint(p);

p=p-next;

}

break;

case 3:

printf(“\n請輸入學生所在的系:”);

scanf(“%s”,departm);

printf(“\n學號 姓名 年齡 性別 系 班 年級 “);

while(p)

{

if(!strcmp(p-depart,departm))

LinePrint(p);

p=p-next;

}

break;

case 4:

printf(“\n請輸入學生所在的班:”);

scanf(“%s”,clss);

printf(“\n請輸入學生所在的年級:”);

scanf(“%s”,grades);

printf(“\n學號 姓名 年齡 性別 系 班 年級 “);

while(p)

{

if(!strcmp(p-classs,clss)!strcmp(p-grade,grades))

LinePrint(p);

p=p-next;

}

break;

case 5:

printf(“\n請輸入學生所在的年級:”);

scanf(“%s”,grades);

printf(“\n學號 姓名 年齡 性別 系 班 年級 “);

while(p)

{

if(!strcmp(p-grade,grades))

LinePrint(p);

p=p-next;

}

break;

case 6:

print();

break;

case 7:

return;

default:

printf(“很抱歉,暫無此查詢方式!”);

break;

}

}

}

void modify()//修改學生信息

{

char num[max];

student *p=head;

printf(“\n請輸入要修改的學生的學號:”);

scanf(“%s”,num);

while(p)

{

if(!strcmp(p-sno,num))

break;

else

p=p-next;

}

if(p==NULL)

{

printf(“\n錯誤:沒有此學生的信息!\n”);

return;

}

LinePrint(p);

printf(“\n請輸入要修改的該學生的信息:”);

printf(“\n1.姓名”);

printf(“\n2.性別”);

printf(“\n3.年齡”);

printf(“\n4.所在的系”);

printf(“\n5.所在的班”);

printf(“\n6.所在的年級”);

char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];

int select;

fflush(stdin);

scanf(“%d”,select);

printf(“\n請輸入新的信息:”);

switch(select)

{

case 1:

scanf(“%s”,name1);

strcpy(p-sname,name1);

break;

case 2:

scanf(“%s”,sex1);

strcpy(p-sex,sex1);

break;

case 3:

scanf(“%s”,age1);

strcpy(p-age,age1);

break;

case 4:

scanf(“%s”,depart1);

strcpy(p-depart,depart1);

break;

case 5:

scanf(“%s”,class1);

strcpy(p-classs,class1);

break;

case 6:

scanf(“%s”,grade1);

strcpy(p-grade,grade1);

break;

default:

printf(“\nError!”);

break;

}

LinePrint(p);

return;

}

void del()// 刪除某學生的信息

{

student *p=head,*temp=head,*s;

char num1[max];

printf(“\n請輸入要刪除的學生的學號:”);

scanf(“%s”,num1);

while(p)//查找該學生所在的結點

{

if(!strcmp(p-sno,num1))

break;

else

{

temp=p;

p=p-next;

}

}//while

if(!p)

{

printf(“\n不存在此學生的信息.”);

return;

}

LinePrint(p);//輸出該學生的信息

printf(“\n請問真的要刪除該學生的信息嗎?(Y/N)”);

char ch;

fflush(stdin);

scanf(“%c”,ch);

if(ch==’Y’||ch==’y’)

{

s=p-next;

temp-next=s;

free(p);

printf(“\n已經刪除該學生的信息.”);

}

return;

}

void sort() //排序模塊。將學生記錄按學號從小到大排列。用起泡排序演算法實現

{

student *ptr,*s=head,*p;

int count=0,count1;

while(s)//統計鏈表結點個數

{

count++;

s=s-next;

}

for(int i=1;icount;i++)

{

ptr=head;

p=NULL;

count1=count-i; //用來控制每輪起泡排序的終點,即每次把學號最小的結點移到倒數第i個結點

while(ptrptr-next(count1–))

{

if(strcmp(ptr-sno,ptr-next-sno)0)

{

s=ptr-next;

ptr-next=s-next;

if(p==NULL) //ptr處於隊頭時

head=s;

else

p-next=s;

s-next=ptr;

p=s;

}

else

{

ptr=ptr-next;

if(p==NULL) //ptr處於隊頭時

p=head;

else

p=p-next;

}

}

}

return;

}

void quit()

{

char ch;

printf(“\n真的要退出?(Y/N)”);

fflush(stdin);

scanf(“%c”,ch);

if(ch==’Y’||ch==’y’)

exit(0);

return;

}

int main()

{

int option;

printf(“\nCopyright@2005 KongXinCai All rights reserved.”);

printf(“\n歡迎使用學生信息管理系統!\n”);

//登錄模塊

int icheck=0;

while(icheck3)

{

if(LogOn()==0)

icheck++;

else

break;

}

if(icheck==3)

{

printf(“\n連續登錄三次不成功,退出!”);

exit(0);

}

//系統界面

while(1)

{

printf(“\n\n請選擇需要的服務:”);

printf(“\n1.註冊”);

printf(“\n2.查詢”);

printf(“\n3.修改”);

printf(“\n4.刪除”);

printf(“\n5.排序”);

printf(“\n7.求平均”);

printf(“\n6.退出\n”);

scanf(“%d”,option);

switch(option)

{

case 1:

regist();

break;

case 2:

search();

break;

case 3:

modify();

break;

case 4:

del();

break;

case 5:

sort();

break;

case 6:

quit();

break;

}

}

return 0;

}

如何用C語言實現文件的模糊查找-程序設計 C語言 文件名 模糊查找

一要能夠查找文件名,首先,要能夠遍歷目錄;把它寫出來

二在1的基礎上,把獲得的每個文件名與key比較,若文件名包含key則找到輸出,並

繼續;否則不輸出繼續,查下一個

文件名包含key判斷方面,string.h里有個strstr可以使用;具體你翻查看下,不再贅述。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152257.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-12 00:56
下一篇 2024-11-12 00:56

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論