宿舍管理系统

发布 2022-02-11 08:33:28 阅读 4567

//采用顺序线性表解决宿舍管理问题 (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 删除...