《学生宿舍管理系统C语言.doc》由会员分享,可在线阅读,更多相关《学生宿舍管理系统C语言.doc(42页珍藏版)》请在三一办公上搜索。
1、 C语言程序设计课程设计报告 题 目: 学生宿舍管理系统 专 业: 软件技术 班 级: 软件技术1班 姓 名: 李桦楠 齐忠春 周滨滨 徐烨 潘喜隆 郑竹强 学 号: 124109124 124109131 124109150 124109143 124109127 124109148 指导老师: 陈自力 设计时间: 2013 年 1 月 14 日 2013年 1 月 18 日 信息工程系目 录C程序设计课程设计报告11.课程设计计划32.系统需求分析与功能设计33. 总体设计44. 程序模块设计55. 技术难点与分析66.系统测试77. 心得体会88. 系统实现源代码91.课程设计计划主要成
2、员分配任务:1李桦楠,齐忠春 (C程序设计课程设计报告)2周滨滨 (系统测试)3潘喜隆 (注册密码导入,登陆)4郑竹强 (排序,账号信息导入)5徐 烨 (完成导入,注册模块)6. 李桦楠 (完成其它模块功能实现)2013-1-14 早上:完成整个系统架构,各菜单的函数实现。函数的实现。2013-1-15 早上 实现“Login(),huChe(),huChe(),ZhuChe(),UpMiMa(),Input(),Addto()”函数完成。2013-1-16 早上 实现“Modify(),Del(),Query(),Sta(),Px(),DaoRu(),Linen()ZhuZhecodeDao
3、ru(),MiMaDaoRu()”函数完成。2013-1-17 早上系统进行最后的测试。2. 系统需求分析与功能设计1.各函数的组成;void Login(); /*登入函数*/void DengRu(); /*登入*/void ZhuChe(); /*注册*/void UpMiMa(); /*修改密码*/void Input(); /*输入函数*/void Addto(); /*添加函数*/void Modify(); /*修改函数*/void Del(); /*删除函数*/void Query(); /*查找函数*/void Sta(); /*统计函数*/void Px(); /*排序函数
4、*/void Off(); /*退出函数*/void DaoRu(); /*导入数据函数*/void ZhuZhecodeDaoru(); /*注册密码导入函数*/void MiMaDaoRu(); /*账号信息导入函数*/void Linen(); /*打出横线函数*/void UpMiMa_menu(); /*修改密码菜单*/void Login_menu(); /*登入菜单*/void Main_menu(); /*主菜单*/void Mod_menu(); /*修改菜单*/void Query_menu(); /*查找菜单*/void Sta_menu(); /*统计菜单*/void
5、Login_menu(); /*登入界面函数*/2.结构体struct ZCcode /*注册密码结构体*/char Password16;struct code /*密码结构体*/char user10;char password6;struct Inform /*基本信息结构体*/int NUM;int ShuHao;char Name7;char Sex3;int Age;char Class10;char Spec10;3. 总体设计录入模块添加模块删除模块修改模块统计模块查询模块退出模块学生宿舍管理系统 Tu-3.1学生宿舍管理系统 输入指令(1,2,3,4)退出修改注册登入输入帐号
6、输入帐号输入注册密码输入密码原密码正确错误 输入指令(1,2,3,4,5,6,7)输出结束返回专业姓名宿舍号性别输入指令,选择查询项目统计成员宿舍号返回姓名学号没有该成员输入正确输入要修改的成员学号否是确定要删除该成员输入要删除的成员学号输入指令,选择查询项目 查询成员输入指令(1,2,3,4,5,6,7)修改成员信息删除成员信息是否是否继续录入写入文件中录入成员信息帐号密码错误登录成功修改成功新密码输入密码成功输入帐号修改学号修改宿舍号修改姓名修改性别修改班级修改专业修改年龄删除成功存入文件4. 程序模块设计1登入主函数实现方法;先定义整形变量 i,Flas=1(i 用来做switch开关,
7、Flas用做while的判断变量.做一个while循环判断条件为Flas=0。)在while循环里面,调用清屏函数,然后调用登入界面函数,在屏幕打出提示选择序号,向计算机输入变量i, 做一个sitch开关变量为i,case1里面调用DengRu函数, Flas=0,break。case2里面调用ZhuChe函数,break。Case3里面调用UpMiMa()函数,break。Case4 里面直接用break。2登入注册函数实现方法先定义整形变量i,Ese4,(i用来做for循环,Ese4用来做goto跳转)。定义字符数组Pass10,Password6(第一个用来做用户密码第二次的比对,第二个
8、用来做注册密码的比对)。定义文件指针f,f1(f用来打开用户密码文件,f1用来打开注册密码文件),用a+的方式打开用户密码文件,用r的方式打开注册密码文件。调用清屏函数。调用MiMaDaoRu()函数, ZhuZhecodeDaoru()函数,用getchar()清楚缓冲区。在屏幕上打出提醒输入请注册密码。用gets()输入注册密码字符数组名为Password。用if语句来做为判断注册密码有没有相同。If的条件用字符串比较函数对Password,注册密码结构体的Password1进行比对。当if为真时,里面调用清屏函数,调用MiMaDaoRu函数,屏幕打出提醒用户输入新账号,用gets向计算机
9、输入密码结构休变量MiMa11.user。屏幕打出提醒用户输入新密码,用gets向计算机输入入密码结构体变量MiMa1.password。屏幕打出提醒用户再次密码,用gets向计算机输入字符数组Pass。用for循环,条件i初始为0,i小于全局变量n(n为总用户数),i+。For里面用if,if判断条件用字符数组比较函数对MiMa1.user,MiMai.user进行比对。如果为真屏幕打出提醒“已经有该用户存在”调用getch函数,使用goto Ese4。在for循环外面,用if,if判断条件用字符数组比较函数对Pass,MiMa1.password进行比较,如果为真的化,则用fprintf函
10、数向文件写入MiMa1.usre,MiMa.Password的数据。调清屏函数。在屏幕上打出提醒“注册成功,用getch函数清楚缓冲区,之后关闭文件.。当IF为假时。调用清屏函数,屏幕打出提醒“再次密码不重复。当if为假时,调出清屏函数,屏幕打出提醒”注册密码错误”。最后Ese4,关闭文件f,f1。3登入函数实现方法定义整形变量i,Flas=1(i是用来做for循环变量,Flas=1是用来做判断密码正确性)。定义字符形 数组Pass10,User10(分别用来输入密码,和用户名)。调用清屏函数。调用MiMaDaoRu函数。调用getchar()用来清楚缓冲区。屏幕打出提醒“请输入账号”, 用g
11、ets() 输入User 。屏幕打出提醒“请输入密码”, 用gets() 输入Pass 。用for 条件为(i=0;in;i+).For 里面执行if判断语句,用字符串数组比较函数进行对User, MiMai.user进行比较和Pass,MiMai.password比较,作为if判断的条件。如果为真时Flas=0,break。在循环外面用if 判断Flas是否是1,如果有真,屏幕打印出提醒 “账号或密码错误,返回登陆界面!”,用时getch()控制,用getchar()清除缓冲区,调用Login()函数。如果为假,调用清屏函数,屏幕打出提醒“登陆成功!” ,调用getch()。4.密码修改函数
12、实现方法定义整形i,x,Flas(i是用来for循环控制,x用来做switch开关,Flas做为判断条件)。定义字符形ZhuCheCode6,User10,Code10(第一者用来做输入注册密码,后两者分别用来输入用户名,用户密码)定义文件指针f1,f。调用清屏函数,调用MiMaDaoRu()函数,调用ZhuZhecodeDaoru()函数,调用修改密码菜单函数UpMiMa_menu()。屏幕打出提醒” 请选择相应的序号:”用整形向计算机输入x。用switch开关条件为x。case 1: 里为 调用getchar()清除缓冲区。调用清屏函数。屏幕打出提醒” 请输入原注册密码”。用gets()输
13、入注册密码数组明ZhuCheCode。用if,if条件用字符串比较函数进行对ZhuCheCode,code1.Password1比较。为真时,里用调用清屏函数。屏幕打出提醒” 请输入新注册密码” 用gets()输入密码新密码code1.Password1。用f1,打开方式为w的方式打开文件” ZCcode.txt”,用if,判断指针,如果为空值,调用系统清屏函数。屏幕打出提醒“打开文件失败!”。调用getch()。,关闭文件f1为假时.时面,调用清屏函数,屏幕打出提醒” 注册密码错误”,调用getch()。最后调用break。Case 2.里面调用清屏函数。调用getchar()清除缓冲区。屏
14、幕打出提醒” 请输入用名”。用gets()输入用户名User。屏幕打出提醒” 请输入密码”。 用gets()输入用户密码Code。用for,for条件为(i=0;in;i+)(n为总用户数量)。For里面执行if,if判断条件用字符串比较函数对User,MiMai.userf进行比较 并对Code,MiMai.password比较。两者均为0为真。执行。屏幕打出提醒“请输入新的密码”。用gets()输入MiMai.password。Flas=0。在循环外面,用if,if判断条件为Flas是否=0。如果为真,调用清屏函数。用f,w方式打开文件” MiMa.txt”。判断指针f是否为空。真.调用清
15、屏函数。屏幕打出提醒” 打开文件失败!” 调用getch()。否则,用for,for条件为(i=0;in;i+)(n为总用户数量)。分别向文件写入MiMai.user,MiMai.password的值。在for循环外,屏幕打出提醒” 用户密码修改成功!”,调用getch()。关闭文件f。为假时。调用清屏函数。屏幕打出提醒” 没有该用户存在!”。调用getch()函数。Case 3;直接用brea5. 技术难点与分析(主要内容:本课题在设计过程中所遇到的技术难点及解决方法。)(1)刚开始时,输入的信息不能保存在文件中,所有数据都是一次性的。后来知道没在主程序中加保存模块,添加后就可以了。但调试中
16、由发现在添加中加入的数据还是不能保存,在细心观察下发现问题出现在没有添加feof(f)来判断指针值是否为空,接下来的调试中,问题解决了。(2).切换界面的时候出现不能切换到该有的界面,后来发现少添加了函数。后来迎刃而解了。(3)其他问题也就在粗心或者简单的错误,印象不是很深刻。6.系统测试测试环境描述:Microsoft Visual C+ 6.0 windows xp操作系统登录模块学生宿舍管理主模块录入模块添加模块删除模块修改模块查找模块统计模块1.按性别统计2.按宿舍号统计3.按专业统计7. 心得体会通过此次课程设计,使我更加扎实的掌握了有关C语言方面的知识,在设计过程中随人遇到了一些问
17、题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲手动手的制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,不断领悟,不断获取。最终的检查调试环节,本领就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成,在设计中遇到了许多问题,最后在组长的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就像到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只能这样,才能成功的做成想做的事,才能在今后的道路上披荆斩棘,而不是知难而退,那样永远不可能收
18、获成功,收获喜悦,也永远不可能得到社会及他人对你的认可。8. 系统实现源代码/*学生宿舍管理系统*/#include stdio.h#include string.h#include stdlib.hint m,n;struct ZCcode /*注册密码结构体*/char Password16;struct ZCcode code1;struct code /*密码结构体*/char user10;char password6;struct code MiMa100; /*定义结构体变量*/struct code MiMa1;struct Inform /*基本信息结构体*/int NUM;
19、int ShuHao;char Name7;char Sex3;int Age;char Class10;char Spec10;struct Inform CY900;struct Inform t;void Login(); /*登入函数*/void DengRu(); /*登入*/void ZhuChe(); /*注册*/void UpMiMa(); /*修改密码*/void Input(); /*输入函数*/void Addto(); /*添加函数*/void Modify(); /*修改函数*/void Del(); /*删除函数*/void Query(); /*查找函数*/voi
20、d Sta(); /*统计函数*/void Px(); /*排序函数*/void Off(); /*退出函数*/void DaoRu(); /*导入数据函数*/void ZhuZhecodeDaoru(); /*注册密码导入函数*/void MiMaDaoRu(); /*账号信息导入函数*/void Add(); /*控制循环函数*/void Linen(); /*打出横线函数*/void UpMiMa_menu(); /*修改密码菜单*/void Login_menu(); /*登入菜单*/void Main_menu(); /*主菜单*/void Mod_menu(); /*修改菜单*/v
21、oid Query_menu(); /*查找菜单*/void Sta_menu(); /*统计菜单*/void Login_menu();/*登入界面函数*/void ZhuZhecodeDaoru() /*注册密码导入函数*/FILE *f1;f1=fopen(ZCcode.txt,r);if(f1=NULL)system(cls);printf(温馨提示:n);printf(头次运行本系统,请先自建立一个文件名为ZCcode的文本文件。n);printf(头次使用注册密码为空,请进行修改,确保安全性!);getch();exit(1);fscanf(f1,%s,code1.Password
22、1);fclose(f1);void MiMaDaoRu() /*账号信息导入函数*/int i=0,Flas=1;FILE *f;f=fopen(MiMa.txt,r);if(f=NULL)printf(打开文件失败!);while (!feof(f) /*feof(f)当文件有未处理数据时*/fscanf(f,%s %srn,MiMai.user,MiMai.password);i+;n=i;fclose(f);void DaoRu() /*导入*/int i=0,Flas=1;FILE *f;f=fopen(Inform.txt,r);if(f=NULL)printf(打开文件失败!);
23、while (!feof(f) /*feof(f)当文件有未处理数据时*/fscanf(f,%d %d %s %s %d %s %s rn,&CYi.NUM ,&CYi.ShuHao,CYi.Name,CYi.Sex,&CYi.Age ,CYi.Class,CYi.Spec);i+;m=i;fclose(f);void Px() /*排序*/int i,j;FILE *f;DaoRu();for(i=0;im;i+)for(j=0;j(m-1)-i;j+);if(CYj.NUMCYj+1.NUM)t=CYj+1;CYj+1=CYj;CYj=t;f=fopen(Inform.txt,w);if(
24、f=NULL)printf(打开文件失败!);for (i=0;im;i+)fprintf(f,%-9d %-4d %-7s %-3s %-2d %-10s %-10srn,CYi.NUM,CYi.ShuHao,CYi.Name,CYi.Sex,CYi.Age,CYi.Class,CYi.Spec);fclose(f);void ZhuChe() /*注册*/ int i=0,Ese4;char Pass10,Password6; /*Pass6用在注册输入密码变量*/FILE *f;FILE *f1; ZhuZhecodeDaoru(); f=fopen(MiMa.txt,a+); MiMa
25、DaoRu();f1=fopen(ZCcode.txt,r);system(cls);getchar();printf(请输入注册密码:);gets(Password);if(strcmp(Password,code1.Password1)=0)system(cls);MiMaDaoRu();printf(请输入新账号:);gets(MiMa1.user);printf(请输入新密码:);gets(MiMa1.password);printf(请再次输入新密码:);gets(Pass);for(i=0;in;i+)if(strcmp(MiMa1.user,MiMai.user)=0)print
26、f(已经有该用户存在!);getch();goto Ese4;if(strcmp(Pass,MiMa1.password)=0)fprintf(f,%s %srn,MiMa1.user,MiMa1.password);system(cls);printf(注册成功!);getch();fclose(f);elsesystem(cls);printf(再次密码重复!);elsesystem(cls);printf(注册密码错误!);getch();Ese4: ;fclose(f1);fclose(f);void DengRu() /*登入*/int i,Flas=1;char Pass10,Us
27、er10;system(cls);MiMaDaoRu();getchar();printf(请输入账号:);gets(User);printf(请输入密码:);gets(Pass);for(i=0;in;i+)if(strcmp(User,MiMai.user)=0 & strcmp(Pass,MiMai.password)=0)Flas=0;break;if(Flas=1)printf(账号或密码错误,返回登陆界面!);getch();getchar();Login();elsesystem(cls);printf(登陆成功!);getch();void UpMiMa() /*密码修改函数*
28、/int i,x,Flas;char ZhuCheCode6,User10,Code10;FILE *f1;FILE *f;system(cls);ZhuZhecodeDaoru();MiMaDaoRu();UpMiMa_menu();printf(请选择相应的序号:);scanf(%d,&x);switch (x)case 1:getchar();system(cls);printf(请输入原注册密码:);gets(ZhuCheCode);if(strcmp(ZhuCheCode,code1.Password1)=0)system(cls);printf(请输入新注册密码:);gets(co
29、de1.Password1);f1=fopen(ZCcode.txt,w);if(f1=NULL)system(cls);printf(打开文件失败!);getch();elsesystem(cls);fprintf(f1,%s,code1.Password1);printf(密码修改成功!);getch();fclose(f1);elsesystem(cls);printf(注册密码错误!);getch();break;case 2:system(cls);getchar();printf(请输入用名:);gets(User);printf(请输入密码:);gets(Code);for(i=
30、0;in;i+)if(strcmp(User,MiMai.user)=0 & strcmp(Code,MiMai.password)=0)printf(请输入新的密码:);gets(MiMai.password);Flas=0;if(Flas=0)system(cls);f=fopen(MiMa.txt,w);if(f=NULL)system(cls);printf(打开文件失败!);getch();elsefor(i=0;in;i+)fprintf(f,%s %srn,MiMai.user,MiMai.password);printf(用户密码修改成功!);getch();fclose(f)
31、;elsesystem(cls);printf(没有该用户存在!);getch();break;case 3:break;void Login() /*登入函数*/int i,Flas=1;while(Flas=1)system(cls);Login_menu(); /*调用登入界面函数*/printf(请选择操作项号:);scanf(%d,&i);switch (i)case 1:DengRu();Flas=0;break;case 2:ZhuChe(); break;case 3:UpMiMa();break;case 4:exit(0);break;void Input() /*输入函数
32、*/int i=0,Flas=1,Ese;char t;FILE *f;f=fopen(Inform.txt,w);if(f=NULL)printf(打开文件失败!);DaoRu();while (Flas)system(cls);printf(请输入学号:);scanf(%d,&CYi.NUM);printf(请输入宿舍号:);scanf(%d,&CYi.ShuHao);getchar();printf(请输入姓名:);gets(CYi.Name);printf(请输入性别:);gets(CYi.Sex);printf(请输入年龄:);scanf(%d,&CYi.Age);getchar()
33、;printf(请输入班级:);gets(CYi.Class);printf(请输入专业:);gets(CYi.Spec);fprintf(f,%-9d %-4d %-7s %-3s %-2d %-10s %-10srn,CYi.NUM,CYi.ShuHao,CYi.Name,CYi.Sex,CYi.Age,CYi.Class,CYi.Spec);system(cls);printf(是否继续录入(Y/N)?);scanf(%s,&t);if(t=n | t=N)fclose(f);Flas=0;i+;void Addto() /*添加成员*/int Flas=1;char t;FILE *f
34、;while(Flas)system(cls);f=fopen(Inform.txt,a+);if(f=NULL)printf(打开文件失败!);printf(请输新入学号:);scanf(%d,&CYm.NUM);printf(请输入新宿舍号:);scanf(%d,&CYm.ShuHao);getchar();printf(请输入新姓名:);gets(CYm.Name);printf(请输入新性别:);gets(CYm.Sex);printf(请输入新年龄:);scanf(%d,&CYm.Age);getchar();printf(请输入新班级:);gets(CYm.Class);print
35、f(请输入新专业:);gets(CYm.Spec);fprintf(f,%-9d %-4d %-7s %-3s %-2d %-10s %-10srn,CYm.NUM,CYm.ShuHao,CYm.Name,CYm.Sex,CYm.Age,CYm.Class,CYm.Spec);system(cls);printf(是否继续录入(Y/N)?);scanf(%s,&t);if(t=n | t=N)fclose(f);Flas=0;fclose(f);void Del() /*删除*/int i,Num,x,Flas=1;char y;FILE *f;system(cls);Px();printf(
36、请输入想删除的成员学号:);scanf(%d,&Num);printf(学生号 宿舍号 姓名 性别 年龄 班级 专业n);Linen();for(i=0;im;i+)if(Num=CYi.NUM)printf(%-9d %-4d %-7s %-3s %-2d %-10s %-10srn,CYi.NUM,CYi.ShuHao,CYi.Name,CYi.Sex,CYi.Age,CYi.Class,CYi.Spec);Flas=0;break;if(Flas=0)printf(n);printf(确定要删除该成员?(Y/N);scanf(%s,&y);if(y=y | y=Y)for(x=i;xm;x+)CYx=CYx+1;system(cls);printf(删除成功!);getch();f=fopen(Inform.txt,w);if(f=NULL)printf(打开文件失败!);for (i=0;im-1;i+)fprintf(f,%-9d %-4d %-7s %-3s %-2d %-10s %-10srn,CYi.NUM,CYi.ShuHao,CYi.Name,CYi.Sex,CYi.Age,CYi.Class,CYi.Spec);fclose(f);elsesystem(cls);printf(没有该用户的存在!);getch();void Mod