//采用顺序线性表解决宿舍管理问题 (c语言)
#include<
#include<
#include<
#define n 40 //线性表存储空间的初始分配量。
#define increase 10 //线性表存储空间的分配量增量。
#define null 0
char p[10]="123";
int f,t=0; /定义全局变量。
typedef struct
char name[20];
char num[20
char room[10];
stu;stu stud;
typedef struct
int length; /当前长度。
stu *elem; /存储空间基址。
int listsize; /当前分配的存储容量。
linklist;
void init(linklist &l)//线性表初始化。
*)malloc(n*sizeof(stu)))
void menu()/操作菜单。
printf("");
printfn");
printf请按指定键选择操作n");
printfn");
printf("");printf("");
printf(" 1 按姓名排序 2 按学号排序");
printf("");
printf(" 3 按房号排序 4 按姓名查找");
printf("");
printf(" 5 按学号查找 6 按房号查找");
printf("");
printf(" 7 按学号插入 8 按学号删除");
printf("");
printf(" 9 修改密码 10 创建线性表");
printf("");
printf(" 提示:当输入的数字键为0时,退出操作");
if(t==1)
printf(" 请输入数字键(1~8为操作键):"1~8为有效数字操作键。
scanf("%d",&f);
if(f<0||f>10)
system("cls");
printf("");
printf(" 输入数字不对,请在原处重输!");printf("");
menu();
void disp返回主界面。
char c;
fflush(stdin);
printf("");
printf(" 请按任意键进入主界面:")
scanf("%c",&c);
system("cls");
void judge3() 如果已无学生记录则返回主界面。
printf("");
printf(" 已无学生记录");
printf("");
disp();
menu();
void resertpassword()
char str1[10],str2[10];
system("cls");
printf(" 请输入新密码(10个以内的字符或数字):"
scanf("%s",str1);
printf(" 请确认新密码:")
scanf("%s",str2);
if(strcmp(str1,str2)==0)
strcpy(p,str1);
printf(" 修改成功!")
disp();
menu();
else printf(" 两次密码不一致,请重试");
resertpassword();
void input(linklist l) /输入学生的信息。
printf(" 请输入姓名:")
fflush(stdin清空输入缓冲区,得到正确的输入数据。
gets( /输入一行字符串(姓名)
printf(" 请输入学号:")
gets(
printf(" 请输入房号:")
gets(void create(linklist &l)//创建学生信息表。
if( /判断学生的人数是否超过初值,如果超过,则重新分配。
stu *newbase;
newbase=(stu*)reall
oc(int i=2;
char ch;
printf("");
printf现在开始创建线性表n");
printf("");
printf(" 请输入第1个学生的信息");
input(l); 调用输入函数。
strcpy(
strcpy(
strcpy(
printf("");
printf(" 是否继续输入?:"
scanf("%c",&ch);
printf("");printf("");
while(ch=='y')
printf(" 请输入第%d个学生的信息",i);
input(l);
strcpy(
strcpy(
strcpy(
i++;printf("");
printf(" 是否继续输入?:"
scanf("%c",&ch);
printf("");
printf("");
if(ch=='n') system("clsvoid sort3(linklist &l)//按房号排序(采用冒泡排序)
int i,j;
stu temp;
for(i=0;i<
for(j=i+1;j<
if(strcmp(>0)
temp=sort2(linklist &l)//按学号排序(采用冒泡排序)
int i,j;
stu temp;
for(i=0;i<
for(j=i+1;j<
if(strcmp(>0)
temp=sort1(linklist &l)//按姓名排序(采用冒泡排序)
int i,j;
stu temp;
for(i=0;i<
for(j=i+1;j<
if(strcmp(>0)
temp=print1(linklist &l)//打印学生信息。
int i;
printf("");
printfn");
printf(" 姓名学号房号:");printf("");
for(i=0;i<
printf("\t%s\t\t%s\t\t%s",printfnvoid print2(linklist &l,int mid) /打印查找到的学生信息。
printf(" 查找成功---该学生信息为:");
printfn");
printf(" 姓名学号房号");printf("");
printf("\t%s\t\t%s\t\t%s",printfn");
int judge1(char ch) /用户选择是否继续查找。
scanf("%c",&ch);
printf(" 是否继续查找?:"
fflush(stdin);
scanf("%c",&ch);
if(ch=='y')
system("cls");
return(1);
elsereturn 0;
int judge2(char ch) /如果学生不存在,判断是否继续查找。
scanf("%c",&ch);
printf(" 该学。
学生不存在,是否继续查找?:"
fflush(stdin);
scanf("%c",&ch);
if(ch=='y')
system("cls");
return(1);
elsereturn 0;
void select3(linklist &l)//按房号从小到大查找(采用二分查找)
if( judge3();此函数功能为:返回主界面。
else char m[10];
int i,flag=0,s=0;
char ch=null;
printf("");printf("");
printf(" 按房号查找---请输入要查找的房号:")
scanf("%s",m);
printf("");
for(i=0;i<
if(strcmp(
printfn");
printf("\t%s\t\t%s\t\t%s",
s++;if(flag==0)
flag=1;
printfn");
if(flag==1)
if(judge1(ch)) 调用判断函数1
select3(l);
else system("cls");
menuelse
if(judge2(ch)) 调用判断函数2
select3(l);
else system("cls");
menuvoid select2(linklist &l)//按学号从小到大查找(采用二分查找)
if( judge3();
elseint low=0,high=
char n[20];
char ch=null;
printf("");printf("");
printf(" 按学号查找---请输入要查找的学号:")
scanf("%s",n);
printf("");while(low<=high)
mid=(low+high)/2;
if(strcmp(
flag=1;
break;
else if(strcmp(<0)
low=mid+1;
else high=mid-1;
if(flag==1)
print2(l,mid);
if(judge1(ch))
select2(l);
else system("cls");
menuelse
if(judge2(ch))
select2(l);
else system("cls");
menuvoid select1(linklist &l)//按姓名从小到大查找(采用二分查找)
if( judge3();
elseint low=0,high=
printf("");printf("");
printf(" 按姓名查找---请输入要查找的姓名:")
char a[15],ch=null;
scanf("%s",a);
printf("");
while(low<=high)
mid=(low+high)/2;
if(strcmp(a,flag=1;
break;
else if(strcmp(a,>0)
low=mid+1;
else high=mid-1;
if(flag==1)
print2(l,mid); 打印查找到的学生的信息。
if(judge1(ch))
select1(l);
else system("cls");
menuelse
if(judge2(ch))
select1(l);
else system("cls");
menuvoid insert(linklist &l)//按学号从小到大插入该学生。
int i,j,k;
char ch;
printf("");
printf(" 插入的学生信息为:");
printf(" 姓名:")
fflush(stdin);/清空输入缓冲区,得到正确的输入数据。
gets(
printf(" 学号:")gets(
printf(" 房号:")gets(
if(strcpy(
strcpy(
strcpy(<
if(strcmp(>0)
k=i;for(j=>k;j--)
strcpy(
strcpy(
strcpy(
break;
else strcpy(
strcpy(
strcpy(
fflush(stdin);
printf("");
printf(" 是否继续插入?:"
scanf("%c",&ch);
if(ch=='y') insert(l);
else system("clsvoid delete(linklist &l)//按学号删除该学生。
int i,j,k=-1,flag=0;
char ch;
printf("");printf("");
printf(" 请输入要删除学生的学号:")
scanf("%s",for(i=0;i<
if(strcmp(
flag=1;
printf(" 该学生的信息为:");printf("");
printf("\t%-15s %-3s %7s",k=i;
for(j=k;j<
printf("");
breakif(flag==0) printf(" 该学生不存在");
if(flag==1)
fflush(stdin);
printf("");
printf(" 是否继续删除?:"
scanf("%c",&ch);
system("cls");
if(ch=='y')
delete(l);
elsesystem("clsvoid main() 主函数。
linklist l; /定义线性表 l
init(l调用初始化函数。
char ch=null;
char password[10];
/ system("color a3");
system("mode con: cols=120 lines=50");
system("cls");
printf("");
printfn");
printfn");
printf欢迎进入宿舍管理查询系统n");
printfn");
printfn");
printf(" 请输入密码:")
gets(password);
if(strcmp(password,p)==0)
printf("");
system("cls");将屏幕先前显示的内容清理掉。
t=1; /在没有数据前部显示主菜单。
menu调用主菜单函数。
while(f!=0)
system("cls");
switch(f)
case 1: sort1(l); 调用按姓名排序函数
printf("");
if(printf(" 已无学生记录,您可以返回主菜单创建线性表")
printf("");
disp();
menu();
elseprintf(" 按姓名排序:");
print1(l);
disp();调用返回主界面。
menubreak;
case 2: sort2(l); 调用按学号排序函数
printf("");
if( printf(" 已无学生记录,您可以返回主菜单创建线性表");
printf("");
disp();
menu();
elseprintf(" 按学号排序:");
print1(l);
disp();
menu();
break;
case 3: sort3(l); 调用按房号排序函数
printf("");
if( printf(" 已无学生记录,您可以返回主菜单创建线性表");
printf("");
disp();
menu();
elseprintf(" 按房号排序:");
print1(l);
disp();
menu();
break;
case 4:sort1(l先调用按姓名排序函数进行排序
select1(l); 再调用按姓名查找函数进行(二分)查找
break;
case 5:sort2(l); 先调用按学号排序函数进行排序
select2(l); 再调用按学号查找函数进行(二分)查找
break;
case 6:sort3(l先调用按房号排序函数进行排序
select3(l); 再调用按房号查找函数进行(二分)查找。
break;
case 7:sort2(l调用插入函数。
insert(lsystem("cls");
printf(" 显示插入后的学生信息:");print1(l);
disp();
menu();
break;
case 8: delete(l); 调用删除函数
if(printf("");
printf(" 学生记录已被删除完,您可以返回主菜单创建线性表");
printf("");
disp();
menu();
elseprintf(" 显示删除后的学生信息:");
print1(l);
disp();
menubreak;
case 9:resertpassword();
break;
case 10:create(l);
menu();
breakelse
printf(" 密码错误!");
exit(0
宿舍管理系统
需求分析。一编写目的。通过对用户需求进行调查分析,写出需求分析文档。需求分析文档可作为项目设计的基本准则要求,也可作为系统分析员进行系统分析和测试的手册。二需求概述。设计一个宿舍管理系统,使之提供以下功能 1 信息输入功能。2 排序功能。3 查询功能。三需求说明。1 学生的信息包括姓名 学号 房号和...
宿舍管理系统
班级 学号 姓名 第九组。宿舍管理系统测试分析说明书。查询模块设计。1引言。1.1项目开发背景。随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。对于学校而言,学生宿舍管理系统是学校必不可少的一个组成部分,采用计算机来管理宿舍和学生的信息,大大提高了查询的速度,节...
宿舍管理系统
一 课程设计目的和任务。为了方便宿舍管理处更好的管理宿舍情况,在新生入学时记录下学生的相关信息,并在以后能够实现学生的查询和退房。并且按照不同的要求查询学生的相关信息,如,姓名,学号,房间号。二 分析与设计。1.程序的基本功能 1 建立一个宿舍。2 输入学生信息,3 修改一个学生的所有资料。4 删除...