C语言大作业学生信息管理系统.docx
《C语言大作业学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言大作业学生信息管理系统.docx(39页珍藏版)》请在冰豆网上搜索。
C语言大作业学生信息管理系统
《程序设计综合课程设计》报告
学生姓名:
__________________
______________________
学生班级:
______________________
____________
____________
学生学号:
____________
指导教师:
______
2014年6月22日
前言2
第1章VisualC++6.0简介及其优点3
第2章课程设计的目的和要求4
2.1课程设计目的4
2.2课程设计的要求5
第3章课程设计任务内容6
3.1需求分析6
3.2可行性分析6
第4章软件使用说明7
第5章总结17
附录源程序
学生信息管理系统
前言
学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。
特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。
其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。
随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。
这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。
作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。
第1章VisualC++6.0简介及其优点
VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发平台有些软件就是这个编来的...另外还有VB,VF.只是使用不同语言...但是,
vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、
COM等的知识,难度比较大。
Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。
VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC++不是门语言,虽然它和C++之间有密切的关系,
如果形象点比喻的话,可以C++看作为一种”工业标准”,而VC++则是某种操作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。
VC++应用程序的开发主要有两种模式,一种是WINAPI方式,另一种则是MFC方式,传统的WINAPI开发方式比较繁琐,而MFC则是对WINAPI再次封装,所以MFC相对于WINAPI开发更具备效率优势,但为了对WINDOWS开发有一个较为全面细致的认识,笔者在这里还是以讲解WINAPI的相关内容为主线。
要想学习好VC必须具备良好的C/C++的基础,必要的英语阅读能力也是必不可少的,因为大量的技术文档多以英文形式发布。
vc6.0的优点是界面简洁,占用资源少,操作方便。
第2章课程设计的目的和要求
2.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握;
2.掌握C语言编程和程序调试的基本技能;
3.利用C语言进行基本的软件设计;
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力。
通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!
更加了解了c语言的好处和其可用性!
同时增加了同学之间的团队合作精神!
更加也体会到以后在工作中团队合作的重要性和必要性!
通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
为后续各门计算机课程的学习和毕业设计打下坚实基础。
学生信息管理系统是一个教育单位不可缺少的部分。
一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。
所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:
效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点。
例如:
检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。
为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量。
2.2课程设计的要求
本课程设计是《C语言程序设计》课程实践环节的深化和延续。
此次课程设计的目的是以C程序设计语言为基础,通过完成具有一定难度的课程设计题目的功能描述、总体设计、程序编写及调试工作,加深对C语言相关知识的理解与VisualC++集成开发环境的使用,重点掌握文件操作函数的熟练运用,并养成良好的程序设计习惯,提高自我分析问题、解决问题的能力,为进一步学习《高级编程技术》及其相关课程打下良好基础
掌握面向对象程序设计的基本方法,熟练掌握C++编程工具,根据问题进行学习,拓广、深化,独立完成一个小型应用程序的设计、编码和测试,为以后学习软件工程打下实践基础
系统说明书要求提交打印版或手写版(这是检查作业的依据)。
内容包括:
系统需求描述(问题描述),系统结构设计(类体系设计),类的详细设计(各类定义的基本功能,即主要数据和函数功能描述,以及类和类之间的交互),拟采用开发平台(VisualC++)
作业报告:
根据原有的系统设计,编码阶段的工作,整理书写作业报告,内容包括:
问题描述,系统设计,使用说明,讨论,最后提交(电子版):
实验报告,
基本要求:
1、要求利用C语言面向过程的编程思想来完成系统的设计;2、突出C语言的函数特征,以多个函数实现每一个子功能;3、画出功能模块图;
4、进行简单界面设计,能够实现友好的交互;5、具有清晰的程序流程图和数据结构的详细定义;6、熟练掌握C语言对文件的各种操作。
7、分析程序的功能要求,划分程序功能模块。
8、代码的编写。
定义数据结构和各个功能子函数。
9、程序的功能调试;10、完成系统总结报告以及使用说明书。
第3章课程设计任务内容
3.1需求分析
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。
使原本的旧的管理方法越来越不适应现在社会的发展。
许多人还停留在以前的手工操作。
这大大地阻碍了人类经济的发展。
为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。
(一)教育系统学生管理现状分析
学校工作流程分析
学校工作总体规划由教务人员在学生信息管理系统中完成对运行教务处所需的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动都将在这进行操作。
新的学年,教务人员首先加入年级信息,然后编排班级,再对来校学生进行基本的信息录入,新生入学后由教务人员在学籍系统中完成新学生信息的维护。
(二)学校具体需求分析
学生:
对各科成绩的查询
任课老师:
输入并维护所教科目的学生成绩
教务处:
学校全体成员的信息管理,并对任课老师,班主任等输入的信息进行存库,对学生的信息进行必要的维护。
通过研究调查,本系统需以下功能:
综合学生信息、学生成绩以及信息查询等信息。
方便用户了解和管理学生的全面动态信息。
良好的界面设计,更人性化的设计理念,使用户拥有更轻松的使用心情。
3.2可行性分析
目的:
可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能解决。
经济性:
由于学校等中小型管理系统并不复杂,且VisualC++6.0本身要求的运行环境不高,所以一般Windows2000以上的系统环境都可以使用。
实用性:
本学生信息管理系统管理系统无太多复杂的操作要求,也没有过分花哨的装饰品,人性化的设计界面可以使操作者轻易运用自如
图3-1功能图
第4章软件使用说明
1、进入程序后显示
2.选择进入程序身份
3.出入密码
4.进入管理员模式
5.添加信息
6.修改信息
7.删除信息
8.列出所有信息
9.查找指定学号
10.查找指定姓名
11.修改密码
12.备份信息
13.读取备份
14.初始化信息
15.退出程序
第5章总结
经过一个星期的上机实践学习,使我对c语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
附录源程序
1.
#include
#include
externstructstudent//声明结构体
{
longnum;//学号
charname[10];//姓名
intage;//年龄
intsex;//性别
intyear;//入学年份
charaddress[10];//地址
}stu[1000],temp;
externinttotal;//声明total
voidSave();//保存并退出
voidEditInf();//编辑信息
voidInfSearch();//查询信息
voidcodeinput();
voidEncry();
voidCCode();//修改密码
voidReadBackup();//读取备份
voidWriteBackup();//备份信息
voidDelInf();//删除信息
voidSearchNum();//查找学号,该函数在Search.cpp中
voidSearchName();//查找姓名
staticvoidAddInf();//添加信息
staticvoidAmendInf();//修改信息
voidInputStu(intn);//录入信息函数
voidPutStu(intn);//输出信息
staticvoidListAll();//输出所有信息
voidAdminMode()
{
intselect,flag=1;
while(flag)
{
fflush(stdin);
system("cls");//清屏,使用此函数需包含stdlib.h
printf("当前是管理员模式\n");
printf("当前是主系统功能菜单\n");
printf("--------------------------------------------------------\n");
printf("╔═══════╗╔═══════╗╔═══════╗\n");
printf("║1.添加信息║║2.修改信息║║3.删除信息║\n");
printf("╚═══════╝╚═══════╝╚═══════╝\n");
printf("╔═══════╗╔═══════╗╔═══════╗\n");
printf("║4.列出所有信息║║5.查找指定学号║║6.查找指定姓名║\n");
printf("╚═══════╝╚═══════╝╚═══════╝\n");
printf("╔═══════╗╔═══════╗╔═══════╗\n");
printf("║7.修改密码║║8.初始化信息║║9.备份信息║\n");
printf("╚═══════╝╚═══════╝╚═══════╝\n");
printf("╔═══════╗╔═══════╗╔═══════╗\n");
printf("║10.读取备份║║11.退出程序║║0.返回上层║\n");
printf("╚═══════╝╚═══════╝╚═══════╝\n");
printf("--------------------------------------------------------\n");
printf("请选择:
");
scanf("%d",&select);
switch(select)
{
case1:
AddInf();
break;
case2:
AmendInf();
break;
case3:
DelInf();
break;
case4:
ListAll();
break;
case5:
SearchNum();
break;
case6:
SearchName();
break;
case7:
CCode();
break;
case8:
total=0;
printf("操作成功");
case9:
WriteBackup();
break;
case10:
ReadBackup();
break;
case11:
printf("请按任意键退出\n");
Save();
case0:
flag=0;
}
}
}
staticvoidAddInf()//添加信息
{
system("cls");//清屏,使用此函数需包含stdlib.h
if(total>=1000)
printf("记录已满1000,无法录入\n");
else
{
InputStu(total);
total++;
}
}
staticvoidAmendInf()//修改信息
{
fflush(stdin);
longn=0,stunum,i;
printf("请输入要修改的学生信息的学号:
");
scanf("%ld",&stunum);
for(i=0;i<=total-1;i++)//查找学号对应的下标
{
if(stunum==stu[i].num)
{
n=1;
break;
}
}
if(n==0)
{
printf("抱歉,没有找到对应的记录");
fflush(stdin);
getchar();
}
else
{
printf("请输入新的信息,按任意键继续");
fflush(stdin);
getchar();
InputStu(i);
}
}
staticvoidListAll()//列出所有信息
{
system("cls");
inti;
for(i=0;i<=total-1;i++)
PutStu(i);
fflush(stdin);
getchar();
}
2.
#include
#include
#include
#include
voidSave();
voidCCode()
{
system("cls");
intcountl,select,res;
charcode1[21],code2[21],ori[]="123",ch;//密码
FILE*fp;
if((fp=fopen("pw.dat","r"))==NULL)
{
printf("无法修改密码");
fflush(stdin);
getchar();
return;
}
fflush(stdin);
printf("请输入新密码:
");
for(countl=1;;countl++)
{
scanf("%20s",code1);//密码输入
printf("\n");
printf("请再次输入您的新密码:
\n");
scanf("%20s",code2);
printf("\n");
res=strcmp(code1,code2);
if(res==0)
{
fp=fopen("pw.dat","w");
fwrite(code1,sizeof(code1),1,fp);
fclose(fp);
printf("修改密码成功!
\n返回上级:
任意键\n退出程序:
【Esc】\n");
ch=getch();
printf("\n");
if(ch==27)
Save();
system("cls");break;
}
else
{
if(countl>=4)
{
printf("%c",'\007');
printf("对不起,您现在不能修改密码!
\n退出程序:
【Esc】\n返回上级:
任意键\n");
ch=getch();
printf("\n");
if(ch==27)
Save();
system("cls");
break;
}
else
{
printf("对不起,您密码两次输入不一致\n\n请重新输入:
\n");
printf("%c",'\007');
}
}
}
}
3.
#include
#include
#include
voidAdminMode();
voidCode()
{
system("cls");
charpw[21],pw2[21];//密码
FILE*fp;
if((fp=fopen("pw.dat","r"))==NULL)
{
strcpy(pw,"1234");
fp=fopen("pw.dat","w");
fwrite(pw,sizeof(pw),1,fp);
fclose(fp);
}
else
{
fread(pw,sizeof(pw),1,fp);//读取密码
fclose(fp);
}
fflush(stdin);
printf("请输入密码(默认为1234):
");
scanf("%20s",pw2);
if(strcmp(pw2,pw)==0)
AdminMode();
else
{
printf("密码输入错误");
fflush(stdin);
getchar();
}
}
4.
#include
#include
#include
externstructstudent//声明结构体
{
longnum;//学号
charname[10];//姓名
intage;//年龄
intsex;//性别
intyear;//入学年份
charaddress[10];//地址
}stu[1000],temp;
externinttotal;//声明total
staticvoidStucpy(intn);
voidDelInf()//录入信息
{
fflush(stdin);
longn=0,stunum,i,j;
printf("请输入要删除的学生信息的学号:
");
scanf("%ld",&stunum);
for(i=0;i<=total-1;i++)//查找学号对应的下标
{
if(stunum==stu[i].num)
{
n=1;
break;
}
}
if(n==0)
{
printf("抱歉,没有找到对应的记录");
fflush(stdin);
getchar();
}
else
{
total--;
for(j=total;j>i;j--)
Stucpy(j);
printf("操作成功");
fflush(stdin);
getchar();
}
}
staticvoidStucpy(intj)
{
stu[j-1].num=stu[j].num;//学号
strcpy(stu[j-1].name,stu[j].name);//姓名
stu[j-1].age=stu[j].age;//年龄
stu[j-1].sex=stu[j].sex;//性别
stu[j-1].year=stu[j].year;//入学年份
strcpy(stu[j-1].address,stu[j].address);//地址
}
5.
#include