C语言实训学生信息管理系统Word文档格式.docx
《C语言实训学生信息管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言实训学生信息管理系统Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
纸质文档包括:
1.《实训报告》1份(左侧装订)。
电子文档包括:
1.实训报告
2.源程序
3.程序的可执行文件(.exe)
第1部分课程设计目的1
第2部分课程设计内容与要求2
2.1课程设计内容6
2.2基本要求2
第3部分报告正文3
3.1设计题目及任务要求3
3.2总体设计3
第4部分课程设计总结22
第5部分参考文献23
第1部分实训目的
C语言编程开发实训是学生在《C语言程序设计》课程结束时进行的一项实践活动,综合运用C程序设计课程和其他先修课程的理论和知识,掌握C语言开发实训的一般方法,树立正确的设计思想,培养分析问题和解决实际问题的能力;
学会从实际的要求出发,合理的选择算法,正确的使用测试方法,培养学生程序设计能力;
学习运用帮助和查阅有关技术资料的能力。
针对实训题目对学生在整个实训阶段进行检查考核,主要包括考勤、阶段性检查、成果答辩和实训报告。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
第2部分实训内容与要求
2.1实训内容
C语言编程开发实.可实现信息的录入、浏览、修改、删除、可按学号、姓名查询,学生信息必须包含学号,姓名,年龄,性别,出生年月,地址,电话以文件的形式打开。
2.2基本要求
(1)所有学生统一在机房进行设计,一人一组。
(2)听从指导老师的统一安排。
(3)严格遵守作息时间、不迟到、不早退,病、事假必须向指导老师请假。
(4)使用C语言开发。
(5)满足编程规范。
(6)设计结构清晰(模块化开发)。
(7)根据任务书的要求选择实训题目,每个题目同一班级内不超过三人选择,根据题目难易程度进行综合评分。
学生也可以自选题目,但自选题目要满足实训题目要求并经指导老师确认。
(8)实训报告不合格者不允许参加答辩。
(9)抄袭他人程序者记零分。
(10)无故缺课累计超过该课程总学时数三分之一者记零分。
第3部分报告正文
3.1实训题目及任务要求
题目:
学生信息管理系统设计
要求:
1.可实现信息的录入、浏览、修改、删除、可按学号、姓名查询;
2.学生信息必须包含学号,姓名,年龄,性别,出生年月,地址,电话。
3.以文件的形式打开
4.必须有注释。
3.2总体设计
详细设计
信息录入流程图
信息查询界面,按1依照姓名查询,按2依照学号查询。
在文件数据中搜索后若无查找内容则输出“搜索无结果”,若找到查找内容,则输出该内容,返回主菜单。
按学生姓名查询按学号查询
查询模块
信息查询流程图
删除模块
修改模块
图1.系统的总体流程图.
一、主界面
二、信息录入
三、信息浏览
四、信息查询
五、删除信息
六、信息添加
七、信息修改
源程序
#include<
string.h>
#defineN100
structstudent
{
intnum;
charname[30];
charsex;
intage;
charxueyuan[30];
intbj;
charaddr[30];
chartel[30];
}stu[100];
//定义一个结构体
voidmenu();
voidinput();
voidsave(int);
voiddisplay();
voiddel();
voidadd();
voidsearch();
voidsearch_num();
voidsearch_xueyuan();
voidsearch_tel();
voidmodify();
//定义各函数
voidmain()
menu();
intn,flag;
chara;
do
printf("
请选择你需要操作的步骤(1--7):
\n"
);
scanf("
%d"
&
n);
if(n>
=1&
&
n<
=7)
flag=1;
break;
}
else
flag=0;
您输入有误,请重新选择!
"
while(flag==1);
switch(n)
case1:
◆◆◆输入学生信息◆◆◆\n"
input();
case2:
◆◆◆浏览学生信息◆◆◆\n"
display();
case3:
◆◆◆按学号查询才学生信息◆◆◆\n"
search();
case4:
◆◆◆删除学生信息◆◆◆\n"
del();
case5:
◆◆◆添加学生信息◆◆◆\n"
add();
case6:
◆◆◆修改学生信息◆◆◆\n"
modify();
case7:
exit(0);
default:
getchar();
是否继续进行(yorn):
%c"
a);
if(a=='
y'
)
system("
cls"
//清屏
//调用菜单函数
请再次选择你需要操作的步骤(1--7):
voidmenu()//菜单函数
************欢迎进入学生信息管理系统**********\n"
1.录入学生信息"
2.浏览学生信息\n"
3.查询学生信息"
4.删除学生信息\n"
5.添加学生信息"
6.修改学生信息\n"
7.退出\n"
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t制作人侯迪"
voidinput()//录入函数
inti,m;
请输入需要创建信息的学生人数(1--100):
m);
for(i=0;
i<
m;
i++)
请输入学号:
stu[i].num);
请输入姓名:
%s"
stu[i].name);
请输入性别(f--女m--男):
stu[i].sex);
请输入年龄:
stu[i].age);
请输入学院:
stu[i].xueyuan);
请输入年级:
stu[i].bj);
请输入住址:
stu[i].addr);
请输入电话:
stu[i].tel);
\n创建完毕!
save(m);
voidsave(intm)//保存文件函数
inti;
FILE*fp;
if((fp=fopen("
student_list"
"
wb"
))==NULL)
cannotopenfile\n"
i++)//将内存中学生的信息输出到磁盘文件中去
if(fwrite(&
stu[i],sizeof(structstudent),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
intload()//导入函数
inti=0;
rb"
fread(&
stu[i],sizeof(structstudent),1,fp);
i++;
while(feof(fp)==0);
return(i-1);
voiddisplay()//浏览函数
intm=load();
学号\t\t姓名\t\t性别\t\t年龄\n"
i++)//m为输入部分的学生人数
%d\t%s\t\t%c\t\t%d\t\n"
stu[i].num,stu[i].name,stu[i].sex,stu[i].age);
学院\t\t年级\t\t住址\t\t电话\n"
\n%s\t%d\t\t%s\t\t%s\n"
stu[i].xueyuan,stu[i].bj,stu[i].addr,stu[i].tel);
voiddel()//删除函数
inti,j,n,t,flag;
charname[20];
\n原来的学生信息:
请输入要删除的学生的姓名:
name);
for(flag=1,i=0;
flag&
if(strcmp(stu[i].name,name)==0)
\n已找到此人,原始记录为:
学号\t姓名\t\t性别\t\t年龄\n"
\n%d\t\t%s\t%c\t\t%d\t\n"
\n学院\t\t班级\t\t住址\t\t电话\n"
\n%s\t%d\t\t%s\t%s\n"
\n确实要删除此人信息请按1,不删除请按0\n"
if(n==1)
for(j=i;
j<
m-1;
j++)
strcpy(stu[j].name,stu[j+1].name);
stu[j].num=stu[j+1].num;
stu[j].sex=stu[j+1].sex;
stu[j].age=stu[j+1].age;
strcpy(stu[j].xueyuan,stu[j+1].xueyuan);
stu[j].bj=stu[j+1].bj;
strcpy(stu[j].addr,stu[j+1].addr);
strcpy(stu[j].tel,stu[j+1].tel);
if(!
flag)
m=m-1;
\n对不起,查无此人!
\n浏览删除后的所有学生信息:
//调用保存函数
//调用浏览函数
\n继续删除请按1,不再删除请按0\n"
t);
switch(t)
case0:
voidadd()//添加函数
intn;
intcount=0;
fp=fopen("
a"
请输入想的学生数:
for(i=m;
(m+n);
\n请输入新增加学生的信息:
请输入学生号:
count=count+1;
已增加的人数:
%d\n"
count);
\n添加完毕!
m=m+count;
\n浏览增加后的所有学生信息:
voidsearch()//查询函数
intt,flag;
\n按学号查询请按1;
按学院查询请按2;
按电话号码查询请按3;
进入主函数请按4\n"
if(t>
t<
=4)
while(flag==0);
while(flag==1)
按学号查询\n"
search_num();
按学院查询\n"
search_xueyuan();
按电话号码查询\n"
search_tel();
main();
voidsearch_num()
inti,t;
请输入要查找的学号:
num);
if(num==stu[i].num)
\n已找到此人,其记录为:
\n学院\t\t年级\t\t住址\t\t电话\n"
if(i==m)
\n对不起,查无此人\n"
返回查询函数请按1,继续查询学号请按2\n"
voidsearch_xueyuan()
请输入要查找的学院:
xueyuan);
if(strcmp(stu[i].xueyuan,xueyuan)==0)
\n已找到,其记录为:
返回查询函数请按1,继续查询学院请按2\n"
voidsearch_tel()
chartel[20];
请输入要查找的电话号码:
tel);
if(strcmp(tel,stu[i].tel)==0)
返回查询函数请按1,继续查询电话号码请按2\n"
voidmodify()//修改函数
intb,c,i,n,t,flag;
请输入要修改的学生的姓名:
\n确实要修改此人信息请按1;
不修改请按0\n"
\n需要进行修改的选项\n1.学号2.姓名3.性别4.年龄5.学院6.年级7.住址8.电话\n"
请输入你想修改的那一项序号:
c);
if(c>
8||c<
1)
\n选择错误,请重新选择!
if(flag==1)
switch(c)//因为当找到第i个学生时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人
学号改为:
stu[i-1].num=num;
姓名改为:
strcpy(stu[i-1].na