Ⅰ c语言宿舍管理系统程序
#include<stdio.h>
#include<string.h>
typedefstructDometoryMember{
charsno[16];
charname[32];
charphone[16];
charaddress[20];
}DB;
//创建一张宿舍成员信息表
intcreateList(DBa[]){
FILE*r=fopen("input.txt","r");
inti=0;
while(fscanf(r,"%s%s%s%s",a[i].sno,a[i].name,a[i].phone,a[i].address)!=EOF){
i++;
}
returni;
}
//根据学号查找某个学生,显示其基本信息
intlookup(DBa[],intn,charsno[]){
inti=0;
while(strcmp(a[i].sno,sno)!=0&&i<n){
i++;
}
if(i==n){
printf("没有此人 ");
return-1;
}
else{
printf("%s %s %s %s ",a[i].sno,a[i].name,a[i].phone,a[i].address);
returni;
}
}
//根据学号删除某个学生
intdel(DBa[],intn,charsno[]){
inti;
printf("删除学号为%s的学生: ",sno);
i=lookup(a,n,sno);
if(i!=-1){
intj;
for(j=i+1;j<n;j++){
a[j-1]=a[j];
}
returnn-1;
}
else{
return-1;
}
}
intmain(){
DBa[16];
intn=createList(a);
printf("总共%d个学生 ",n);
charsno[20];
scanf("%s",sno);
inti=lookup(a,n,sno);
n=del(a,n,sno);
printf("删除之后还剩%d个学生 ",n);
getchar();
getchar();
return0;
}
Ⅱ 用C语言编写宿舍管理查询系统
以前给别人写的,完全原创,已经在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=1;i<n+1;i++) /*循环输入*/
{
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=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
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=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
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=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
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);
}
}
}
Ⅲ 数据结构,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语言程序,住宿信息有:层号、房间号、床位号、学号、姓名、收费标准、缴费状态、入住时间
#
包括
包括中
整数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语言为宿舍管理人员编写一个宿舍管理软件.
基本上就是这样了。。。只有输出输入用了c++的cout/cin你可以自己换成printf和scanf,很简单的。。
程序在vc下运行了。
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
struct student{
char ID[10];//学号
int BN;//床号
char RN[10];//宿舍号
char NAME[10];//姓名
student *next;
};
typedef student stu;
stu* Head;
int menu()//用户选择的菜单
{
cout<<"1:查看学生信息"<<endl;
cout<<"2按学号排序:"<<endl;
cout<<"3:查看宿舍的人员信息"<<endl;
cout<<"0:退出系统"<<endl;
cout<<"请选择"<<":";
char c;
int ch;
int flag=1;
while(flag)
{
cin>>c;
ch=(int)c-48;
if(ch>=0&&ch<=3)
flag=0;
else
cout<<"输入错误,请重新输入:";
}
return ch;
}
void sort(stu *head)//冒泡排序
{ int time=0;
char id[10];
int bn;
char rn[10];
char name[10];
stu* temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
time++;
}
temp=head;
int i,j,last;
i=time-1;while(i>0){
for(j=0;j<i;j++)
{
if(temp->BN>temp->next->BN)
{
strcpy(id,temp->ID);
strcpy(rn,temp->RN);
strcpy(name,temp->NAME);
bn=temp->BN;
strcpy(temp->ID,temp->next->ID);
strcpy(temp->RN,temp->next->RN);
strcpy(temp->NAME,temp->next->NAME);
temp->BN=temp->next->BN;
strcpy(temp->next->ID,temp->ID);
strcpy(temp->next->RN,temp->RN);
strcpy(temp->next->NAME,temp->NAME);
temp->next->BN=temp->BN;
last=j;
}
i=last;
}
}
cout<<"排序成功!!!"<<endl;
}
void List(stu *head) // 打印所有学生信息
{
stu *p;
p=head;
if(p==NULL)
cout<<"记录为空"<<endl;
else
{ cout<<"记录如下:"<<endl;
while(p!=NULL){
cout<<p->ID<<" "<<p->BN<<" "<<p->RN<<" "<<p->NAME<<endl;
p=p->next;
}
}
}
stu *InputNewRecord(stu *node)//输入新加成员的信息
{
cout<<"Input ID\n";
cin>>node->ID;
cout<<"Input BN\n";
cin>>node->BN;
cout<<"Input RN\n";
cin>>node->RN;
cout<<"Input NAME\n";
cin>>node->NAME;
return node;
}
int OkOrNot(char *name)
{
char c;
cout<<"请确认想进行此项操作(是请按y或者Y)";
cin>>c;
if(c=='y'||c=='Y')
return 1;
else
return 0;
}
void AppendNode(stu *head)/*在链表的末尾添加新的节点*/
{
stu *p,*newnode,*last;
if(!OkOrNot("Append")) return;
last=head;
p=head->next;
while(p!=NULL)
{
last=p;
p=p->next;
}
newnode=(stu*)malloc(sizeof(stu));
newnode->next=NULL;
p=InputNewRecord(newnode);
last->next=p;
}
void ShowRD(stu *head)//查找某宿舍的学生信息
{
stu *p=head;
int flag=1;
cout<<"输入你要查看的房间号:"<<endl;
char tp[10];
gets(tp);
for(;p!=NULL;p=p->next)
{
if(strcmp(p->RN,tp)==0)//找到并打印
{
cout<<p->ID<<"**"<<p->BN<<"**"<<p->RN<<"**"<<p->NAME<<endl;
flag=0;
}
}
if(flag)
}
int main()
{
stu a=;
stu *head;
head=&a;
head->next=NULL;
Head=head;
cout<<" 欢迎进入宿舍信息管理系统 "<<endl;
cout<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "<<endl;
begin: AppendNode( Head);
cout<<"还要输吗?"<<endl;
char k;
cin>>k;
if(k=='Y'||k=='y')
goto begin;
int f3=1;
while(f3)
{
switch(menu())
{
case 1:
List(Head);
break;
case 2:
sort(Head);
break;
case 3:
ShowRD(Head);
break;
case 0:
f3=0;
break;
}
}
return 0;
}
Ⅵ 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语言怎么实现随机分配
srand(
(unsigned)time(
NULL
)
);
;
num=rand()%k;
用这个生成随机数你应该会吧
然后给6个长方形每个一个随机数,排序,然后将较大的2个一组,较小的2个一组,中间2个一组
也可以给每个方块一个0-2的随机数,同时在生成随机的时候加特判,如果对应数字的组里满了就重作随机
由于方块数少,不用太在乎算法时间复杂度
Ⅷ c语言编程,急!
第一题:
#include <stdio.h>
void main()
{
int a,b,c;//输入三个数
int max;//设置一个最大值
int sign1,sign2,sign3;
printf("please input three number:\n");
sign1 = scanf("%d",&a);
sign2 = scanf("%d",&b);
sign3 = scanf("%d",&c);
if(sign1 && sign2 && sign3)//输入的都是数字
{
printf("a=%d,a=%d,a=%d\n",a,b,c);
max = a;
if(b>max)
{
max = b;
if(c>max)
max = c;
}
printf("The max number is:%d\n",max);
}
else//输入的不都是数字
printf("Data error!Please try again\n");
}
第二题:
策略:根据学生的学号来划分到不同的宿舍,学号这里初始化0-100,宿舍号初始化0 .当然你也可以初始化你想要的数据,或者是自己可以提示输入!
#include <stdio.h>
void main()
{
int stu_num=100;
int sushe_num=0;
int i;
for (i=1;i<=100;i++)
{
if (i%7 !=0)
printf("第%d个学生分在第%d个宿舍",i,sushe_num);
else
sushe_num++;
}
}
Ⅸ 求一个C语言的学生宿舍管理信息系统。简单点的,不用太长
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<process.h>
#include<conio.h>
struct Inf //宿舍信息
{
char I_class[20]; //班级信息
char I_num[20]; //学号
char I_name[20]; //姓名
char I_room[20]; //宿舍号
char I_score[20]; //评分
}A[100];
int N; //宿舍信息数量
void tool() //信息处理函数
{char a[20],s;
int b,i=0,j=1;
system("cls"); //选择要处理信息分类
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf(" 提取信息 \n\n");
printf(" 1.按班 级\n");
printf(" 2.按学 号\n");
printf(" 3.按姓 名\n");
printf(" 4.按宿舍号\n");
printf(" 5.按评 分\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='1'&s<='5')break;
}
b=s-48;
switch(b)
{case 1:printf("请输入(班 级):");scanf("%s",a);break;
case 2:printf("请输入(学 号):");scanf("%s",a);break;
case 3:printf("请输入(姓 名):");scanf("%s",a);break;
case 4:printf("请输入(宿舍号):");scanf("%s",a);break;
case 5:printf("请输入(评 分):");scanf("%s",a);break;
}
while(i<N) //提取检索到得第一个位置的要处理信息
{switch(b)
{case 1:j=strcmp(a,A[i].I_class);break;
case 2:j=strcmp(a,A[i].I_num);break;
case 3:j=strcmp(a,A[i].I_name);break;
case 4:j=strcmp(a,A[i].I_room);break;
case 5:j=strcmp(a,A[i].I_score);break;
}
if(j==0)break;i++;
}
if(j==0)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n班 级:%s",A[i].I_class);
printf("\n学 号:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍号:%s",A[i].I_room);
printf("\n评 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n [1修改] [2删除] [3返回] ");
while(1)
{s=getch();if(s>='1'&&s<='3')break;}
if(s=='1') //修改操作
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n请输入班 级:");scanf("%s",A[i].I_class);getchar();
printf("请输入学 号:");scanf("%s",A[i].I_num);getchar();
printf("请输入姓 名:");scanf("%s",A[i].I_name);getchar();
printf("请输入宿舍号:");scanf("%s",A[i].I_room);getchar();
printf("请输入评 分:");scanf("%s",A[i].I_score);getchar();
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("修改完成,按任意键返回......");
getch();
}
if(s=='2') //删除操作
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n\n\n\n删除完毕,按任意键返回......");
getch();
for(j=i;j<N;j++)
A[j]=A[j+1];
N--;
}
}
else
{printf("无此信息记录,按任意键返回......");getch();}
}
void input() //添加信息函数
{char a;
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n请输入班 级:");scanf("%s",A[N].I_class);getchar();
printf("请输入学 号:");scanf("%s",A[N].I_num);getchar();
printf("请输入姓 名:");scanf("%s",A[N].I_name);getchar();
printf("请输入宿舍号:");scanf("%s",A[N].I_room);getchar();
printf("请输入评 分:");scanf("%s",A[N].I_score);getchar();N++;
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
printf("\n输入完成,是否继续输入[y\\n]");
while(1)
{a=getch();if(a=='n'||a=='y')break;}
if(a=='y')input();
}
void output() //显示信息函数
{int i;
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
for(i=0;i<N;i++)
{
printf("\n班 级:%s",A[i].I_class);
printf("\n学 号:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍号:%s",A[i].I_room);
printf("\n评 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}
printf("\n按任意键返回......");
getch();
}
void admin() //教师界面
{char a;
while(1)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n");
printf(" @教师界面[信息数量%d]@\n\n\n",N);
printf(" 1.添加信息 \n");
printf(" 2.处理信息 \n");
printf(" 3.显示信息 \n\n");
printf(" 0.退 出 \n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{a=getch();if(a>='0'&&a<='3')break;}
if(a=='0')break;
switch(a-48)
{case 1:input();break;
case 2:tool();break;
case 3:output();break;
}
}
}
void guest()
{char a[20],s;
int b,i,j=1;
while(1)
{i=0;
system("cls"); //选择要处理信息分类
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf(" 学生查询界面 \n\n");
printf(" 1.按班 级\n");
printf(" 2.按学 号\n");
printf(" 3.按姓 名\n");
printf(" 4.按宿舍号\n");
printf(" 5.按评 分\n\n");
printf(" 0.退 出\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='0'&s<='5')break;
}
b=s-48;
if(b==0)break;
switch(b)
{case 1:printf("请输入(班 级):");scanf("%s",a);break;
case 2:printf("请输入(学 号):");scanf("%s",a);break;
case 3:printf("请输入(姓 名):");scanf("%s",a);break;
case 4:printf("请输入(宿舍号):");scanf("%s",a);break;
case 5:printf("请输入(评 分):");scanf("%s",a);break;
}
while(i<N) //提取检索到得第一个位置的要处理信息
{switch(b)
{case 1:j=strcmp(a,A[i].I_class);break;
case 2:j=strcmp(a,A[i].I_num);break;
case 3:j=strcmp(a,A[i].I_name);break;
case 4:j=strcmp(a,A[i].I_room);break;
case 5:j=strcmp(a,A[i].I_score);break;
}
if(j==0)break;i++;
}
if(j==0)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n班 级:%s",A[i].I_class);
printf("\n学 号:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍号:%s",A[i].I_room);
printf("\n评 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n按任意键返回......");
getch();
}
else
{printf("\n要查询的信息不存在!");
printf("\n按任意键返回......");
getch();
}
}
}
int user() //用户登录菜单(返回1为教师,返回2为学生)
{char s;
int i;
FILE *fp;
char pw[5];
char pwi[5];
while(1)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n");
printf(" 宿舍管理系统 \n\n\n");
printf(" --1.教师登陆-- \n");
printf(" --2.学生登陆-- \n");
printf(" --3.修改密码-- \n\n\n");
printf(" --0.退 出-- \n\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='0'&&s<='3')break;
}
s-=48;
if(s==0){system("cls");printf("\n\n\n\n\n @谢谢使用@");getch();exit(0);}
if(s==2)return 2; //进入学生界面点
if(s==1||s==3)
{if((fp=fopen("key.dat","r"))==NULL)
{system("cls");printf("\n\n\n 文件读取错误!程序终止!");getch();exit(0);}
fread(pw,5,1,fp);
pw[4]=0;
fclose(fp);
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n\n\n\n");
printf("请输入4位管理员密码:");
for(i=0;i<4;i++)
{pwi[i]=getch();putchar('*');
}
pwi[4]=0;
if(strcmp(pwi,pw))
{printf("\n密码错误!按任意键返回......");getch();}
else
if(s==3) //密码修改执行处
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n\n\n\n");
printf("请输入4位新密码:");
for(i=0;i<4;i++)
{pwi[i]=getch();putchar('*');
}
pwi[4]=0;
if((fp=fopen("key.dat","w"))==NULL)
{system("cls");printf("\n\n\n 文件写入错误!程序终止!");getch();exit(0);}
fwrite(pwi,5,1,fp);
fclose(fp);
printf("\n密码修改成功,按任意键返回......");
getch();
}
else return 1; //进入教师界面点
}
}
}
void main() //主函数
{FILE *fp;
if((fp=fopen("ss.dat","r"))==NULL) //读取文件中的数据
{system("cls");printf("\n\n\n 文件读取错误!程序终止!");getch();exit(0);}
fread(&N,sizeof(int),1,fp);
fread(A,sizeof(struct Inf),100,fp);
fclose(fp);
if(user()==1)admin(); //调用用户操作函数
else guest();
if((fp=fopen("ss.dat","w"))==NULL) //存储数据到文件
{system("cls");printf("\n\n\n 文件写入错误!程序终止!");getch();exit(0);}
fwrite(&N,sizeof(int),1,fp);
fwrite(A,sizeof(struct Inf),100,fp);
fclose(fp);
system("cls");
printf("\n\n\n\n\n @谢谢使用@");
getch();
}
Ⅹ 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! [