1、山东交通学院课程设计报告前 言随着计算机技术的发展,可视编程技术占有了越来越重要的作用。Visual C+6.0 是一种功能强大行之有效的可视化编程工具。因此此软件是在 Visual C+6.0 环境下编写的。对于我们,随着学习的深入,已经大体掌握了 Visual C+6.0 环境下的程序开发。为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于 Visual C+6.0 环境的软件开发,先以字符统计软件作为开始,对 Visual C+6.0 环境和面向对象程序设计进行回忆和熟悉,使得在此基础上的下一个员工培训系统软件的开发进行的更加顺
2、利。本文档详细叙述了基于 Visual C+6.0 环境下的学生信息查询软件的设计过程以及程序源代码。本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。此次学生信息查询软件的开发目的是使我们用面向对象的方式来思考和解决问题的能力,并且可以掌握字符数组的使用、字符指针的使用、类的设计和使用以及 C 语言语法。本文档的安排如下:第一章 主要介绍了对面向对象 C 语言的主要特征,Visual C+6.0 编程环境以及该系统的各项功能。第二章 主要的介绍说明了学生信息查询系统软件的编程思想和系统的总体流程图以及对该流程图的详细介绍。第三章 主要介绍学生信息
3、查询系统软件的详细设计,各个分模块的单独流程图以及对设计和流程图的一些介绍。第四章 主要介绍了软件软件进行调试,运行程序并截图,显示运行界面和结果。第五章 是该论文作者对这次课程设计过程中的一些感受和体会等。 电信 061 孙旭明 060815121- 2 -1 系统概述该系统的功能是以菜单方式工作,输入密码验证正确进入菜单选择界面,用户通过选择数字来选择学生信息录入功能-输入学生基本信息,学生信息浏览功能-输出学生的基本信息,查询、排序功能-算法,按学号查询,按姓名查询。学生信息的删除与修改(可选项)的等基本的功能,从而实现用户的想法。在各项基本功能之下我们可以看到各种小的模块来满足用户的各
4、种需求,达到快速方便的效果。程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,学生信息查询系统和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感谢以及敬意。1.1 C 语言的主要特点(1)C 语言简洁、紧凑,使用方便、灵活。(2)预算符丰富。(3)数据类型丰富,具有现代语言的各种数据结构。(4)具有结构化的控制语句。(5)语法限制不太严格,程序设计自由度大。(6)C 语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能可以直接对硬件进行操作。(7)生成目标代码质量高,程序执行效率高。(8)用 C 语言编写的程序可移植性好(
5、与汇编语言相比) 。山东交通学院课程设计报告- 3 -1.2 Visual C+ 6.0 运行环境图 1 Visual C 6.0 运行环境2 概要设置2.1 总体设计思想(1) 学生信息管理系统的功能为显示主要操作页面,通过密码验证登陆界面,档案信息处理功能。通过密码验证登陆,可实现安全登录,方便可靠。学生信息处理功能包括输入学生信息,显示学生的档案信息,学生档案信息条件查询(分为:按学生姓名进行查询,按学生学号进行查询) ,更新学生档案信息。(2) 学生信息管理系统的功能模块有:系统登陆界面,美观大方,按 enter 键进入密码验证登陆界面,输入正确密码登陆主菜单选择框架界面,方便用户对程
6、序个功能进行选择,选择要实现的功能按 enter 键进入该功能。1. 输入学生档案信息。2. 显示学生的档案信息3. 学生档案信息条件查询4. 更新学生档案信息。0. 退出,谢谢使用!程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。电信 061 孙旭明 060815121- 4 -2.2 总体设计流程图学生信息管理系统密码登陆界面登陆主菜单选择框架界面输入信息模块显示信息模块条件查询模块更新信息模块退出系统模块从键盘输入信息输出信息至屏幕按学生学号查询按学生姓名查询修改学生信息插入学生信息将退出界面显示图 2 总体设计流程图该流程图为此次学生信息查询系统的总体流程图,用户进入界
7、面以后可以看到登陆密码界面,密码输入正确进入主菜单选择框架界面,1 为输入学生信息档案,2 为显示学生档案,3 为学生信息档案查询,4 为更新学生档案,0 为退出系统。用户可以根据自己的需求方便快捷的做出自己的选择。山东交通学院课程设计报告- 5 -3 系统详细设计3.1 头文件的引用和函数的声明#include/*标准输入输出函数库 */#include /*字符串函数库 */#include /*/#include static int m=0; struct record/*学生信息结构体*/ int num;char name30;char sex;float tel;int age;
8、char xibiebanji80; stu500; void password();void recordplatform();/*系统标题函数声名*/void xuanzekuangjia();/*选择框架函数声名*/void tuichuxitong();/*0.退出学生档案信息系统函数声名*/void shuruxinxi();/*1.输入学生档案信息函数声名*/void xianshixinxi();/*2.显示档案信息函数声名 */void tiaojianchaxun();/*3.学生档案信息条件查询函数声名*/void gengxinxinxi();/*4.更新学生信息函数声名
9、 */该函数是对头文件的加载和引用,定义结构体、常量和变量,并对他们进行初始化工作。3.2 系统主调函数/*-主调函数-*/*主函数*/void main() printf(“n“);printf(“n“);printf(“n“);printf(“-大家好- - -n“);printf(“n“);printf(“n“);printf(“n“);printf(“n“);电信 061 孙旭明 060815121- 6 -printf(“n“);printf(“ 老师您好!n“);printf(“n“);printf(“n“);printf(“n“);printf(“n“);printf(“n“);
10、printf(“ -【学生档案信息管理系统】-n“);printf(“n“);system(“pause“); system(“cls“); fflush(stdin); password();/*密码登陆验证函数调用*/recordplatform();/*系统标题函数调用*/xuanzekuangjia();/*选择框架函数调用*/该函数为程序的主函数,主要实现了对整个程序的运行控制,以及相关功能模块的调用。3.3 密码验证函数/*通过对比字符串数组比较实现密码校验*/void password()int s,g=0;char str120=“123456 “;char str220;do
11、 printf(“ *n“);printf(“n“);printf(“ 请 输 入 密 码 :n“);printf(“n“);printf(“ *n“);gets(str2);/* while()if(str1g=str2g)s=1;else山东交通学院课程设计报告- 7 - s=0;break;g+;*/if(!strcmp(str1,str2) /*比较输入的密码 str1 和设定的密码 str2, 输出“密码正确” 。*/printf(“密码输入正确n“);s=1;elses=0;printf(“密码输入错误,请从新输入n“);while(s=0);密码登陆函数流程图:密码函数开始登陆密
12、码 重新登陆密码正确密码错误该函数为密码登陆函数模块,当输入的密码不正确的时候,系统会提示“密码输入错误,请重新输入” ,直到输入正确密码为止。3.4 选择框架函数/*-程序名称-*/void recordplatform()printf(“n“);printf(“n“);printf(“ - n“);printf(“ |* 学生档案信息管理系统 *| n“);电信 061 孙旭明 060815121- 8 -printf(“ - n“);printf(“n“);printf(“n“);/*-选择框架-*/void xuanzekuangjia() int j,k;char w;printf(
13、“ - n“);printf(“ 欢迎使用学生档案信息管理系统 n“); printf(“ - n“);printf(“ 1.输入学生档案信息 n“); printf(“ - n“);printf(“ 2.显示学生的档案信息 n“); printf(“ - n“);printf(“ 3.学生档案信息条件查询 n“); printf(“ - n“); printf(“ 4.更新学生档案信息 n“); printf(“ - n“);printf(“ 0.退出,谢谢使用 ! n“); printf(“ - n“);山东交通学院课程设计报告- 9 -Sleep(500); /*/printf(“请选择
14、你要进行的工作:n“);do /*输入不能空,也不能是字母,当输入字母的 时候,会提示“ 不能为字母,请重新输入” 。*/scanf(“%d“, k=1;while(w=getchar()!=n)k=0;if(k=0)printf(“不能为字母,请重新输入n“);elsebreak;while(k=0);switch(j) /*运用 switch 语句根据需要进行菜单选择*/case 1: system(“cls“);shuruxinxi();system(“cls“); system(“pause“); system(“cls“);xuanzekuangjia();break;/输入学生档案
15、信息函数调用case 2: system(“cls“);xianshixinxi();system(“pause“);system(“cls“);xuanzekuangjia();break;显示档案管理系统选择框架函数调用case 3: system(“cls“);tiaojianchaxun();system(“pause“);system(“cls“);xuanzekuangjia();break; /*学生档案信息条件查询函数调用 */ case 4: system(“cls“);gengxinxinxi();system(“pause“);system(“cls“);xuanzeku
16、angjia();break; /*更新学生档案信息函数调用 */ case 0: system(“cls“);tuichuxitong();break; /*退出程序函数调用*/ 选择框架函数流程图:电信 061 孙旭明 060815121- 10 -选择框架函数开始用户选择1 输入信息 2 显示信息 3 查询信息 4 更新信息 0 退出进入学生档案管理系统时显示程序名称和选择框架主菜单,提示用户进行选择,完成相应任务。此代码被 main()函数调用。3.5 输入学生信息函数/*-输入学生档案信息-*/调用函数输入学生信息void shuruxinxi() int k;char ans,w;
17、ans=y;doprintf(“请输入第%d 个学生的信息:n“,m+1);do /*学号的输入*/ printf(“请输入学生的学号 num:“);/scanf(“%d“,/结构体do scanf(“%d“, /*输入数据*/k=1; while(w=getchar()!=n)k=0;if(k=0)printf(“不能为字母,请重新输入n“);elsebreak; while(k=0);if(stum.num 1000 | stum.num 1000 | stum.num 160000000000| stum.tel16000000000 | stum.tel :“); do scanf(“
18、%d“,k=1;电信 061 孙旭明 060815121- 12 -while(w=getchar()!=n)k=0;if(k=0)printf(“不能为字母,请重新输入n“);elsebreak;while(k=0);if(stum.age 100 | stum.age 100 | stum.age num);printf(“%14s“,p-xibiebanji);printf(“%10s“,p-name);printf(“%12c“,p-sex);printf(“%7d“,p-age);printf(“%17fn“,p-tel); 显示信息流程图:显示信息函数开始输出学生信息结束当用户进入
19、查询信息模块时,系统会显示内部存储的内容。3.7 学生信息条件查询函数/*-学生档案信息条件查询-*/void tiaojianchaxun()int i,j,k;struct record *p=NULL;char Name30;printf(“请输入 1 或 0 两个数字,输入 1 进行学号查询,输入 0 进行姓名查询“);scanf(“%d“,do电信 061 孙旭明 060815121- 14 -if(k!=1scanf(“%d“,while(k!=1if(k=1)do/*按学生学号进行查询*/ printf(“请输入学号进行查询(11000)号:-“);scanf(“%d“,for(
20、j=0;jnum);printf(“%14s“,p-xibiebanji);printf(“%10s“,p-name);printf(“%12c“,p-sex);printf(“%7d“,p-age);printf(“%17fn“,p-tel);break;if(stuj.num!=i)printf(“您输入的学号不存在-:“);while(stuj.num!=i);if(k=0)/*按学生姓名进行查询*/ 山东交通学院课程设计报告- 15 -doprintf(“请输入你所要查询的学生的姓名:“);scanf(“%s“,Name);for(j=0;jnum);printf(“%14s“,p-x
21、ibiebanji);printf(“%10s“,p-name);printf(“%12c“,p-sex);printf(“%7d“,p-age);printf(“%17fn“,p-tel);break;if(strcmp(stuj.name,Name)!=0)printf(“对不起您输入的学生姓名不存在。“);while(strcmp(stuj.name,Name)!=0);查询信息流程图:选择按姓名还是学号查询选择查询函数开始输入错误重新输入0 按姓名查询 1 按学号查询输出信息 输出信息当用户执行此查询任务时,系统会提醒用户进行查询字段的选择,即按学号或姓名进行查询。若此学生档案信息记录
22、存在,则会显示该省的档案信息。此函数完成了电信 061 孙旭明 060815121- 16 -节点定位的功能。3.8 更新学生信息函数/*-更新学生档案信息-*/void gengxinxinxi()int i,j,k;struct record *p=0;printf(“请输入要更改的学生的学号(110)号:-“); /*输入并校验该生信息*/scanf(“%d“,dofor(j=0;jnum);printf(“%14s“,p-xibiebanji);printf(“%10s“,p-name);printf(“%7d“,p-age);printf(“%17fn“,p-tel);break;i
23、f(stuj.num!=i)printf(“该学号不存在,请重新输入:“);scanf(“%d“,while(stuj.num!=i);printf(“请输入更改后学生的新信息:n“);scanf(“%d%s%s%d%f“,dofor(k=0;knum);printf(“%14s“,p-xibiebanji);printf(“%10s“,p-name);printf(“%7d“,p-age);printf(“%17fn“,p-tel);更新信息流程图:更改信息函数开始输入要更改的学号 输入错误输入更改后信息 输入错误重新输入重新输入输出更改后信息完成在更新学生档案信息的操作中,系统会先按输入的
24、学号查询到该生档案信息记录,然后按顺序填入要修改的学生信息。电信 061 孙旭明 060815121- 18 -3.9 退出学生信息系统函数/*-退出学生档案信息管理系统调用函数-*/void tuichuxitong()printf(“ -【学生档案信息管理系统】-n“);printf(“n“);printf(“n“);printf(“ 老师再见!n“);printf(“ Bye-Byen“);printf(“n“);printf(“ n“);printf(“n“);printf(“ n“);printf(“ n“);printf(“n“);printf(“ n“);printf(“ 山 电
25、 n“);printf(“ 东 信 n“);printf(“ 交 0 n“);printf(“ 通 6 n“);printf(“ 学 1 n“);printf(“ 院 班 n“);printf(“ n“);printf(“ n“);printf(“ 再见n“);山东交通学院课程设计报告- 19 -4 程序调试4.1 学生信息管理系统初始界面当进入学生档案管理系统时,其系统初始界面如图图 411 所示。按任意键进入密码验证校验面。图 41 学生档案管理系统初始界面图4.2 密码登陆界面输入预先设定好的密码再按 Enter 进入系统。如果输入不正确,则显示“密码输入错误,请重新入” 。图 42 密
26、码登陆界面图4.3 登陆主菜单选择框架界面进入主菜单选择框架界面后,用户可选择 04,调用相应功能进行操作。当输入为 0 时,退出学生档案管理系统。电信 061 孙旭明 060815121- 20 -图 43 登陆主菜单选择框架界面图4.4 输入信息模块当用户输入 1 并按 Enter 键后,即可进入数据输入界面。其数据输入过程如图所示图 441 所示,这里输入了一条学生的档案信息。图 44 输入信息模块图4.5 显示信息模块当用户执行了输入记录后,退处输入信息模块后,输入 2 并按 Enter 键,查看当前单链表中学生档案信息,如图 451 所示,此时表中有 1 条记录。图 45 显示信息模
27、块图山东交通学院课程设计报告- 21 -4.6 条件查询模块当用户输入 3 并按 Enter 键后,即可进入条件查询界面。校验输入错误信息,可按学号或姓名进行信息查询。图 461 条件查询模块登陆界面图图 462 条件查询模块按学号进行查询界面图图 463 条件查询模块按姓名进行查询界面图4.7 更新信息模块当用户输入 4 并按 Enter 键后,即可进入更新信息界面。其更新过程如图471 图 472 所示。电信 061 孙旭明 060815121- 22 -图 471 更新信息模块选择界面图图 472 更新信息模块执行界面图4.8 输入信息容错性检测输入查询信息容错性检测,输入信息容错性检测
28、,保证输入信息的准确性。图 48 输入查询信息容错性检测图4.9 退出系统模块图 49 退出系统模块图山东交通学院课程设计报告- 23 -5 总结为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期两周的 C 课程设计实习,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。在此次字符统计程序开发过程中,有很多东西值得我们思考并总结。开发过程大体可分为以下几个步骤:(1) 思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的 C 语言基本操作符、语句等。(2) 画出总体设计方案流程图
29、:用流程图的形式展现你的基本编程思想。(3) 流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现并想好实现的关键代码。(4) 编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中我发现总体设计和模块思想会存在很多问题,我会不断改进如何实现各函数功能,达到预期效果。(5)代码的调试:在 C 环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。(6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化增强程序的新意与可行性。 通过这次课程设计,使我们更加熟悉的掌握了 C 语言的运用。帮助我们熟悉了更多 C 语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。