宿舍管理查询系统.docx

上传人:b****7 文档编号:9743412 上传时间:2023-02-06 格式:DOCX 页数:14 大小:69.61KB
下载 相关 举报
宿舍管理查询系统.docx_第1页
第1页 / 共14页
宿舍管理查询系统.docx_第2页
第2页 / 共14页
宿舍管理查询系统.docx_第3页
第3页 / 共14页
宿舍管理查询系统.docx_第4页
第4页 / 共14页
宿舍管理查询系统.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

宿舍管理查询系统.docx

《宿舍管理查询系统.docx》由会员分享,可在线阅读,更多相关《宿舍管理查询系统.docx(14页珍藏版)》请在冰豆网上搜索。

宿舍管理查询系统.docx

宿舍管理查询系统

课程设计报告

 

课程设计题目:

宿舍管理查询系统

 

学生姓名xxx

专业xxx工程

班级xxx

指导教师xxx

2015年1月8日

东华理工大学

课程设计评分表

学生姓名:

xxxx班级:

xxx学号:

xxx

课程设计题目:

宿舍管理查询系统

项目内容

满分

实评

能结合所学课程知识、有一定的能力训练。

符合选题要求

(5人一题)

10

工作量适中,难易度合理

10

能熟练应用所学知识,有一定查阅文献及运用文献资料能力

10

理论依据充分,数据准确,公式推导正确

10

能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等

10

能体现创造性思维,或有独特见解

10

总体设计正确、合理,各项技术指标符合要求。

10

说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰

10

设计说明书栏目齐全、合理,符号统一、编号齐全。

 格式、绘图、表格、插图等规范准确,符合国家标准

10

有一定篇幅,字符数不少于5000

10

总分

100

指导教师评语:

 

指导教师签名:

年月日

实验要求

1.为宿舍管理人员编写一个宿舍管理查询软件,建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)

查询菜单:

 (用二分查找实现以下操作)

A.按姓名查询 

B.按学号查询 

C.按房号查询

算法设计

1.1存储结构

本系统定义的存储结构采用结构体数组,结构体为:

typedefstruct//定义结构体成员

{

charname[20];

intnum;//学号和房号都为整型

introom;

}stu;

stustud;

typedefstruct

{

intlength;//当前长度

stu*elem;//存储空间基址

intlistsize;//当前分配的存储容量

}linklist;在此说明每个部分的算法设计说明(可以是描述算法的流程图)

2.1.2程序结构图为:

 

 

3详细设计

#include

#include

#include

#defineM100

intchange=0;//用来判断是否已保存操作

//定义一个存储学生相关信息的结构体

typedefstruct

{

charS_name[31];//学生姓名

charS_number[16];//学生学号

intD_number;//学生所在寝室的宿舍号

}Stud;

typedefstruct

{

Studstudent[M];

intTotal;//学生总数

}Stu,*St;

//判断学号是否与表中所存学号重复

voidS_number_Judge(StS,intt)

{

inti;

for(i=1;i<=(S->Total)-1;i++)

{

if(i!

=t)

{

while((strcmp((S->student[i]).S_number,(S->student[t]).S_number)==0)&&(i!

=t))

{

printf("学号输入失败,该学号已存在,请重新输入学号!

\n");

printf("请输入学生的学号(15个字符以内):

");

scanf("%s",(S->student[t]).S_number);

getchar();

i=1;

}

}

}

}

//添加学生信息函数

voidAdd(StS)

{

printf("请输入学生姓名(30个字符以内):

");

scanf("%s",(S->student[++(S->Total)]).S_name);

getchar();//获取换行符

printf("请输入学生的学号(15个字符以内):

");

scanf("%s",(S->student[S->Total]).S_number);

getchar();

S_number_Judge(S,S->Total);//判断输入的学号是否与表中所存在的学号重复

printf("请输入宿舍号码:

");

scanf("%d",&(S->student[S->Total]).D_number);

getchar();

change=1;

printf("添加成功!

\n\n");

}

//显示所有学生信息函数

voidDisplay_All(StS)

{

inti;

printf("全体学生信息如下:

\n");

printf("学生姓名学生学号宿舍号\n");

for(i=1;i<=S->Total;i++)

printf("%-20s%-15s%-5d\n",(S->student[i]).S_name,(S->student[i]).S_number,(S->student[i]).D_number);

putchar('\n\n');

}

//排序函数按照寝室号从小到大排序(冒泡法)

voidSort_D_number(StS)

{

inti,j,t;

charname[30];

charnumber[15];

for(i=1;i<=S->Total;i++)

for(j=i;j<=S->Total;j++)

if((S->student[i]).D_number>(S->student[j]).D_number)

{

strcpy(name,(S->student[i]).S_name);

strcpy(number,(S->student[i]).S_number);

t=(S->student[i]).D_number;

strcpy((S->student[i]).S_name,(S->student[j]).S_name);

strcpy((S->student[i]).S_number,(S->student[j]).S_number);

(S->student[i]).D_number=(S->student[j]).D_number;

strcpy((S->student[j]).S_name,name);

strcpy((S->student[j]).S_number,number);

(S->student[j]).D_number=t;

}

}

//排序函数按照学号从小到大排序(冒泡法)

voidSort_S_number(StS)

{

inti,j,t;

charname[30];

charnumber[15];

for(i=1;i<=S->Total;i++)

for(j=i;j<=S->Total;j++)

if(strcmp((S->student[i]).S_number,(S->student[j]).S_number)>0)

{

strcpy(name,(S->student[i]).S_name);

strcpy(number,(S->student[i]).S_number);

t=(S->student[i]).D_number;

strcpy((S->student[i]).S_name,(S->student[j]).S_name);

strcpy((S->student[i]).S_number,(S->student[j]).S_number);

(S->student[i]).D_number=(S->student[j]).D_number;

strcpy((S->student[j]).S_name,name);

strcpy((S->student[j]).S_number,number);

(S->student[j]).D_number=t;

}

}

//查询函数以姓名为关键字进行查询(顺序查找)

voidQuery_S_name(StS)

{

inti,j=0;

charname[31];

printf("请输入你要查找的学生的姓名(30个字符以内):

");

scanf("%s",name);

getchar();

printf("所查找学生信息如下:

\n");

printf("学生姓名学生学号宿舍号\n");

for(i=1;i<=S->Total;i++)

if(strcmp(name,(S->student[i]).S_name)==0)

{

printf("%-20s%-15s%-5d\n",(S->student[i]).S_name,(S->student[i]).S_number,(S->student[i]).D_number);

j=1;

}

if(!

j)

printf("\n查找失败,表中不存在该学生的信息!

\n\n");

}

//存储函数

voidSave(StS)

{

StudStd;

inti;

intflag1=0,flag2=0;//判断存储是否成功

FILE*fp;

if((fp=fopen("Dorm_Manage","w"))==NULL)

{

printf("打开文件失败!

\n\n");

flag1=1;

exit(0);//结束程序

}

for(i=1;i<=S->Total;i++)

if(fwrite(&S->student[i],sizeof(Std),1,fp)!

=1)

{

printf("数据写入错误\n\n");

flag2=1;

exit(0);

}

if(!

flag1&&!

flag2)

{

printf("数据存储成功!

\n\n");

change=0;

}

fclose(fp);

}

//加载记录函数

voidLoad(StS)

{

StudStd;

FILE*fp;

if((fp=fopen("Dorm_Manage","r"))==NULL)

{

printf("打开文件失败!

\n\n");

exit(0);

}

while(!

feof(fp))

fread(&S->student[++(S->Total)],sizeof(Std),1,fp);

fclose(fp);

printf("加载数据成功!

\n\n");

(S->Total)--;//由于读取问题,表中个数要减去

}

//退出程序时判断是否保存函数

voidJudge_Save(inti,StS)

{

if(i)Save(S);

exit(0);

}//菜单

voidMenu()

{

//菜单

printf("~~~~~~~~~~~~~~~~~~~~欢迎进入宿舍管理系统~~~~~~~~~~~~~~~~~~~~~\n\n");

printf("*****************************菜单***************************\n");

printf("—————————按a.添加学生信息——————————————\n");

printf("—————————按b.查询学生信息——————————————\n");

printf("————--————按c.显示所有学生信息————————————\n");

printf("—————————按d.保存信息————————————————\n");

printf("—————————按f.载入信息————————————————\n");

printf("—————————按g保存退出—————————————————\n");

printf("*****************************************\n");

}

voidmain()

{

chari;

StS;

S=(St)malloc(sizeof(Stu));

S->Total=0;

do

{

Menu();

printf("请选择所要实现的功能(请输入a~f中的任意一个数字):

");

scanf("%s",&i);

getchar();//获取换行符

putchar('\n');

switch(i)

{

case'a':

Add(S);

break;

case'b':

Search(S);

break;

case'c':

Display_All(S);

break;

case'd':

Save(S);

break;

case'e':

Load(S);

break;

case'f':

Judge_Save(change,S);

exit(0);

break;

default:

printf("选择错误:

请在选项之间选择!

\n\n");

break;

}

}while(i!

='h');

4、实验思想

通过构建线性表,来添加学生信息,并且用函数的思想,用主函数调用函数来实现学生信息的添加,修改,删除,查询目的。

学生信息的排序是通过冒泡排序实现的,主要是通过一个内循环一个外循环来同时进行,将最小的或最大的排好。

5、实验心得

通过此次的课程设计,再次的体会到一个主函数调用的重要性,以及线性表及链表的重要性,通过它们可是实现系统的查询删除,修改等功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1