学生信息管理系统设计实验报告Word格式.docx
《学生信息管理系统设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统设计实验报告Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
输入(或添加)学生的信息
(3) int search(structstudentstu[])
查询学生信息
(4)int read(structstudentstu[N])
浏览学生信息
(5) intmodify(structstudentstu[N])
修改学生信息
(6) intdel(structstudent stu[N])
删除学生信息
3、详细设计
3.1模块功能
主要有以下几个模块函数构成:
write() //录入或者添加学生的信息
search() //用于查询系统中存储的学生信息
read() //用于浏览系统中存储的学生信息
modify() //用于修改指定系统中存储的学生信息
del() //用于删除指定系统中存储的学生信息
3.2 函数流程图
在程序编写过程中使用函数的调用,独立完成各个模块的功能。
1.Srarch()流程图
查询函数的流程图(如3——1)。
ﻩ
图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<stdio.h> /*头文件*/
#include<stdlib.h>
/*头文件*/
#include<
string.h>
/*头文件*/
#include<conio.h>
/*头文件*/
#include<
windows.h>
//头文件
#definePFprintf
#defineN500
structstudent
charno[15];
/*学号*/
charname[30];
/*姓名*/
intage;
/*年龄*/
charsex[2];
/*性别*/
char bir[30];
/*出生年月*/
charadd[30];
/*地址*/
chartel[13];
/*电话*/
chare_mail[30];
/*电子邮件*/
}stu[N];
intn;
void main()
intnum,i;
int write(structstudentstu[N]);
int search(structstudent stu[N]);
intmodify(struct studentstu[N]);
int read(structstudent stu[N]);
intdel(struct studentstu[N]);
for(i=0;
;
i++)
{
PF("
\n"
);
PF("
**********************学生信息管理系统**************************\n"
PF("
系统功能菜单 \n"
);
PF("
\n");
PF("
================================================================\n");
PF(" 1.录入学生信息. \n"
PF("
2.查询学生信息. \n"
//里面包括按学
//查询,按姓名查询
3.修改学生信息. \n"
4.浏览学生信息. \n"
PF(" 5.删除学生信息. \n"
PF(" 6.退出学生信息系统. \n"
================================================================\n");
PF("
请输入1-6的数字.\n"
scanf("
%d",&
num);
switch(num)
{
case 1:
write(stu);
system("
cls"
ﻩ break;
case 2:
system("
cls"
search(stu);
ﻩbreak;
case3:
modify(stu);
system("
cls");
break;
case4:
system("cls");
read(stu);
ﻩ
break;
case5:
del(stu);
system("
break;
case6:
ﻩsystem("cls"
return;
default:
PF("
error\n"
}
}
/////////////////////////////////////////////
//
// 录入学生信息
////////////////////////////////////////////
intwrite(structstudentstu[N])
{
FILE*fp1,*fp2;
int i,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"
请输入你要输入的学生的人数\n");
scanf("
%d",&
n);
for(i=0;
i<n;
i++)
PF("请输第%d个学生的学号\n",i+1);
scanf("%s",stu[i].no);
请输入第%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);
请输入第%d个学生的出生年月.\n",i+1);
scanf("%s"
stu[i].bir);
请输入第%d个学生的地址.\n",i+1);
scanf("%s"
stu[i].add);
请输入第%d个学生的电话.\n"
i+1);
scanf("
%s"
&stu[i].tel);
请输入第%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);
学号\t姓名\t年龄\t性别\t生日 地址 电话\te_mail\n"
for(i=0;
i<N;
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;
case 2:
请输入要查找的同学的姓名.\n"
/*按照学号来查找学生信息*/
scanf("
%s",name);
PF("
学号\t姓名\t年龄\t性别\t生日地址 电话\te_mail\n"
for(i=0;
i<
N;
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:
error\n"
return 1;
}
/////////////////////////////////////////
// 浏览学生信息
/////////////////////////////////////////
intread(struct studentstu[N])
int i;
FILE *fp;
if((fp=fopen("stu_list"
rb"))==NULL)
printf("
没有发现学生档案!
"
return0;
学号\t姓名\t年龄\t性别\t生日\t地址\t电话\te_mail\n"
for(i=0;
i++)
if(fread(&stu[i],sizeof(struct student),1,fp)!
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(structstudent stu[N])
FILE*fp;
inti,x,y=1,num,count=0;
charno[15];
if((fp=fopen("
stu_list"
rb"
))==NULL)
printf("
return0;
if(fread(&
stu[i],sizeof(structstudent),1,fp)!
break;
count++;
fclose(fp);
请输入你要修改的学生的学号\n"
%s"
no);
for(i=0;
count;
i++)
if(strcmp(no,stu[i].no)==0)
num=i;
\t1.姓名\n"
\t2.年龄\n"
\t3.性别\n");
\t4.出生年月\n"
PF("\t5.地址\n"
\t6.电话\n"
\t7.电子邮件\n");
\t8.退出并保存修改\n"
for(i=0;
y;
PF("
请输入你要修改的学生信息的选项\n"
scanf("%d"
x);
switch(x)
case1:
请输入新的姓名:
\n");
/*修改学生姓名*/
,stu[num].name);
break;
case2:
请输入新的年龄:
\n"
/*修改学生年龄*/
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:
请输入新的电话号码:
\n"
/*修改学生的电话*/
scanf("
,stu[num].tel);
break;
case7:
printf("请输入新的e_mail地址:
/*修改学生的e_mail*/
scanf("%s"
stu[num].e_mail);
break;
case8:
y=0;
default:
printf("
请在选择操作选项\n"
}
if((fp=fopen("
stu_list"
wb"
printf("新建文件错误!
return 0;
for(i=0;
count;
if(fwrite(&stu[i],sizeof(structstudent),1,fp)!
=1)
break;
fclose(fp);
return1;
///////////////////////////////////////////
// 删除学生信息
//////////////////////////////////////////
intdel(structstudentstu[N])
{
int i,m=0,j,count=1;
char no[15];
FILE*fp;
if((fp=fopen("
stu_list"
,"rb"))==NULL)
printf("
");
return0;
for(i=0;
if(fread(&
stu[i],sizeof(structstudent),1,fp)!
=1)
break;
count++;
//count是计数器,用于统计从文件中读取了几次
fclose(fp);
PF("输入要删除的学生的学号\n"
no);
for(i=0;
i<count;
{
if(strcmp(no,stu[i].no)==0)
{
m=1;
j=i;
//j的作用是记录下要删除的信息在数组中的位置
break;
}
}
if(m!
PF("不存在该学生\n"
else
PF("删除成功\n");
n--;
}
if((fp=fopen("
stu_list"
"wb"))==NULL) //用wb(为读写建立一个新的二进制文件)方式打开,就可删除原文件
printf("文档未建立!
return0;
count-1;
if(i!
=j)
fwrite(&
stu[i],sizeof(structstudent),1,fp);
fclose(fp);
return1;