宿舍管理系统课程设计报告.docx

上传人:b****6 文档编号:11946489 上传时间:2023-06-03 格式:DOCX 页数:18 大小:149.10KB
下载 相关 举报
宿舍管理系统课程设计报告.docx_第1页
第1页 / 共18页
宿舍管理系统课程设计报告.docx_第2页
第2页 / 共18页
宿舍管理系统课程设计报告.docx_第3页
第3页 / 共18页
宿舍管理系统课程设计报告.docx_第4页
第4页 / 共18页
宿舍管理系统课程设计报告.docx_第5页
第5页 / 共18页
宿舍管理系统课程设计报告.docx_第6页
第6页 / 共18页
宿舍管理系统课程设计报告.docx_第7页
第7页 / 共18页
宿舍管理系统课程设计报告.docx_第8页
第8页 / 共18页
宿舍管理系统课程设计报告.docx_第9页
第9页 / 共18页
宿舍管理系统课程设计报告.docx_第10页
第10页 / 共18页
宿舍管理系统课程设计报告.docx_第11页
第11页 / 共18页
宿舍管理系统课程设计报告.docx_第12页
第12页 / 共18页
宿舍管理系统课程设计报告.docx_第13页
第13页 / 共18页
宿舍管理系统课程设计报告.docx_第14页
第14页 / 共18页
宿舍管理系统课程设计报告.docx_第15页
第15页 / 共18页
宿舍管理系统课程设计报告.docx_第16页
第16页 / 共18页
宿舍管理系统课程设计报告.docx_第17页
第17页 / 共18页
宿舍管理系统课程设计报告.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

宿舍管理系统课程设计报告.docx

《宿舍管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统课程设计报告.docx(18页珍藏版)》请在冰点文库上搜索。

宿舍管理系统课程设计报告.docx

宿舍管理系统课程设计报告

农业大学

理学与信息科学学院

高级语言课程设计报告

 

设计题目宿舍管理系统

学生专业班级班

学生(学号)

设计小组其他同学(学号)

 

指导教师

完成时间

设计地点

 

2016年12月06日

一、课程设计目的和任务

《高级语言程序设计》课程设计是计算机相关专业的主要实践性教学环节。

其目的在于加深对高级语言程序设计理论和基本知识的理解,掌握使用C语言进行面向过程设计的基本方法,提高运用面向过程知识解决实际问题的能力。

为毕业设计和以后的工程实践打下良好的基础。

宿舍管理系统:

用C语言为学生宿舍管理人员编写一个宿舍管理软件。

设某宿舍有:

101,102,201,202四个房间,每个房间可住学生<=4人,存储结构:

学号、、房间号,按房间号有序,实现学生的入住、退房和查询,按给定学号、、房号查询。

二、分析与设计

1.程序的基本功能:

(1).实现新生入住登记

(2).修改入住学生信息

(3)实现退房

(4)实现以查询学生信息

(5)实现以学号查询学生信息

(6)实现以寝室号查询学生信息

(7)实现按照寝室号从小到大排序

(8)实现按学号从小到大排序

(9)实现显示所有学生信息

(10)实现退出程序并保存数据

2.定义的函数及说明:

  此程序由11个函数构成。

    Add----------添加学生信息函数(、学号、宿舍号、班级)

    Alter----------修改学生信息函数

Delete--------删除学生信息函数

    Display_All--------显示所有学生信息函数

Query_S_name---------查询函数以为关键字进行查询

Query_S_number-------查询函数以学号为关键字进行查询

    Query_D_number------查询函数以寝室号为关键字进行查询

Save-----存储函数

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

Menu--菜单

Main---主函数

3.系统总框图:

 

三、系统实施

1.源程序代码:

#include

#include

#include

#include

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

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

typedefstruct

{

charS_name[10];//学生

charS_number[10];//学生学号

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

charS_class1[10];//班级

intTotal;//学生总数

}Student[16];

intsushehao[4]={101,102,201,202};

intcount[4]={0};

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

voidS_number_Judge(StudentS,intt)

{

inti;

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

while(strcmp(S[i].S_number,S[t].S_number)==0)//strcmp字符串比较函数,两个字符逐个比较,相等返回值为

{

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

\n");

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

");

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

getchar();

i=1;

}

}

//添加学生信息函数

voidAdd(StudentS)

{

intj;

intflag=1;

printf("请输入学生(10个字符以):

");

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

getchar();//获取换行符

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

");

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

getchar();

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

while(flag)

{

printf("请输入宿舍:

");

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

for(j=0;j<4;j++)

{

if(S[S->Total].D_number==sushehao[j]&&count[j]<4)

{

count[j]++;

flag=0;

break;

}

if(S[S->Total].D_number==sushehao[j]&&count[j]==4)

{

printf("该宿舍已满,请重新输入\n");

break;

}

}

}

getchar();

printf("请输入所在班级:

");

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

getchar();

printf("添加成功!

\n\n");

}//修改学生信息函数

voidAlter(StudentS)

{

inti;

intflag=0;//用来判断表中是否存在所要修改的学生的信息

charnumber[10];

printf("请输入你要修改学生的学号:

");

scanf("%s",number);

getchar();

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

if(strcmp(S[i].S_number,number)==0)

flag=i;

if(!

flag)

printf("你所要修改的学生信息在表中不存在!

\n");

else

{

printf("新信息如下:

\n");

printf("请输入学生(10个字符以):

");

scanf("%s",S[flag].S_name);

getchar();

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

");

scanf("%s",S[flag].S_number);

getchar();

S_number_Judge(S,flag);

printf("请输入宿舍号:

");

scanf("%d",&S[flag].D_number);

getchar();

printf("请输入床铺:

");

scanf("%s",&S[S->Total].S_bednum);

getchar();

printf("请输入所在班级:

");

scanf("%s",&S[S->Total].S_class1);

getchar();

dirty=1;

printf("修改成功!

\n");

}

putchar('\n');

}

//删除学生信息

voidDelete(StudentS)

{

inti,j;

intflag=0;//用来判断表中是否存在所要删除的学生的信息

charnumber[10];

printf("请输入你要删除学生的学号:

");

scanf("%s",number);

getchar();

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

if(strcmp(S[i].S_number,number)==0)

flag=i;

if(!

flag)

printf("你所要删除的学生在表中不存在!

");

else

{

for(i=flag;iTotal;i++)

{

j=i+1;

strcpy(S[i].S_name,S[j].S_name);//字符串拷贝函数,格式:

strcpy(字符数组名,字符数组名),赋值给

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

S[i].D_number=S[j].D_number;

strcpy(S[i].S_bednum,S[j].S_bednum);

strcpy(S[i].S_class1,S[j].S_class1);

}

(S->Total)--;

dirty=1;

printf("删除成功!

");

}

printf("\n\n");

}

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

voidDisplay_All(StudentS)

{

inti;

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

\n");

printf("---------------------------------------------------\n");/*格式头*/

printf("房间号床位号学号班级\n");

printf("---------------------------------------------------\n");

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

printf("%-10d%-10s%-10s%-10s%-10s\n",S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);

putchar('\n');

}

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

voidQuery_S_name(StudentS)

{

inti,j=0;

charname[10];

printf("请输入你要查找的学生的(10个字符以):

");

scanf("%s",name);

getchar();

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

\n");

printf("\t\t------------------------------------------------\n");/*格式头*/

printf("\t\t房间号床位号学号班级\n");

printf("\t\t------------------------------------------------\n");

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

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

{

printf("\t\t%-10d%-10s%-10s%-10s%-10s\n",S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);

j=1;

}

if(!

j)

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

\n\n");

}

//查询函数以学号为关键字进行查询(折半查找)

voidQuery_S_number(StudentS)

{

inti,j=0;

charnumber[10];

printf("请输入你要查找的学生的学号(10个字符以):

");

scanf("%s",number);

getchar();

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

\n");

printf("\t\t------------------------------------------------\n");/*格式头*/

printf("\t\t房间号床位号学号班级\n");

printf("\t\t------------------------------------------------\n");

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

if(strcmp(number,S[i].S_number)==0)

{

printf("\t\t%-10d%-10s%-10s%-10s%-10s\n",S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);

j=1;

}

if(!

j)

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

\n\n");

}

//查询函数以寝室号为关键字进行查询(折半查找)

voidQuery_D_number(StudentS)

{

inti,j,m,n,base,top,mid;

j=0;

base=1;

top=S->Total;

printf("请输入你要查询的寝室号:

");

scanf("%d",&i);

getchar();

Sort_D_number(S);//将表中原数据按照寝室号从小到大排序

printf("所查找寝室信息如下:

\n");

printf("\t\t------------------------------------------------\n");/*格式头*/

printf("\t\t房间号床位号学号班级\n");

printf("\t\t------------------------------------------------\n");

if(i>=S[1].D_number&&i<=S[S->Total].D_number)

{

while(base<=top)

{

mid=(base+top)/2;

if(i==S[mid].D_number)

{

m=mid;

n=mid-1;

while(S[m].D_number==i)

{

printf("\t\t%-10d%-10s%-10s%-10s%-10s\n",S[m].D_number,S[m].S_bednum,S[m].S_number,S[m].S_name,S[m].S_class1);

m++;

if(m>S->Total)

break;

}

if(n>0)

{

while(S[n].D_number==i)

{

printf("\t\t%-10d%-10s%-10s%-10s%-10s\n",S[n].D_number,S[n].S_bednum,S[n].S_number,S[n].S_name,S[n].S_class1);

n--;

if(n<1)

break;

}

}

j=1;

putchar('\n');

break;

}

elseif(i>S[mid].D_number)

base=mid+1;

else

top=mid-1;

}

}

if(!

j)

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

\n\n");

}

//存储函数

voidSave(StudentS)

{

inti=0;

FILE*fp;/*定义文件指针*/

charfilename[100];/*定义文件名*/

printf("\t\t输入文件名:

");/*输入文件名*/

scanf("\t\t%s",&filename);

if((fp=fopen(filename,"w"))==NULL)/*打开文件*/

{

printf("\t\t无法打开该文件\n");

system("pause");

return;

}

fprintf(fp,"%d\n",S->Total);/*循环写入数据*/

while(i<(S->Total))

{

fprintf(fp,"%-10d%-10s%-10s%-10s%-10s\n",S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);

i++;

}

fclose(fp);/*关闭文件*/

printf("写入成功!

\n");/*返回成功信息*/

}

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

voidJudge_Save(inti,StudentS)

{

charch;

if(i)

{

printf("表中数据已改变,是否保存后再退出(Y/N)?

:

");

ch=getchar();

getchar();

while(ch!

='n'&&ch!

='N'&&ch!

='y'&&ch!

='Y')

{

printf("请输入N(n)或者Y(y):

");

ch=getchar();

getchar();

}

if(ch=='y'||ch=='Y')

Save(S);

}

}

//菜单

voidMenu()

{

system("cls");/*运行前清屏*/

printf("\n");

printf("       农业大学学生宿舍管理系统\n\n");

printf("\n");

printf("作者:

明伟、善虎、胡蒙亨\n");

printf("\n");

printf("\t\t=============学生宿舍管理系统===========\n");/*菜单选择*/

printf("\t\t\n");

printf("\t\t1.新生入住\n");

printf("\t\t2.修改入住学生信息\n");

printf("\t\t3.退房服务\n");

printf("\t\t4.以查询学生信息\n");

printf("\t\t5.以学号查询学生信息\n");

printf("\t\t6.以寝室号查询学生信息\n");

printf("\t\t7.查询全部学生信息\n");

printf("\t\t0.退出程序\n");

printf("\t\t=========================================\n");

}intmain()

{

inti;

StudentS;

S->Total=0;

do

{

Menu();

printf("请选择您要运行的选项按(0-9):

");

scanf("%d",&i);

getchar();//获取换行符

putchar('\n');

switch(i)

{

case1:

Add(S);

system("pause");

break;

case2:

Alter(S);

system("pause");

break;

case3:

Delete(S);

system("pause");

break;

case4:

Query_S_name(S);

system("pause");

break;

case5:

Query_S_number(S);

system("pause");

break;

case6:

Query_D_number(S);

system("pause");

break;

case7:

Display_All(S);

system("pause");

break;

case0:

Judge_Save(dirty,S);

exit(0);

break;

default:

printf("选择错误:

请在选项到之间选择!

\n\n");

break;

}

}while(i!

=10);

}

(注:

黑体部分为我负责的部分)

2.程序运行说明(包括结果说明)

程序运行说明

运行程序后,出现主菜单界面,按照主菜单上的编号进行操作即可,每输入一个编号后按回车即进入该子程序,然后按照提示输入或查询信息。

结果说明:

3.存在的问题

本程序在新生入住时将宿舍号限定在101,,12,201,202.当输入的宿舍号不符合要求时只是重复出现“请输入宿舍号”而没有明确的文字提示。

而且在修改入住学生信息时对宿舍号没有限制。

还需进一步完善。

四、总结与体会

当看到课程设计任务时,完全找不着头绪,由于对C语言的认识和了解只是停留在表面,所以不知道从何下手。

后来在不停的复习课本,在老师和同学的帮助下,逐渐找到了方向,也对设计中需要用到的方法和结构有所了解和认识,学会了如何使用,之后的一次课又经过仔细的思考了解了这个程序的基本框架,确定了程序的流程图,为程序的完成奠定了基础,接下来在写代码的过程中仍然遇到了很多问题,经过不断的查阅课本和网络,逐步解决了代码问题,在实现整个程序功能方面,有些结构和方法不会用,最后在老师的帮助下才得以顺利解决。

做出来的程序在执行过程中仍然有一些问题,比如在上述“存在的问题”中提到的。

设计过程确实让我认识到了自己技术上的不足,在以后的学习中应该加强这方面的学习和重视。

为以后的毕业设计和就业做准备。

 

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2