C语言程序设计:学生宿舍管理系统设计

Python020

C语言程序设计:学生宿舍管理系统设计,第1张

给你个学生成绩管理的,你改一下变量名就好了

#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 ichar 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=0i { 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 *fpchar 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=0i fread(&k[i],LEN,1,fp)

int w,q,j,g,t,t2,t3,t4,t5char z[10]long t1

for(q=0q {g=q

for(j=q+1j if(k[j].ave t=k[g].avek[g].ave=k[q].avek[q].ave=t

t1=k[g].numk[g].num=k[q].numk[q].num=t1

t2=k[g].engk[g].eng=k[q].engk[q].eng=t2

t3=k[g].mathk[g].math=k[q].mathk[q].math=t3

t4=k[g].compk[g].comp=k[q].compk[q].comp=t4

t5=k[g].allk[g].all=k[q].allk[q].all=t5

for(w=0w<10w++)

{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=0i fclose(fp)

}

void shuchu()

{FILE *fpchar 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=0i {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 *fpchar 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=0i {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,*fp1char fname5[20]long numberstruct 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=0i {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=0i {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 *fpchar 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谢谢你的使用!!! ")

}

。。。。。。。。。。。。。。。。。。。。正在写

/*学生宿舍信息管理系统*/

#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=0i<mi++)

{

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=0i<mi++)

{

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=0i<mi++)

{

if(snum==comm[i].num)

{

printf("存在该宿舍!\n")

for(j=0j<8j++)

{

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=0i<mi++)

{

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=0i<mi++)

{

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=0s<8s++)

{

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=0i<mi++)

{

if(comm[i].num==snum)

{

printf("已经找到该宿舍!\n")

printf("请输入该学生的名称!\n")

scanf("%s",&name)

for(s=0s<8s++)

{

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=sj<8j++)

{

comm[i].Student[j]=comm[i].Student[j+1]

}

printf("删除成功!\n")

if((fp=fopen("data","wb"))==NULL)

{

printf("不能打开文件")

return

}

for(i=0i<mi++)

{

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个 不过问题不大*/