收藏 分销(赏)

c语言课程设计报告军训管理系统.doc

上传人:二*** 文档编号:4571975 上传时间:2024-09-30 格式:DOC 页数:30 大小:457KB 下载积分:5 金币
下载 相关 举报
c语言课程设计报告军训管理系统.doc_第1页
第1页 / 共30页
本文档共30页,全文阅读请下载到手机保存,查看更方便
资源描述
.. - 郵電大學 C语言课程设计报告书 学院名称 计算机学院 学生XX 专业名称 班级 学号 指导教师 时间 2013年06月03日至 2013年06月12日 实验题目:学生军训信息管理系统 一、实验目的 通过本课程设计,强化上机动手能力,使学生在理论和实践的根底上进一步稳固?C语言程序设计?课程学习的容,掌握工程软件设计的根本法。通过这次实习练习,可以更进一步的熟悉所学的知识,还可以加强和稳固知识。长达两的上机练习,为我们提供了很好的编程环境。更好的了解编程的意义,为将来参加实践活动以及以后的毕业设计打下坚实的根底。 二、实验容 我设计的是“学生军训信息管理系统〞,主要是针对军训学生信息的管理,适用对象主要是学校进展军训的学生,以便学校对军训学生的管理。包括学生的XX、学号、专业、班级、所分入的营号和连号等。在编写过程中主要运用C语言的根本知识有:数据类型〔整形、实型、字符型、指针、数组、构造等〕;运算类型〔算术运算、逻辑运算、自增自减运算、赋值运算等〕;程序构造〔顺序构造、判断选择构造、循环构造〕;大程序的功能分解法〔即函数的调用与使用〕等。 三、需求分析 该程序是由C语言编写的一个军训学生信息查询软件,本程序在Microsoft Visual C++ 6.0下运行,其主要功能是实现对学生信息的录入、浏览、查询、修改、删除、添加。其中浏览可以分别以学号、班级、所分入营号为关键字升序浏览学生信息。 四、概要设计 1、案设计 主函数 密码模块 查询模块 浏览模块 修改模块 删除模块 添加模块 退出系统 录入模块 按学号 按班级 按班级 返 回 按营号 返 回 按学号 按营号 2、数据构造说明 程序中数据主要是学生信息,具体属于类型如下: struct student_type int num; /*学生学号*/ char name[20]; /*学生XX*/ char major[15]; /*专业*/ int cla; /*班级*/ intying; /*所分入营号*/ intlian; /*所分入连号*/ 3、模块功能说明 第一录入模块:调用input(),对军训学生信息进展录入以及保存。 第二浏览模块:调用scan(),浏览军训学生信息〔可按录入、学号、班级、营号式查看〕。 第三查询模块:调用find(),按学号、XX、班级、营号查询军训学生信息。 第四修改模块:调用change(),对某一学生信息进展修改操作。 第五删除模块:调用del(),对某一学生信息进展删除操作。 第六添加模块:调用add(),添加学生信息。 五、详细设计及运行结果 1.函数之间调用关系图 修改函数 scan() 录入函数 input() 浏览函数 scan() 删除函数 scan() 主函数 main() 添加函数 scan() 查询函数〔含排序〕 find() 2.局部模块流程图及运行结果图示 登陆界面 开场 主函数流程图 功能选择 选1 录入模块 选2 浏览模块 查询模块 选3 选4 修改模块 删除模块 选5 添加模块 选6 选0 完毕 主页界面(管理员界面) 录入模块 输入学号 输入XX 输入专业 输入班级 输入营号 输入连号 n 是否继续输入 完毕 y 输入学号 输入XX 输入专业 输入班级 输入营号 输入连号 录入界面 浏览模块〔排序〕 功能选择 按学号排 选1 选2 按班级排 选3 按营号排 选0 回主界面 完毕 浏览界面 查找模块 功能选择 按学号 选1 选2 按XX 选3 按班级 选4 按营号 选0 回主界面 完毕 查找界面 修改模块 功能选择 按学号 选1 按XX 选2 选3 按专业 选4 按班级 选5 按营号 选6 按连号 回主界面 完毕 修改界面 六、调试情况,设计技巧及体会 1、测试数据 对功能1〔密码设置〕的测试:选择式一,不需密码直接进入学生查看界面;选择式二,输入一组错误账号密码系统显示“密码有误!请重新输入密码!〞,三次错误后将退出系统。在输入正确密码后,系统显示“登陆成功〞并进入主界面。 对功能2〔录入学生信息〕的测试:按照先后顺序分别输入学生信息: 学号 XX 专业 班级 营号 连号 88 huan wl 5 3 2 23 yeye sm 2 5 1 2 huaw tg 3 2 3 45 lvwu wl 5 5 2 对功能3〔浏览学生信息〕的测试:按照录入顺序分别输出学生信息: 学号 XX 专业 班级 营号 连号 88 huan wl 5 3 2 23 yeye sm 2 5 1 2 huaw tg 3 2 3 45 lvwu wl 5 5 2 同时屏幕显示“以上排序由录入数据的先后决定。也可选择以下为关键词升序查看:1.学号 2.班级 3.所编入营号 0.返回主界面 选择1按照学号由小到大输出学生信息 选择2按照班级由小到大输出学生信息 选择3按照营号由小到大输出学生信息 选择0返回主界面 对功能4〔查询学生信息〕的测试:查询5营的信息,系统显示为: 学号 XX 专业 班级 营号 连号 23 yeye sm 2 5 1 45 lvwu wl 5 5 2 对功能5〔修改学生信息〕的测试:输入要修改学生的学号11:,系统显示“对不起!您所查找的人不存在〞。输入修改学生学号:88,系统显示出该学生信息。选择修改学号为:13,系统显“已成功保存!〞。 对功能6〔删除学生信息〕的测试:输入要删除学生的学号:12,系统显示“删除失败!您所查找的人信息不存在!〞。输入要删除的学生的学号:23,系统显示“删除成功!已成功保存!〞。 对功能7〔添加学生信息〕的测试:按照先后顺序分别输入学生信息: 学号 XX 专业 班级 营号 连号 16 nana rj 4 1 12 30 nini aq 1 4 2 对功能8〔退出系统〕的测试:选择退出系统,程序关闭。 2、对调试中主要问题进展总结 调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的构造体数组长度过低所造成的。像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。在调试过程中我遇到最大的问题出现在删除模块。在运用“rt+〞翻开文件并对某一数据进展删除后,往往显示会多显示一行数据。这是由于“rt+〞写数据时只会覆盖数据而不会去除原文件数据,因此文件最后一行数据总会保存在原文件中。后来我先用“rt〞翻开文件并读取文件中的数据,然后再用“wt〞翻开原文件将删除后的数据重新写入文件,最终检测运行成功。 3、对自己设计进展评价,指出合理和缺乏之处,提出改良的案 本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能,包括录入信息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。可以便的进展住宿学生信息的管理。第二,它的各个功能模块在实现时非常便,例如:录入和添加学生信息可以自己控制录入和添加的人数;统计学生信息可以分学号、班级、专业等进展统计等等。第三,它也具有平安性,在进入学生信息管理系统之前要求输入账号和密码,所以非常平安,不会造成信息的外泄。当然程序也有他的缺乏之处,比方密码不能回显“*〞,这样很容易造成密码的丧失。可以在密码模块中改为回显“*〞形式,并且可以对密码进展算法加密,这样更能确保信息的平安。 4、在设计过程中的感受 “万事开头难〞这句话在我编写程序的过程中得到了真正的表达。在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对根底知识掌握不扎实所造成的。但是随后几天里,我对课本知识进展了回忆并不时的向教师和同学进展请教,慢慢的对编写程序也开场得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。 短短的两实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的根底。 七、源程序清单 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include<io.h> #define N sizeof(struct st_type) void input(); void save(struct st_type *head); struct st_type *openf(); void find(); void change(); void del(); void add(); void scan(); struct student_type { int num; /*学生学号*/ char name[20]; /*学生XX*/ char major[15]; /*专业*/ int cla; /*班级*/ int ying; /*所分入营号*/ int lian; /*所分入连号*/ }; struct st_type { struct student_type massage; struct st_type *next; }; void main(void) { int choice,i,n; char s[10]; printf("\n\n\n\n\n\n\t\t\t *学生军训信息管理系统*\n"); printf("\n\n\n\n\n欢送进入学生军训信息管理系统!\n\n"); printf("\t 请选择进入式:\n\n"); printf("\t\t\t 1.普通用户登入\n"); printf("\t\t\t 2.管理员登入\n"); printf("\n"); printf("\t\t\t\t\t\t\t ●● \n"); printf("\t\t\t\t\t\t\t /█\\/█\\ \n"); printf("\t\t\t\t\t\t\t▅▆▇█████▇▆▅▃\n"); scanf("%d",&choice); switch(choice) { case 1: printf("登入成功!\n"); printf("按任意键进入系统。\n"); getch(); do { system("cls"); printf("\n\n *****军训信息管理系统*****\n\n"); printf(" 1.浏览学生信息\n"); printf(" 2.查询学生信息\n"); printf(" 0.退出系统\n\n"); printf("请选择...\n"); scanf("%d",&choice); switch(choice) { case 1: scan(); break; case 2: find(); break; case 0: exit(0); } if(choice>5) printf("没有此项选项!\n"); }while(1); break; case 2: printf("请输入密码(三次错误后将关闭程序):\n"); for(i=1;i<4;i++) { for(n=0;n<6;n++) { s[n]=getch(); printf("*"); } s[6] = '\0'; if(strcmp(s,"123456") == 0) { printf("\n登入成功!\n"); printf("按任意键进入系统。\n"); getch(); do { system("cls"); printf("\n\n *****军训信息管理系统*****\n\n"); printf("\n 1.录入学生信息\n"); printf(" 2.浏览学生信息\n"); printf(" 3.查询学生信息\n"); printf(" 4.修改学生信息\n"); printf(" 5.删除学生信息\n"); printf(" 6.添加学生信息\n"); printf(" 0.退出系统\n\n"); printf("请选择...\n"); scanf("%d",&choice); switch(choice) { case 1: input(); break; case 2: scan(); break; case 3: find(); break; case 4: change();break; case 5: del();break; case 6: add();break; case 0: exit(0); } if(choice>5) printf("没有此项选项!\n"); }while(1); exit(0); } else printf("\n密码错误!\n请重新输入密码!\n"); } } } void input() /*录入信息模块*/ { char a; struct st_type *head,*p1,*p2; system("cls"); head=p2=(struct st_type *)malloc(N); p1=(struct st_type *)malloc(N); printf("请输入学生学号:\n"); scanf("%d",&p1->massage.num); printf("请输入学生XX:\n"); scanf("%s",p1->massage.name); printf("请输入学生专业:\n"); scanf("%s",p1->massage.major); printf("请输入学生班级:\n"); scanf("%d",&p1->massage.cla); printf("请输入学生所分入营号:\n"); scanf("%d",&p1->massage.ying); printf("请输入学生所分入连号:\n"); scanf("%d",&p1->massage.lian); while(p1->massage.num!=0) { p2->next=p1; p2=p1; p1=(struct st_type *)malloc(N); printf("\n是否继续输入?(是选y,否选n)\n"); fflush(stdin); scanf("%c",&a); if(a=='n') break; system("cls"); printf("请输入学生学号:\n"); scanf("%d",&p1->massage.num); printf("请输入学生XX:\n"); scanf("%s",p1->massage.name); printf("请输入学生专业:\n"); scanf("%s",p1->massage.major); printf("请输入学生班级:\n"); scanf("%d",&p1->massage.cla); printf("请输入学生所分入营号:\n"); scanf("%d",&p1->massage.ying); printf("请输入学生所分入连号:\n"); scanf("%d",&p1->massage.lian); } p2->next=NULL; free(p1); save(head); } void save(struct st_type *head) /*保存信息*/ { struct st_type *p; FILE *fp; fp=fopen("1.txt","wt"); if(fp==NULL) { printf("不能翻开文件,存储失败!\n"); printf("输入任意键返回主界面。\n"); getch(); } p=head->next; while(p!=NULL) { fwrite(p,sizeof(struct student_type),1,fp); p=p->next; } fclose(fp); printf("已成功保存!\n\n"); printf("输入任意键返回主界面。\n"); getch(); } struct st_type *openf() /*翻开文件*/ { FILE *fp; struct st_type *p,*p1,*head; head=p1=(struct st_type *)malloc(N); p=(struct st_type *)malloc(N); fp=fopen("1.txt","rt"); while((fread(p,sizeof(struct student_type),1,fp))) { p1->next=p; p1=p; p=(struct st_type *)malloc(N); } p1->next=NULL; free(p); fclose(fp); return head; } void scan() /*浏览信息模块*/ { int choice; struct st_type *p, *q, t, *r,*head; system("cls"); head=openf(); p=head->next; printf(" 学生学号 XX 专业 班级 分入营号 连号\n\n"); while(p!=NULL) { printf(" %d %s %s %d %d %d\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); p=p->next; } printf("以上排序由录入数据的先后决定。\n也可以选择以下为关键词升序查看:\n"); printf(" 1.学号\n"); printf(" 2.班级\n"); printf(" 3.所编入营号\n"); printf(" 0.返回主界面\n\n"); printf("请选择...\n"); scanf("%d",&choice); if(choice>3) { printf("没有此项选项!\n"); printf("请重新选择...\n"); scanf("%d",&choice); } if(choice==0) return; switch(choice) { case 1: for(p = head->next; p; p = p->next) for(q = p->next; q; q = q->next) if(p->massage.num > q->massage.num) { t = *p; *p = *q; *q = t; r = p->next; p->next = q->next; q->next = r; } p = head->next; break; case 2: for(p = head->next; p; p = p->next) for(q = p->next; q; q = q->next) if(p->massage.cla > q->massage.cla) { t = *p; *p = *q; *q = t; r = p->next; p->next = q->next; q->next = r; } p = head->next; break; case 3: for(p = head->next; p; p = p->next) for(q = p->next; q; q = q->next) if(p->massage.ying> q->massage.ying) { t = *p; *p = *q; *q = t; r = p->next; p->next = q->next; q->next = r; } p = head->next; break; } printf(" 学生学号 XX 专业 班级 分入营号 连号\n\n"); while(p!=NULL) { printf(" %d %s %s %d %d %d\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); p=p->next; } printf("\n\n输入任意键返回主界面。\n"); getch(); } void find() /*查询信息模块*/ { int n,choice,i=0; char name[20]; struct st_type *p,*head; system("cls"); head=openf(); p=head->next; printf("您可以选择以下为关键词进展查找:\n"); printf(" 1.学号\n"); printf(" 2.XX\n"); printf(" 3.班级\n"); printf(" 4.所编入营号\n"); printf(" 0.返回主界面\n\n"); printf("请选择...\n"); scanf("%d",&choice); if(choice>4) { printf("没有此项选项!\n"); printf("请重新选择...\n"); scanf("%d",&choice); } if(choice==0) return; switch(choice) { case 1:printf("请输入要查找的学生学号:"); scanf("%d",&n); printf("\n"); while(p!=NULL) { if(p->massage.num==n) { i++; if(i==1) printf(" 学生学号 XX 专业 班级 分入营号 连号\n\n"); printf(" %d %s %s %d %d %d\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); } p=p->next; } if(i==0) { printf("对不起!您所查找的人不存在!\n"); printf("\n输入任意键返回主界面。\n"); getch(); return; } break; case 2: printf("请输入要查找的学生XX:"); scanf("%s",name); printf("\n"); while(p!=NULL) { if(strcmp(p->massage.name,name)==0) { i++; if(i==1) printf(" 学生学号 XX 专业 班级 分入营号 连号\n\n"); printf(" %d %s %s %d %d %d\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); } p=p->next; } if(i==0) { printf("对不起!您所查找的人不存在!\n"); printf("\n输入任意键返回主界面。\n"); getch(); return; } break; case 3:printf("请输入要查找的班级:"); scanf("%d",&n); printf("\n"); while(p!=NULL) { if(p->massage.cla==n) { i++; if(i==1) printf(" 学生学号 XX 专业 班级 分入营号 连号\n\n"); printf(" %d %s %s %d %d %d\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); } p=p->next; } if(i==0) { printf("对不起!您所查找的班级不存在!\n"); printf("\n输入任意键返回主界面。\n"); getch(); return; } break; case 4: printf("请输入要查找的营号:"); scanf("%d",&n); printf("\n"); while(p!=NULL) { if(p->massage.ying==n) { i++; if(i==1) printf(" 学生学号 XX 专业 班级 分入营号 连号\n\n"); printf(" %d %s %s %d %d %d\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); } p=p->next; } if(i==0) { printf("对不起!您所查找的营不存在!\n"); printf("\n输入任意键返回主界面。\n"); getch(); return; } break; } printf("\n输入任意键返回主界面。\n"); getch(); } void change() /*修改信息模块*/ { int choice,num; struct st_type *p,*head; system("cls"); head=openf(); p=head->next; printf("请输入要修改的学生学号:\n"); scanf("%d",&num); printf("\n"); while(p!=NULL) { if(p->massage.num==num) { printf(" 学生学号 XX 专业 班级 分入营号 连号\n\n"); printf(" %d %s %s %d %d %d\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); break; } p=p->next; } if(p==NULL) { printf("对不起!您所查找的人不存在!\n"); printf("\n输入任意键返回主界面。\n"); getch(); return; } printf("\n请输入选择需要修改的地:\n"); printf(" 1.学号\n"); printf(" 2.XX\n"); printf(" 3.专业\n"); printf(" 4.班级\n"); printf(" 5.所编入营号\n"); printf(" 6.所编入连号\n"); scanf("%d",&choice); switch(choice) { case 1: printf("请输入修改的值:"); scanf("%d",&p->massage.num); printf("修改成功!修改后信息为:\n"); printf(" %d %s %s %d %d %d\n\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); save(head); break; case 2: printf("请输入修改的值:"); scanf("%s",p->massage.name); printf("修改成功!修改后信息为:\n"); printf(" %d %s %s %d %d %d\n\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->massage.ying,p->massage.lian); save(head); break; case 3: printf("请输入修改的值:"); scanf("%s",p->massage.major); printf("修改成功!修改后信息为:\n"); printf(" %d %s %s %d %d %d\n\n",p->massage.num,p->massage.name,p->massage.major,p->massage.cla,p->m
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服