Ⅰ 數據結構,c語言編寫宿舍管理系統
。。。。。。。。。。。。。。。。。。。。正在寫
/*學生宿舍信息管理系統*/
#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];/*學生姓名*/
int sex;/*學生性別*/
};
struct commdity
{
int num;/*宿舍號碼*/
int number;/*容納人數---並沒有賦予實際作用*/
int money;/*住宿費用*/
struct student Student[8];/*最多能住個8人上限*/
};
struct commdity comm[50];
void menu()/*菜單*/
{
printf("\t\t\t\t住宿管理系統:\n\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t\t\t1.錄入宿舍的信息\n");
printf("\t\t\t\t2.錄入學生的信息\n");
printf("\t\t\t\t3.刪除學生信息\n");
printf("\t\t\t\t4.查找學生信息\n");
printf("\t\t\t\t請選擇:(0-7):");
}
void in()/*對宿舍信息的錄入*/
{
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("宿舍編號");
scanf("%d",&comm[m].num);
for(i=0;i<m;i++)
{
if(comm[i].num==comm[m].num)
{
printf("該宿舍已經存在,按任意鍵繼續");
getch();
fclose(fp);
return;
}
}
printf("請輸入宿舍容納人數");
scanf("%d",&comm[m].number);
printf("請輸入住宿費用");
scanf("%d",&comm[m].money);
if(fwrite(&comm[m],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
else
{
printf("已經保存 \n");
m++;
}
printf("是否繼續");
scanf("%s",ch);
}
fclose(fp);
printf("OK!\n");
}
void studentInput()/*分配學生到指定宿舍*/
{
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("請輸入學生的宿舍編號\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("請輸入學生的名稱\n");
scanf("%s",&comm[i].Student[j].name);
printf("請輸入學生的性別(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()/*對學生信息查找*/
{
int i,m=0;
FILE *fp;
int s;
char ch[2];
int num=0;
printf("請輸入編號\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宿舍: 住宿人數%d\n",comm[i].num,comm[i].number);
for(s=0;s<8;s++)
{
if(comm[i].Student[s].sex!=NULL)
{
printf("\n學生:%s 性別:%d\n",comm[i].Student[s].name,comm[i].Student[s].sex);
}
}
}
return;
}
}
printf("沒有找到");
}
void deleStudent()/*刪除住宿的學生信息*/
{
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("請輸入宿舍編號\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
{
if(comm[i].num==snum)
{
printf("已經找到該宿舍!\n");
printf("請輸入該學生的名稱!\n");
scanf("%s",&name);
for(s=0;s<8;s++)
{
if(strcmp(comm[i].Student[s].name,name)==0)
{
printf("已將查詢到該學生 (是否刪除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");
}
/*程序結束*/
/*保證語法上沒有任何錯誤 有很多程序段重復,你可以自己改改,還有那個容納人數我直接固定了8個 不過問題不大*/
Ⅱ 學生宿舍信息管理 C語言 求大神幫忙看看啊
Ⅲ c語言編程宿舍管理程序
#include <string.h>: y( {' S! G1 k8 I. g
#include <stdio.h>' I$ i0 L$ r8 U$ J2 I) n; G9 B
#include <stdlib.h>0 k$ q2 F4 @0 B$ \
struct student/*結構體的定義*/" O$ A7 h6 Z7 I! {' E) J
{int xh;/*學號*/
, i! N, C4 ?; D% `/ y4 achar xm[10];/*姓名*/, j4 X3 @! i* k: D! w& v
char xb[10];/*性別*/. g3 g% n/ V, C1 w+ B# C" e
char sr[20];/*生日*/$ x. E3 |; x3 I0 L2 c5 W
char xbb[20];/*所在系*/
: |; n9 U ?8 }/ C/ Zint sh;/*宿舍號*/
6 r% ^' l+ O* J! ~% Cint fy;/*費用*/# P- }5 ^5 T2 |1 z
char sz[10];/*宿舍長*/, y7 {4 {" ~- h8 V: p% k
struct student *next;/*指向下一個接點的指針*/ f' o4 x4 l( x1 U0 w! y6 y
};
2 l# X; ^( v5 tint table=0;
9 V7 U8 e: X# W0 L1 I; ?! Y. pmain()/*主函數*/; O( E) _/ B1 k8 |* v
{
* Q. s- o h1 |9 d; \8 k' h' Pstruct student *head=NULL;7 l/ g# z$ Q+ N4 z
struct student *createmain(struct student *head);/*新建函數的聲明*/
7 A0 Q1 d, g$ K5 h- F& b$ H7 Ystruct student *displaymain(struct student *head); /*查詢函數的聲明*/
0 `( p$ I( n7 L5 O1 [. hstruct student *addmain(struct student *head); /*添加函數的聲明*/
+ A) \6 F1 v q! f. r7 r, hstruct student *delmain(struct student *head); /*刪除函數的聲明*/ ~7 K6 F! d6 b t2 v
struct student *repairmain(struct student *head); /*修改函數的聲明*/
% r8 }3 t/ y, X8 K% g3 A+ }$ L. cstruct student *loadmain(struct student *head);. U8 c. r/ Y' |. ~; T
struct student *savemain(struct student *head);
5 `& p W, T7 k2 r) S7 j- @! m9 }3 sint pd;/*實現循環的變數*/
, P6 |) c9 E. }1 i+ phead=loadmain(head);6 Z% u& Q% S$ B, S! y4 [" w
do{2 N# z) S1 y+ k4 t1 d) q$ v9 u. P
clrscr();2 G3 G3 M. K! N1 B
pd=1;
if(table > 0){
' k5 [8 _9 @# L% w5 [fp=fopen("c:\data.txt","rb") ;8 G/ h9 T! b, `( p* ?+ J3 _* C
p2=p1=head;3 b# M1 d; P& g8 Q% t5 I+ x
for(i=0;i<table;i++)- w- N0 U$ `0 o4 s0 c$ z @
{ p1=(struct student *)malloc(sizeof(struct student));4 z5 f* Z) e3 Q8 U' s5 L) D3 X
fread(p1,sizeof(struct student),1,fp) ;
6 R+ n* a/ O C# l0 lif(head == NULL) { p2=p1,head=p1 ; }9 z. I5 w9 W6 \% _' `# s1 U: W
else {p2->next=p1 ; p2=p2->next;}
4 q* q9 k; z8 k" b7 W0 Qp2->next=NULL;} }
, w r" ~& c3 O8 q! ]3 q qelse printf("沒有文件供您打開,可以建立新的數據\n");/ H; g; B7 X/ v" n- f/ p
return (head);8 c& q! p0 l; q/ p4 @( r1 @1 t* n
}/ o. I. U6 f! ~$ W- j! [
Ⅳ C語言程序設計:學生宿舍管理系統設計
給你個學生成績管理的,你改一下變數名就好了
#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請輸入存儲學生數據的文件名:");
scanf("%s",fname);
fp=fopen(fname,"w");
printf("\t輸入的數據之間請用跳格鍵(Tab)隔開\n\t每輸入完一個學生的信按回車鍵(Enter)\n");
printf("\t結束輸入學生數據時,請輸入一個學生的學號為0並按回車鍵\n");
printf("\t學號 姓名 英語 數學 計算機\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請輸入查找學生數據的文件名:");
scanf("%s",fname1);
if(strcmp(fname1,fname)==0){fp=fopen(fname,"r");break;}
else printf("\t你輸入的文件不存在\n");}while(1);
long number;
do
{ printf("\t請輸入要查找的學生的學號按回鍵(Enter):");
scanf("%ld",&number); rewind(fp);
for(i=0;i { fread(&p,LEN,1,fp);
if(number==p.num) { printf("\t學號 姓名 英語 數學 計算機 平均分 總? \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你還要查找嗎?如果繼續請輸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請輸入你要排序的學生數據的文件名:");
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請輸入存儲排完序的數據的文件名\n\t注意此文件名和存儲原始數據的文件名不相同\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請輸入你要輸出學生數據的文件名:");
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學號 姓名 英語 數學 計算機 平均分 總分\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請輸入你要統計的學生數據的文件名:");
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按平均分統計各分數段的學生人數 \n");
printf("\t==============================================================\n");
printf("\t分數段\t0--59\t60--69\t70--79\t80--89\t90--100 \n");
printf("\t人 數 \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請輸入你要刪除學生數據的文件名:");
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請輸入要刪除數據的學生的學號並按回車鍵:");
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你還要刪除嗎?如果繼續請輸入'y'加回車鍵,否則'n'加回車鍵:");
scanf("%s",c);
}while(c[0]=='y');
}
void charu()
{FILE *fp;char fname7[20];
do{printf("\t請輸入你要插入學生數據的文件名:");
scanf("%s",fname7);
if(strcmp(fname7,fname)==0){fp=fopen(fname,"r+");break;}
else printf("\t你輸入的文件不存在 ");}while(1);
printf("\t請輸入你要插入的數據\n\t輸入的數據之間請用跳格鍵(Tab)隔開\n\t每輸入完一個學生的數據按回車鍵(Enter) \n");
printf("\t結束插入學生數據時,請輸入一個學生的學號為0並按回車鍵\n");
printf("\t學號\t姓名\t英語\t數學\t計算機 \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.數據輸入 2.數據輸出 \n");
printf("\n");
printf("\t 3.數據排序(按平均分) 4.數據查找(按學號) \n");
printf("\n");
printf("\t 5.數據的插入 6.數據的刪除(按學號) \n");
printf("\n");
printf("\t 7.數據的統計(按平均分)? 0.退出 \n");
printf("\n");
printf("\t============================================================== \n");
printf("\t請輸入你的選擇(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你的選擇不正確!請重新選擇! \n");
}
}while(1);
printf("\n\t\n\t\n\t\n\t\n\t\n\t\n\t");
printf("\t\t謝謝你的使用!!! ") ;
}
Ⅳ 宿舍管理系統的C語言程序,住宿信息有:層號、房間號、床位號、學號、姓名、收費標准、繳費狀態、入住時間
#
包括
包括中
整數N = 2; / /全局變數,輸入的學生人數自己改變了它的價值
結構學生
{
字元數[10];
字元名稱[10];
浮動得分[3] </持股量平均;
}學生[200];
/ ******************************* ************************************************** ************* /
無效的輸入(結構學生t [])/ /輸入數據
{
INT I,J,K,;
系統(「CLS」);
printf的(「前輸入數據的數量來確定的輸入\ n你已經確定了一些\ n」);
printf(「請輸入1車繼續\ n沒有輸入0回車鍵退出程序,改變全局變數的值\ n「);
scanf函數(」%D「,&A);
(A! = 1 )
出口(0);
(i = 0; <N; + +)
{
系統(「CLS」); / /清除屏幕 BR /> printf的(「請輸入%d個學生的人數:\ n」,i +1);
scanf函數(「%s」,T [i]的數量);
為(J = 0 J <I,J + +)
如果(STRCMP(T [I]。數,T [J]。NUM)== 0)/ /以避免同樣的學生數量
{ /> -
printf的(「學生人數已經存在,請重新輸入:」);
睡眠(3000);
突破;
}
}
為(i = 0; <N; + +)
{
系統(「CLS」);
printf的(「請輸入學號是%s學生:(用空格隔開)\ n名門第一得分第二門成就第三個門的成績\ n「,T [I] NUM);
/ / T [i]的。得分[0] = 0,T [i]的。得分[1] = 0,T [i]的。得分[2] = 0;
scanf函數(「%s%F%F%F,T [I]。名稱,&T [I]。得分[0],&T [i]的得分[ 1],&T [i]的得分[2]);
T [我]。 AVG =(T [I]。得分[0] + T [i]的得分[1] + [I]。得分[2])/ 3.0;
}
}
/ ************************************************* ********************************************* /
詮釋列表(學生t [])/ /顯示所有信息
{
我;
系統(「CLS」);
printf的(「%d個學生的信息是如下:\ n \ n「,N);
printf的(」學生ID名稱的第一個門成就的第二個門的成績第三個門成績平均\ n「);
(i = 0;我+ +)
{
(strlen的(T [I] NUM)!= 0)/ /判斷是否結束
printf的(「%S \ t其中%s \ t% 5.2f \ t%5.2f \ t%5.2f \ t%5.2f \噸\ n「,
T [I]。數,T [我的名字,T [i]的得分[0] ,T [I]。得分[1],T [i]的得分[2],T [我]。平均);
其他
突破;
}
的putchar (10);
}
/ ************* ************************************************** ******** /
無效的研究(學生t [])/ /學生ID查找信息
{
INT I,Y;
字元[10];
(1)
{系統(「CLS」);
printf的(「請輸入學號:」);
scanf函數( 「%s」,&S);
為(i = 0; i + +)
{
系統(「CLS」);
((STRCMP( S,T [i]的。NUM)))/ /如果你找到的學生人數,輸出
{
printf的(「學生ID%的學生成績如下:\ n \ n」, T [] NUM);
printf的(第三個門成就的「第二道門成果的第一門成就的學生人數平均\ n」)的名稱;
printf的(「% \ t其中%s \ t%5.2f \ t%5.2f \ t%5.2f \ t%5.2f \噸\ n「,
T [我]。數,T [I]。名稱,T [我]。得分[0],T [i]的得分[1],T [I] [2分],T [我]。平均);
的putchar(10);
休息;
}
否則,如果((STRCMP(S,T [I]。NUM))!= 0 &&的strlen(T [I]。NUM)== 0)/ /查找完成後不最終
{
printf的(「\ n不數的信息:\ n \ n」);
突破;
}
}
printf(「請************************************ \ n」;} 輸出(繼續查詢,輸入一個回車\ n「);
printf的(」返回到主菜單,輸入2輸入\ n「);
輸出(退出程序,輸入任何回車\ n「);
printf(」請************************************ \ n「);
scanf的(」%D「,&A);
(== 1)
研究(學生,N);
否則,如果( == 2)
突破;
其他
{
系統(「CLS」);
printf的(「退出輸入一個回車退出並保存數據退出輸入2輸入,輸入22返回到主菜單\ n建議退出之前保存的數量,否則將丟失的數據「);
scanf函數(」%d「的,&Y); BR />如果(== 1)
出口(0);
否則,如果(Y == 2)
保存(STU);
其他
主();
}
}
();
}
/ ******************* ************************************************** ************************* /
無效德爾(學生t [])/ /刪除一個學生信息
{
INT I,J,A,Z,Y;
字元B [10];
系統(「CLS」);
printf的(「請輸入學校的數量您要刪除的:);
scanf函數(「%s」,B);
(i = 0; i + +)
(STRCMP(B,T [ 。民)== 0)
突破;
否則,如果((STRCMP(B,T [I]。NUM))!= 0 &&的strlen(T [I]。NUM)== 0 )
{
printf的(「號的信息:\ n \ n」);
睡眠(3000);
突破;
}
(的strlen(T [NUM)!= 0)
{
系統(「CLS」);
printf(「請確認刪除?輸入一個回車\ n」); /> scanf的(「%d」,&Z);
(Z == 1)
為(J = I,J + +)
{
(的strlen(T [J]。NUM)== 0)
打破;
其他
{
T [J] = T [j +1]中;
? = N-1;
}
}
}
系統(「CLS」);
printf的(「************ ************************ \ n「);
printf的(」繼續刪除輸入一個回車符\ n「); ...... /輸出(「返回到主菜單,輸入回車\ n」);
printf(「請退出程序,輸入任何回車\ n」);
printf(「請** ********************************** \ n「);
scanf的(」%d「的, &A);
(== 1)
德爾(STU);
否則,如果(== 2)
();
其他 BR /> {
系統(「CLS」);
printf(「請退出直接退出,輸入一個回車,保存退出輸入輸入的數據,進入22回主菜單\ n建議退出之前保存的數量,否則將丟失的數據「);
scanf函數(」%d「,&Y);
(== 1)
出口( 0);
否則,如果(Y == 2)
保存(STU);
其他
();
}
} </ / ************************************************ ******************************************* void添加(學生t增加學生的資料])/ / {
INT I,J,M,A,Y;
系統(*** /
CLS「);
printf的(「請輸入增加的記錄數:\納米=」);
scanf的(「%d」,&M);
為(i = n時,我N + M; + +)
{
系統(「CLS」);
printf的(「請輸入學生的ID#%d的新同學:+1);
scanf的(」 「T [I]。NUM);
為(J = 0;; J + +)
(STRCMP(T []民,T [J]民) == 0)/ /避免的學號重復
{
-
printf的(「這名學生的學生已經存在,請重新輸入:)
睡眠(3000);
突破;
}
}
為(i = n時,我<N + M,我+ +)
{
(「CLS」);
printf的(「請輸入%s的增加學校的學生的數量:(用空格隔開)\第三個門的名稱第一門得分,第二道門結果\ n 「,T [] NUM);
/ / T [i]的分數[0] = 0,T [i]的。分[1] = 0,T [i]的。得分[2] = 0;
scanf函數(「%s%F%F%F,T [I]。名稱,&T [I]。得分[0],&T [i]的得分[ 1],&T [i]的得分[2]);
T [我]。 AVG =(T [I]。得分[0] + T [i]的得分[1] + [I] [2分])/ 3.0;
}
N = N +米/ /學生數等於已生的學生人數,加上新增加的
printf的(「************************** ********** \ n「); </輸出(」添加「,輸入一個回車,\ n」);
printf的(「返回到主菜單,輸入2輸入\ N「);
printf的(」退出程序,輸入任何回車\ n「);
printf的(」******************* ***************** \ n「);
scanf的(」%D「,&A);
(== 1) />添加(STU);
否則,如果(== 2)
();
其他
{
系統(「CLS」); ...... /> printf(「請是否要退出?進入後輸入exit退出2進入車內,保存數據,進入22回主菜單\ n建議您在退出之前保存一些,否則,數據將丟失「);
如果scanf的(」%d「,&Y)(Y == 1)
出口(0);
否則,如果(Y == 2 )
保存(STU);
其他
主要();
}
}
/ ************ ************************************************** ******************************** /
整數保存(學生t [])/ /保存數據的文件
{
FILE * FP;
個char [20],CH;
我一個,Y;
系統(「CLS」 );
printf(「請保存到一個新的文件,輸入一個回車,\ n保存現有的文件輸入2輸入\ n」);
scanf的(「%d」,&A);的
CH = getchar函數()/ /接收一個回車符,否則得到()函數空間分配給的錯誤
如果(a == 1)
{
輸出( 「請輸入新的文件名:\ n(包括擴展名,以20個字元或更少)\ n」);
得到(S);
((FP =的FOPEN(S,「 W +「))== NULL)/ / FP指向的文件
{
printf的(」該文件\ n「);
出口(0);
}
}
否則,如果(== 2)
{
printf的(「請輸入一個現有的文件名:\ n(包括擴展名不超過20個字元)\ N「);
得到(S);
((FP = FOPEN(」w +「))== NULL)
{
系統(CLS 「);
printf(」請\ n「;};
出口(0);
}
}
與fprintf(FP,而不是一個文件」%d \ N「,N)/ /寫的文件
為(i = 0;我+ +)
(strlen的(T [I]。NUM)!= 0)的學生人數/ /如果學生數不為空,將數據寫入到指定的文件
{
fprintf(FP,「%S \ T%S \ T%-5.2f \ t%5.2f \ t%5.2f \ t%5.2f「,
T [I]。數,T []。,T [] [0],T [i]的得分得分[1 ],T [i]的得分[2],T [i]的平均);
fprintf(FP,「\ n」);
}
其他
;
FCLOSE(FP);
系統(「CLS」;);
printf(「請\ n保存就完成了!\ n」);
}
/ * ************************************************** ******************************************* /
無效閱讀(學生t [])/ /讀取文件數據
{
FILE * FP;
詮釋y,M,I,X;
個char [20],CH;
CH = getchar函數()/ /接收輸入字元,否則得到()函數空間分配到s,錯誤
系統(「CLS」);
printf(「請輸入名稱的文件中讀取數據:\ n(包括其擴展名,20個或更少的字元)\ n「);
得到(S);
((FP = FOPEN (「R」))== NULL)
{
系統(「CLS」);
printf(「請本文件\ n」);
睡眠(3000)
系統(「CLS」);
printf(「請退出?退出輸入一個回車,保存退出輸入2輸入的數據,進入22返回到主菜單\ n建議您退出前的先救數量,否則數據將丟失「);
scanf的(」%d「,&Y);
(Y == 1)
出口(0);
否則,如果(Y == 2)
保存(
其他
();
}
fscanf(FP,「%d」的, &X);/ /讀的學生人數
(STU); i = 0;我X,我+ +)/ /讀取所有數據
fscanf(FP,「%s%s的%F%F%F%F,T [I]民,T [i]的名稱,&T [I]。得分[0],
&T [i]的得分[1],& T [我]。得分[2],&T [i]的。平均);
FCLOSE(FP);
系統(「CLS」);
N-= N / / n將被設置為0
N = X;
printf的(「\ n讀取完成!\ n」);
}
/ ******** ************************************************** ************************************ /
菜單()/ /選擇菜單 BR /> {
詮釋x;
printf的(「請選擇相應的菜單:\ n」);
printf的(「************** ********************** \ n「);
printf的(」請輸入一個新的記錄,輸入0輸入\ n「);
> printf(「請所有學生中,輸入一個回車符\ n」);
printf(「請查詢相應的記錄,輸入2輸入\ n」);
printf(「請刪除相應的記錄,輸入3輸入\ n「);
printf的(」添加一個新的記錄,進入4輸入\ n「);
printf的(」從文件中讀入的記錄,輸入5,輸入\ n「);
printf(「請平均高至低排序和輸出,輸入6輸入\ n」);
printf的(「學生ID從低到高,且輸出,輸入7輸入\ n」);
>輸出(每門成績得分最高的,輸入一個回車\ n「);
printf的(」分數保存到一個文本輸入9輸入\ n「);
printf的(」退出該程序,輸入11,輸入\ n「);
printf(」請**************************** ******** \ n「);
scanf的(」%d「的,與X);
返回X;
}
/ ***** ************************************************** *************************************** /
無效to_exit()/ /退出
{
詮釋;
系統(「CLS」);
printf(「請退出直接退出,輸入一個回車和保存數據,退出輸入2輸入,進入22回主菜單\ n建議您退出之前,先保存號碼,否則將丟失的數據「);
scanf的(」%d「,&Y);
( Y == 1)
退出(0);
其他(Y == 2)
保存(STU);
其他
(); ...... />}
/ ****************************************** ************************************************** * /
無效avg_arrange(學生t [])/ /平均高至低排序
{
I,J;
結構學生TEMP [1]; BR />(i = 0; I <N-1; i + +)
(J = I +1,J <N,J + +)
(T [I]。 AVG <T [J]。平均)
{
TEMP [0] = T [];
T [] = T [J];
噸[J]。 = TEMP [0];
}
列表(STU);
}
/ ******************** ************************************************** ************************ /
無效num_arrange(學生t [])/ /學生數從小到大的順序
> {
詮釋IJ;
結構學生TEMP [1];
為(i = 0; I <N;我+ +)
(J = 0,J < N-1,J + +)
(STRCMP(T [J]。數,T [j +1]中。NUM)> 0)
{
溫度[0] = T [J]。
T [J] = T [j +1]中;
T [j +1]中= TEMP [0];
}
名單(T);
}
/ **************************************** ************************************************** **** /
無效高(學生t [])/ /查找科目得分最高
{
INT I,J,K,
結構學生最大[1];
最大[0] = T [0];
系統(「CLS」);
printf的(「請輸入您要查找的主題:1或2或3 \ n「);
scanf函數(」%d「的,&K);
(i = 1;我<N; + +)
最大[0 ] = [0]。得分[K-1]> T [i]的得分[k-1]最大[0]:[I]
系統(「CLS」);
輸出(「%d的主題分為:%5.2f的學生人數是\ n」,K最大值[0]得分[k-1]最大[0] NUM);
}
/ ********************************************* ************************************************* /
()
{
詮釋了;
(1)
{
一個菜單();
開關(A) / /做相應的行動的基礎上選擇菜單
{
情況下,0:輸入(STU);突破;
情況1:列表(STU);突破;
情況下,研究(STU);突破;
案例3:DEL(STU);突破;
情況4:添加(STU);突破;
情況下,5:讀(STU);休息;
情況6:avg_arrange(STU);突破;
案例7:num_arrange(STU);突破;
案例8:高(STU);突破;
情況:保存(STU);突破;
默認:to_exit();
}
}
}
/ ************ ************************************************** **************************************************北京交通大學,楊東坪******************* / / /
Ⅵ 用c語言編寫一個宿舍管理系統(答完後給50—100分)
C語言
寫個struct包含學生信息的變數
寫個小菜單函數,按1為查詢,2為添加,3為刪除
添加寫個函數,按照struct變數的順序輸入學生信息,用一個struct數組保存多個學生的信息
查詢寫個函數,先輸入查詢的內容,如學號,然後從struct數組逐個尋找
刪除寫個函數,先輸入刪除學生的學號,然後套用查找這個函數,將找到的學生struct刪除
這個估計也沒有人給你寫,這個實際和學生成績管理系統一樣的,我給你說個思路吧,還是自己看看書寫吧,不是很難的。
首先你要建立一個結構體,來表示學生宿舍的基本信息,
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;
然後,你要用鏈表實現,在main函數裡面用switch語句來轉向你要實現的功能,然後各個函數就要你自己寫了,實際就是鏈表的插入刪除的一些基本操作,加加油吧