学生宿舍管理系统.docx
- 文档编号:29644542
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:13
- 大小:16.91KB
学生宿舍管理系统.docx
《学生宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《学生宿舍管理系统.docx(13页珍藏版)》请在冰豆网上搜索。
学生宿舍管理系统
学生宿舍管理系统
1.课程设计的目的
进一步掌握和利用C语言进行程设计的能力,理解和运用结构化程设计的思想和方法,熟练掌握条件语句、循环、数组、函数操作,初步掌握开发一个小型实用系统的基本方法,学会高度一个较长程序的基本方法和利用流程图或N-S图表示算法,将本课程所学的知识合理地运用于实践当中。
适当了解一些书上没有的函数及使用方法。
2设计分工与合作:
在本设计中,其中§1.输入记录、§2.显示记录、§6.按姓名查找,删除一条记录、§7查找并显示一个记录程序等程序代码由(学号:
222009322072035)完成,其中§3.按房间号排序并显示、§4.按学号排序并显示、§5.插入一条记录按学号排序并显示等程序代码由。
3.设计方案论证
2.1设计思路
利用数组对宿舍的记录进行循环输入输出,利用冒泡法记录进行排序,利用循环查找数组中某个数据,对其进行显示,删除,读入和写入文档等操作。
2.2N-S图
4.具体程序代码:
#include
#include
#include
#include
typedefstruct/*定义结构体数组*/
{
charroomnum[4];/*房间号*/
charbednum[2];/*床位号*/
charnum[10];/*学号*/
charname[20];/*姓名*/
}Student;
Studentroom1[1000];/*结构体数组变量*/
intmenu_select()/*菜单函数*/
{
charc;
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§5.插入一条记录按学号排序并显示§\n");
printf("\t\t§6.按姓名查找,删除一条记录§\n");
printf("\t\t§7查找并显示一个记录§\n");
printf("\t\t§8.从文件中读入数据§\n");
printf("\t\t§9.循环写入数据§\n");
printf("\t\t§0.结束程序§\n");
printf("\t\t★★★★★★★★★★★★★★★★★★★★\n");
printf("\t\t请选择您要运行的选项按(0-9):
");
c=getchar();/*读入选择*/
}while(c<'0'||c>'9');
return(c-'0');/*返回选择*/
}
intInput(Studentroom[],intn)/*输入若干条记录*/
{inti=0;
charsign,x[10];/*x[10]为清除多余的数据所用*/
while(sign!
='n'&&sign!
='N')/*判断*/
{
printf("\t\t房间号:
");/*交互输入*/
scanf("\t\t%s"&,room[n+i].roomnum);
printf("\t\t床位号:
");
scanf("\t\t%s",&room[n+i].bednum);
printf("\t\t学号:
");
scanf("\t\t%s",&room[n+i].num);
printf("\t\t姓名:
");
scanf("\t\t%s",&room[n+i].name);
gets(x);/*清除多余的输入*/
printf("\t\t是否继续输入?
(Y/N)");
scanf("\t\t%c",&sign);/*输入判断*/
i++;
}
return(n+i);
}
voidDisplay(Studentroom[],intn)/*显示所有记录*/
{
inti;
printf("\t\t--------------------------------------------------\n");/*格式头*/
printf("\t\t房间号床位号学号姓名\n");
printf("\t\t--------------------------------------------------\n");
for(i=1;i { printf("\t\t%-10s%-10s%-10s%-20s\n",room[i-1].roomnum,room[i-1].bednum,room[i-1].num,room[i-1].name); if(i>1&&i%10==0)/*每十个暂停*/ {printf("\t\t--------------------------------------------------\n");/*格式*/ printf("\t\t"); system("pause"); printf("\t\t--------------------------------------------------\n"); } } printf("\t\t"); system("pause"); } voidSort_by_num(Studentroom[],intn)/*按学号排序*/ { inti,j,*p,*q,s; chart[10]; for(i=0;i for(j=0;j if(strcmp(room[j].num,room[j+1].num)>0) { strcpy(t,room[j+1].bednum); strcpy(room[j+1].bednum,room[j].bednum); strcpy(room[j].bednum,t); strcpy(t,room[j+1].num); strcpy(room[j+1].num,room[j].num); strcpy(room[j].num,t); strcpy(t,room[j+1].name); strcpy(room[j+1].name,room[j].name); strcpy(room[j].name,t); } } voidSort_by_roomnum(Studentroom[],intn)/*按房间号排序*/ { inti,j,*p,*q,s; chart[10]; for(i=0;i for(j=0;j if(strcmp(room[j].roomnum,room[j+1].roomnum)>0) {strcpy(t,room[j+1].roomnum); strcpy(room[j+1].roomnum,room[j].roomnum); strcpy(room[j].roomnum,t); strcpy(t,room[j+1].bednum); strcpy(room[j+1].bednum,room[j].bednum); strcpy(room[j].bednum,t); strcpy(t,room[j+1].num); strcpy(room[j+1].num,room[j].num); strcpy(room[j].num,t); strcpy(t,room[j+1].name); strcpy(room[j+1].name,room[j].name); strcpy(room[j].name,t); } } intInsert_a_record(Studentroom[],intn)/*插入一条记录*/ {charx[100];/*清除多余输入所用*/ printf("\t\t学生房间号: ");/*交互式输入*/ scanf("\t\t%s",&room[n].roomnum); printf("\t\t学生床位号: "); scanf("\t\t%s",&room[n].bednum); printf("\t\t学生学号: "); scanf("\t\t%s",&room[n].num); printf("\t\t学生姓名: "); scanf("\t\t%s",&room[n].name); gets(x); n++; Sort_by_num(room,n);/*调用排序函数*/ printf("\t\t插入记录成功! \n");/*返回成功信息*/ return(n); } intDelete_a_record(Studentroom[],intn)/*按姓名查找,删除一条记录*/ { chars[20]; inti=0,j; printf("\t\t输入他(她)的姓名: ");/*交互式问寻*/ scanf("%s",s); while(strcmp(room[i].name,s)! =0&&i if(i==n) { printf("\t\t对不起没找到该学生! \n");/*返回失败信息*/ return(n); } for(j=i;j { strcpy(room[j].roomnum,room[j+1].roomnum); strcpy(room[j].bednum,room[j+1].bednum); strcpy(room[j].num,room[j+1].num); strcpy(room[j].name,room[j+1].name); } printf("\t\t删除记录成功! \n");/*返回成功信息*/ return(n-1); } voidQuery_a_record(Studentroom[],intn)/*查找并显示一个记录*/ { chars[20]; inti=0; printf("\t\t输入他(她)的姓名: ");/*交互式输入*/ scanf("\t\t%s",&s); while(strcmp(room[i].name,s)! =0&&i if(i==n) { printf("\t\t对不起没找到该学生! \n");/*输入失败信息*/ return; } printf("\t\t他(她)的房间号: %s\n",room[i].roomnum);/*输出该学生信息*/ printf("\t\t他(她)的床位号: %s\n",room[i].bednum); printf("\t\t他(她)的学号: %s\n",room[i].num); } intAddfromText(Studentroom[],intn)/*从文件中读入数据*/ { inti=0,num; FILE*fp;/*定义文件指针*/ charfilename[20];/*定义文件名*/ printf("\t\t输入文件名: "); scanf("\t\t%s",&filename);/*输入文件名*/ if((fp=fopen(filename,"rb"))==NULL)/*打开文件*/ { printf("\t\t无法打开该文件\n");/*打开失败信息*/ printf("\t\t"); system("pause"); return(n); } fscanf(fp,"%d",&num);/*读入总记录量*/ while(i { fscanf(fp,"%s%s%s%s",room[n+i].roomnum,room[n+i].bednum,room[n+i].num,room[n+i].name); i++; } n+=num; fclose(fp);/*关闭文件*/ printf("\t\t读入成功! \n"); printf("\t\t"); system("pause"); return(n); } voidWritetoText(Studentroom[],intn)/*将所有记录写入文件*/ { inti=0; FILE*fp;/*定义文件指针*/ charfilename[100];/*定义文件名*/ printf("\t\t循环写入数据\n");/*输入文件名*/ 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",n);/*循环写入数据*/ while(i { fprintf(fp,"%-10s%-10s%-10s%-10s\n",room[i].roomnum,room[i].bednum,room[i].num,room[i].name); i++; } fclose(fp);/*关闭文件*/ printf("写入成功! \n");/*返回成功信息*/ } voidmain()/*主函数*/ { intn=0; for(;;) { switch(menu_select())/*选择判断*/ { case1: printf("\t\t输入记录\n");/*输入若干条记录*/ n=Input(room1,n); break; case2: printf("\t\t显示记录\n");/*显示所有记录*/ Display(room1,n); break; case3: printf("\t\t按房间号排序并显示\n"); Sort_by_roomnum(room1,n);/*按房间号排序*/ printf("\t\t排序成功! \n"); Display(room1,n); printf("\t\t"); break; case4: printf("\t\t按学号排序并显示\n"); Sort_by_num(room1,n);/*按学号排序*/ printf("\t\t\t排序成功! \n"); Display(room1,n); printf("\t\t"); break; case5: printf("\t\t插入一条记录按学号排序并显示\n"); n=Insert_a_record(room1,n);/*插入一条记录*/ Display(room1,n); printf("\t\t"); break; case6: printf("\t\t按姓名查找,删除一条记录\n"); n=Delete_a_record(room1,n);/*按姓名查找,删除一条记录*/ printf("\t\t"); system("pause"); break; case7: printf("\t\t查找并显示一个记录\n"); Query_a_record(room1,n);/*查找并显示一个记录*/ printf("\t\t"); system("pause"); break; case8: printf("\t\t从文件中读入数据\n"); AddfromText(room1,n);/*从文件中读入数据*/ printf("\t\t"); system("pause"); break; case9: printf("\t\t循环写入数据\n"); WritetoText(room1,n);/*循环写入数据*/ printf("\t\t"); system("pause"); break; case0: printf("\t\t谢谢使用,祝您好运,再见! \n");/*结束程序*/ printf("\t\t"); system("pause"); exit(0); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生宿舍 管理 系统