c语言课程设计报告军训管理系统Word下载.docx
《c语言课程设计报告军训管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告军训管理系统Word下载.docx(31页珍藏版)》请在冰豆网上搜索。
intcla;
/*班级*/
intying;
/*所分入营号*/
intlian;
/*所分入连号*/
3、模块功能说明
第一录入模块:
调用input(),对军训学生信息进行录入以及保存。
第二浏览模块:
调用scan(),浏览军训学生信息(可按录入、学号、班级、营号方式查看)。
第三查询模块:
调用find(),按学号、姓名、班级、营号查询军训学生信息。
第四修改模块:
调用change(),对某一学生信息进行修改操作。
第五删除模块:
调用del(),对某一学生信息进行删除操作。
第六添加模块:
调用add(),添加学生信息。
五、详细设计及运行结果
1.函数之间调用关系图
2.部分模块流程图及运行结果图示
登陆界面
主函数流程图
主页界面(管理员界面)
录入模块
录入界面
浏览模块(排序)
浏览界面
查找模块
查找界面
修改模块
修改界面
六、调试情况,设计技巧及体会
1、测试数据
对功能1(密码设置)的测试:
选择方式一,不需密码直接进入学生查看界面;
选择方式二,输入一组错误账号密码系统显示“密码有误!
请重新输入密码!
”,三次错误后将退出系统。
在输入正确密码后,系统显示“登陆成功”并进入主界面。
对功能2(录入学生信息)的测试:
按照先后顺序分别输入学生信息:
学号姓名专业班级营号连号
88huanwl532
23yeyesm251
2huawtg323
45lvwuwl552
对功能3(浏览学生信息)的测试:
按照录入顺序分别输出学生信息:
同时屏幕显示“以上排序由录入数据的先后决定。
也可选择以下为关键词升序查看:
1.学号2.班级3.所编入营号0.返回主界面
选择1按照学号由小到大输出学生信息
选择2按照班级由小到大输出学生信息
选择3按照营号由小到大输出学生信息
选择0返回主界面
对功能4(查询学生信息)的测试:
查询5营的信息,系统显示为:
对功能5(修改学生信息)的测试:
输入要修改学生的学号11:
,系统显示“对不起!
您所查找的人不存在”。
输入修改学生学号:
88,系统显示出该学生信息。
选择修改学号为:
13,系统显“已成功保存!
”。
对功能6(删除学生信息)的测试:
输入要删除学生的学号:
12,系统显示“删除失败!
您所查找的人信息不存在!
输入要删除的学生的学号:
23,系统显示“删除成功!
已成功保存!
对功能7(添加学生信息)的测试:
16nanarj4112
30niniaq142
对功能8(退出系统)的测试:
选择退出系统,程序关闭。
2、对调试中主要问题进行总结
调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。
有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的结构体数组长度过低所造成的。
像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。
在调试过程中我遇到最大的问题出现在删除模块。
在运用“rt+”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。
这是由于“rt+”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。
后来我先用“rt”打开文件并读取文件中的数据,然后再用“wt”打开原文件将删除后的数据重新写入文件,最终检测运行成功。
3、对自己设计进行评价,指出合理和不足之处,提出改进的方案
本程序拥有很多的优点:
第一,它具有作为一个宿舍管理系统的各个功能,包括录入信息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。
可以方便的进行住宿学生信息的管理。
第二,它的各个功能模块在实现时非常方便,例如:
录入和添加学生信息可以自己控制录入和添加的人数;
统计学生信息可以分学号、班级、专业等进行统计等等。
第三,它也具有安全性,在进入学生信息管理系统之前要求输入账号和密码,所以非常安全,不会造成信息的外泄。
当然程序也有他的不足之处,比如密码不能回显“*”,这样很容易造成密码的丢失。
可以在密码模块中改为回显“*”形式,并且可以对密码进行算法加密,这样更能确保信息的安全。
4、在设计过程中的感受
“万事开头难”这句话在我编写程序的过程中得到了真正的体现。
在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。
但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。
程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。
短短的两周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的基础。
七、源程序清单
#include<
stdio.h>
conio.h>
stdlib.h>
string.h>
ctype.h>
io.h>
#defineNsizeof(structst_type)
voidinput();
voidsave(structst_type*head);
structst_type*openf();
voidfind();
voidchange();
voiddel();
voidadd();
voidscan();
{
intnum;
/*学生学号*/
charname[20];
charmajor[15];
intcla;
/*班级*/
intying;
/*所分入营号*/
intlian;
/*所分入连号*/
};
structst_type
structstudent_typemassage;
structst_type*next;
voidmain(void)
intchoice,i,n;
chars[10];
printf("
\n\n\n\n\n\n\t\t\t*学生军训信息管理系统*\n"
);
\n\n\n\n\n欢迎进入学生军训信息管理系统!
\n\n"
\t请选择进入方式:
\t\t\t1.普通用户登入\n"
\t\t\t2.管理员登入\n"
\n"
\t\t\t\t\t\t\t●●\n"
\t\t\t\t\t\t\t/█\\/█\\\n"
\t\t\t\t\t\t\t▅▆▇█████▇▆▅▃\n"
scanf("
%d"
&
choice);
switch(choice)
{
case1:
printf("
登入成功!
printf("
按任意键进入系统。
getch();
do
{
system("
cls"
printf("
\n\n*****军训信息管理系统*****\n\n"
1.浏览学生信息\n"
2.查询学生信息\n"
0.退出系统\n\n"
请选择...\n"
scanf("
switch(choice)
{
case1:
scan();
break;
case2:
find();
case0:
exit(0);
}
if(choice>
5)
printf("
没有此项选项!
}while
(1);
break;
case2:
请输入密码(三次错误后将关闭程序):
for(i=1;
i<
4;
i++)
{
for(n=0;
n<
6;
n++)
s[n]=getch();
*"
}
s[6]='
\0'
;
if(strcmp(s,"
123456"
)==0)
\n登入成功!
getch();
do
system("
\n1.录入学生信息\n"
2.浏览学生信息\n"
3.查询学生信息\n"
4.修改学生信息\n"
5.删除学生信息\n"
6.添加学生信息\n"
scanf("
switch(choice)
{
input();
case3:
case4:
change();
break;
case5:
del();
case6:
add();
}
if(choice>
printf("
}while
(1);
exit(0);
elseprintf("
\n密码错误!
\n请重新输入密码!
}
}
}
voidinput()/*录入信息模块*/
chara;
structst_type*head,*p1,*p2;
system("
head=p2=(structst_type*)malloc(N);
p1=(structst_type*)malloc(N);
请输入学生学号:
p1->
massage.num);
请输入学生姓名:
%s"
p1->
massage.name);
请输入学生专业:
massage.major);
请输入学生班级:
massage.cla);
请输入学生所分入营号:
massage.ying);
请输入学生所分入连号:
massage.lian);
while(p1->
massage.num!
=0)
p2->
next=p1;
p2=p1;
p1=(structst_type*)malloc(N);
\n是否继续输入?
(是选y,否选n)\n"
fflush(stdin);
scanf("
%c"
a);
if(a=='
n'
)
break;
system("
p2->
next=NULL;
free(p1);
save(head);
voidsave(structst_type*head)/*保存信息*/
structst_type*p;
FILE*fp;
fp=fopen("
1.txt"
"
wt"
if(fp==NULL)
不能打开文件,存储失败!
输入任意键返回主界面。
getch();
p=head->
next;
while(p!
=NULL)
fwrite(p,sizeof(structstudent_type),1,fp);
p=p->
fclose(fp);
getch();
structst_type*openf()/*打开文件*/
structst_type*p,*p1,*head;
head=p1=(structst_type*)malloc(N);
p=(structst_type*)malloc(N);
rt"
while((fread(p,sizeof(structstudent_type),1,fp)))
p1->
next=p;
p1=p;
p=(structst_type*)malloc(N);
p1->
free(p);
returnhead;
voidscan()/*浏览信息模块*/
intchoice;
structst_type*p,*q,t,*r,*head;
head=openf();
学生学号姓名专业班级分入营号连号\n\n"
%d%s%s%d%d%d\n"
p->
massage.num,p->
massage.name,p->
massage.major,p->
massage.cla,p->
massage.ying,p->
以上排序由录入数据的先后决定。
\n也可以选择以下为关键词升序查看:
1.学号\n"
2.班级\n"
3.所编入营号\n"
0.返回主界面\n\n"
if(choice>
3)
请重新选择...\n"
if(choice==0)
return;
case1:
for(p=head->
p;
p=p->
next)
for(q=p->
q;
q=q->
if(p->
massage.num>
q->
massage.num)
t=*p;
*p=*q;
*q=t;
r=p->
p->
next=q->
q->
next=r;
p=head->
for(q=p->
if(p->
massage.cla>
massage.cla)
t=*p;
*p=*q;
*q=t;
r=p->
p->
q->
p=head->
break;
case3:
massage.ying>
massage.ying)
\n\n输入任意键返回主界面。
voidfind()/*查询信息模块*/
intn,choice,i=0;
structst_type*p,*head;
您可以选择以下为关键词进行查找:
2.姓名\n"
3.班级\n"
4.所编入营号\n"
4)
printf("
请输入要查找的学生学号:
"
scanf("
n);
printf("
while(p!
massage.num==n)