程序设计学生籍贯信息记录簿.docx
《程序设计学生籍贯信息记录簿.docx》由会员分享,可在线阅读,更多相关《程序设计学生籍贯信息记录簿.docx(15页珍藏版)》请在冰豆网上搜索。
程序设计学生籍贯信息记录簿
程序设计报告
(2012/2013学年第二学期)
题目:
学生籍贯信息记录簿
专业
学生姓名
班级学号
指导教师
指导单位
日期
评分细则
评分项
优秀
良好
中等
差
遵守机房规章制度
上机时的表现
学习态度
程序准备情况
程序设计能力
团队合作精神
课题功能实现情况
算法设计合理性
用户界面设计
报告书写认真程度
内容详实程度
文字表达熟练程度
回答问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
学生籍贯信息记录簿
一、课题内容和要求
编制一个学生籍贯信息记录簿,每个学生信息包括:
学号、姓名、籍贯。
具体功能:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号或姓名查询其籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息;
(6)显示输出江苏籍和非江苏籍学生的信息并可分别存盘。
二、需求分析
模块1:
显示基本信息(创建信息链表并以磁盘文件保存,读取磁盘文件)
模块2:
输出籍贯信息(显示输出所有学生的籍贯信息)
模块3:
根据条件查询(按学号或姓名查询其籍贯,按籍贯查询)
模块4:
输出学生信息(输出该籍贯的所有学生)
模块5:
基本信息管理(添加、删除和修改学生的籍贯信息)
模块6:
分别显示存盘(显示输出江苏籍和非江苏籍学生的信息并可分别存盘)
模块7:
结束程序(退出系统)
三、概要设计
四、源程序代码
#include<>
#include<>
#include<>
#include<>
#defineMAX100取最初输入的信息并显示
voidReadfile();改第i个学生的姓名和籍贯
voidSave1();示输出江苏,非江苏学生信息
voidFind(inti);学号或姓名查询籍贯
voidFinds();入信息并存档\n");
printf("2.读取信息并显示\n");
printf("3.按学号或姓名查询籍贯\n");
printf("4.按籍贯查询学生\n");
printf("5.修改(删除)指定姓名或学号的学生的姓名和籍贯\n");
printf("6.显示输出江苏,非江苏学生信息\n");
printf("**********************************************************\n");
scanf("%s",&choose);
switch(choose)
{
case'1':
{Input();Save1();}break;
case'2':
{Readfile();Display();}break;
case'3':
{Readfile();Find
(1);}break;
case'4':
{Readfile();Finds();}break;
case'5':
{Readfile();Find(0);}break;
case'6':
{Readfile();Dis();}break;
default:
printf("输入错误,请重新输入:
\n");
}
}
while
(1);
}
voidSave2(intt)um,stu[t].name,stu[t].address);um);
if(strcmp(stu[n].num,"Finish")==0)break;
scanf("%s",stu[n].name);
scanf("%s",stu[n].address);
n++;
}
while
(1);
}
voidSave1()um,stu[i].name,stu[i].address);取信息并显示
{
inti;
printf("学号姓名籍贯:
\n");
for(i=0;i{
printf("%5s%5s%5s\n",stu[i].num,stu[i].name,stu[i].address);
}
}
voidFind(intf)学号或姓名查询籍贯
{
inti;
intchoose,k;
charans[50];学号查询\n");
printf("2.按姓名查找\n");
printf("3.返回主菜单\n");
scanf("%d",&choose);
if(choose==1)
{
printf("请输入学号\n");
scanf("%s",ans);
k=-1;
for(i=0;iif(strcmp(ans,stu[i].num)==0)
{
k=i;
break;
}
if(k==-1)
printf("不存在该学生信息\n");
else
{
if(f==1)
printf("%s%s%s\n",stu[k].num,stu[k].name,stu[k].address);
else
Modify(k);ame)==0)
{
k=i;break;
}
if(k==-1)
printf("不存在该学生信息\n");
else
{
if(f==1)
printf("%s%s%s\n",stu[k].num,stu[k].name,stu[k].address);
else
Modify(k);改第t个学生的姓名和籍贯
{
intchoose;
inti;
printf("1.删除\n");
printf("2.修改\n");
scanf("%d",&choose);
if(choose==1)
{
for(i=t;i{
stu[i]=stu[i+1];
}
n--;
}
else
{
printf(">>>>请重新输入该学生信息:
\n");
scanf("%s%s%s",stu[t].num,stu[t].name,&stu[t].address);
}
Save2(t);um,stu[n].name,&stu[n].address);示输出江苏,非江苏学生信息
{
inti;
printf("江苏学生:
\n");
printf("学号姓名籍贯\n");
for(i=0;iif(strcmp(stu[i].address,"江苏")==0)um,stu[i].name,stu[i].address);
}
}
printf("\n");printf("\n");
printf("非江苏学生:
\n");
printf("学号姓名籍贯\n");
for(i=0;iif(strcmp(stu[i].address,"江苏")!
=0)
{
printf("%s%7s%5s\n",stu[i].num,stu[i].name,stu[i].address);
}
}
}
voidFinds()
{
inti,k=-1;
intchoose;
charans[50];
printf("请输入籍贯\n");
scanf("%s",ans);
for(i=0;iif(strcmp(ans,stu[i].address)==0)
{
k=1;
printf("%s%s%s\n",stu[i].num,stu[i].name,stu[i].address);
}
if(k=-1)
printf("无此省份学生信息\n");
return;
}
五、测试数据及其结果分析
截取了调试时的图片,基本符合要求,但然后一些不人性化的地方值得修改。
截图如下:
此处为录入信息
此处为显示和查询信息
此处为查询和修改(删除)信息以及显示江苏和非江苏籍贯学生
六、调试过程中的问题
1.在录入信息的时候,可能会填错信息,在按了回车之后,不能马上回去修改,只能全部录入完之后再选择修改(删除),进行修改,不够人性化。
2.在选择删除之后,没有删除成功的提示,不够人性化。
3.调试的画面不够美观。
七、课程设计总结
这次的程序设计和以往的上机有点不同,它要求的更多,所以设计考虑的也更多。
在写程序的过程中,我们分别写了很多程序,但大部分都有或多或少的问题,然后不能运行。
翻书,问前辈,最后一起做了一个程序。
在调试方面,我觉得问题多多,界面谈不上多友好,人性化方面做的不足,但确实,我们能力有限,想把程序做的更好更完美,但黔驴技穷。
但正如老师所说,一个学生应当具备能够回答提问的能力,所以,这方面,我会努力去提高的。