C语言课程设计学生宿舍管理系统.docx
- 文档编号:9209442
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:32
- 大小:291.85KB
C语言课程设计学生宿舍管理系统.docx
《C语言课程设计学生宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生宿舍管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生宿舍管理系统
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY
C语言实训报告
班级:
k1223-5
***********
学号:
*********18
1.课程实训目的
1)通过课程实训,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程实训,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程实训,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程实训,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程实训,加强了自己的程序分析能力。
2.需求分析
2.1要求
1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程实训题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
3)学会利用数组、结构体、链表进行相关信息表示。
4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述
5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。
6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。
7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。
8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。
9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。
10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。
11)C语言课程实训报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。
2.2任务描述
此系统以计算机系的学生为背景,提供对学生个人住宿信息的录入、编辑、查找、统计等功能。
具体功能实现如下:
1)信息录入:
实现学生住宿信息的录入功能,并能将其以文件形式加以保存。
2)编辑功能:
实现对学生住宿信息的添加,并对指定学生的住宿信息进行删除或修改等功能。
3)信息浏览功能:
实现对指定学生的学生住宿信息浏览。
4)查询功能:
实现按学生入住时间、按收费标准查询学生住宿信息的功能。
5)系统以菜单方式工作,界面清晰,易于操作。
2.3运行环境
1)WindowsXP/7系统
2)VC++6.0编译环境
2.4开发工具
C语言
3.总体设计
3.1系统流程设计
本系统的功能模块如图1所示,主要有以下模块:
图1系统功能模块图
3.2系统模块设计
1)课程名称界面:
运用printf函数,实现课程实训名称以及作者的显示。
2)系统欢迎界面:
运用printf函数,实现欢迎使用学生简历管理系统的显示。
3)主菜单界面:
构造函数menu_select();,实现系统主菜单的显示。
4)学生住宿信息录入:
构造函数voidcreate(),实现学生简历信息的录入。
5)学生住宿信息浏览:
构造函数voidxianshi();,实现对学生整体住宿情况的浏览。
6)学生住宿信息保存:
构造函数voidbaocun();,实现对学生整体住宿情况的保存。
7)学生住宿信息查询:
intfindByIndex(intindex)函数,实现按入住时间查询,调用intfindBybiaozhun(intbiaozhun);函数,实现按收费标准查询。
8)学生住宿信息修改:
构造函数intreplace(charname[],intp,intq);,实现对指定学生的学号对其入住时间、收费标准。
9)学生住宿信息删除:
构造函数intfindBybiaozhun(intbiaozhun);,实现对学生整体住宿情况的删除。
4.详细设计
4.1数据结构设计
根据系统要求,系统中需要保存的数据信息,其结构如下:
数据项名称
数据项系统表示
数据类型
数据长度(字节)
备注
学生姓名
stu[i].name
字符串
50
学生住宿层号
stu[i].cenghao
整型
4
学生住宿房号
stu[i].fanghao
整型
4
学生住宿床位号
stu[i].chuanghao
整型
4
学生学号
stu[i].xuehao
整型
4
住宿收费标准
stu[i].shoefei
整型
4
缴费状态
stu[i].zhuangtai
字符串
20
学生入住时间
stu[i].shijian
整型
4
根据系统要求,系统中需要保存的类别信息,其结构如下:
类别代号
文本文档
类别名称
a.txt
先声明一个类型为typedefstructstudent的结构体,其成员为学生的住宿信息。
然后通过对结构体成员、文件等数据结构的操作,实现对学生住宿信息的录入,浏览,查询,存盘,修改,删除等一系列操作。
其中,结构体定义如下:
typedefstructstudent{
{
charname[50];
intcenghao;
intfanghao;
intchuanghao;
intxuehao;
intshoufei;
charzhuangtai[20];
intshijian;
}STUDENT;
4.2模块接口设计
1)所有函数模块声明如下:
menu_select();/*主菜单函数*/
voidcreate();/*录入学生简历信息*/
voidxianshi();/*显示浏览界面*/
intfindByIndex(intindex);*实现按学号查询*/
intfindBybiaozhun(intbiaozhun);/*实现按入住时间查询*/
voidbaocun();/*向磁盘写入学生信息加以保存*/
intremovebyxuehao(intsxh);/*实现指定学生的信息删除*/
intreplace(charname[],intp,intq);/*实现学生信息的修改*/
2)并定义需要使用的全局变量:
3)#defineNUM30
intflag=0;
STUDENTstu[NUM]
charname[20];
inti,n,m,b,c,d,e,f,j,g,p,q,y,x,a1,a2;
charA[6][12];
4)主要模块的实现
系统以主函数intmain()为入口,首先通过system("color1e");将汉字界面置为黄色。
然后调用menu_select();函数,进入主菜单界面。
系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。
4.3以下是几个主要模块的流程图:
1)主菜单函数:
2)信息浏览函数:
图3信息浏览流程图
3)信息修改函数:
图4信息修改流程图
5.运行结果
5.1主菜单界面:
图5主菜单界面
输入功能选择,系统自动进入相应功能界面。
图6信息录入界面
5.2息浏览界面:
图7全部信息浏览
5.3信息查询界面:
从键盘中输入选择,可以按学号和姓名进行查询,并显示结果。
图8按姓名查询的结果
5.4修改界面:
从键盘中输入需要修改的信息代码,自动提示输入新的信息。
图9按姓名查询的结果
6.程序调试与测试
6.1程序调试与分析
(1)各模块分别调试过程、出现的错误原因,纠正错误的方法及结果:
主菜单显示界面:
刚开始主菜单显示的时候参差不齐,视觉效果混乱。
通过插入“\n,\t,空格等来使主菜单显示清爽,合理。
宿舍整体情况浏览:
开始试图用“空闲,居住”来表示某房间的空闲状态。
但由于能力有限,无法用汉字表示,就分别用了“T”和“F”表示某房间的空闲状态。
可以表示出每个房间的空闲状态。
按入住时间查询:
最初对“for”循环的用法不熟悉,造成查询功能无法实现,通过上网查询相关资料解决了这一问题,使按入住时间查询这一功能实现。
按入住时间查询:
由于在输入入住时间时,限制了只能输入800/年或1200元/年,在测试查询功能时,老是出现程序错误,后来通过一步步的检查找出这一问题,按入住时间查询功能得以实现。
修改功能:
最初无用了“for”循环,造成数据无法修改。
通过请教同学解决了这一问题。
删除功能:
最初无用了“for”循环,造成数据无法删除。
通过请教同学解决了这一问题。
6.2程序测试及结果
(1)各模块测试用例数据的确定
测试数据
姓名
层号
房间号
床位号
学号
收费标准
缴费状态
入住时间
孙飞
1
1
1
1
1200
是
2011
曹钰
2
2
2
2
800
否
2012
测试结果
数据正确。
(2)测试中出现的问题的原因和分析
在保存文件时,由于未及时关闭文件,造成下面的数据乱码,及时关闭文件的操作。
7.问题与不足
(1)需求分析中存在的问题和分析:
因为不能很好的掌握主菜单的循环,无法实现再次录入学生信息。
(2概要设计中存在的问题和分析
没能很好的结合实际情况,使程序的某些功能未能符合实际情况。
(3详细设计中存在的问题和分析
查询的功能太少,只有按入住时间和缴费状态查询。
(4)代码编制中存在的问题和分析
在定义结构体时,姓名和缴费状态的数组定义过大,造成内存浪费。
(5)调试和测试中存在的问题和分析
在输入层号、房间号、床位号、学号、入住时间时未加以保护,输入不是数字时,程序也可运行,存在漏洞。
8.建议
课设内容的内容应更加符合实际,时间给的太过充裕,老师辅导最好在详细一点。
建议老师能从根本上教会学生一些简单的编程。
9.编程体会
经过二周的课程设计,我学到了很多东西:
①巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
②培养了我选用参考书,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
③过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
④够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。
⑤通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。
在此对老师和同学们表示感谢!
10.程序源代码:
#include
#defineNUM30
intflag=0;
typedefstructstudent
{
charname[50];
intcenghao;
intfanghao;
intchuanghao;
intxuehao;
intshoufei;
charzhuangtai[20];
intshijian;
}STUDENT;
STUDENTstu[NUM];
voidcreate();
voidxianshi();
voidbaocun();
intfindByIndex(intindex);
intremovebyxuehao(intsxh);
intfindBybiaozhun(intbiaozhun);
intreplace(charname[],intp,intq);
charname[20];
inti,n,m,b,c,d,e,f,j,g,p,q,y,x,a1,a2;
charA[6][12];
intmain()
{
intmenuchoice;
system("color1e");
do
{
menu_select();
printf("请输入你的选择:
");
scanf("%d",&menuchoice);
switch(menuchoice)
{
case1:
if(flag==0)
{
printf("请输入要录入的学生个数");
scanf("%d",&n);
rewind(stdin);
while(n>30||n<1){
printf("您的输入有误请重新输入:
\n");
scanf("%d",&n);
rewind(stdin);
}
create();
printf("\n学生信息录入成功...\n");
flag=1;
system("pause");
system("cls");
break;
}
else
{
printf("学生信息已录入,不需录入...\n");
system("pause");
system("cls");
break;
}
case2:
if(flag==1)
{
printf("您输入的学生信息为\n");
xianshi();
system("pause");
system("cls");
break;
}
else
{
printf("请先录入学生信息再浏览!
...\n");
system("pause");
system("cls");
break;
}
case3:
if(flag==1)
{
printf("学生信息查询(按入住时间查询)\n");
scanf("%d",&y);
findByIndex(y);
system("pause");
system("cls");
break;
}
else
{
printf("请先录入学生信息再查询!
...\n");
system("pause");
system("cls");
break;
}
case4:
if(flag==1)
{
printf("学生信息查询(按收费标准查询)\n");
scanf("%d",&x);
findBybiaozhun(x);
system("pause");
system("cls");
break;
}
else
{
printf("请先录入学生信息再查询!
...\n");
system("pause");
system("cls");
break;
}
case5:
if(flag==1)
{
printf("学生信息修改\n");
printf("请输入要被修改的姓名和新的入住时间,收费标准\n");
scanf("%s%d%d",name,&a1,&a2);
replace(name,a1,a2);
system("pause");
system("cls");
break;
}
else
{
printf("请先录入学生信息再修改!
...\n");
system("pause");
system("cls");
break;
}
case6:
if(flag==1)
{
printf("学生信息删除");
printf("请输入您要删除的学生的学号");
scanf("%d",&g);
removebyxuehao(g);
system("pause");
system("cls");
break;
}
else
{
printf("请先录入学生信息再删除...\n");
system("pause");
system("cls");
break;
}
case7:
printf("程序退出,欢迎再次使用!
\n");
exit(0);
system("pause");
system("cls");
default:
printf("您的输入有误请重新输入\n");
rewind(stdin);
system("pause");
system("cls");
break;
}
}while
(1);
}
intmenu_select()
{
printf("\t\t\t\t\t\t注释:
'F'代表该房间为空闲\n");
printf("\t\t\t\t\t\t注释:
'T'代表该房间有学生居住\n");
printf("\t\t\t学生宿舍管理系统\n");
printf("\t\t\t作者:
赵荷\n");
printf("\t\t\t指导老师:
胡宁亚\n");
printf("\t\t*************************************************");
printf("\t\t\t\t\t1.录入学生住宿信息\n");
printf("\t\t\t2.宿舍信息整体浏览\n");
printf("\t\t\t3.按入住时间查询\n");
printf("\t\t\t4.按收费标准查询\n");
printf("\t\t\t5.修改功能\n");
printf("\t\t\t6.删除\n");
printf("\t\t\t7.退出\n");
printf("\t\t*************************************************\n\n\n");
printf("\t\t欢迎使用!
\n\n\n");
}
voidcreate()
{
for(i=0;i<6;i++)
for(j=0;j<12;j++)
A[i][j]='F';
printf("请输入%d个学生的信息(姓名,层号,房间号,床位号,学号,收费标准,缴费状态,入住时间)\n",n);
for(i=0;i { do { scanf("%s%d%d%d%d%d%s%d",stu[i].name,&stu[i].cenghao,&stu[i].fanghao,&stu[i].chuanghao,&stu[i].xuehao,&stu[i].shoufei,stu[i].zhuangtai,&stu[i].shijian); if((stu[i].shoufei! =800)&&(stu[i].shoufei! =1200)) printf("输入错误,请重新输入"); }while(stu[i].shoufei! =800&&stu[i].shoufei! =1200); A[stu[i].cenghao-1][stu[i].fanghao-1]='T'; } flag=1; } voidxianshi() { printf("姓名层号房间号床位号学号收费标准缴费状态入住时间\n"); for(i=0;i { printf("%s%d%d%d%d%d%s%d\n",stu[i].name,stu[i].cenghao,stu[i].fanghao,stu[i].chuanghao,stu[i].xuehao,stu[i].shoufei,stu[i].zhuangtai,stu[i].shijian); } printf("\n\n\n\n"); printf(""); for(j=0;j<12;j++) printf("%d",j+1); printf("\n"); for(i=0;i<6;i++) { printf("第%d层",i+1); for(j=0;j<10;j++) printf("%3c",A[i][j]); for(j=10;j<12;j++) printf("%4c",A[i][j]); printf("\n"); } printf("保存文件"); baocun(); printf("\n\n"); } voidbaocun() { chara[100]; FILE*fp; printf("请输入文件名: \n"); rewind(stdin); gets(a); if((fp=fopen(a,"w"))==NULL) { printf("文件不能打开\n"); exit(0); } fp=fopen(a,"w"); for(i=0;i { fprintf(fp,"%s%d%d%d%d%d%s%d",stu[i].name,stu[i].cenghao,stu[i].fanghao,stu[i].chuanghao,stu[i].xuehao,stu[i].shoufei,stu[i].zhuangtai,stu[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生宿舍 管理 系统