//我猜應該是在主函式,輸入n的值后n就固定了,造成每次回圈都執行case 1,我想輸入一個學生資訊后break,回傳主選單界面重新選擇。但是請問怎么改?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Member
{
char number[10];
char name[10];
char gender[10];
int birth;
char yuanxi[10];
char zhiwu[10];
int sushehao;
int phonenumber;
};
struct Member lib[10];
int num=0;
int display(char s[]);
void delete_member();
void jiemian();
void sort();
void jiemian();
void jiemian()
{
printf("簡單社團管理系統\n");
printf("選擇想要進行的操作:\n");
printf("1添加學生資訊 2洗掉學生資訊 3修改學生資訊 4查找學生資訊 5顯示學生資訊 6退出程式\n");
}
void rush(struct Member lib[]) //新成員入社
{
int i=num;
while(1)
{
printf("請輸入第%d個同學資訊\n",i+1);
printf("請輸入學號:");
scanf("%s",lib[i].number);
printf("請輸入姓名:");
scanf("%s",lib[i].name);
printf("請輸入性別:");
scanf("%s",lib[i].gender);
printf("請輸入生日:");
scanf("%d",&lib[i].birth);
printf("請輸入院系:");
scanf("%s",lib[i].yuanxi);
printf("請輸入職務:");
scanf("%s",lib[i].zhiwu);
printf("請輸入宿舍號:");
scanf("%d",&lib[i].sushehao);
printf("請輸入手機號:");
scanf("%d",&lib[i].phonenumber);
i++;
}
printf("已輸入%d個同學的資訊\n",num);
}
void sort()//按學號排序
{
int i,j;
struct Member temp;
for(j=0;j<num;j++)
for(i=1;i<num;i++)
if(lib[i].number<lib[i+1].name)
{
temp=lib[i];
lib[i]=lib[i+1];
lib[i+1]=temp;
}
printf("排序后結果為:\n");
for(i=0;i<num;i++)
{
printf("該同學學號:%s",lib[i].number);
printf("\n");
printf("該同學姓名:%s",lib[i].name);
printf("\n");
printf("該同學性別:%s",lib[i].gender);
printf("\n");
printf("該同學生日:%d",lib[i].birth);
printf("\n");
printf("該同學院系:%s",lib[i].yuanxi);
printf("\n");
printf("該同學職務:%s",lib[i].zhiwu);
printf("\n");
printf("該同學宿舍號:%d",lib[i].sushehao);
printf("\n");
printf("該同學電話號碼:%d",lib[i].phonenumber);
printf("\n");
}
}
void delete_member() //洗掉
{
int i=1,j;
char s[20];
printf("輸入所要洗掉同學的學號:");
scanf("%s",&s);
j=display(s);
if(j!=-1)
{
for(i=1;i<num;i++)
{
lib[i]=lib[i+1];
}
printf("已洗掉");
}
}
void modify()
{
int j;
char s[20];
printf("請輸入需要修改的學生學號");
scanf("%s",s);
j=display(s);
if(j!=-1);
{
printf("\n請重新輸入該學生的資訊\n");
printf("\n請輸入學號:");
scanf("%s",lib[j].number);
printf("修改姓名:");
scanf("%s",lib[j].name);
printf("請輸入性別:");
scanf("%s",lib[j].gender);
printf("請輸入生日:");
scanf("%d",&lib[j].birth);
printf("請輸入院系:");
scanf("%s",lib[j].yuanxi);
printf("請輸入職務:");
scanf("%s",lib[j].zhiwu);
printf("請輸入宿舍號:");
scanf("%d",&lib[j].sushehao);
printf("請輸入電話號碼:");
scanf("%d",&lib[j].phonenumber);
}
}
int display(char s[])
{
int k=-1,i;
if(strlen(s)==0)
{
if(num>0)
{
for(i=0;i<num;i++)
{
printf("該同學學號:%s",lib[i].number);
printf("\n");
printf("該同學姓名:%s",lib[i].name);
printf("\n");
printf("該同學性別:%s",lib[i].gender);
printf("\n");
printf("該同學生日:%d",lib[i].birth);
printf("\n");
printf("該同學院系:%s",lib[i].yuanxi);
printf("\n");
printf("該同學職務:%s",lib[i].zhiwu);
printf("\n");
printf("該同學宿舍號:%d",lib[i].sushehao);
printf("\n");
printf("該同學電話號碼:%d",lib[i].phonenumber);
printf("\n");
}
}
else
printf("無學生資訊");
}
else
{
for(i=0;i<num;i++)
if(strcmp(s,lib[i].number) == 0)
{
printf("該同學學號:%d",lib[i].number);
printf("\n");
printf("該同學姓名:%s",lib[i].name);
printf("\n");
printf("該同學性別:%s",lib[i].gender);
printf("\n");
printf("該同學生日:%d",lib[i].birth);
printf("\n");
printf("該同學院系:%s",lib[i].yuanxi);
printf("\n");
printf("該同學職務:%s",lib[i].zhiwu);
printf("\n");
printf("該同學宿舍號:%d",lib[i].sushehao);
printf("\n");
printf("該同學電話號碼:%d",lib[i].phonenumber);
printf("\n");
k=i;
}
if(k==-1)
printf("沒有找到此學生");
}
return k;
}//回傳k=-1就是出錯,否則回傳陣列下標
void search(struct Member lib[])//按學號查找
{
char s[20];
printf("請輸入同學學號");
scanf("%s",&s);
display(s);
}
main()
{
int n;
system("cls");
for(;;)
{
jiemian();
printf("輸入選項數字");
scanf("%d",&n);
// while(n!=EOF&&n>0&&n<6)
switch(n)
{
case 1:
{
rush(lib);
break;
}
case 3:
{
void modify();
break;
}
case 2:
{
delete_member(lib);
break;
}
case 4:
{
search(lib);
break;
}
case 5:
{
int display();
break;
}
case 6:
{
exit(0);
}
}
}
}
uj5u.com熱心網友回復:
int rt = scanf("%d",&n);//檢測下是是回傳==1uj5u.com熱心網友回復:
在你的void rush函式里面,是一個while(1)死回圈,所以,你每輸入完成后,又接著輸入第二個。這樣回圈下去。
如果你只需要每次輸入一個,就重新選擇,你就可以把這個函式里的while回圈去掉。或者在回圈的最后面的i++后面加一句return;就可以了。你試試。
uj5u.com熱心網友回復:
#include<stdio.h>#include<stdlib.h>
#include<string.h>
struct Member
{
char number[10];
char name[10];
char gender[10];
int birth;
char yuanxi[10];
char zhiwu[10];
int sushehao;
int phonenumber;
};
struct Member lib[10];
int num=0;
void jiemian();
void rush() ;
int display(char s[]);
void delete_member();
void jiemian();
void sort();
void save_t();
void search();
void modify();
void jiemian()
{
printf("簡單社團管理系統\n");
printf("選擇想要進行的操作:\n");
printf("1添加學生資訊 2洗掉學生資訊 3修改學生資訊 4查找學生資訊 5顯示學生資訊 6保存程式 7按學號排序 8退出程式\n");
}
void rush() //新成員入社
{
int i=num;
printf("請輸入第%d個同學資訊\n",i+1);
printf("請輸入學號:");
scanf("%s",lib[i].number);
printf("請輸入姓名:");
scanf("%s",lib[i].name);
printf("請輸入性別:");
scanf("%s",lib[i].gender);
printf("請輸入生日:");
scanf("%d",&lib[i].birth);
printf("請輸入院系:");
scanf("%s",lib[i].yuanxi);
printf("請輸入職務:");
scanf("%s",lib[i].zhiwu);
printf("請輸入宿舍號:");
scanf("%d",&lib[i].sushehao);
printf("請輸入手機號:");
scanf("%d",&lib[i].phonenumber);
num++;
printf("已輸入%d個同學的資訊\n",num);
}
void sort()//按學號排序
{
int i,j;
struct Member temp;
for(j=1;j<=num;j++)
for(i=0;i<num;i++)
if(lib[i].number>lib[i+1].number)
{
temp=lib[i];
lib[i]=lib[i+1];
lib[i+1]=temp;
}
printf("排序后結果為:\n");
for(i=0;i<num;i++)
{
printf("該同學學號:%s",lib[i].number);
printf("\n");
printf("該同學姓名:%s",lib[i].name);
printf("\n");
printf("該同學性別:%s",lib[i].gender);
printf("\n");
printf("該同學生日:%d",lib[i].birth);
printf("\n");
printf("該同學院系:%s",lib[i].yuanxi);
printf("\n");
printf("該同學職務:%s",lib[i].zhiwu);
printf("\n");
printf("該同學宿舍號:%d",lib[i].sushehao);
printf("\n");
printf("該同學電話號碼:%d",lib[i].phonenumber);
printf("\n");
}
}
void delete_member() //洗掉
{
int i=1,j;
char s[20];
printf("輸入所要洗掉同學的學號:");
scanf("%s",&s);
j=display(s);
if(j!=-1)
{
num--;
for(i=j;i<num;i++)
{
lib[i]=lib[i+1];
}
printf("已洗掉");
}
}
void modify()
{
int j;
char s[20];
printf("請輸入需要修改的學生學號");
scanf("%s",s);
j=display(s);
if(j!=-1);
{
printf("\n請重新輸入該學生的資訊\n");
printf("\n請輸入學號:");
scanf("%s",lib[j].number);
printf("修改姓名:");
scanf("%s",lib[j].name);
printf("請輸入性別:");
scanf("%s",lib[j].gender);
printf("請輸入生日:");
scanf("%d",&lib[j].birth);
printf("請輸入院系:");
scanf("%s",lib[j].yuanxi);
printf("請輸入職務:");
scanf("%s",lib[j].zhiwu);
printf("請輸入宿舍號:");
scanf("%d",&lib[j].sushehao);
printf("請輸入電話號碼:");
scanf("%d",&lib[j].phonenumber);
}
}
int display(char s[])
{
int k=-1,i;
if(strlen(s)==0)
{
if(num>0)
{
for(i=0;i<num;i++)
{
printf("該同學學號:%s",lib[i].number);
printf("\n");
printf("該同學姓名:%s",lib[i].name);
printf("\n");
printf("該同學性別:%s",lib[i].gender);
printf("\n");
printf("該同學生日:%d",lib[i].birth);
printf("\n");
printf("該同學院系:%s",lib[i].yuanxi);
printf("\n");
printf("該同學職務:%s",lib[i].zhiwu);
printf("\n");
printf("該同學宿舍號:%d",lib[i].sushehao);
printf("\n");
printf("該同學電話號碼:%d",lib[i].phonenumber);
printf("\n");
}
}
else
printf("無學生資訊");
}
else
{
for(i=0;i<num;i++)
if(strcmp(s,lib[i].number) == 0)
{
printf("該同學學號:%s",lib[i].number);
printf("\n");
printf("該同學姓名:%s",lib[i].name);
printf("\n");
printf("該同學性別:%s",lib[i].gender);
printf("\n");
printf("該同學生日:%d",lib[i].birth);
printf("\n");
printf("該同學院系:%s",lib[i].yuanxi);
printf("\n");
printf("該同學職務:%s",lib[i].zhiwu);
printf("\n");
printf("該同學宿舍號:%d",lib[i].sushehao);
printf("\n");
printf("該同學電話號碼:%d",lib[i].phonenumber);
printf("\n");
k=i;
}
if(k==-1)
printf("沒有找到此學生");
}
return k;
}//回傳k=-1就是出錯,否則回傳陣列下標
void search(struct Member lib[])//按學號查找
{
char s[20];
printf("請輸入同學學號");
scanf("%s",&s);
display(s);
}
void save_t()
{
int i;
FILE *fp;
char fname[20];
printf("輸入檔案名( .txt)");
scanf("%s",fname);
if((fp=fopen(fname,"w"))==NULL);
{
printf("檔案保存失敗\n");
return;
}
for(i=0;i<num;i++)
{
fprintf(fp,"%s,%s,%s,%d,%s,%s,%d,%d",lib[i].number,lib[i].name,lib[i].gender,lib[i].birth,lib[i].yuanxi,lib[i].zhiwu,lib[i].sushehao,lib[i].phonenumber);
printf("成功保存檔案");
}
fclose(fp);
}
main()
{
int n;
system("cls");
for(;;)
{
jiemian();
printf("輸入選項數字");
scanf("%d",&n);
// while(n!=EOF&&n>0&&n<6)
switch(n)
{
case 1:
{
rush();
break;
}
case 3:
{
modify();
break;
}
case 2:
{
delete_member();
break;
}
case 4:
{
search();
break;
}
case 5:
{
display("");
break;
}
case 6:
{
save_t();
break;
}
case 7:
{
sort();
break;
}
case 8:
{
exit(0);
}
}
}
}
uj5u.com熱心網友回復:
sort()函式需要比較兩個char 型變數的大小怎么辦?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103033.html
標籤:C語言
上一篇:codelite運行無視窗
下一篇:關于 PC微信SDK二次開發
