当前位置:文档之家› 学生宿舍管理系统c语言实习报告

学生宿舍管理系统c语言实习报告

西安邮电大学C语言课程设计报告题目:学生宿舍管理系统院系名称:计算机学院专业名称:软件工程班级:1205班学生姓名:邵欢学号(8位):04123157指导教师:王小银一.设计目的1. 掌握结构体的定义和使用。

2.理解链表工作原理,熟悉基本操作。

3.熟悉C语言中文件操作。

4.掌握文件的定义方法及文件指针的概念,掌握文件打开、关闭、读、写文件基本操作函数。

5掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及它们赋值的方法。

6.握函数的调用及嵌套,顺序结构、选择分支结构、循环结构及其嵌套的应用、结构体、指针以及综合应用,会使用文件的一些函数。

7.会独自分析问题解决问题,提高解决问题的能力。

8.提高分析问题和解决问题的能力,提高程序设计水平二. 设计内容1.运用结构体及链表等编辑一个简单的学生宿舍基本信息管理系统,使之能够完成学生基本信息的输入、保存、读取、查找、插入、删除、修改、排序、统计、输出、退出。

2.利用密码对系统信息进行管理。

2.执行编译操作,并根据提示调试此程序,排除所有的错误和警告,直到编译成功为止。

3.执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功为止。

4.接受老师的检查并回答老师所提出的问题,知道令老师点头为止。

5.根据自己的源程序及运行情况截取相应的图片,完成实验报告。

三.概要设计1.功能模块图2.各个模块详细的功能描述。

登陆界面:需将在文件中设置好的密码与输入的密码进行比较,正确即可进入主界面,可选择要输入的信息,否则退出1.输入模块struct Node*creat_inf()进入输入信息模块,用do-while循环对学生信息进行输入。

2.保存信息模块void save_inf(struct Node*head)对信息进行保存,保存到文件中。

3.读取信息模块struct Node*read_inf()从指定文件中读取出保存的信息。

4.查找信息模块struct Node*find(struct Node*p)在已保存的信息中按学号查找对应学号。

5.插入信息模块int insert(struct Node*p0),将想要插入的信息添加到已有信息中,并保存。

6.删除信息模块int del(struct Node*head),按学号找出要删除的学生信息,找到删除。

7.修改信息模块void modify(struct Node*p),按学好着出要修改的学生信息,在输入要修改的内容,并保存。

8.信息排序模块struct Node*sort(struct Node*head)按宿舍号对学生信息进行排序。

9.统计信息模块int statis(struct Node*head),将保存的学生信息进行统计,并输出。

10.输出信息模块,void print(struct Node*p)将之前做过修改、排序、插入的所有信息输出。

11.退出。

四.详细设计1.功能函数的调用关系图2.各功能函数的数据流程图1.密码登陆界面。

.2息3.插入模块L4.删除模块5.修改模块6.7.统计模块8.输出模块3.重点设计及编码程序的主要设计在各个模块的功能方面,其中密码部分及主界面各模块的调用是比较着重设计的环节printf("\n\n\n\n\n\t\t\t 欢迎登陆学生宿舍信息管理系统\n");printf("\n\n\n\n\t\t\t\t请输入密码:");for(i=0;i<6;i++){system("stty -echo");scanf("%c",s+i);printf("*");system("stty echo");}s[6]='\0';//限制密码为6位printf("\n\n\n\n\n\t\t\t 输入完毕,请按任意键继续。

");getchar();if(strcmp(s,"358046")==0){printf("\n\n\n\n\n\t\t 密码输入正确,系统正在打开中,按任意键进入……");getchar();do{system("clear");Menu();scanf("%d",&select);system("clear");switch(select){case1://保存基本信息到指定文件head=creat_inf();//创建基本信息单链表system("clear");save_inf(head);printf("\n");break;case2://显示链表信息print(head);getchar();printf("\n");printf("请按任意键返回主菜单。

");getchar();break;case3://插入if(insert(head)){printf("插入成功!\n");save_inf(head);printf("请按任意键返回主菜单。

");getchar();}else{printf("有重号,插入失败!\n");print(head);printf("\n");printf("请按任意键返回主菜单。

");getchar();}break;case4://修改modify(head);save_inf(head);getchar();printf("请按任意键返回主菜单。

");getchar();break;case5://删除if(del(head))/*删除*/{printf("已正确删除!\n");}else printf("要删除结点不存在\n");print(head);save_inf(head);printf("请按任意键返回主菜单。

");getchar();break;case6://查找p=find(head);if(p){printf("该生信息为:\n");printf("学号:%d 姓名:%s 性别:%c 年龄:%d 宿舍楼号:%s 宿舍号:%s\n",p->num,p->name,p->sex,p->age,p->addr,p->room);}elseprintf("未找到该学生!\n");getchar();printf("请按任意键返回主菜单。

");getchar();break;case7://从指定的磁盘文件中读取信息并存入单链表中head=read_inf();print(head);printf("请按任意键返回主菜单。

");getchar();break;case8://打印head=read_inf();print(head);printf("请按任意键返回主菜单。

");getchar();break;case9://统计printf("已存%d个学生信息!\n",statis(head));getchar();printf("请按任意键返回主菜单。

");getchar();break;case10:sort(head);save_inf(head);getchar();printf("请按任意键返回主菜单。

");getchar();break;default:printf("\n\n\n\n\n\n\n\n\t\t\t\t 感谢您的使用。

");printf("\n\n\n\t\t\t 确定退出?(y/n):");//fflush(stdin);getchar();ch=getchar();printf("\n\n\t\t");if(ch=='y'||ch=='Y'){exit(0);}break;//system("pause");}}while(1);//end do}else{printf("\n\n\n\n\n\t\t\t 对不起,您的密码输入有误!\n\n");printf("\n\n\t\t\t\t 请按任意键退出。

");getchar();}}四.测试数据及运行结果1.正常测试数据和运行结果要求提供3组正常测试数据和运行结果将学号为3的学生宿舍号修改为135删除学号为2的学生查找学号为1的学生信息按年龄大小排序(从大到小)人数统计从指定文件中读取数据2.异常测试数据及运行结果要求提供2组异常测试数据和运行结果删除学号为2的学生信息六.调试情况,设计技巧及体会1.用Switch()语句时发现当用整型作为判断依据时,用户如果输入的为字符就会出现卡屏的现象,而用字符型时有可能出现死循环。

2.语法错误容易发现,逻辑错误不易发现而且比较隐蔽,而且很难修改。

3.程序设计应分模块设计,在编写过程中不要一大块的区编译,当你完成整个程序的一小部分时,就进行编译查错,程序首先要保证没有语法错误,这样以便以后调试,函数名及变量名尽量要做到见名知意,方便自己调试,也方便他人阅读。

4.对于程序中的注释是我们一直不够重视的,很多人编程时不写注释,或者注释很少,这样也不利于自己修改程序,更不利于他人阅读程序。

1.改进方案利用switch-case.制作主界面,供选择,利用两个链表来实现对信息的排序,使得在编写过程中的难度降低,再利用do-while循环,使得程序的可读性也变好。

2.体会在设计过程中的体会:在开始的设计中我确实感到自己知识运用十分不灵活,有些概念理解不到位,有些子函数不会编,只是照着课本套,我也感觉到把这门课学好是十分有用的,还有这门课的逻辑思维是非常严密的,学好它能够很好的训练人的逻辑思维的。

C语言软件设计既然作为一门利用C语言理论课程的另一门学科必定有它的重要性,C程序设计需要我们总结理论课所学知识,并熟练应用。

它是学生的一种强化训练和智力的开发。

我想其目的并不是要求我们能编写出高水平的程序,而是要求我们能独立进行实践,完成自己的工作,并培养我们大学生在动手方面的技能。

相关主题