本文目錄一覽:
- 1、c語言如何查詢有多少個姓氏
- 2、c語言如何實現模糊查找?
- 3、C語言 關於模糊查詢的問題
- 4、求助C語言學生系統中按照姓名進行查找學生
- 5、C語言學生管理系統
- 6、如何用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