《C语言课程设计》报告.docx
《《C语言课程设计》报告.docx》由会员分享,可在线阅读,更多相关《《C语言课程设计》报告.docx(16页珍藏版)》请在冰豆网上搜索。
《C语言课程设计》报告
C语言课程设计
题目名称:
学生信息管理
姓名
学号
专业班级电子科学与技术1401
指导教师黄兆祥
日期2015年12月25
[问题定义]
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话等。
试设计一学生信息管理系统,使之能提供一下功能:
(1)学生信息录入功能(学生信息用文件保存)——输入
(2)学生信息浏览功能——输出
(3)查询、排序功能——算法
1.按学号查询
2.按姓名查询
(4)学生信息的删除与修改
[开发工具]
MiscroftVisualc++6.0
[数据结构]
intnum,age,birthday,tel定义学生的学号,年龄,生日,联系电话;
charname[10]定义关于姓名的字符数组,里面最多有10个字符元素;
charsex[10]定义关于性别的字符数组,里面最多有10个字符元素;
address[20]定义关于地址的字符数组,里面最多有20个字符元素;
intCount=0定义一个全局的整型变量并赋初值为0;
charzx用于之后选择是否继续执行新建程序;
intchoice用于执行switch-while语句;
inti用于执行后面的for循环。
[算法描述]
开始
姓名
学号
选择如何查找
退出程序
结束
是否退出此程序
输入6
输入3
输入4
输入5
查找学生信息
输入2
输入1
显示所有学生信息
删除学生信息
修改学生信息
否
是
进入信息录入系统
主菜单选择
定义结构体
structstudent{//结构体数组
intnum,age,birthday,tel;
charname[10];//定义字符数组name[10]里面有10个字符元素;
charsex[10],address[20];
};
intCount=0;//定义一个全局的整型变量并赋初值为0;
主函数
intmain()
{
charzx;
system("color4B");//背景颜色
intchoice;
structstudentstudents[MaxSize];
printf("\t\t**********欢迎使用学生信息管理系统**********\n\n\n");
do{
printf("请选择:
1:
新建2:
显示所有3:
查找4:
修改5:
删除0:
退出\n");
scanf("%d",&choice);
switch(choice){//switch-while语句
case1:
do{
new_student(students);
getchar();
printf("是否退出?
Y/N:
");
zx=getchar();
}while(zx!
='Y');//非Y执行
system("pause");//按任意键继续
system("cls");//清屏
break;
case2:
output_student(students);
system("pause");
system("cls");
break;
case3:
search_student(students);
system("pause");
system("cls");
break;
case4:
update_student(students);
system("pause");
system("cls");
break;
case5:
delete_student(students);
system("pause");
system("cls");
break;
case0:
break;
}
}while(choice!
=0);
printf("\t\t谢谢使用!
\n");
return0;
}
新建学生信息
voidnew_student(structstudentstudents[])
{
structstudents;
if(Count==MaxSize){
printf("学生信息管理系统已经满了!
\n");
return;
}//if语句,若人数已超过50人则提示
printf("请输入这个学生的学号:
\n");
scanf("%d",&s.num);
printf("请输入这个学生的姓名:
\n");
scanf("%s",s.name);
printf("请输入这个学生的年龄:
\n");
scanf("%d",&s.age);
printf("请输入这个学生的性别:
\n");
scanf("%s",s.sex);
printf("请输入这个学生的出生年月:
\n");
scanf("%d",&s.birthday);
printf("请输入这个学生的家庭地址:
\n");
scanf("%s",s.address);
printf("请输入这个学生的电话号码:
\n");
scanf("%d",&s.tel);
students[Count]=s;
Count++;
}
显示所有学生信息
voidoutput_student(structstudentstudents[])
{
inti;
if(Count==0)
{
printf("学生人数是零!
\n");
return;
}//if语句,若未输入信息则显示“学生人数为零!
”
for(i=0;i{
printf("学号:
\t%d\n",students[i].num);
printf("姓名:
\t%s\n",students[i].name);
printf("年龄:
\t%d\n",students[i].age);
printf("性别:
\t%s\n",students[i].sex);
printf("出生年月:
\t%d\n",students[i].birthday);
printf("家庭地址:
\t%s\n",students[i].address);
printf("电话号码:
\t%d\n",students[i].tel);
}
}
查询学生信息
voidsearch_student(structstudentstudents[])
{
inti,flag=0;
intchoose;
intnum;
charname[10];
if(Count==0)
{
printf("学生人数是零!
\n");
return;
}//if语句,若未输入信息则显示“学生人数为零!
”
printf("你想根据什么查找:
\t1:
学号2:
姓名\n");
scanf("%d",&choose);
if(choose==1)//按学号查找
{
printf("请输入你要查找的学号:
\t");
scanf("%d",&num);
for(i=0;iif(students[i].num==num)
{
flag=1;break;
}
}
elseif(choose==2)//按姓名查找
{
printf("请输入你要查找的姓名:
\t");
scanf("%s",name);
for(i=0;iif((strcmp(students[i].name,name))==0)
{
flag=1;break;
}
}
if(flag)//显示查询到的信息
{
printf("学号:
%d\n",students[i].num);
printf("姓名:
%s\n",students[i].name);
printf("年龄:
%d\n",students[i].age);
printf("性别:
%s\n",students[i].sex);
printf("出生年月:
%d\n",students[i].birthday);
printf("家庭地址:
%s\n",students[i].address);
printf("电话号码:
%d\n",students[i].tel);
}
else
printf("查无此人!
\n");
}
修改学生信息
voidupdate_student(structstudentstudents[])
{
intchoose,i,num;
intage,birthday,tel;
charaddress[10];
if(Count==0)
{
printf("人数为零!
\n");
return;
}
output_student(students);//显示所有学生信息
printf("请输入你要修改的学生的学号:
\n");
scanf("%d",&num);
for(i=0;iif(students[i].num==num)
{
do{
printf("请输入你要修改的信息:
1:
年龄2:
出生年月3:
家庭地址4:
电话号码0:
退出修改\n");
scanf("%d",&choose);
switch(choose){//switch语句,选择修改何种信息
case1:
printf("请输入你修改后的年龄:
\n");
scanf("%d",&age);
students[i].age=age;
printf("修改成功!
\n");break;
case2:
printf("请输入你修改后的出生年月:
\n");
scanf("%d",&birthday);
students[i].birthday=birthday;
printf("修改成功!
\n");break;
case3:
printf("请输入你修改后的家庭地址:
\n");
scanf("%s",address);
strcpy(students[i].address,address);//字符串的复制
printf("修改成功!
\n");break;
case4:
printf("请输入你修改后的电话号码:
\n");
scanf("%d",&tel);
students[i].tel=tel;
printf("修改成功!
\n");break;
case0:
break;
}
}while(choose!
=0);
}
}
删除学生成绩
voiddelete_student(structstudentstudents[])
{
inti;
intflag=1;
intnum;
if(Count==0)
{
printf("人数为零!
\n");
return;
}
printf("请输入你要删除的学生的学号:
\n");
scanf("%d",&num);
for(i=0;i{
if(students[i].num==num)
{
do{
students[i]=students[i+1];
i++;
}while(iCount--;
flag=0;
printf("删除成功!
\n");
}
}
if(flag)
printf("没有找到要删除的学生!
\n");//若没找到则提示
}
[程序运行结果测试与分析]
1.之前在使用时一直没有考虑到如果搜索时输入的名字之前没有会怎么样,导致在一次操作过程中程序直接崩溃,于是之后加入了一个if语句,如果没有找到,则会输出“查无此人”。
2.在之前的程序中,每输入一个学生成绩就会需要重新选择进入新建程序,并且会刷新屏幕,之后在主函数中加入了一个do-while语句,则解决此问题。
3.在刚写时,出现了很多逻辑或者语句错误之类的,但是之后经过不断地查询、调试,最终得以解决。
[心得及体会]
虽然之前的C语言课程没有挂科,但是当时没有雪的很认真,并且到现在也有一段时间了,所以还是有所遗忘。
这学期有开设了C语言课程设计这门课,也算是给了我一个机会重新学习一番,因此,在此次的程序设计中,我是一边学一边做,真正的算是把书本知识与时间相结合,因此也雪的更加牢固,体会也更加深刻。
期初在拿到题目的时候,其实我是很紧张的,因为不知道自己是否能够顺利的完成,但是通过不断地摸索,不断地学习,我也得到了很大的进步。
有时候甚至因为自己完成了一个模块的小程序而欣喜不已。
特别是在之后的改进过程中,更是一边操作,一边学习,一边改进,让自己的程序做到更好。
直到最后,虽然这个程序还有很多值得改进的地方,可我还是特别的激动,因为这个是靠我自己独立学习完成的第一个比较完整的程序了。
最后,我想说,事在人为,只要肯努力,一定会做出成果。
[参考文献或网站]
【1】
【2】
【2】《C语言程序设计》主编:
周雯(天津大学出版社)
【3】《C语言程序设计》主编:
杨有安(人民邮电出版社)