学生信息库C语言程序设计报告.docx
- 文档编号:29272825
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:32
- 大小:108.19KB
学生信息库C语言程序设计报告.docx
《学生信息库C语言程序设计报告.docx》由会员分享,可在线阅读,更多相关《学生信息库C语言程序设计报告.docx(32页珍藏版)》请在冰豆网上搜索。
学生信息库C语言程序设计报告
第一届C语言大赛设计报告
题目:
学生信息数据库.
院系名称:
.
专业班级:
.
学生姓名:
.
学号:
.
摘要
为了智能化、系统化的管理学生信息,设计了学生信息库管理程序,它以菜单的工作方式完成对学生信息的添加、修改、删除和查询等选项的操作,通过各子功能完成对学生信息的处理。
输入数据以文件的形式保存,并对学生信息数据进行加密处理。
可以完成对学生姓名、学号的单独查询,也可以对班级和宿舍的批量查询。
学生的个人信息包括姓名、班级、性别、年龄、出生日期、籍贯、班级、宿舍、联系方式。
关键词:
系统化数据处理人机交互
目 录
摘要………………………………………………………………1
目录………………………………………………………………2
一 综述…………………………………………………………4
1.1设计意义………………………………………………4
1.2软件开发环境…………………………………………4
二 方案设计与论证……………………………………………4
2.1设计概述………………………………………………4
2.2主要功能框图…………………………………………4
三 系统功能分析………………………………………………5
3.1程序内容的定义………………………………………5
3.2功能菜单的界面………………………………………5
3.3增加新学生信息………………………………………5
3.4信息的查询……………………………………………5
3.5信息的修改……………………………………………5
3.6删除学生信息…………………………………………5
3.7信息的浏览……………………………………………5
四 程序流程图…………………………………………………6
五测试方法与数据……………………………………………7
5.1测试方法………………………………………………7
5.2测试数据及数据类型…………………………………7
5.3数据格式……………………………………………7
六调试及结果分析……………………………………………8
参考文献…………………………………………………………9
附录:
源程序……………………………………………………9
一、综述
1、设计意义
学生信息库管理系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、浏览,增加、修改、删除,针对这些要求设计了学生信息管理系统程序。
2、程序开发环境
MicrosoftVisualC++6.0,简称VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。
VisualC++6.0可提供编辑、调试以及程序执行等功能。
2、方案设计与论证
1、设计概述:
设计"menu_select.c"、"add.c"、"query.c"、"revise.c"、"delet.c"等函数,通过"menu_select.c"菜单选项完成人机交互,通过"add.c"、"query.c"、"revise.c"、"delet.c"等函数分别实现添加、查询、修改、删除等功能。
按姓名查询
2、主要功能框图:
主菜单
学生信息录入
按学号查询
学生信息查询
按班级查询
按宿舍查询
学生信息修改
选择年级信息
返回主菜单
学生信息删除
学生信息浏览
退出学生信息管理系统
3、论证与分析
1.程序内容的定义
对于信息的录入,因为一个学生信息包括很多属性,所以考虑定义一个结构体。
考虑到数据的存储形式,在这里我们定义了一个结构数组。
从文件中录入我们首先要定义一个文件指针,打开该文件后通过一个循环来读写文件,将所有信息读写完毕后关闭文件。
2.功能菜单的界面
首先用printf语句把程序的功能菜单列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到功能菜单界面,在这里我们用到while循环。
3.增加新学生信息
通过结构数组不断录入新的学生信息,添加一个后判断是否继续添加,若是则继续添加,否则跳出while循环,然后把数据写入到二进制文件中保存。
4.信息的查询
读取二进制文件中的信息到内存中。
我们采取if-else判断语句来解决用学号、姓名、班级、宿舍四种方式来查询的要求。
若输入学号或者姓名的时候,通过字符串比较函数,如果存在,那么输出学生信息;如果选择班级或宿舍的时候,同样通过字符串比较函数,批量输出符合要求的学生信息。
5.信息的修改
首先读出二进制文件中的信息到内存中,然后输入要修改信息的学生姓名。
首先用字符串比较函数判断改学生信息是否存在,如果存在,可以一次输入学生新的信息,然后新的数据在写入到二进制文件中;如果不存在,则回到菜单选项。
6.删除学生信息
读出二进制文件中的信息到内存中。
通过字符串比较找到要删除学生的姓名,如果找到则先输出此学生的信息,由用户选择是否删除,若用户选择是,则此学生信息不再写入二进制文件中,并显示删除成功;若选择否,这再次把这个学生的信息写入到二进制文件中。
执行完全部数据后关闭文件。
完成删除功能。
7.信息的浏览
读出二进制文件中的信息到内存中。
我们只需要通过一个循环将结构体中所有元素输出就行了。
四、程序流程图
开始
menu_filename()
menu_select()
输入选择X
case’0’
case’5’
case’4’
case’3’
case’2’
case’1’
调用delet()
删除学生信息
退出系统
调用revise()
修改学生信息
调用add()
录入学生信息
调用browse()
浏览学生信息
调用query()
查询学生信息
Filesave
结束
5、测试方法与数据
1、测试方法
对软件基本功能进行调试,我们这里通过一定数量不同数据以用户的角度通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷。
除了对软件进行各项功能的测试之外,还对软件的交互界面,数据的显示效果也都进行了详细测试,对运行当中出现的问题也进行了修改,通过测试与调试使各项功能能更加完善。
2、测试数据及数据类型:
2013级学生信息(menu_filename文件名2013)
班级
学号
姓名
性别
年龄
宿舍
籍贯
联系方式
出生年月
会计1301
201301101
张一
男
21
A101
河南
12345678911
1993.5.6
会计1301
201301102
张二
女
22
A102
河南
12345678912
1993.1.22
金融1302
201301201
丁一
男
23
A101
黑龙江
12345678913
1993.11.2
金融1302
201301202
丁二
女
24
A102
黑龙江
12345678914
1993.12.12
2012级学生信息(menu_filename文件名2012)
班级
学号
姓名
性别
年龄
宿舍
籍贯
联系方式
出生年月
会计1201
201202101
李一
男
26
B201
山东
12345678915
1993.5.6
会计1201
201202102
李二
女
26
B202
山东
12345678916
1993.1.22
金融1202
201202201
赵一
男
27
B201
上海市
12345678917
1993.11.2
金融1202
201202202
赵二
女
28
B202
上海市
12345678918
1993.12.12
3、数据格式:
班级例如会计1301;学号为8-10位数字;
性别例如男/女;姓名为2-3个汉字;
宿舍例如A101;籍贯为2-3个汉字;
出生年月例如199311;联系方式为11位。
6、调试及结果分析
图四
图四
图二
图一
图六
图五
图一功能菜单显示界面,用户可以根据需要选择操作;
图二信息录入界面;
图三查询选择界面,用户可以通过此菜单选择查询方式;
图四以班级方式批量查询信息输出界面;
图五修改学生基本信息界面;
图六删除学生信息界面。
以上功能全部可以正常使用,界面显示效果良好,程序运行正常,未发现错误。
参考文献
[1]何钦铭、颜晖,《C语言程序设计(第2版)》—北京:
高等教育出版社,2012.3;
源程序
#include
#include
#include
/********************定义结构体存储学生信息*****************/
typedefstructstudent
{
charname[20];
charid[12];
charsex[10];
charss[10];
charjg[20];
chargrad[10];
charage[10];
chartel[20];
intyear;
intmouth;
intday;
}student;
studentstu[100];
charfilename[20];
/************创建文件保存信息数据,选择年级文件目录菜单函数*****************/
intmenu_filename()
{
printf("\t\t\t\t请输入年级类别:
\t");
scanf("%s",filename);
return0;
}
/**************************软件信息函数*************************/
voidlogo()
{
printf("\n\n\n\t\t\t\t\t\t\t=====================");
printf("\n\n\n\t\t\t\t\t\t\t*学生信息数据库系统");
printf("\n\n\n\t\t\t\t\t\t\t*作者:
周庆文");
printf("\n\n\n\t\t\t\t\t\t\t*日期:
2015/9/1");
printf("\n\n\n\t\t\t\t\t\t\t=====================");
printf("\n\n");
}
/*************************用户选择功能菜单函数**********************/
intmenu_select()
{
charc;
system("COLOR3f");
do
{
system("cls");
printf("\n\n\t\t\t\t\t\t=========================================\n");
printf("\t\t\t\t\t\t|学生信息管理系统|\n");
printf("\t\t\t\t\t\t=========================================\n");
printf("\t\t\t\t\t\t|1.学生信息录入2.学生信息查询|\n");
printf("\t\t\t\t\t\t||\n");
printf("\t\t\t\t\t\t||\n");
printf("\t\t\t\t\t\t|3.学生信息修改4.学生信息删除|\n");
printf("\t\t\t\t\t\t||\n");
printf("\t\t\t\t\t\t||\n");
printf("\t\t\t\t\t\t|5.学生信息浏览0.退出|\n");
printf("\t\t\t\t\t\t=========================================\n");
printf("\n\t\t\t\t\t请输入0-5:
");
scanf("%c",&c);
}while(c<'0'||c>'6');
return(c-'0');
}
/***********************信息录入函数add**************************/
voidadd()
{
FILE*pFile;
charflag='Y';
inti=0,n=1;
system("cls");
while(flag!
='n'&&flag!
='N')//判断是否继续输入学生信息
{
printf("\n\t\t\t\t\t\t------学生信息数据录入------\n");
printf("\t\t\t\t\t\t\t姓名:
\t");
scanf("%s",stu[i].name);
printf("\n\t\t\t\t\t\t\t学号:
\t");
scanf("%s",stu[i].id);
printf("\n\t\t\t\t\t\t\t性别:
\t");
scanf("%s",stu[i].sex);
printf("\n\t\t\t\t\t\t\t籍贯:
\t");
scanf("%s",stu[i].jg);
printf("\n\t\t\t\t\t\t\t宿舍:
\t");
scanf("%s",stu[i].ss);
printf("\n\t\t\t\t\t\t\t班级:
\t");
scanf("%s",stu[i].grad);
printf("\n\t\t\t\t\t\t\t年龄:
\t");
scanf("%s",stu[i].age);
printf("\n\t\t\t\t\t\t\t联系方式:
\t");
scanf("%s",stu[i].tel);
printf("\n\t\t\t\t\t\t\t出生日期:
(年月日)\t");
scanf("%d%d%d",&stu[i].year,&stu[i].mouth,&stu[i].day);
i++;n++;
printf("是否继续添加?
(Y/N):
");
scanf("\t%c",&flag);
system("cls");
}
/*以2进制方式把录入数据写入到pFile文件中存储起来*/
if((pFile=fopen(filename,"ab"))==NULL)
{
printf("Erroropeningfile\n");
system("pause");
return;
}
for(i=0;i { if(fwrite(&stu[i],sizeof(student),1,pFile)! =1) { printf("Filewriteerror.\n"); } } fclose(pFile); system("pause"); } /****************信息查询函数****************/ voidquery() { FILE*pFile; inti=0,n=1,k; charc,s[20]; do { system("cls"); printf("\n\n\n\t\t\t\t\t\t=================================\n"); printf("\t\t\t\t\t\t│学生信息查询方式│\n"); printf("\t\t\t\t\t\t=================================\n"); printf("\t\t\t\t\t\t│1.姓名2.学号│\n"); printf("\t\t\t\t\t\t││\n"); printf("\t\t\t\t\t\t│3.班级4.宿舍│\n"); printf("\t\t\t\t\t\t││\n"); printf("\t\t\t\t\t\t│5.返回│\n"); printf("\t\t\t\t\t\t=================================\n"); printf("\n\t\t\t\t\t请输入查询方式(1-5): \t"); scanf("%c",&c); } while(c<'1'||c>'5'); k=c-'0'; if((pFile=fopen(filename,"r"))==NULL) { printf("Erroropeningfile"); system("pause"); return; } while(! feof(pFile)) { fread(&stu[i],sizeof(student),1,pFile); i++;n++; } fclose(pFile); pFile=NULL; i=0; n=n-1; if(k==1) {n=n-1; printf("\t\t\t\t请输入需要查询学生的姓名: \t"); scanf("%s",s); while(strcmp(stu[i].name,s)! =0&&i { i++; } if(i==n) { printf("\n\t\t\t\t查询结果: \t系统中未查询到该学生信息。 \n"); } else {system("cls"); printf("\n\t\t\t\t------------------------------------------学生基本信息---------------------------------------------\n"); printf("\t\t\t\t班级\t\t学号\t\t姓名\t性别\t年龄\t宿舍\t籍贯\t联系方式\t出生日期\n\n"); printf("\t\t\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d%d%d",stu[i].grad,stu[i].id,stu[i].name,stu[i].sex,stu[i].age, stu[i].ss,stu[i].jg,stu[i].tel,stu[i].year,stu[i].mouth,stu[i].day); printf("\n\n\n"); } } if(k==2) { n=n-1; printf("\t\t\t\t请输入需要查询学生的学号: \t"); scanf("%s",s); while(strcmp(stu[i].id,s)! =0&&i { i++; } if(i==n) { printf("\n\t\t\t\t查询结果: \t系统中未查询到该学生信息。 \n"); } else {system("cls"); printf("\n\t\t\t\t------------------------------------------学生基本信息---------------------------------------------\n"); printf("\t\t\t\t班级\t\t学号\t\t姓名\t性别\t年龄\t宿舍\t籍贯\t联系方式\t出生日期\n\n"); printf("\t\t\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d%d%d",stu[i].grad,stu[i].id,stu[i].name,stu[i].sex,stu[i].age, stu[i].ss,stu[i].jg,stu[i].tel,stu[i].year,stu[i].mouth,stu[i].day); printf("\n\n\n"); } } if(k==3) { printf("\t\t\t\t请输入要查询的班级: \t"); scanf("%s",s); system("cls"); printf("\n\t\t\t\t------------------------------------------学生基本信息---------------------------------------------\n"); printf("\t\t\t\t班级\t\t学号\t\t姓名\t性别\t年龄\t宿舍\t籍贯\t联系方式\t出生日期\n\n"); for(i=0;i { if(strcmp(stu[i].grad,s)==0) { printf("\t\t\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d%d%d",stu[i].grad,stu[i].id,stu[i].name,stu[i].sex,stu[i].age, stu[i].ss,stu[i].jg,stu[i].tel,stu[i].year,stu[i].mouth,stu[i].day); printf("\n"); } } printf("\n\n"); } if(k==4) { printf("\t\t\t\t请输入要查询的宿舍: \t"); scanf("%s",s); system("cls"); printf("\n\t\t\t\t------------------------------------------学生基本信息---------------------------------------------\n"); printf("\t\t\t\t班级\t\t学号\t\t姓名\t性别\t年龄\t宿舍\t籍贯\t联系方式\t出生日期\n\n"); for(i=0;i { if(strcmp(stu[i].ss,s)==0) { printf("\t\t\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d%d%d",stu[i].grad
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息库 语言程序设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)