智慧檔案管理與大數(shù)據(jù)解決方案的領(lǐng)航者,讓信息價(jià)值超越期待
電 話:18937133779
網(wǎng) 址:http://bestguitarvideos.com
郵 箱:zboao@qq.com
。。。。。。。。。。。。。。。。。。。。正在寫
/*學(xué)生宿舍信息管理系統(tǒng)*/
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define LEN sizeof(struct commdity)
struct student
{
char name[15];/*學(xué)生姓名*/
int sex;/*學(xué)生性別*/
};
struct commdity
{
int num;/*宿舍號(hào)碼*/
int number;/*容納人數(shù)---并沒有賦予實(shí)際作用*/
int money;/*住宿費(fèi)用*/
struct student Student[8];/*最多能住個(gè)8人上限*/
};
struct commdity comm[50];
void menu()/*菜單*/
{
printf("\t\t\t\t住宿管理系統(tǒng):\n\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t\t\t1.錄入宿舍的信息\n");
printf("\t\t\t\t2.錄入學(xué)生的信息\n");
printf("\t\t\t\t3.刪除學(xué)生信息\n");
printf("\t\t\t\t4.查找學(xué)生信息\n");
printf("\t\t\t\t請(qǐng)選擇:(0-7):");
}
void in()/*對(duì)宿舍信息的錄入*/
{
int i,m=0;
char ch[2];
FILE *fp;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打開文件\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
if(m==0)
{
printf("沒有任何記錄");
}
else
{
system("cls");
printf("存在記錄");
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打開文件");
return;
}
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
printf("是否輸入(y\n)");
scanf("%s",ch);
while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
printf("宿舍編號(hào)");
scanf("%d",&comm[m].num);
for(i=0;i<m;i++)
{
if(comm[i].num==comm[m].num)
{
printf("該宿舍已經(jīng)存在,按任意鍵繼續(xù)");
getch();
fclose(fp);
return;
}
}
printf("請(qǐng)輸入宿舍容納人數(shù)");
scanf("%d",&comm[m].number);
printf("請(qǐng)輸入住宿費(fèi)用");
scanf("%d",&comm[m].money);
if(fwrite(&comm[m],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
else
{
printf("已經(jīng)保存 \n");
m++;
}
printf("是否繼續(xù)");
scanf("%s",ch);
}
fclose(fp);
printf("OK!\n");
}
void studentInput()/*分配學(xué)生到指定宿舍*/
{
FILE *fp;
int i,j,m=0,snum;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打開文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
printf("一共有%d條記錄",m);
fclose(fp);
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打開文件\n");
return;
}
printf("請(qǐng)輸入學(xué)生的宿舍編號(hào)\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
{
if(snum==comm[i].num)
{
printf("存在該宿舍!\n");
for(j=0;j<8;j++)
{
if(comm[i].Student[j].sex==NULL)
{
printf("請(qǐng)輸入學(xué)生的名稱\n");
scanf("%s",&comm[i].Student[j].name);
printf("請(qǐng)輸入學(xué)生的性別(1-男,2-女)\n");
scanf("%d",&comm[i].Student[j].sex);
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
break;
}
}
fclose(fp);
return;
}
}
fclose(fp);
printf("沒有找到");
return;
}
void search()/*對(duì)學(xué)生信息查找*/
{
int i,m=0;
FILE *fp;
int s;
char ch[2];
int num=0;
printf("請(qǐng)輸入編號(hào)\n");
scanf("%d",&num);
if((fp=fopen("data","ab+"))==NULL)
{
printf("文件不能打開!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
if(m==0)
{
printf("沒有任何記錄存在");
return;
}
printf("一共有%d記錄\n",m);
for(i=0;i<m;i++)
{
if(num==comm[i].num)
{
printf("存在該記錄 是否顯示\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
printf("%d宿舍: 住宿人數(shù)%d\n",comm[i].num,comm[i].number);
for(s=0;s<8;s++)
{
if(comm[i].Student[s].sex!=NULL)
{
printf("\n學(xué)生:%s 性別:%d\n",comm[i].Student[s].name,comm[i].Student[s].sex);
}
}
}
return;
}
}
printf("沒有找到");
}
void deleStudent()/*刪除住宿的學(xué)生信息*/
{
FILE *fp;
int snum,s,i,j,m=0;
char ch[2];
char name[20];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打開文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
if(m==0)
{
printf("沒有記錄\n");
return;
}
printf("請(qǐng)輸入宿舍編號(hào)\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
{
if(comm[i].num==snum)
{
printf("已經(jīng)找到該宿舍!\n");
printf("請(qǐng)輸入該學(xué)生的名稱!\n");
scanf("%s",&name);
for(s=0;s<8;s++)
{
if(strcmp(comm[i].Student[s].name,name)==0)
{
printf("已將查詢到該學(xué)生 (是否刪除y\n)\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
for(j=s;j<8;j++)
{
comm[i].Student[j]=comm[i].Student[j+1];
}
printf("刪除成功!\n");
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打開文件");
return;
}
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
}
fclose(fp);
return;
}
}
}
}
printf("沒有找到\n");
return;
}
int main()
{
int n;
menu();
scanf("%d",&n);
while(n!=0)
{
switch(n)
{
case 1:
{
in();
break;
}
case 2:
{
studentInput();
break;
}
case 3:
{
deleStudent();
break;
}
case 4:
{
search();
break;
}
default:
{
break;
}
}
menu();
scanf("%d",&n);
}
system("pause");
}
/*程序結(jié)束*/
/*保證語法上沒有任何錯(cuò)誤 有很多程序段重復(fù),你可以自己改改,還有那個(gè)容納人數(shù)我直接固定了8個(gè) 不過問題不大*/
給你個(gè)學(xué)生成績(jī)管理的,你改一下變量名就好了
#include
#include
#define LEN sizeof(struct student)
#define N 35
#include
#define NULL 0
int n=0;
char m[8]={'0','1','2','3','4','5','6','7'};
int i;char c[10];char d[10];
char fname[20],fname0[20],fname6[20]={"shanchu"};
struct student
{long num;
char name[10];
int eng;
int math;
int comp;
int ave;
int all;
}p;
void shuru()
{FILE *fp;
printf("\n\n\t請(qǐng)輸入存儲(chǔ)學(xué)生數(shù)據(jù)的文件名:");
scanf("%s",fname);
fp=fopen(fname,"w");
printf("\t輸入的數(shù)據(jù)之間請(qǐng)用跳格鍵(Tab)隔開\n\t每輸入完一個(gè)學(xué)生的信按回車鍵(Enter)\n");
printf("\t結(jié)束輸入學(xué)生數(shù)據(jù)時(shí),請(qǐng)輸入一個(gè)學(xué)生的學(xué)號(hào)為0并按回車鍵\n");
printf("\t學(xué)號(hào) 姓名 英語 數(shù)學(xué) 計(jì)算機(jī)\n");
do{ printf("\t");
scanf("%ld",&p.num);
if(p.num==0) break;
scanf("\t%s\t%d\t%d\t%d",p.name,&p.eng,&p.math,&p.comp);
p.all=(p.eng+p.math+p.comp);
p.ave=(p.all/3);
fwrite(&p,LEN,1,fp);
n++;
}while(1);
fclose(fp);
}
void chazhao()
{char fname1[20];
FILE *fp;
do{printf("\n\n\t請(qǐng)輸入查找學(xué)生數(shù)據(jù)的文件名:");
scanf("%s",fname1);
if(strcmp(fname1,fname)==0){fp=fopen(fname,"r");break;}
else printf("\t你輸入的文件不存在\n");}while(1);
long number;
do
{ printf("\t請(qǐng)輸入要查找的學(xué)生的學(xué)號(hào)按回鍵(Enter):");
scanf("%ld",&number); rewind(fp);
for(i=0;i { fread(&p,LEN,1,fp);
if(number==p.num) { printf("\t學(xué)號(hào) 姓名 英語 數(shù)學(xué) 計(jì)算機(jī) 平均分 總? \n");
printf("\t%ld\t%s\t%d\t%d\t%d\t%d\t%d\n",p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all);
}
}
printf("\t你還要查找嗎?如果繼續(xù)請(qǐng)輸y'加回車鍵,否'n'加回車鍵:");
scanf("%s",c);}while(c[0]=='y');
fclose(fp);
}
void paixu()
{FILE *fp;char fname3[20];struct student k[N];
do{printf("\n\n\t請(qǐng)輸入你要排序的學(xué)生數(shù)據(jù)的文件名:");
scanf("%s",fname3);
if(strcmp(fname3,fname)==0)
{fp=fopen(fname,"r");break;}
else printf("\t你輸入的文件不存在\n");}while(1);
rewind(fp);
for(i=0;i fread(&k[i],LEN,1,fp);
int w,q,j,g,t,t2,t3,t4,t5;char z[10];long t1;
for(q=0;q {g=q;
for(j=q+1;j if(k[j].ave t=k[g].ave;k[g].ave=k[q].ave;k[q].ave=t;
t1=k[g].num;k[g].num=k[q].num;k[q].num=t1;
t2=k[g].eng;k[g].eng=k[q].eng;k[q].eng=t2;
t3=k[g].math;k[g].math=k[q].math;k[q].math=t3;
t4=k[g].comp;k[g].comp=k[q].comp;k[q].comp=t4;
t5=k[g].all;k[g].all=k[q].all;k[q].all=t5;
for(w=0;w<10;w++)
{z[w]=k[g].name[w];k[g].name[w]=k[q].name[w];k[q].name[w]=z[w];};
}
fclose(fp);
printf("\n\n\t請(qǐng)輸入存儲(chǔ)排完序的數(shù)據(jù)的文件名\n\t注意此文件名和存儲(chǔ)原始數(shù)據(jù)的文件名不相同\n");
printf("\t");
scanf("%s",fname0);
fp=fopen(fname0,"w");
for(i=0;i fclose(fp);
}
void shuchu()
{FILE *fp;char fname2[20];
do{printf("\n\n\t請(qǐng)輸入你要輸出學(xué)生數(shù)據(jù)的文件名:");
scanf("%s",fname2);
if(strcmp(fname2,fname)==0){fp=fopen(fname,"r");break;}
else if(strcmp(fname2,fname0)==0){fp=fopen(fname0,"r");break;}
else if(strcmp(fname2,fname6)==0){fp=fopen(fname6,"r");break;}
else printf("\t你輸入的文件不存在\n");}while(1);
rewind(fp);
printf("\t學(xué)號(hào) 姓名 英語 數(shù)學(xué) 計(jì)算機(jī) 平均分 總分\n");
printf("\t==============================================================\n");
for(i=0;i {fread(&p,LEN,1,fp);
printf("\t%ld\t%s\t%d\t%d\t%d\t%d\t%d\n",p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all);
}
printf("\t==============================================================\n");
fclose(fp);}
void tongji()
{FILE *fp;char fname4[20];int e1=0,e2=0,e3=0,e4=0,e5=0;
do{printf("\n\n\t請(qǐng)輸入你要統(tǒng)計(jì)的學(xué)生數(shù)據(jù)的文件名:");
scanf("%s",fname4);
if(strcmp(fname4,fname)==0)
{fp=fopen(fname,"r");break;}
else printf("\t你輸入的文件不存在\n");}while(1);
rewind(fp);
for(i=0;i {fread(&p,LEN,1,fp);
if(p.ave<=59&&p.ave>=0)e1=e1+1;
if(p.ave<=69&&p.ave>=60)e2=e2+1;
if(p.ave<=79&&p.ave>=70)e3=e3+1;
if(p.ave<=89&&p.ave>=80)e4=e4+1;
if(p.ave<=100&&p.ave>=90)e5=e5+1;
}
fclose(fp);
printf("\t按平均分統(tǒng)計(jì)各分?jǐn)?shù)段的學(xué)生人數(shù) \n");
printf("\t==============================================================\n");
printf("\t分?jǐn)?shù)段\t0--59\t60--69\t70--79\t80--89\t90--100 \n");
printf("\t人 數(shù) \t %d\t %d\t %d\t %d\t %d\n",e1,e2,e3,e4,e5);
printf("\t==============================================================\n");
}
void shanchu()
{FILE *fp,*fp1;char fname5[20];long number;struct student M[N];
printf("\n\t");
do{printf("\n\t請(qǐng)輸入你要?jiǎng)h除學(xué)生數(shù)據(jù)的文件名:");
scanf("%s",fname5);
if(strcmp(fname5,fname)==0)
{fp=fopen(fname,"r");break;}
else printf("\n\t你輸入的文件不存在 \n");}while(1);
rewind(fp);
fp1=fopen(fname6,"w");
do{printf("\t請(qǐng)輸入要?jiǎng)h除數(shù)據(jù)的學(xué)生的學(xué)號(hào)并按回車鍵:");
scanf("%ld",&number);
for(i=0;i {fread(&M[i],LEN,1,fp);
if(M[i].num!=number)fwrite(&M[i],LEN,1,fp1);
}
n--;
fcloseall();
fp1=fopen(fname6,"r");fp=fopen(fname,"w");
for(i=0;i {fread(&M[i],LEN,1,fp1);fwrite(&M[i],LEN,1,fp);}
fcloseall();
printf("\t你還要?jiǎng)h除嗎?如果繼續(xù)請(qǐng)輸入'y'加回車鍵,否則'n'加回車鍵:");
scanf("%s",c);
}while(c[0]=='y');
}
void charu()
{FILE *fp;char fname7[20];
do{printf("\t請(qǐng)輸入你要插入學(xué)生數(shù)據(jù)的文件名:");
scanf("%s",fname7);
if(strcmp(fname7,fname)==0){fp=fopen(fname,"r+");break;}
else printf("\t你輸入的文件不存在 ");}while(1);
printf("\t請(qǐng)輸入你要插入的數(shù)據(jù)\n\t輸入的數(shù)據(jù)之間請(qǐng)用跳格鍵(Tab)隔開\n\t每輸入完一個(gè)學(xué)生的數(shù)據(jù)按回車鍵(Enter) \n");
printf("\t結(jié)束插入學(xué)生數(shù)據(jù)時(shí),請(qǐng)輸入一個(gè)學(xué)生的學(xué)號(hào)為0并按回車鍵\n");
printf("\t學(xué)號(hào)\t姓名\t英語\t數(shù)學(xué)\t計(jì)算機(jī) \n");
do{fseek(fp,n*LEN,0);printf("\t");
scanf("\t%ld",&p.num);
if(p.num==0) break;
scanf("\t%s\t%d\t%d\t%d",p.name,&p.eng,&p.math,&p.comp);
p.all=(p.eng+p.math+p.comp);
p.ave=(p.all/3);
fwrite(&p,LEN,1,fp);
n++;}while(1);
fclose(fp);
}
void zhujiemian()
{
printf("\n\t 主菜單 \n");
printf("\n");
printf("\t============================================================== \n");
printf("\n");
printf("\t 1.數(shù)據(jù)輸入 2.數(shù)據(jù)輸出 \n");
printf("\n");
printf("\t 3.數(shù)據(jù)排序(按平均分) 4.數(shù)據(jù)查找(按學(xué)號(hào)) \n");
printf("\n");
printf("\t 5.數(shù)據(jù)的插入 6.數(shù)據(jù)的刪除(按學(xué)號(hào)) \n");
printf("\n");
printf("\t 7.數(shù)據(jù)的統(tǒng)計(jì)(按平均分)? 0.退出 \n");
printf("\n");
printf("\t============================================================== \n");
printf("\t請(qǐng)輸入你的選擇(0---7)并按回車鍵:");
scanf("%s",d);
}
void main()
{do
{
zhujiemian();
if(d[0]==m[0])break;
else if(d[0]==m[1]){shuru();printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");}
else if(d[0]==m[2]){shuchu();}
else if(d[0]==m[3]){paixu();}
else if(d[0]==m[4]){chazhao();}
else if(d[0]==m[5]){charu();}
else if(d[0]==m[6]){shanchu();}
else if(d[0]==m[7]){tongji();}
else {printf("\t你的選擇不正確!請(qǐng)重新選擇! \n");
}
}while(1);
printf("\n\t\n\t\n\t\n\t\n\t\n\t\n\t");
printf("\t\t謝謝你的使用!!! ") ;
}
C語言
寫個(gè)struct包含學(xué)生信息的變量
寫個(gè)小菜單函數(shù),按1為查詢,2為添加,3為刪除
添加寫個(gè)函數(shù),按照struct變量的順序輸入學(xué)生信息,用一個(gè)struct數(shù)組保存多個(gè)學(xué)生的信息
查詢寫個(gè)函數(shù),先輸入查詢的內(nèi)容,如學(xué)號(hào),然后從struct數(shù)組逐個(gè)尋找
刪除寫個(gè)函數(shù),先輸入刪除學(xué)生的學(xué)號(hào),然后套用查找這個(gè)函數(shù),將找到的學(xué)生struct刪除
這個(gè)估計(jì)也沒有人給你寫,這個(gè)實(shí)際和學(xué)生成績(jī)管理系統(tǒng)一樣的,我給你說個(gè)思路吧,還是自己看看書寫吧,不是很難的。
首先你要建立一個(gè)結(jié)構(gòu)體,來表示學(xué)生宿舍的基本信息,
typedef struct
{
int num_1;
int num_2;
float s;
int have_num;
int lea_num;
}Dom;
typedef struct DNode
{
Dom dom;
DNode *next;
}DNode;
然后,你要用鏈表實(shí)現(xiàn),在main函數(shù)里面用switch語句來轉(zhuǎn)向你要實(shí)現(xiàn)的功能,然后各個(gè)函數(shù)就要你自己寫了,實(shí)際就是鏈表的插入刪除的一些基本操作,加加油吧
孩子 很清楚這是老師給你的作業(yè)題 ,,知識(shí)是被百度不出來的,,強(qiáng)烈建議看到此題的同仁不給出答案,,,,孩子 你自己試著寫,,那不會(huì),隨時(shí)問 我們會(huì)解答 但你這是直接問作業(yè) 那老師還讓你寫干嘛???給你思路 那個(gè)合法才能進(jìn)入,,只需要用個(gè)判斷句就行,先輸入密碼 正確 則繼續(xù)執(zhí)行 錯(cuò)誤 輸出提示信息,,當(dāng)然 這里你可以加一點(diǎn)花招 連續(xù)輸入3次 直接退出程序或者等待1分鐘才行,,哈哈 這個(gè)你可以寫完不給老師說密碼,然后老師輸入,,哈哈 其他的的代碼就是鏈表的知識(shí)了 課本上也都有的,,,,,好好學(xué)習(xí)啊 中國(guó)需要腳踏實(shí)地的程序員,,不要投機(jī)取巧,,