#include<string.h>
typedef struct DometoryMember{
char sno[16]
char name[32]
char phone[16]
char address[20]
}DB
//创建一张宿舍成员信息表
int createList(DB a[]){
FILE *r = fopen("input.txt","r")
int i=0
while(fscanf(r,"%s%s%s%s",a[i].sno,a[i].name,a[i].phone,a[i].address) != EOF){
i++
}
return i
}
int lookup(DB a[],int n,char sno[]){
int i=0
while(strcmp(a[i].sno,sno) != 0 && i<n){
i++
}
if(i==n){
printf("没有此人\n")
return -1
}
else{
printf("%s\t%s\t%s\t%s\n",a[i].sno,a[i].name,a[i].phone,a[i].address)
return i
}
}
//根据学号删除某个学生
int del(DB a[],int n,char sno[]){
int i
printf("删除学号为%s的学生:\n",sno)
i = lookup(a,n,sno)
if(i != -1){
int j
for(j=i+1j<nj++){
a[j-1] = a[j]
}
return n-1
}
else{
return -1
}
}
int main(){
DB a[16]
int n = createList(a)
printf("总共%d个学生\n",n)
char sno[20]
scanf("%s",sno)
int i = lookup(a,n,sno)
n = del(a,n,sno)
printf("删除之后还剩%d个学生\n",n)
getchar()
getchar()
return 0
}
。。。。。。。。。。。。。。。。。。。。正在写/*学生宿舍信息管理系统*/
#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个 不过问题不大*/
以前给别人写的,完全原创,已经在VC上编译运行通过:#include <conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]/*学号*/
char name[20]/*姓名*/
int roomID/*房号*/
}Student
Student stu[80]/*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c
do{
system("cls")/*运行前清屏*/
printf("\t\t************宿舍管理查询系统************\n")/*菜单选择*/
printf("\t\t | 1. 输入信息 |\n")
printf("\t\t | 2. 显示所有信息 |\n")
printf("\t\t | 3. 排序 |\n")
printf("\t\t | 4. 查询信息 |\n")
printf("\t\t | 0. Quit |\n")
printf("\t\t****************************************\n")
printf("\t\t\t请输入处理种类(0-4):")
c=getchar()/*读入选择*/
}while(c<'0'||c>'4')
return(c-'0')/*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0
char sign,x[10]/*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
printf("\t\t\t学号:")/*交互输入*/
scanf("\t\t\t%s",stud[n+i].num)
printf("\t\t\t姓名:")
scanf("\t\t\t%s",stud[n+i].name)
printf("\t\t\t房号:")
scanf("\t\t\t%d",&stud[n+i].roomID)
gets(x)/*清除多余的输入*/
printf("\t\t\t还需要继续输入吗?(Y/N)")
scanf("\t\t\t%c",&sign)/*输入判断*/
i++
}
return(n+i)
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i
printf("\t\t\t-----------------------------------\n")/*格式头*/
printf("\t\t\t学号\t\t姓名\t\t房号\n")
printf("\t\t\t-----------------------------------\n")
for(i=1i<n+1i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].roomID)
if(i>1&&i%10==0) /*每十个暂停*/
{
printf("\t\t\t-----------------------------------\n")/*格式*/
printf("\t\t\t")
system("pause")
printf("\t\t\t-----------------------------------\n")
}
}
printf("\t\t\t")
system("pause")
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s
char t[10]
for(i=0i<n-1i++) /*冒泡法排序*/
for(j=0j<n-1-ij++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num)
strcpy(stud[j+1].num,stud[j].num)
strcpy(stud[j].num,t)
strcpy(t,stud[j+1].name)
strcpy(stud[j+1].name,stud[j].name)
strcpy(stud[j].name,t)
p=&stud[j+1].roomID
q=&stud[j].roomID
s=*p
*p=*q
*q=s
}
Display(stu,n)
}
void Sort_by_name(Student stud[],int n) /*按姓名排序*/
{ int i,j,*p,*q,s
char t[10]
for(i=0i<n-1i++) /*冒泡法排序*/
for(j=0j<n-1-ij++)
if(strcmp(stud[j].name,stud[j+1].name)>0)
{strcpy(t,stud[j+1].num)
strcpy(stud[j+1].num,stud[j].num)
strcpy(stud[j].num,t)
strcpy(t,stud[j+1].name)
strcpy(stud[j+1].name,stud[j].name)
strcpy(stud[j].name,t)
p=&stud[j+1].roomID
q=&stud[j].roomID
s=*p
*p=*q
*q=s
}
Display(stu,n)
}
void Sort_by_room(Student stud[],int n) /*按房号排序*/
{ int i,j,*p,*q,s
char t[10]
for(i=0i<n-1i++) /*冒泡法排序*/
for(j=0j<n-1-ij++)
if(stud[j].roomID>stud[j+1].roomID)
{strcpy(t,stud[j+1].num)
strcpy(stud[j+1].num,stud[j].num)
strcpy(stud[j].num,t)
strcpy(t,stud[j+1].name)
strcpy(stud[j+1].name,stud[j].name)
strcpy(stud[j].name,t)
p=&stud[j+1].roomID
q=&stud[j].roomID
s=*p
*p=*q
*q=s
}
Display(stu,n)
}
void Query_a_record_by_name(Student stud[],int n) /*查找并显示一个记录*/
{
char s[20]
int i=0
printf("\t\t\t请输入姓名:")/*交互式输入*/
scanf("\t\t\t%s",s)
while(strcmp(stud[i].name,s)!=0&&i<n) i++/*查找判断*/
if(i==n)
{ printf("\t\t\t没有找到相关信息!\n")/*输入失败信息*/
return
}
printf("\t\t\this(her) number:%s\n",stud[i].name)/*输出该学生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num)
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID)
}
void Query_a_record_by_num(Student stud[],int n) /*查找并显示一个记录*/
{
char s[20]
int i=0
printf("\t\t\t请输入学号:")/*交互式输入*/
scanf("\t\t\t%s",s)
while(strcmp(stud[i].num,s)!=0&&i<n) i++/*查找判断*/
if(i==n)
{ printf("\t\t\t没有找到相关信息!\n")/*输入失败信息*/
return
}
printf("\t\t\this(her) number:%s\n",stud[i].name)/*输出该学生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num)
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID)
}
void Query_a_record_by_room(Student stud[],int n) /*查找并显示一个记录*/
{
int s
int i=0
printf("\t\t\t请输入房号:")/*交互式输入*/
scanf("\t\t\t%d",&s)
while(stud[i].roomID==s) i++/*查找判断*/
if(i==n)
{ printf("\t\t\t没有找到相关信息!\n")/*输入失败信息*/
return
}
printf("\t\t\this(her) number:%s\n",stud[i].name)/*输出该学生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num)
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID)
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0
FILE *fp/*定义文件指针*/
if((fp=fopen("stu.txt","w"))==NULL) /*打开文件*/
{
printf("\t\t\t文件打开失败!!\n")
system("pause")
return
}
fprintf(fp,"%d\n",n)/*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].roomID)
i++
}
fclose(fp)/*关闭文件*/
printf("文件保存完毕!\n")/*返回成功信息*/
}
void main() /*主函数*/
{
int n=0,i
for()
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\t输入相关情报\n")/*输入若干条记录*/
n=Input(stu,n)
break
case 2:
printf("\t\t\宿舍状况一览\n")/*显示所有记录*/
Display(stu,n)
break
case 3:
printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t")
scanf("%d",&i)
while(i)
{
if(i<1||i>3)
{
printf("错误输入!!\n")
printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t")
continue
}
switch(i)
{
case 1:
Sort_by_name(stu,n)
break
case 2:
Sort_by_num(stu,n)
break
case 3:
Sort_by_room(stu,n)
break
}
break
}
printf("\t\t\t排序完毕!\n")
printf("\t\t\t")
WritetoText(stu,n)
system("pause")
break
case 4:
printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t")
scanf("%d",&i)
while(i)
{
if(i<1||i>3)
{
printf("错误输入!!\n")
printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t")
continue
}
switch(i)
{
case 1:
Query_a_record_by_name(stu,n)
break
case 2:
Query_a_record_by_num(stu,n)
break
case 3:
Query_a_record_by_room(stu,n)
break
}
break
}
printf("\t\t\t")
system("pause")
break
case 0:
printf("\t\t\t欢迎使用!!\n")/*结束程序*/
printf("\t\t\t")
system("pause")
exit(0)
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)