学生信息管理系统设计实验报告.doc
《学生信息管理系统设计实验报告.doc》由会员分享,可在线阅读,更多相关《学生信息管理系统设计实验报告.doc(20页珍藏版)》请在冰点文库上搜索。
C程序设计实训报告
姓名
专业
班级
指导教师
2011年7月13日
18
目录
1、设计题目 1
2、总体设计 1
2.1系统功能结构图 1
2.2数据类型定义 1
2.3全部函数原型定义 2
3、详细设计 2
3.1模块功能 2
3.2函数流程图 3
1.Srarch()流程图 3
2.del()流程图 4
3.modify()流程图 4
4、程序测试 5
5、心得体会 8
6、参考文献 8
1、设计题目
学生信息管理系统设计
设计要求:
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:
系统以菜单方式工作
学生信息录入功能(学生信息用文件保存)---输入
学生信息浏览功能---输出
查询、排序功能---算法
按学号查询
按姓名查询
学生信息的删除与修改(可选项)
2、总体设计
Main()
2.1系统功能结构图
Del()
Modify()
Read()
Srarch()
Write()
(Name)srarch
(NO.)srarch
图2-1系统功能结构图
2.2数据类型定义
structstudent
{
charno[15];
charname[30];
intage;
charsex[2];
charbir[30];
charadd[30];
chartel[13];
chare_mail[30];
}stu[N];
2.3全部函数原型定义
(1)voidmain()
主函数用语完成各个函数返回的指令
(2)intwrite(structstudentstu[N])
输入(或添加)学生的信息
(3)intsearch(structstudentstu[])
查询学生信息
(4)intread(structstudentstu[N])
浏览学生信息
(5)intmodify(structstudentstu[N])
修改学生信息
(6)intdel(structstudentstu[N])
删除学生信息
3、详细设计
3.1模块功能
主要有以下几个模块函数构成:
write()//录入或者添加学生的信息
search()//用于查询系统中存储的学生信息
read()//用于浏览系统中存储的学生信息
modify()//用于修改指定系统中存储的学生信息
del()//用于删除指定系统中存储的学生信息
3.2函数流程图
在程序编写过程中使用函数的调用,独立完成各个模块的功能。
1.Srarch()流程图
开始
查询函数的流程图(如3——1)。
打开存储文件
读入已存学生信息
ture
学号查询
break
输入1
false
ture
姓名查询
break
输入2
false
Default:
语句
输出查询结果
关闭文件并保存
结束
图3—1查询函数的流程图
2.del()流程图
开始
删除函数流程图如图3—2
打开存储文件
读入已存的学生信息
选择输入删除学生的学号
否
查找该学生信息?
是
删除操作
退出修改选项
关闭文件并保存文件
结束
图3—2删除函数流程图
3.modify()流程图
修改学生信息函数流程图(如图3—3)。
开始
打开学生信息存储文件
读入已存的学生信息
选择要修改的学号
否
查找该学生信?
息
是
选择需要修改项修改修改
退出修改选项并保存
关闭文件并保存所有内容
结束
图3—3修改函数流程图
4、程序测试
测试运行如下:
程序运行后进入系统界面(图4—1)。
总体显示该系统的功能菜单列表。
4--1系统功能菜单
选择1进入录入系统,需要输入的信息包括学号姓名等学生信息,系统运行界面如(图4—2)。
4—2系统录入菜单
选择2进入学生查询系统(如图4—3),在查询系统中有两种查询方式(选择1按照学号查询;选择2按照姓名查询)。
4—3查询选项
按照查询方式运行后显示结果并返回系统功能菜单以供后面操作选项(如图4—4)。
4—4查询结果
选择3进入修改学生信息系统界面如图(4—5),并可以按照提示选择需要修改的选项并可进行操作。
4—6修改选项菜单
选择4进入学生信息浏览界面(如图4—6),并显示出所有学生的信息。
4—6浏览信息
选择5进入删除学生信息菜单系统(如图4—7),并提示按照学号进行删除,输入要删除学生的学号。
4—7删除菜单
5、心得体会
在这两周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能!
真知总是出于实践的,自己动手编写程序经过运行调试最终完成实训,从中获得了很多实用知识。
软件的开发技能必须是从小程序慢慢的练习,自己动手写与运行调试中获得的。
在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们所学习的重点知识。
在做题的过程中让我们把这些知识复习了一遍,强化了知识!
平时我们学C语言视乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。
但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用!
在这次的实训中让我更充实的学到程序编写的技能,更激发学习程序编写与软件开发的乐趣。
6、参考文献
[1]韦良芬,C语言程序设计经典案例教程[M]北京:
北京大学出版社,2010.6
[2]潭浩强,C语言程序设计[M],北京,清华大学出版社,1998
[3]王立柱,C\C++与数据结构,北京:
清华大学出版社,2002
[4]李大友,C语言程序设计.清华大学出版社,1999
附录一
程序源代码:
#include/*头文件*/
#include/*头文件*/
#include/*头文件*/
#include/*头文件*/
#include//头文件
#definePFprintf
#defineN500
structstudent
{
charno[15];/*学号*/
charname[30];/*姓名*/
intage;/*年龄*/
charsex[2];/*性别*/
charbir[30];/*出生年月*/
charadd[30];/*地址*/
chartel[13];/*电话*/
chare_mail[30];/*电子邮件*/
}stu[N];
intn;
voidmain()
{
intnum,i;
intwrite(structstudentstu[N]);
intsearch(structstudentstu[N]);
intmodify(structstudentstu[N]);
intread(structstudentstu[N]);
intdel(structstudentstu[N]);
for(i=0;;i++)
{
PF("\n");
PF("**********************学生信息管理系统**************************\n");
PF("系统功能菜单\n");
PF("\n");
PF("================================================================\n");
PF("1.录入学生信息.\n");
PF("2.查询学生信息.\n");//里面包括按学
//查询,按姓名查询
PF("3.修改学生信息.\n");
PF("4.浏览学生信息.\n");
PF("5.删除学生信息.\n");
PF("6.退出学生信息系统.\n");
PF("================================================================\n");
PF("请输入1-6的数字.\n");
scanf("%d",&num);
switch(num)
{
case1:
write(stu);
system("cls");
break;
case2:
system("cls");search(stu);
break;
case3:
modify(stu);
system("cls");
break;
case4:
system("cls");read(stu);
break;
case5:
del(stu);
system("cls");
break;
case6:
system("cls");
return;
default:
PF("error\n");
}
}
}
/////////////////////////////////////////////
//
//录入学生信息
//
////////////////////////////////////////////
intwrite(structstudentstu[N])
{
FILE*fp1,*fp2;
inti,n;
if((fp2=fopen("stu_list","rb"))==NULL)/*只读方式打开,同时可以判断文件是否存在*/
{
if((fp1=fopen("stu_list","wb"))==NULL)//用只写方式打开,就可新建文
printf("建立文件出错\n");
}
else//如果文件存在,用ab+(为读写打开一个二进制文件)的方式打开
{
if((fp1=fopen("stu_list","ab+"))==NULL)
printf("打开文件出错\n");
}
PF("请输入你要输入的学生的人数\n");
scanf("%d",&n);
for(i=0;i{
PF("请输第%d个学生的学号\n",i+1);
scanf("%s",stu[i].no);
PF("请输入第%d个学生的姓名.\n",i+1);
scanf("%s",&stu[i].name);
PF("请输入第%d个学生的年龄.\n",i+1);
scanf("%d",&stu[i].age);
PF("请输入第%d个学生的性别.\n",i+1);
scanf("%s",&stu[i].sex);
PF("请输入第%d个学生的出生年月.\n",i+1);
scanf("%s",&stu[i].bir);
PF("请输入第%d个学生的地址.\n",i+1);
scanf("%s",&stu[i].add);
PF("请输入第%d个学生的电话.\n",i+1);
scanf("%s",&stu[i].tel);
PF("请输入第%d个学生的电子邮件.\n",i+1);
scanf("%s",&stu[i].e_mail);
printf("录入信息完毕\n");
getchar();
fwrite(&stu[i],sizeof(structstudent),1,fp1);system("cls");//把内存中的结
//构体存到硬盘上去
}
fclose(fp1);
return1;
}
////////////////////////////////////////////
//
//查询学生信息
//
////////////////////////////////////////////
intsearch(structstudentstu[])
{
inta,i;
charno[15],name[30];
FILE*fp;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("文档未建立!
");
return0;
}
for(i=0;;i++)
{
if(fread(&stu[i],sizeof(structstudent),1,fp)!
=1)
break;
}
PF("按照学号查找,请输入1\n");
PF("按照姓名查找,请输入2\n");
scanf("%d",&a);
switch(a)
{
case1:
PF("请输入要查找的同学的学号.\n");/*按照姓名来查找学生信息*/
scanf("%s",no);
PF("学号\t姓名\t年龄\t性别\t生日地址电话\te_mail\n");
for(i=0;i{
if(strcmp(no,stu[i].no)==0)
{
PF("%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n",stu[i].no,stu[i].name,stu[i].age,
stu[i].sex,stu[i].bir,stu[i].add,stu[i].tel,stu[i].e_mail);
break;
}
}break;
case2:
PF("请输入要查找的同学的姓名.\n");/*按照学号来查找学生信息*/
scanf("%s",name);
PF("学号\t姓名\t年龄\t性别\t生日地址电话\te_mail\n");
for(i=0;i{
if(strcmp(name,stu[i].name)==0)
{
PF("%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n",stu[i].no,stu[i].name,stu[i].age,
stu[i].sex,stu[i].bir,stu[i].add,stu[i].tel,stu[i].e_mail);
break;
}
}break;
default:
PF("error\n");
}
return1;
}
/////////////////////////////////////////
//
//浏览学生信息
//
/////////////////////////////////////////
intread(structstudentstu[N])
{
inti;
FILE*fp;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("没有发现学生档案!
");
return0;
}
PF("学号\t姓名\t年龄\t性别\t生日\t地址\t电话\te_mail\n");
for(i=0;;i++)
{
if(fread(&stu[i],sizeof(structstudent),1,fp)!
=1)
break;
PF("%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n",stu[i].no,stu[i].name,stu[i].age,
stu[i].sex,stu[i].bir,stu[i].add,stu[i].tel,stu[i].e_mail);
}
return1;
}
//////////////////////////////////////////////
//
//修改学生信息
//
//////////////////////////////////////////////
intmodify(structstudentstu[N])
{
FILE*fp;
inti,x,y=1,num,count=0;
charno[15];
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("没有发现学生档案!
");
return0;
}
for(i=0;;i++)
{
if(fread(&stu[i],sizeof(structstudent),1,fp)!
=1)
break;
count++;
}
fclose(fp);
PF("请输入你要修改的学生的学号\n");
scanf("%s",no);
for(i=0;i{
if(strcmp(no,stu[i].no)==0)
{
num=i;
}
}
PF("\t1.姓名\n");
PF("\t2.年龄\n");
PF("\t3.性别\n");
PF("\t4.出生年月\n");
PF("\t5.地址\n");
PF("\t6.电话\n");
PF("\t7.电子邮件\n");
PF("\t8.退出并保存修改\n");
for(i=0;y;i++)
{
PF("请输入你要修改的学生信息的选项\n");
scanf("%d",&x);
switch(x)
{
case1:
PF("请输入新的姓名:
\n");/*修改学生姓名*/
scanf("%s",stu[num].name);
break;
case2:
PF("请输入新的年龄:
\n");/*修改学生年龄*/
scanf("%d",&stu[num].age);break;
case3:
printf("请输入新的性别:
\n");/*修改学生性别*/
scanf("%s",stu[num].sex);
break;
case4:
printf("请输入新的出生年月:
\n");/*修改学生出生年月*/
scanf("%s",stu[num].bir);
break;
case5:
printf("请输入新的地址:
\n");/*修改学生地址*/
scanf("%s",stu[num].add);
break;
case6:
printf("请输入新的电话号码:
\n");/*修改学生的电话*/
scanf("%s",stu[num].tel);
break;
case7:
printf("请输入新的e_mail地址:
\n");/*修改学生的e_mail*/
scanf("%s",stu[num].e_mail);
break;
case8:
y=0;
break;
default:
printf("请在选择操作选项\n");
}
}
if((fp=fopen("stu_list","wb"))==NULL)
{
printf("新建文件错误!
");
return0;
}
for(i=0;i{
if(fwrite(&stu[i],sizeof(structstudent),1,fp)!
=1)
break;
}
fcl