c语言课程设计报告宿舍管理系统.docx
- 文档编号:30778030
- 上传时间:2023-08-23
- 格式:DOCX
- 页数:64
- 大小:197.39KB
c语言课程设计报告宿舍管理系统.docx
《c语言课程设计报告宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告宿舍管理系统.docx(64页珍藏版)》请在冰豆网上搜索。
c语言课程设计报告宿舍管理系统
C语言课程设计报告书
学院名称
学生姓名
专业名称
班级
学号
指导教师
时间
计算机学院
1201班
04122030
实验题目:
学生宿舍管理系统
一、实验目的
通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。
通过这次实习练习,
可以更进一步的熟悉所学的知识,还可以加强和巩固知识。
长达两周的上机练习,为我们提供了很好的编程环境。
更好的了解编程的意义,为将来参加实践活动以及以后的毕业设计打下坚实的基础。
二、实验内容
我设计的是“车辆管理系统”,主要是针对车辆信息的管理,适用对象主要是需要统一管理的车辆,例如租车公司。
包括车辆的序号,车牌,品牌,车主信息。
在编写过程中主要
运用C语言的基本知识有:
数据类型(整形、实型、字符型、指针、数组、结构等);运算
类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。
三、需求分析
该程序是由C语言编写的一个车辆管理查询软件,本程序在MicrosoftVisualC++6.0下运行,其主要功能是实现对车辆信息的录入、添加、删除、修改、查询、统计。
其中查询
可以分别以序号,车牌号为关键字查询车辆信息。
四、概要设计
1、方案设计
主函数
密码模块
录
添
修
删
查
统
退
入
加
改
除
询
计
出
模
模
模
模
模
模
系
块
块
块
块
块
块
统
学
姓
班
宿
性
年
专
返
按按按返
按按按按按返
号
名
级
舍
别
龄
业
回
姓
学
宿
回
学
宿
性
班
专
回
名
号
舍
号
舍
别
级
业
2、数据结构说明
程序中数据主要是学生信息,具体属于类型如下:
structcar
{
intnum;
charchepai[10];
/*序号*/
/*车牌号*/
chartrademark[10];/*品牌*/
charname[20];
/*车主姓名
*/
/*联系方式
structcar*next;
};
3、模块功能说明
第一密码模块:
调用mima(),进行初始登陆,管理者的注册与登录操作。
第二录入模块:
调用build(),对车辆信息进行录入。
第三查看模块:
调用output(),对已有车辆信息进行查看。
第四查询模块:
调用find(),对特定车辆信息进行查看。
第五删除模块:
调用shanchu(),对某一车辆信息进行删除操作。
第六增加模块:
调用charu(),增加车辆信息。
第七排序模块:
调用sort(),以车辆序号排序。
第七修改模块:
调用shaixuan(),对特定车辆信息进行修改。
五、详细设计及运行结果
1.函数之间调用关系图
录入函数删除函数
build()密码函数shanchu()
mima()
添加函数修改函数
Charu()revise_message()
主函数
main()
查询函数统计函数
find()census_message()
排序函数
sort()
2.部分模块流程图及运行结果图示
登陆界面
主函数流程图
连续三次输入错误,
退
开始
出系统
输入密码
功能选择
是
选1
录入模块
否
是
选2
添加模块
否
是
选3
修改模块
否
是
选4
删除模块
否
是
选5
查询模块
否
是
选6
统计模块
否
是
选0
退出系统
结束
主页界面
录入模块
输入姓名
输入班级
输入宿舍
输入学号
输入性别
输入年龄
输入专业
Y
是否继
续录入
N
结束
录入界面
修改模块
输入要修改学
生的姓名
功能选择
是
选1修改学号
否是
选2修改姓名
否是
修改班级
选3
否
是
修改宿舍
选4
否
是
选5修改性别
是
否
选6修改年龄
否是
选7修改专业
返回主页
选8
否是否继续
是
结束
修改界面
统计模块
输入统计方式
功能选择
是
选1按学号
否是
选2按宿舍
否是
按性别
选3
否
是
按班级
选4
否
是
选5按专业
否是
选6
返回主页
结束
统计界面
六、调试情况,设计技巧及体会
1、测试数据
对功能1(密码系统测试)的测试:
先注册账号密码分别为:
1,1,然后退出程序进行登
录测试。
输入一组错误账号密码系统显示“对不起密码错误!
按任意键退出!
”。
在输入正
确密码,系统显示“密码正确!
按任意键进入主菜单”并进入主界面。
对功能2(录入车辆信息)的测试:
按照先后顺序分别输入学生信息:
序号车牌号品牌车主姓名联系方式
001498566
benz
wu
6548612
00254546
toyotazhang
46787
对功能
对功能
3(查看模块)的测试:
系统显示已有车辆信息
3(添加车辆信息)的测试:
按照先后顺序分别输入学生信息:
序号车牌号品牌车主姓名联系方式
00346334
wwg46461
对功能4(修改车辆信息)的测试:
系统显示“请输入你要选择车辆的品牌请输入你
要选择车辆的车主姓名”,输入“ase”系统显示“该车辆信息不存在!
按任意键返回”,
输入“toyotazhang”,系统显示“请输入修改后车辆的信息序号车牌号品牌车主姓名联
系方式”
对功能5(删除车辆信息)的测试:
系统显示“请输入要删除的车辆信息”。
输入要删
除的车辆序号:
001,系统显示出该车辆信息。
选择删除该车辆信息。
对功能6(查询学生信息)的测试:
查询宿舍号为14#401的信息,系统显示为:
学号姓名班级宿舍号性别年龄专业
03091003李娜090214#401女20计算机
03091004王红090114#401女20通信工程
对功能7(统计学生信息)的测试:
学生总人数3人,其中男生1人,女生2人。
对功能8(退出系统)的测试:
选择退出系统,程序关闭。
2、对调试中主要问题进行总结
调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。
有时候程序中还会出现录入五个数据而只显示四个的情况,
这也往往是由于定义的结构体数组长度过低所造成的。
像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。
在调试过程中我遇到最大的问题出现
在删除模块。
在运用“rt+”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。
这是由于“rt+”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数
据总会保留在原文件中。
后来我先用“rt”打开文件并读取文件中的数据,然后再用“wt”打开原文件将删除后的数据重新写入文件,最终检测运行成功。
3、对自己设计进行评价,指出合理和不足之处,提出改进的方案
本程序拥有很多的优点:
第一,它具有作为一个车辆管理系统的各个功能,包括录入信息、添加信息、修改信息、删除信息、查询信息等主要功能。
可以方便的进行车辆信息的管理。
第二,它的各个功能分块实现,对以后车辆信息系统做进一步的改进十分方便。
第三,
它也具有安全性,在进入学生信息管理系统之前要求输入账号和密码,所以比较安全,不会造成信息的外泄,并且可以对密码进行算法加密,这样更能确保信息的安全。
4、在设计过程中的感受
C语言是一门由浅入深的课程,最开始几天由于链表和文件部分掌握的不熟练,所以都
去看书上的例子自己慢慢揣摩。
之前也没有相关的学习机会,自己试着一点点做。
由于没有经验,本应首先搭建起来的框架却是在各个功能模块都调试完毕的情况下思考如何把它们糅
合在一个系统,浪费了不少时间。
短短的一周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的基础。
参考文献:
《C语言程序设计》(第二版)王曙燕科学出版社
七、源程序清单
#include
#include
#include
#include
#include
#include
#include
#include
#defineNsizeof(structcar)
#defineLEN100
/*欢迎界面*/
voidwelcomehu()
{
system("cls");
printf("\t\t
#〓§〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓§〓#
\n");
printf("\t\t
↓
↓
↓
↓
\n");
printf("\t\t
☆★☆
☆★☆
☆★☆
☆★☆
\n");
printf("\t\t
☆欢☆
☆迎☆
☆光
☆☆临
☆\n");
printf("\t\t
☆★☆
☆★☆
☆★☆
☆★☆
\n");
printf("\t\t
↓
↓
↓
↓
\n");
printf("\t\t
※
※
※
※
\n");
printf("\t\t|----------------------------------------------|\n");
printf("\t\t|********************|\n");
printf("\t\t|***************智能车库管理系统***************|\n");
printf("\t\t|********************|\n");
printf("\t\t|**********************************************|\n");
printf("\t\t|*
作者:
吴戌睿
*|\n");
printf("\t\t|**********************************************|\n");
printf("\t\t|**********************************************|\n");
printf("\t\t|**********************************************|\n");
printf("\t\t|*请按回车键继续*|\n");printf("\t\t|**********************************************|\n");
flushall();
getch();
system("cls");
}
/*车辆信息结构体类型
structcar
{
*/
intnum;/*序号*/
charchepai[10];/*车牌号*/
chartrademark[10];/*品牌*/
charname[20];/*车主姓名*/
charcall[20];/*联系方式*/
structcar*next;
};
/*系统密码模块*/
voidmimahu()
{
FILE*fp;
inti=0;
chara[6],aa;
charb[6];
fp=fopen("mima.txt","rt");
if(fp==NULL)
{
system("cls");
printf("*******************************************\n");
printf("*请您输入系统初始密码(六位)*\n");printf("*******************************************\n");fp=fopen("mima.txt","wt");
for(i=0;i<6;i++)
{
aa=getch();
printf("*");
a[i]=aa;
}
fputs(a,fp);
fclose(fp);
}
fgets(a,7,fp);
system("cls");
printf("|--------------------------|\n");
printf("|请输入系统管理员密码:
(6位)|\n");
printf("|------------------=====---|\n");
flushall();
for(i=0;i<6;i++)
{
b[i]=getch();
printf("*");
}
if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3]&&a[4]==b[4]&&a[5]==b[5])
{
system("cls");
printf("---------------------------------\n");
printf("密码正确!
\n");
printf("---------------------------------\n");
printf("\n\n*****按任意键进入主菜单*****\n");
printf("---------------------------------\n");
getch();
}
else
{
system("cls");
printf("***************************************************\n");
printf("**\n");
printf("*对不起密码错误!
按任意键退出!
*\n");
printf("**\n");
printf("***************************************************\n");
flushall();
getchar();
exit
(1);
}
}
/*输出模块*/
voidoutput(structcar*p)
{
system("cls");
printf("---------------------------------------------------------\n");
printf("---------------------------------------------------------\n");
printf("\n\n--车辆信息表--\n\n");
printf("---------------------------------------------------------\n");
printf("---------------------------------------------------------\n");
printf("序号--车牌号--品牌--车主姓名--联系方式\n");
printf("---------------------------------------------------------\n");
p=p->next;
while(p!
=NULL)
{
printf("%3d%8s%8s%8s%s\n",p->num,p->chepai,p->trademark,p->name,p->call);
printf("---------------------------------------------------------\n");
p=p->next;
}
printf("按任意键退出!
!
\n");
getch();
}
/*录入模块*/
structcar*build()
{
inti=0;
charflag;
structcar*p,*q,*head;
system("cls");
head=q=(structcar*)malloc(N);
p=(structcar*)malloc(N);
printf("*******************************************\n");
printf("*
录入车辆信息
*\n");
printf("*******************************************\n");
printf("\n
第%d
辆车\n",i+1);
printf("*******************************************\n");
printf("\n序号:
");
scanf("%d",&p->num);
printf("---------------------------------\n");
printf("\n车牌号:
");
scanf("%s",p->chepai);
getchar();
printf("---------------------------------\n");
printf("\n品牌:
");
scanf("%s",&p->trademark);
printf("---------------------------------\n");
printf("\n车主姓名:
");
flushall();
scanf("%s",&p->name);
printf("---------------------------------\n");
printf("\n联系方式:
");
flushall();
scanf("%s",p->call);
printf("---------------------------------\n");
q->next=p;
q=p;
//system("cls");
for(i=1;;i++)
{
//q->next=p;
//q=p;
system("cls");
printf("*******************************************\n");
printf("*是否继续录入?
(Y/N)*\n");printf("*******************************************\n");getchar();
scanf("%s",&flag);
getchar();
if(flag!
='y'&&flag!
='Y')
break;
//q->next=p;
//q=p;
p=(structcar*)malloc(N);system("cls");printf("**********************************\n");
printf("\n第%d辆车\n",i+1);
printf("**********************************\n");
printf("\n序号:
");
scanf("%d",&p->num);
printf("---------------------------------\n");
printf("\n车牌号:
");
scanf("%s",p->chepai);
getchar();
printf("---------------------------------\n");
printf("\n品牌:
");
scanf("%s",&p->trademark);
printf("---------------------------------\n");
printf("\n车主姓名:
");
scanf("%s",&p->name);
getchar();
printf("---------------------------------\n");
printf("\n联系方式:
");
scanf("%s",p->call);
printf("---------------------------------\n");
system("cls");
q->next=p;
q=p;
//
}
flushall();
p->next=NULL;
free(q);
flushall();
output(head);
flushall();
return(head);
}
/*按车辆号排序*/
structcar*sort(structcar*h)
{structcar*temp1,*p1,*p2,*min,*temp;temp=(structcar*)malloc(N);if(h==NULL)
returnh;for(p1=h;p1!
=NULL;p1=p1->next)
{
min=p1;
for(p2=p1;p2!
=NULL;p2=p2->next)
if(min->num>p2->num)
min=p2;
if(min!
=p1)
{
*temp=*min;
*min=*p1;
*p1=*temp;
temp1=min->next;
min->next=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 宿舍 管理 系统