c语言课程设计报告宿舍管理系统.docx

上传人:b****4 文档编号:24650202 上传时间:2023-05-29 格式:DOCX 页数:35 大小:215.09KB
下载 相关 举报
c语言课程设计报告宿舍管理系统.docx_第1页
第1页 / 共35页
c语言课程设计报告宿舍管理系统.docx_第2页
第2页 / 共35页
c语言课程设计报告宿舍管理系统.docx_第3页
第3页 / 共35页
c语言课程设计报告宿舍管理系统.docx_第4页
第4页 / 共35页
c语言课程设计报告宿舍管理系统.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

c语言课程设计报告宿舍管理系统.docx

《c语言课程设计报告宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告宿舍管理系统.docx(35页珍藏版)》请在冰豆网上搜索。

c语言课程设计报告宿舍管理系统.docx

c语言课程设计报告宿舍管理系统

C语言实训报告书

系部名称

通信工程系

学生姓名

专业名称

通信工程专业

班级

学号

指导教师

刘欣

时间

2011年08月29日至

2011年09月09日

实验题目:

学生宿舍管理系统

一、实验目的

通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。

通过这次实习练习,可以更进一步的熟悉所学的知识,还可以加强和巩固知识。

长达两周的上机练习,为我们提供了很好的编程环境。

更好的了解编程的意义,为将来参加实践活动以及以后的毕业设计打下坚实的基础。

二、实验内容

我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。

包括学生的姓名、学号、性别、专业、班级等等。

在编写过程中主要运用C语言的基本知识有:

数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。

三、需求分析

该程序是由C语言编写的一个宿舍管理查询软件,本程序在MicrosoftVisualC++6.0下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。

其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。

统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。

四、概要设计

1、方案设计

2、数据结构说明

程序中数据主要是学生信息,具体属于类型如下:

tructst_message

charname[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.部分模块流程图及运行结果图示

登陆界面

主函数流程图

主页界面

录入模块

录入界面

修改模块

修改界面

统计模块

统计界面

六、调试情况,设计技巧及体会

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语言程序设计》(第二版)  王曙燕    科学出版社

七、源程序清单

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

#include"io.h"

#defineN900

structcipher

{characcount[6];

charcode[6];

}m[10];

cipher()/*密码模块*/

{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(k<3)

{getchar();

system("cls");

printf("请输入账号:

");

gets(account);

printf("请输入密码:

");

gets(code);

for(i=0;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");

system("pause");

return1;

}

}

if(i==fnum)

{printf("输入的账号或密码有误,请重新输入!

");

k++;

}

}

printf("连续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("请输入注册账号:

");

gets(m[0].account);

printf("请输入注册密码:

");

gets(m[0].code);

printf("请再次输入注册密码:

");

gets(code1);

if(!

strcmp(m[0].code,code1))

{fwrite(&m[0],sizeof(structcipher),1,fp1);

fclose(fp1);

flag=0;

}

else

{

printf("两次密码输入不同,请重新注册!

");

getchar();

flag=1;

}

}while(flag==1);

printf("注册成功!

\n");

getchar();

system("cls");

break;

}

return1;

}

 

structst_message/*学生信息*/

{

charname[20];/*学生姓名*/

chardorm[7];/*宿舍号*/

charnum[10];/*学号*/

charsex[5];/*性别*/

charage[4];/*年龄*/

charmajor[20];/*专业*/

charclasss[8];/*班级*/

}st[N],t;

sort_message()/*排序模块*/

{inti,j,fno,fsize,fnum;

FILE*fp;

fp=fopen("student.txt","rt+");

if(fp==NULL)

{printf("\n\n*****文件打开错误。

按任意键退出!

");

getchar();

exit

(1);

}

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(structst_message);

for(i=0;i

fread(&st[i],sizeof(structst_message),1,fp);

for(i=0;i

for(j=i+1;j

if(strcmp(st[i].num,st[j].num)>0)

{t=st[i];

st[i]=st[j];

st[j]=t;

}

rewind(fp);

for(i=0;i

fwrite(&st[i],sizeof(structst_message),1,fp);

fclose(fp);

}

 

input_message()/*录用信息模块*/

{inti;

charchoice;

FILE*fp;

fp=fopen("student.txt","at+");

if(fp==NULL)

{printf("\n\n*****库存文件不存在!

请建立。

按任意键退出!

");

getchar();

exit

(1);

}

for(i=0;;i++)

{system("cls");

getchar();

printf("请输入学生姓名:

");

gets(st[i].name);

printf("\n请输入学生班级:

");

gets(st[i].classs);

printf("\n请输入学生宿舍号:

");

gets(st[i].dorm);

printf("\n请输入学生学号:

");

gets(st[i].num);

printf("\n请输入学生性别:

");

gets(st[i].sex);

printf("\n请输入学生年龄:

");

gets(st[i].age);

printf("\n请输入学生专业:

");

gets(st[i].major);

fwrite(&st[i],sizeof(structst_message),1,fp);

printf("输入成功!

\n是否继续录入(Y/N)?

");

choice=getchar();

if(choice=='y'||choice=='Y')

continue;

else

{fclose(fp);

break;

}

}

}

append_message()/*添加模块*/

{inti;

charchoice;

FILE*fp;

fp=fopen("student.txt","at+");

if(fp==NULL)

{printf("\n\n*****库存文件不存在!

请建立。

按任意键退出!

");

getchar();

exit

(1);

}

for(i=0;;i++)

{structst_messagest[N];

system("cls");

getchar();

printf("请输入所添加学生姓名:

");

gets(st[i].name);

printf("\n请输入所添加学生班级:

");

gets(st[i].classs);

printf("\n请输入所添加学生宿舍号:

");

gets(st[i].dorm);

printf("\n请输入所添加学生学号:

");

gets(st[i].num);

printf("\n请输入所添加学生性别:

");

gets(st[i].sex);

printf("\n请输入所添加学生年龄:

");

gets(st[i].age);

printf("\n请输入所添加学生专业:

");

gets(st[i].major);

fwrite(&st[i],sizeof(structst_message),1,fp);

printf("输入成功!

\n是否继续添加(Y/N)?

");

choice=getchar();

if(choice=='y'||choice=='Y')

continue;

else

{fclose(fp);

break;

}

}

}

revise_message()/*修改模块*/

{inti,choice,flag,fno,fsize,fnum;

charre_name[20],s[20];

FILE*fp;

do

{fp=fopen("student.txt","rt+");

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(structst_message);

system("cls");

gets(s);

printf("请输入需要修改的学生姓名:

");

gets(re_name);

for(i=0;i

{

fread(&st[i],sizeof(structst_message),1,fp);

if(!

strcmp(re_name,st[i].name))

{printf("\n-----该学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n");

printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

printf("您要修改哪一项?

\n");

printf("1.学号\n");

printf("2.姓名\n");

printf("3.班级\n");

printf("4.宿舍号\n");

printf("5.性别\n");

printf("6.年龄\n");

printf("7.专业\n");

printf("8.返回主页\n");

scanf("%d",&choice);

switch(choice)

{case1:

printf("\n请输入修改后的学号:

");

scanf("%s",st[i].num);break;

case2:

printf("\n请输入修改后的姓名:

");

scanf("%s",st[i].name);break;

case3:

printf("\n请输入修改后的班级:

");

scanf("%s",st[i].classs);break;

case4:

printf("\n请输入修改后的宿舍号:

");

scanf("%s",st[i].dorm);break;

case5:

printf("\n请输入修改后的性别:

");

scanf("%s",st[i].sex);break;

case6:

printf("\n请输入修改后的年龄:

");

scanf("%s",st[i].age);break;

case7:

printf("\n请输入修改后的专业:

");

scanf("%s",st[i].major);break;

case8:

return1;

}

getchar();

system("cls");

printf("\n-----修改后的学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n");

printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

rewind(fp);

fseek(fp,sizeof(structst_message)*i,0);

fwrite(&st[i],sizeof(structst_message),1,fp);

fclose(fp);

break;

}

}

if(i==fnum)

printf("\n该学生信息不存在!

");

printf("\n\n继续修改吗?

(Y/N)");

choice=getchar();

if(choice=='Y'||choice=='y')

{flag=1;

system("pause");

}

elseflag=0;

}while(flag==1);

return1;

}

delete_message()/*删除模块*/

{inti,j,choice,fno,fsize,fnum;

chard_num[10];

FILE*fp;

system("cls");

getchar();

fp=fopen("student.txt","rt");

if(fp==NULL)

{printf("\n\n*****库存文件不存在!

请先建立。

按任意键退出!

");

getchar();

exit

(1);

}

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(structst_message);

for(i=0;i

fread(&st[i],sizeof(structst_message),1,fp);

printf("请输入需要删除学生的学号:

\n");

gets(d_num);

system("cls");

for(i=0;i

{if(!

strcmp(d_num,st[i].num))

{printf("\n----

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1