C语言课程设计学生证管理系统.docx

上传人:b****6 文档编号:4688884 上传时间:2022-12-07 格式:DOCX 页数:26 大小:208.15KB
下载 相关 举报
C语言课程设计学生证管理系统.docx_第1页
第1页 / 共26页
C语言课程设计学生证管理系统.docx_第2页
第2页 / 共26页
C语言课程设计学生证管理系统.docx_第3页
第3页 / 共26页
C语言课程设计学生证管理系统.docx_第4页
第4页 / 共26页
C语言课程设计学生证管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言课程设计学生证管理系统.docx

《C语言课程设计学生证管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生证管理系统.docx(26页珍藏版)》请在冰豆网上搜索。

C语言课程设计学生证管理系统.docx

C语言课程设计学生证管理系统

C语言课程设计

 

院系:

姓名:

学号:

班号:

指导教师:

日期:

2010年9月

 

 

 

实验题目学生证管理系统

一、实验目的

1.熟悉C语言程序的编辑、编译链接和运行的过程,至少能够用一种编译器较熟练地编辑、编译及调试程序。

2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。

3.熟练运用if语句和switch语句以及嵌套应用。

涉及循环调用的,了解并掌握三种控制语句while、do-while和for语句。

4.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。

5.掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。

6.掌握结构体类型变量、数组的定义和使用。

7.了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法。

灵活使用链表来储存学生信息。

8.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串

二、实验内容

学生证的管理程序。

该程序应该具有下列功能:

(1)录入某位学生的学生证信息;

(2)给定学号,显示某位学生的学生证信息;

(3)给定某个班级的班号,显示该班所有学生的学生证信息;

(4)给定某位学生的学号,修改该学生的学生证信息;

(5)给定某位学生的学号,删除该学生的学生证信息;

(6)提供一些统计各类信息的功能。

三、需求分析

系统功能:

1.显示全部的学生证信息;

2.给定某位学生的学号或姓名,查询或修改该学生的学生证信息;

3.给定某位学生的学号或姓名,删除该学生的学生证信息;

4.增加学生信息;

5.提供一些统计各类信息的功能。

例如统计学生数,班级数,每个班级的学生数;

6.能够对学号和班级进行升序和降序排序;

7.用文件的形式将录入的数据进行存储,并从其中读取数据。

性能描述:

各种功能都可以满足;程序相对较小,因而运行时反应比较迅速,不存在响应不及时地问题。

四、概要设计

1.方案设计

2.数据结构说明

1、建立一个小型的学生证管理系统.可对学生的信息进行管理.

2、学生信息应包括学生的学号,姓名,性别,班级的信息..

3、数据必须以文件形式存放.

分析:

首先进入信息的录入和储存,录入学生基本信息,然后储存在文件中.其次做更新操作(插入,删除,修改).然后作查询,排序等操作。

3.模块功能说明

luru()

用于储存所输入的学生信息到指定文件

chaxunx()

用于按学号查找某个学生信息并打印该生信息

chaxunb()

用于按班级查找某个学生信息并打印该生信息

xiugai()

用于修改某个学号的学生信息

shanchu()

用于按学号删除某个学生的信息

tongji()

用于统计学生的信息

4.程序可以满足功能

1.各模块间通过菜单切换和调用

2.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。

3.程序能够保证各模块功能的独立和数据共享。

4.相近功能以级联菜单的形式集成。

五、详细设计

①主函数主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。

为了程序显示的清晰可读,应先清屏之后调用菜单函数。

[程序]

voidmain()

{

intn;

system("cls");//清屏

printf("欢迎使用学生证管理系统\n");

printf("1、录入学生信息\n");

printf("2、查询学生信息\n");

printf("3、查询班级信息\n");

printf("4、修改学生信息\n");

printf("5、删除学生信息\n");

printf("6、统计学生信息\n");

printf("7、退出\n");

printf("请输入功能代码:

[1-5]");

scanf("%d",&n);

switch(n)

{

case1:

luru();break;

case2:

chaxunx();break;

case3:

chaxunb();break;

case4:

xiugai();break;

case5:

shanchu();break;

case6:

tongji();break;

case7:

exit

(1);break;

default:

printf("error\n");

}

}

②输入模块用于输入学生的相关信息包括姓名、性别、学号、班级、单位,并将信息存储到stu_kard.txt文件中。

[程序]

voidluru()

{

inti=0;

FILE*fp;

system("cls");

printf("请输入学生信息(以空格隔开)\n姓名性别学号班号单位\n");

scanf("%s%s%d%d%s",&stud[i].name,&stud[i].sex,&stud[i].xuehao,&stud[i].banhao,&stud[i].danwei);

fp=fopen("stu_kard.txt","a");//追加方式打开文本文件

if(fp==NULL)//打开失败

{

printf("cannotopenfile\n");

return;

}

else//打开成功

{

if(fwrite(&stud[i],sizeof(structstudent),1,fp)!

=1)

printf("filewriteerror\n");

}

fclose(fp);//关闭文件

return;

}

③按学号查询模块用于按学号查询学生信息。

输入所要查询的学生学号,程序读取stu_kard.txt文件中的信息查找出相关的学生信息并将其显示出来。

[程序]

voidchaxunx()//查询学生信息函数

{

inti=0;

charit;

intxuehao;

FILE*fp;

system("cls");

//以下是查询某个学生的个人信息

printf("是要查询学生个人信息吗?

yes--yno--n请输入:

");

scanf("%s",&it);

if(it=='y')//输入y表示要查询学生的个人信息

{

printf("请输入学号:

");

scanf("%d",&xuehao);

fp=fopen("stu_kard.txt","r");//只读方式打开文本文件

while(!

feof(fp))//循环从文件总读取记录,与输入学号相比,

{

fread(&stud[i],sizeof(structstudent),1,fp);

if(xuehao==stud[i].xuehao)

{

printf("查询信息如下:

姓名性别学号班号单位\n");

printf("%17s%5s%6d%6d%8s\n",stud[i].name,stud[i].sex,stud[i].xuehao,stud[i].banhao,stud[i].danwei);

break;//查询到该学生信息后退出循环

}

}

if(stud[i].xuehao!

=xuehao)

printf("查无此人!

");

fclose(fp);

}

elseif(it=='n'){printf("取消查询\n");}

else{printf("输入错误!

\n");}

}

④按班级查询模块用于按班级查询学生信息。

输入所要查询的班号,程序读取stu_kard.txt文件中的信息查找出对应班级下相关的学生信息并将其显示出来。

[程序]

voidchaxunb()//查询班级信息函数

{

inti;

charit;

intbanhao;

FILE*fp;

i=0;

printf("是要查询学生班级信息吗?

yes--yno--n请输入:

");

scanf("%s",&it);

if(it=='y')//输入y表示要查询学生的班级信息

{

printf("请输入班号:

");

scanf("%d",&banhao);

fp=fopen("stu_kard.txt","r");

printf("查询信息如下:

姓名性别学号班号单位\n");

for(i=0;!

feof(fp);i++)//循环从文件总读取记录,与stud[i].banji相比,

{

fread(&stud[i],sizeof(structstudent),1,fp);

if(banhao==stud[i].banhao)//如果banji号相同,显示该条记录

printf("%17s%5s%6d%6d%8s\n",stud[i].name,stud[i].sex,stud[i].xuehao,stud[i].banhao,stud[i].danwei);

}

fclose(fp);

}

elseif(it=='n'){printf("取消查询\n");}

else{printf("输入错误!

\n");}

printf("输入任意字符结束");

return;

}

///////////////////////////////////////////////

voidxiugai()//修改函数

{

intxuehao,i;

FILE*fp;

i=0;

system("cls");

printf("请输入需要修改学生信息的学号:

");

scanf("%d",&xuehao);

fp=fopen("stu_kard.txt","r+a");//只读方式打开文本文件

while(!

feof(fp))//循环从文件总读取记录,与输入学号相比,

{

fread(&stud[i],sizeof(structstudent),1,fp);

if(xuehao==stud[i].xuehao)

{

printf("%17s%5s%6d%6d%8s\n",stud[i].name,stud[i].sex,stud[i].xuehao,stud[i].banhao,stud[i].danwei);

printf("请输入新的学生信息(以空格隔开)\n姓名性别学号班号单位\n");

scanf("%s%s%d%d%s",&stud[i].name,&stud[i].sex,&stud[i].xuehao,&stud[i].banhao,&stud[i].danwei);

fseek(fp,sizeof(structstudent),1);

fwrite(&stud[i],sizeof(structstudent),1,fp);

}

break;

}

}

⑤删除模块用于删除学生的信息。

输入想要删除的学生信息的学号,程序读取stu_kard.txt文件中的信息查找出相应的学生并将其信息删除。

[程序]

voidshanchu()//删除函数

{

intxuehao,i;

intj;

FILE*fp;

i=0;

j=0;

system("cls");

printf("请输入需要删除学生信息的学号:

");

scanf("%d",&xuehao);

fp=fopen("stu_kard.txt","r+a");

while(!

feof(fp))//循环从文件总读取记录,与输入学号相比,

{

fread(&stud[i],sizeof(structstudent),1,fp);

if(xuehao==stud[i].xuehao)//查询到该学生信息后删除该学生信息

{

printf("%17s%5s%6d%6d%8s\n",stud[i].name,stud[i].sex,stud[i].xuehao,stud[i].banhao,stud[i].danwei);

stud[i].xuehao=0;

stud[i].banhao=0;

strcpy(stud[i].danwei,"");

strcpy(stud[i].name,"");

strcpy(stud[i].sex,"");

fseek(fp,sizeof(structstudent),1);

fwrite(&stud[i],sizeof(structstudent),1,fp);

printf("删除成功!

");

break;

}

}

fclose(fp);

}

⑥修改模块用于修改学生信息。

输入想要修改的学生学号,程序会读取stu_kard.txt文件中的信息查找出相应的学生显示出来并且可以重新修改其学生信息。

[程序]

voidxiugai()//修改函数

{

intxuehao,i;

FILE*fp;

i=0;

system("cls");

printf("请输入需要修改学生信息的学号:

");

scanf("%d",&xuehao);

fp=fopen("stu_kard.txt","r+a");//只读方式打开文本文件

while(!

feof(fp))//循环从文件总读取记录,与输入学号相比,

{

fread(&stud[i],sizeof(structstudent),1,fp);

if(xuehao==stud[i].xuehao)

{

printf("%17s%5s%6d%6d%8s\n",stud[i].name,stud[i].sex,stud[i].xuehao,stud[i].banhao,stud[i].danwei);

printf("请输入新的学生信息(以空格隔开)\n姓名性别学号班号单位\n");

scanf("%s%s%d%d%s",&stud[i].name,&stud[i].sex,&stud[i].xuehao,&stud[i].banhao,&stud[i].danwei);

fseek(fp,sizeof(structstudent),1);

fwrite(&stud[i],sizeof(structstudent),1,fp);

}

break;

}

}

⑦统计模块用于统计所输入的学生信息,统计的信息包括学生总人数,男生、女生人数,并且可以选择是否显示当前所存储的所有学生的信息。

[程序]

voidtongji()

{

charchr;

intren,nan,nv,i;

FILE*fp;

i=0;

ren=0;

nan=nv=0;

system("cls");

printf("\n-----统计学生信息----\n");

printf("是否统计当前录入的学生人数?

(yes--yno--n)");

scanf("%s",&chr);

if(chr=='y')

{

fp=fopen("stu_kard.txt","rb");

for(i=0;!

feof(fp);i++)

{

fread(&stud[i],sizeof(structstudent),1,fp);

if(stud[i].xuehao!

=0)

{

ren++;

if(strcmp(stud[i].sex,"男")==0)

nan++;

elseif(strcmp(stud[i].sex,"女")==0)

nv++;

}

}

fclose(fp);

printf("当前录入的学生总人数是:

");

printf("%6d\n",ren);

printf("其中男生人数:

");

printf("%6d",nan);

printf("女生人数:

");

printf("%6d",nv);

}

else{printf("取消操作\n");}

/////////////////////////////////////////////////////////////////

printf("\n\n\n是否显示所有录入学生信息?

(yes--yno--n)");

scanf("%s",&chr);

if(chr=='y')

{

printf("查询信息如下:

姓名性别学号班号单位\n");

fp=fopen("stu_kard.txt","rb");

for(i=0;!

feof(fp);i++)

{

fread(&stud[i],sizeof(structstudent),1,fp);

if(stud[i].xuehao!

=0)

printf("%17s%5s%6d%6d%8s\n",stud[i].name,stud[i].sex,stud[i].xuehao,stud[i].banhao,stud[i].danwei);

}

fclose(fp);

}

}

六、调试情况,设计技巧及体会

1、运行该程序,其各个模块的界面图如下:

(1)主菜单函数:

(2)输入模块:

(3)查询学生信息模块:

(4)查询班级信息模块:

(5)修改学生信息模块:

(6)删除模块:

(7)统计模块:

2、对自己设计进行评价

我觉得我的程序比较成功,各个模块在运行中都很正常,基本满足了实习的基本要求,各个模块构成一个功能相对完整的的系统。

3、在设计过程中的感受

对这次实习的最大感受,便是做一个程序应该很细心,因为在编程过程中我很多地方的错误都是不细心,不认真而造成的,但在完成整个程序后,眼看各个功能模块完美的运行成功,又有一种很强的成就感。

七、源程序清单

#include

#include

#include

#include

#include

#include

#defineSIZE5

structstudent

{

charname[10];

charsex[4];

intxuehao;

intbanhao;

chardanwei[10];

}stud[SIZE];

typedefstruct{

charname[10];

charsex[4];

intxuehao;

intbanhao;

chardanwei[10];

}stu;

voidmain();

voidluru();

voidchaxunx();

voidchaxunb();

voidxiugai();

voidshanchu();

voidtongji();

voidmain()

{

intn;

system("cls");//清屏

printf("欢迎使用学生证管理系统\n");

printf("***************************1、录入学生信息***********************************\n");

printf("***************************2、查询学生信息***********************************\n");

printf("***************************3、查询班级信息***********************************\n");

printf("***************************4、修改学生信息***********************************\n");

printf("***************************5、删除学生信息***********************************\n");

printf("***************************6、统计学生信息***********************************\n");

printf("***************************7、退出***********************************\n");

printf("请输入功能代码:

[1-5]");

scanf("%d",&n);

switch(n)

{

case1:

luru();break;

case2:

chaxunx();break;

case3:

chaxunb();break;

case4:

xiugai();break;

case5:

shanchu();break;

case6:

tongji();break;

case7:

exit

(1);break;

default:

printf("error\n");

}

}

///////////////////////////////////////////////

voidluru()

{

inti=0;

FILE*fp;

system("cls");

printf("请输入学生信息(以空格隔开)\n姓名性别学号班号单位\n");

scanf("%s%s%d%d%s",&stud[i].name,&stud[i].sex,&stud[i].xuehao,&stud[i].banhao,&stud[i].danwei);

fp=fopen("stu_kard.txt","a");//追加方式打开文本文件

if(fp==NULL)//打开失败

{

printf("cannotopenfile\n");

return;

}

else//打开成功

{

if(fwrite(&stud[i],sizeof(structstudent),1,fp)!

=1)

printf("filewriteerror\n");

}

fclose(fp);//关闭文件

return;

}

///////////////////////////////////////////////

voidchaxunx()//查询学生信息函数

{

inti=0;

charit;

intxuehao;

FILE*fp;

system("cls");

//以下是查询某个学生的个人信息

print

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

当前位置:首页 > 高中教育 > 理化生

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

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