C语言课程设计-宿舍人员管理系统(15页).docx
-C语言课程设计-宿舍人员管理系统-第 15 页C语言课程设计宿舍人员管理系统目录1. 皇家工学院宿舍人员管理系统31.1 用户登录31.1.1菜单31.2 关于我们31.3 退出32 菜单界面42.1 添加宿舍42.1.1输入5个寝室号42.2 录入宿舍人员42.2.1有效寝室号42.2.2输入寝室号42.2.3输入姓名42.2.4是否继续添加42.2.5住满进入下一个寝室42.3 查看录入情况42.4 修改登录密码42.4.1输入原密码42.4.2输入新密码42.5 注销4C语言课程设计报告内容51 问题要求及任务描51.1题目要求51.2主要任务52 解决问题的主要思路和方法52.1关键问题52.2拟采用解决问题的方法52.3主要算法和处理流程图53. 函数实现63.1程序实现时应考虑的问题63.2主要源代码及说明74 测试或调试95 小结105.1本问题解决方法及程序实现小结105.2尚未解决的问题及下一步工作思路106 参考文献10附 录111. 皇家工学院宿舍人员管理系统 1.1 用户登录 1.1.1菜单 输入选项1,进入登陆界面,根据提示输入用户名及用户密码,登陆成功后方可进入菜单界面,否则在每位客户仅限3次机会的情况下,根据提示会显示剩余可登陆次数。 1.2 关于我们输入选项2,显示如下printf("+n");printf("t作者:三毛n");printf("t版权:版权所有,如有雷同,天打雷劈,不得好死n");printf("t QQ:3838438n");printf("t版本:V1.00n");printf("+n"); 1.3 退出输入选项3弹出确认退出吗?(y/n)输入y,退出界面,正在退出中输入n,则留在界面。 2 菜单界面 2.1 添加宿舍 2.1.1输入5个寝室号 2.2 录入宿舍人员 2.2.1有效寝室号 2.2.2输入寝室号 2.2.3输入姓名 2.2.4是否继续添加 2.2.5住满进入下一个寝室 2.3 查看录入情况 2.4 修改登录密码 2.4.1输入原密码 2.4.2输入新密码 2.5 注销C语言课程设计报告内容 1 问题要求及任务描 1.1题目要求 完成宿舍人员管理系统基本功能的实现。 1.2主要任务 宿舍人员管理系统的登陆,版权,及退出。登陆又分为添加宿舍,录入宿舍人员,查看录入情况,还有修改登录密码。其中查看录入情况里又统计了寝室号,姓名,人数。我负责的主要部分是登陆之后的选项、修改密码、注销的代码的编写。 2 解决问题的主要思路和方法 利用结构体中的成员,for循环,设置变量随for循环自加,来统计数目。 2.1关键问题 输出显示的信息时因为太多很容易出错,各统计数目的准确性。 2.2拟采用解决问题的方法 引用结构体中的成员,同时设置成员变量随for循环进行自加以此来统计各种数目。在输出所需变量时仔细对应变量及想对应的数据类型。 2.3主要算法和处理流程图*寝室人员管理系统*登录退出版本信息录入寝室号退出登录修改密码寝室录入情况录入寝室人员信息图2.3.13. 函数实现 3.1程序实现时应考虑的问题 在输入输出信息时,要调用清屏函数fflush(“cls”),否则可能直接跳过无法输入或输出。在考虑寝室人数限制时在结构体中加一个length+选项。 3.2主要源代码及说明 代码(加注释)switch(i)case 1:inNumber();break;case 2: youxiao();inName();break;case 3: chakan();presscontinue();break;case 4:changepwd();flag=0;break;case 5: flag=cancle();tuichu();break;default:printf("您的输入有误,请确认后重新输入.n");presscontinue();while(flag);/修改密码的函数void changepwd() extern psw20; char p20; printf("请输入原密码:"); scanf("%s",p); fflush(stdin);if( strcmp( p, psw) =0 ) /输入密码正确后才进行改密操作 printf("请输入新密码:");scanf("%s",psw);printf("修改密码成功n");elseprintf("您输入的密码不正确,没有权限修改密码n");presscontinue();/注销操作int cancle()char choice;printf("是否确认退出(Y/N)n");scanf("%c",&choice);fflush(stdin);if(choice='y') return 0;else return 1;/注销操作中的减缓退出操作void tuichu()int i;printf("正在退出");for(i=0;i<10;i+) printf(".");Sleep(500);/登录延时函数void denglu()int i;printf("正在登录");for(i=0;i<10;i+) printf(".");Sleep(400);4 测试或调试图4.1图4.25 小结 5.1本问题解决方法及程序实现小结通过本次的课程设计,让我对C语言有了更深入的了解。虽然只是短短的几节课,但是它也让我学到了很多东西,从书本上的理论知识到上机实践。在编写程序的过程中,开始我很模糊,但是经过队友及老师的帮助,渐渐地,脑海中有了明确的思维,尤其是结构体的运用,从开始的一无所知到最后的收获。此次课程设计,让我认识到该如何处理问题,首先根据要求把整个问题的框架编写出来之后,再对程序的一些小地方做出一些修改,一步步完善,在调试的同时检查错误。在编写程序最重要的是细心,注意符号的切换,整个程序都是用英文字符编写,在程序出现bug时,可能检查很多次都不能修正,这时我们应该适当放松一下大脑,那样就会事半功倍。总而言之,解决一个问题时 ,要先在脑海里面有个大概的流程,在根据事实编写出可以解决该问题的程序就ok了。 5.2尚未解决的问题及下一步工作思路1.人员的修改及信息有待完善。 2. 系统登录的安全性有待提高,下次加入验证码功能。3. 录入寝室号时,寝室号重复时无错误提醒,在下次工作中将以上功能争取全部实现。6 参考文献 1谭浩强.c语言程序设计.第四版.北京:清华大学出版社,2010.85111附 录include<stdio.h>include<stdlib.h>include<windows.h>void showtype(); /版权说明void presscontinue(); /按任意键继续void showmenu(); /登录后的界面int login(); /登录int show(); /确定是否退出char name20="sanmao"/自定义的用户名char psw20="hehe" /自定义密码void main()int a,flag=1;dosystem("cls");printf("n");printf("t皇家工学院寝室管理系统n");printf("t1.用户登录n");printf("t2.关于我们n");printf("t3.退出n");printf("n");printf("请输入选项(1,2,3):n"); sanf("%d",&a);fflush(stdin);switch(a)case 1: login(); showmenu(); break;case 2:showtype(); break;case 3: show() ;flag=0;presscontinue(); break;default:printf("输入错误,请重新输入n"); presscontinue(); break;while(flag);/版权说明函数void showtype()system("cls");printf("+n");printf("t作者:三毛n");printf("t版权:版权所有,如有雷同,天打雷劈,不得好死n"); printf("t QQ:3838438n");printf("t版本:V1.00n");printf("+n");presscontinue();/登录操作函数int login()char n20,p20;int i;for(i=0;i<3;i+)printf("请输入帐号:");scanf("%s",n);fflush(stdin); /接受帐号并清除缓冲区printf("请输入密码:");scanf("%s",p);if(strcmp(name,n)=0&&strcmp(psw,p)=0) denglu(); return 1; /判断密码是否正确else printf("密码有误,请重新输入,您还有%d次机会",2-i);return 0;/按任意键继续函数void presscontinue()printf("按任意键继续.n");getch();/确认是否退出函数int show()char choice;int i;printf("确认退出吗?(y/n):n");scanf( "%c", &choice );if( choice='y') /确认是否退出操作printf("正在退出");for( i=0;i<10;i+)printf(".");Sleep( i*40 ); /休眠操作printf("n");return 0;else return 0;#include<stdio.h>#include<windows.h>#include<stdlib.h>void denglu(); /登录void changepwd(); /改密int cancle(); /取消void tuichu(); /退出/登录后的界面void showmenu()int i,flag=1;dosystem("cls");printf("*n");printf("tt皇家工学院宿舍管理系统欢迎你n");printf("ttt1.添加宿舍n");printf("ttt2.录入宿舍人员n"); printf("ttt3.查看录入情况n");printf("ttt4.修改登录密码n");printf("ttt5.注销n");printf("*n");printf("请输入您的选项<1,2,3,4>:n");scanf("%d",&i);fflush(stdin);switch(i)case 1:inNumber();break;case 2: youxiao();inName();break;case 3: chakan();presscontinue();break;case 4:changepwd();flag=0;break;case 5: flag=cancle();tuichu();break;default:printf("您的输入有误,请确认后重新输入.n");presscontinue();while(flag);/修改密码的函数void changepwd() extern psw20; char p20; printf("请输入原密码:"); scanf("%s",p); fflush(stdin);if( strcmp( p, psw) =0 ) /输入密码正确后才进行改密操作 printf("请输入新密码:");scanf("%s",psw);printf("修改密码成功n");elseprintf("您输入的密码不正确,没有权限修改密码n");presscontinue();/注销操作int cancle()char choice;printf("是否确认退出(Y/N)n");scanf("%c",&choice);fflush(stdin);if(choice='y') return 0;else return 1;/注销操作中的减缓退出操作void tuichu()int i;printf("正在退出");for(i=0;i<10;i+) printf(".");Sleep(500);/登录延时函数void denglu()int i;printf("正在登录");for(i=0;i<10;i+) printf(".");Sleep(400);#include<stdio.h>#include<stdlib.h>#define N 5void inNumber(); /录入空寝室号操作void inName(); /录入成员int tianjia(int i);/判断是否注满void youxiao();void chakan(); /查看寝室信息/定义寝室属性的结构体struct dormint id; /寝室号char name420; /寝室成员int length; /寝室人数struct dorm num20;/录入空寝室号操作void inNumber()int i;printf("请输入5个寝室号n");for(i=0;i<5;i+)scanf("%d",&numi.id);printf("录入成功n");presscontinue();/输入寝室号,有责输入姓名入住/没有则重新输入;输入三次后退出void inName()int a,i=0,j=0;doprintf("请输入寝室号:");scanf("%d",&a);for(i=0;i<5;i+)if(numi.id=a) if(numi.length>3) printf("寝室已经注满,请选择其它寝室");presscontinue(); return ;printf("可以入住n");presscontinue(); tianjia(i);return ; printf("输入错误,你还有%d次机会输入n",2-j);j+;while(j<3);/寝室最多4人,注满则该寝室不能再入住,有错误信息提示;int tianjia(int i)int j=0;char b;dosystem("cls");printf("请输入姓名(还有%d个空床位):",3-j);scanf("%s",numi.namej);fflush(stdin); j+;numi.length+;printf("是否继续添加(y/n)n");scanf("%c",&b);fflush(stdin);if(b='n') return 0;if(numi.length=4) printf("该寝室已分配满n");presscontinue();while(j<4&&b='y');/提醒用户录入的寝室号,以免输入无效的数字void youxiao()int i;printf("有效的寝室号有:n"); for(i=0;i<N;i+) printf("%d ",numi.id); printf("n");/查看寝室入住情况的函数void chakan()int i,j;printf("*n");printf("tt寝室入住情况表n");printf("t寝室号t人数t姓名n");for(i=0;i<N;i+)printf("t%d t%d t",numi.id,numi.length); for(j=0;j<numi.length;j+)printf("%s ",numi.namej); printf("n");printf("*n");