程序设计学生籍贯信息记录簿.docx

上传人:b****4 文档编号:27010398 上传时间:2023-06-25 格式:DOCX 页数:19 大小:374.83KB
下载 相关 举报
程序设计学生籍贯信息记录簿.docx_第1页
第1页 / 共19页
程序设计学生籍贯信息记录簿.docx_第2页
第2页 / 共19页
程序设计学生籍贯信息记录簿.docx_第3页
第3页 / 共19页
程序设计学生籍贯信息记录簿.docx_第4页
第4页 / 共19页
程序设计学生籍贯信息记录簿.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

程序设计学生籍贯信息记录簿.docx

《程序设计学生籍贯信息记录簿.docx》由会员分享,可在线阅读,更多相关《程序设计学生籍贯信息记录簿.docx(19页珍藏版)》请在冰豆网上搜索。

程序设计学生籍贯信息记录簿.docx

程序设计学生籍贯信息记录簿

 

程序设计报告

(2012/2013学年第二学期)

 

题目:

学生籍贯信息记录簿

 

专业

学生姓名

班级学号

指导教师

指导单位

日期

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

容详实程度

文字表达熟练程度

回答问题准确度

简短评语

 

教师签名:

年月日

评分等级

备注

评分等级有五种:

优秀、良好、中等、及格、不及格

学生籍贯信息记录簿

一、课题容和要求

编制一个学生籍贯信息记录簿,每个学生信息包括:

学号、姓名、籍贯。

具体功能:

(1)创建信息链表并以磁盘文件保存;

(2)读取磁盘文件并显示输出所有学生的籍贯信息;

(3)按学号或姓名查询其籍贯;

(4)按籍贯查询并输出该籍贯的所有学生;

(5)能添加、删除和修改学生的籍贯信息;

(6)显示输出籍和非籍学生的信息并可分别存盘。

 

二、需求分析

模块1:

显示基本信息(创建信息链表并以磁盘文件保存,读取磁盘文件)

模块2:

输出籍贯信息(显示输出所有学生的籍贯信息)

模块3:

根据条件查询(按学号或姓名查询其籍贯,按籍贯查询)

模块4:

输出学生信息(输出该籍贯的所有学生)

模块5:

基本信息管理(添加、删除和修改学生的籍贯信息)

模块6:

分别显示存盘(显示输出籍和非籍学生的信息并可分别存盘)

模块7:

结束程序(退出系统)

 

三、概要设计

 

四、源程序代码

#include

#include

#include

#include

#defineMAX100//宏定义最多输入人数

typedefstruct

{

charnum[50];

charname[50];

charaddress[50];

}Student;//定义了一个新的结构体类型Student

Studentstu[MAX];//定义结构体型数组

intn;//定义一个全局变量,表示第n个学生

intt;

ints=0;

voidInput();//输入信息

voidDisplay();//2.读取最初输入的信息并显示

voidReadfile();//读取文件student.dat的信息

voidModify(inti);//5.修改第i个学生的姓名和籍贯

voidSave1();//将最初输入的容存档到student.dat文件中

voidSave2();//传送格式化输出到student.dat文件

voidDis();//6.显示输出,非学生信息

voidFind(inti);//3.按学号或姓名查询籍贯

voidFinds();//4按籍贯查找学生

voidmain()

{

charchoose;

do{if(s==0)

{intM=35;

printf("欢迎大家进入邮电大学籍贯管理系统\n");

s++;

}

printf("**********************************************************\n");

printf("1.输入信息并存档\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)//传送格式化输出到student.dat文件中

{

FILE*fp;

fp=fopen("student.dat","w");//以只写的方式打开student.dat文件

fprintf(fp,"%s%s%s\n",stu[t].num,stu[t].name,stu[t].address);//格式化输出:

学号姓名地址

fclose(fp);

}

voidInput()//输入信息

{

n=0;

do

{

printf("请输入第%d个学生信息,输入Finish结束输入(输入格式:

学号姓名籍贯)\n",n+1);

scanf("%s",stu[n].num);

if(strcmp(stu[n].num,"Finish")==0)break;

scanf("%s",stu[n].name);

scanf("%s",stu[n].address);

n++;

}

while

(1);

}

voidSave1()//将最初输入的容存档到student.dat文件中

{

inti;

FILE*fp;

if((fp=fopen("student.dat","a+"))==NULL)//以读写的方式打开student.dat文件

fp=fopen("student.dat","w");//以只写的方式打开student.dat文件

for(i=0;i

{

fprintf(fp,"%s%s%s\n",stu[i].num,stu[i].name,stu[i].address);//用格式化输出函数输出容到student.dat

}

fclose(fp);

}

voidDisplay()//2.读取信息并显示

{

inti;

printf("学号姓名籍贯:

\n");

for(i=0;i

{

printf("%5s%5s%5s\n",stu[i].num,stu[i].name,stu[i].address);

}

}

voidFind(intf)//3.按学号或姓名查询籍贯

{

inti;

intchoose,k;

charans[50];//定义字符串型数组,用于查找

do

{

printf("1.按学号查询\n");

printf("2.按姓名查找\n");

printf("3.返回主菜单\n");

scanf("%d",&choose);

if(choose==1)

{

printf("请输入学号\n");

scanf("%s",ans);

k=-1;

for(i=0;i

if(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);//执行修改第t个学生的姓名和籍贯的函数

}

}

elseif(choose==2)

{

printf("请输入姓名\n");

scanf("%s",ans);

k=-1;

for(i=0;i

if(strcmp(ans,stu[i].name)==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个学生的姓名和籍贯的函数

}

}

elsereturn;

}

while

(1);

}

voidModify(intt)//4.修改第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);//传送修改过的格式化输出到student.dat文件中

}

voidReadfile()//读取文本文件student.dat的信息

{

FILE*fp;

if((fp=fopen("student.dat","r"))==NULL)return;//以只读的方式打开student.dat文件

n=0;

while(!

feof(fp))//判断文件指针是否指向文件结束处

{

fscanf(fp,"%s%s%s",stu[n].num,stu[n].name,&stu[n].address);//利用fscanf()函数输入信息

n++;

}

fclose(fp);

}

voidDis()//5.显示输出,非学生信息

{

inti;

printf("学生:

\n");

printf("学号姓名籍贯\n");

for(i=0;i

if(strcmp(stu[i].address,"")==0)//比较字符串大小

{

printf("%s%5s%5s\n",stu[i].num,stu[i].name,stu[i].address);

}

}

printf("\n");printf("\n");

printf("非学生:

\n");

printf("学号姓名籍贯\n");

for(i=0;i

if(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;i

if(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.调试的画面不够美观。

 

七、课程设计总结

这次的程序设计和以往的上机有点不同,它要求的更多,所以设计考虑的也更多。

在写程序的过程中,我们分别写了很多程序,但大部分都有或多或少的问题,然后不能运行。

翻书,问前辈,最后一起做了一个程序。

在调试方面,我觉得问题多多,界面谈不上多友好,人性化方面做的不足,但确实,我们能力有限,想把程序做的更好更完美,但黔驴技穷。

但正如老师所说,一个学生应当具备能够回答提问的能力,所以,这方面,我会努力去提高的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1