您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > c语言课程设计报告(宿舍管理系统)
西安郵電學院C语言课程设计报告书系部名称电子工程学院学生姓名焦瑞芳专业名称电子信息工程专业班级1103班学号05111093指导教师xxxx时间2010年06月07日至2010年06月18日实验题目:学生宿舍管理系统一、实验目的通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。通过这次实习练习,可以更进一步的熟悉所学的知识,还可以加强和巩固知识。长达两周的上机练习,为我们提供了很好的编程环境。更好的了解编程的意义,为将来参加实践活动以及以后的毕业设计打下坚实的基础。二、实验内容我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、专业、班级等等。在编写过程中主要运用C语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。三、需求分析该程序是由C语言编写的一个宿舍管理查询软件,本程序在MicrosoftVisualC++6.0下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。四、概要设计1、方案设计2、数据结构说明程序中数据主要是学生信息,具体属于类型如下:tructst_messagecharname[20];/*学生姓名*/主函数密码模块录入模块添加模块修改模块删除模块查询模块统计模块退出系统学号姓名宿舍性别年龄专业返回班级按姓名按学号按宿舍返回按性别按学号按宿舍返回按班级按专业chardorm[7];/*宿舍号*/charnum[10];/*学号*/charsex[5];/*性别*/charage[4];/*年龄*/charmajor[20];/*专业*/charclasss[8];/*班级*/3、模块功能说明第一密码模块:调用cipher(),进行管理者的注册与登录操作。第二录入模块:调用input_message(),对住宿学生信息进行录入。第三添加模块:调用append_message(),对新来学生信息进行添加录入。第四修改模块:调用revise_message(),对需修改学生的信息进行修改。第五删除模块:调用delete_message(),对某一学生信息进行删除操作。第六查询模块:调用find_message(),分别以姓名、学号、宿舍号对学生信息进行查询。第七统计模块:调用census_message(),分别以学号、宿舍号、性别、班级、专业方式对学生信息进行统计,并按学号由小到大输出。五、详细设计及运行结果1.函数之间调用关系图2.部分模块流程图及运行结果图示登陆界面主函数流程图主函数main()删除函数delete_message()录入函数input_message()统计函数census_message()添加函数append_message()排序函数sortmessage()密码函数cipher()修改函数revise_message()查询函数find_message()主页界面输入密码功能选择选1选4选0选2选3选5录入模块添加模块修改模块删除模块查询模块结束退出系统是是是是是是否否否否否开始选6统计模块是否连续三次输入错误,退出系统录入模块录入界面修改模块输入姓名输入班级输入宿舍输入学号输入性别输入年龄输入专业是否继续录入结束NY修改界面输入要修改学生的姓名功能选择选1选7选4选8选2选3选5选6修改学号修改姓名修改班级修改宿舍修改性别修改年龄修改专业是否继续结束返回主页是是是是是是是是否否否否否否否统计模块输入统计方式功能选择选1选4选6选2选3选5按学号按宿舍按性别按班级按专业结束返回主页是是是是是是否否否否否统计界面六、调试情况,设计技巧及体会1、测试数据对功能1(密码系统测试)的测试:先注册账号密码分别为:1,1,然后退出程序进行登录测试。输入一组错误账号密码系统显示“输入的账号或密码有误,请重新输入!”。在输入正确密码,系统显示“登陆成功”并进入主界面。对功能2(录入学生信息)的测试:按照先后顺序分别输入学生信息:学号姓名班级宿舍号性别年龄专业03091002张三090113#401男20通信工程03091001李四090213#401男20计算机对功能3(添加学生信息)的测试:按照先后顺序分别输入学生信息:学号姓名班级宿舍号性别年龄专业03091004王红090114#401女20通信工程03091003李娜090214#401女20计算机对功能4(修改学生信息)的测试:输入要修改学生的姓名:王五,系统显示“该学生信息不存在”。输入修改学生姓名:张三,系统显示出该学生信息。选择修改学号为:03091005,系统显示出修改后的学生信息。对功能5(删除学生信息)的测试:输入要删除学生的学号:03091001,系统显示“该学生信息不存在”。输入要删除的学生的学号:03091005,系统显示出该学生信息。选择删除该学生信息。对功能6(查询学生信息)的测试:查询宿舍号为14#401的信息,系统显示为:学号姓名班级宿舍号性别年龄专业03091003李娜090214#401女20计算机03091004王红090114#401女20通信工程对功能7(统计学生信息)的测试:选择按学号统计,系统显示为:学号姓名班级宿舍号性别年龄专业03091002张三090113#401男20通信工程03091003李娜090214#401女20计算机03091004王红090114#401女20通信工程学生总人数3人,其中男生1人,女生2人。对功能8(退出系统)的测试:选择退出系统,程序关闭。2、对调试中主要问题进行总结调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的结构体数组长度过低所造成的。像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。这是由于“rt+”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。后来我先用“rt”打开文件并读取文件中的数据,然后再用“wt”打开原文件将删除后的数据重新写入文件,最终检测运行成功。3、对自己设计进行评价,指出合理和不足之处,提出改进的方案本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能,包括录入信息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。可以方便的进行住宿学生信息的管理。第二,它的各个功能模块在实现时非常方便,例如:录入和添加学生信息可以自己控制录入和添加的人数;统计学生信息可以分学号、班级、专业等进行统计等等。第三,它也具有安全性,在进入学生信息管理系统之前要求输入账号和密码,所以非常安全,不会造成信息的外泄。当然程序也有他的不足之处,比如密码不能回显“*”,这样很容易造成密码的丢失。可以在密码模块中改为回显“*”形式,并且可以对密码进行算法加密,这样更能确保信息的安全。4、在设计过程中的感受“万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。短短的两周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的基础。参考文献:《C语言程序设计》(第二版)王曙燕科学出版社七、源程序清单#includestdio.h#includestring.h#includestdlib.h#includeio.h#defineN90structcipher{characcount[6];charcode[6];}m[10];cipher()/*密码模块*/{system(color9f);inti,k=0,flag,flag1,flag2,fno,fsize,fnum,choice;characcount[6];charcode[6],code1[6];FILE*fp1;/*定义文件指针*/printf(\n\n\n\n\n\n\n***********学生宿舍管理系统**********\n);/*登陆界面*/printf(*1.登陆*\n);printf(*2.注册*\n);printf(*************************************\n);scanf(%d,&choice);system(cls);switch(choice){case1:fp1=fopen(code.txt,rt);/*打开文件*/if(fp1==NULL){printf(\n\n*****你还没有注册,按任意键退出!);/*帐号错误*/getchar();exit(1);}fno=fileno(fp1);/*登陆帐号*/fsize=filelength(fno);fnum=fsize/sizeof(structcipher);while(k3){getchar();system(cls);printf(\n\n\n\n\t\t\t请输入账号:);gets(account);printf(\n\t\t\t请输入密码:);gets(code);for(i=0;ifnum;i++){fread(&m,sizeof(structcipher),1,fp1);if(!strcmp(m[i].account,account))flag1=0;elseflag1=1;if(!strcmp(m[i].code,code))flag2=0;elseflag2=1;if(flag1==0&&flag2==0){fclose(fp1);printf(\n\n\t\t^0^登陆成功!欢迎进入西安邮电学院宿舍管理系统!^0^\n);/*登陆成功*/system(pause);return1;}}if(i==fnum){printf(\n\n\t\t\t输入的账号或密码有误,请重新输入!);k++;}}printf(\n\n\t\t\t连续3次输入错误,退出!\n);/*登陆失败*/system(pause);exit(1);case2:fp1=fopen(code.txt,at+);/*打开文件*/if(fp1==NULL){printf(\n\n*****文件打开错误。按任意键退出!);/*打开失败信息*/getchar();exit(1);}do/*注册信息*/{system(cls);getchar();printf(\n\n\n\n\t\t\t请输入注册账号:);gets(m[0].account);printf(\n\t\t\t请输入注册密码:);gets(m[0].code);printf(\n\t\t\t请再次输入注册密码:);gets(code1);if(!strcmp(m[0].code,code1)){fwrite(&m[0],sizeof(structcipher),1,fp1);fclose(fp1);flag=0;}else{printf(\n\t\t\t两次密码输入不同,请重新注册!);getchar();flag=1;}}while(flag==1);printf(\n\t\t\t^0^注册成功!欢迎进入西安邮电学院宿舍管
本文标题:c语言课程设计报告(宿舍管理系统)
链接地址:https://www.777doc.com/doc-3370020 .html