学生证管理系统.docx

上传人:b****4 文档编号:5484058 上传时间:2023-05-08 格式:DOCX 页数:24 大小:146.92KB
下载 相关 举报
学生证管理系统.docx_第1页
第1页 / 共24页
学生证管理系统.docx_第2页
第2页 / 共24页
学生证管理系统.docx_第3页
第3页 / 共24页
学生证管理系统.docx_第4页
第4页 / 共24页
学生证管理系统.docx_第5页
第5页 / 共24页
学生证管理系统.docx_第6页
第6页 / 共24页
学生证管理系统.docx_第7页
第7页 / 共24页
学生证管理系统.docx_第8页
第8页 / 共24页
学生证管理系统.docx_第9页
第9页 / 共24页
学生证管理系统.docx_第10页
第10页 / 共24页
学生证管理系统.docx_第11页
第11页 / 共24页
学生证管理系统.docx_第12页
第12页 / 共24页
学生证管理系统.docx_第13页
第13页 / 共24页
学生证管理系统.docx_第14页
第14页 / 共24页
学生证管理系统.docx_第15页
第15页 / 共24页
学生证管理系统.docx_第16页
第16页 / 共24页
学生证管理系统.docx_第17页
第17页 / 共24页
学生证管理系统.docx_第18页
第18页 / 共24页
学生证管理系统.docx_第19页
第19页 / 共24页
学生证管理系统.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生证管理系统.docx

《学生证管理系统.docx》由会员分享,可在线阅读,更多相关《学生证管理系统.docx(24页珍藏版)》请在冰点文库上搜索。

学生证管理系统.docx

学生证管理系统

一、课程设计的目的

提高程序设计能力,检验课堂教学内容,掌程序设计的基本方法和调试技能。

二、课程设计报告正文

题目

该系统应该具有下列功能:

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

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

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

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

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

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

【输入要求】

应用程序运行后,在屏幕上显示一个菜单。

用户可以根据要求,选定相应的操作项目。

进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。

【输出要求】

(1)应用程序运行后,要在屏幕上显示一个菜单。

(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

【提示】

设计时可采用结构体类型和一维数组类型,用来保存学生证的内容。

三、分析

由于题目要求给出清晰明确懂得信息,所以在程序中要提供各种不同功能的模块。

四、总体设计

五、具体设计及分析

1.主函数

主函数主要提供菜单界面以及各模板函数的调用。

以结构体的形式定义。

通过直到型循环以及switch语句来实现各功能模块的调用以及循环。

#include

#defineM30

main()/*主函数菜单*/

{

intn,w;

do

{

puts("\t\t***********************MENU*************************\n\n");

puts("\t\t\t\t1.录入\n");

puts("\t\t\t\t2.查询\n");

puts("\t\t\t\t3.修改\n");

puts("\t\t\t\t4.删除\n");

puts("\t\t\t\t5.统计\n");

puts("\t\t\t\t6.退出\n");

puts("\n\t\t****************************************************\n");

printf("请选择你需要做什么(1-6):

[]\b\b");

scanf("%d",&n);

if(n<1||n>6)

{

w=1;

getchar();

}

elsew=0;

}

while(w==1);

switch(n)

{

case1:

scanf_student();break;

case2:

search();break;

case3:

revise();break;

case4:

delete_student();break;

case5:

stat();break;

case6:

exit(0);

}

}

structstudent/*定义结构体*/

{

charnum[10];

charclass_num[10];

charname[10];

charsex[4];

charnation[10];

charnative[10];

intborn;

intave;

}

2.各功能模块的设计

(1)输入模块

主要用于录入学生的学生证信息,调用添加各文件函数

intscanf_student()

{

intn;

n=load();/*调用加载文件函数*/

input(n);/*调用添加记录函数*/

save(n);/*调用保存函数*/

printf_back();/*调用选择返回或结束函数*/

}

intload()/*加载文件记录并计算学生个数函数*/

{

FILE*fp;

inti;

if((fp=fopen("studentcard.txt","rb"))==NULL)

{

printf("\nCannotopenfile\n");

returnNULL;

}

for(i=0;!

feof(fp);i++)

fscanf(fp,"%s%s%s%s%s%s%d%d",st[i].num,st[i].class_num,st[i].name,st[i].sex,st[i].nation,st[i].native,&st[i].born,&st[i].ave);

fclose(fp);

return(i);

}

intinput(inti)

{

bijiao_num(i);/*调用确认学号不重复函数*/

class_input(i);/*调用输入班号函数*/

printf("\n姓名:

");

scanf("%s",st[i].name);

printf("\n性别:

");

scanf("%s",st[i].sex);

printf("\n民族:

");

scanf("%s",st[i].nation);

printf("\n籍贯:

");

scanf("%s",st[i].native);

printf("\n出生年月:

");

scanf("%d",&st[i].born);

st[i].ave=1;}

intnum_input(inti)/*输入学号函数*/

{

intj,k,w;

do

{

w=0;

printf("\n学号:

");

scanf("%s",st[i].num);

for(j=0;st[i].num[j]!

='\0';j++)/*确认学号仅由数字组成*/

if(st[i].num[j]<'0'||st[i].num[j]>'9')

{

printf("输入错误!

!

学号仅有0-9的数字组成!

请重新输入");

w=1;

break;

}

}

while(w==1);

}

intbijiao_num(inti)/*确认学号不重复函数*/

{

intj,k,w;

do

{

w=0;

printf("\n学号:

");

scanf("%s",st[i].num);

for(j=0;st[i].num[j]!

='\0';j++)/*确认学号仅由数字组成*/

if(st[i].num[j]<'0'||st[i].num[j]>'9')

{

printf("输入错误!

!

学号仅有0-9的数字组成!

请重新输入");

w=1;

break;

}

if(w!

=1)

for(k=0;k

if(strcmp(st[k].num,st[i].num)==0)

{

printf("这个学号已经存在!

!

请重新输入!

\n");

w=1;

break;

}

}

while(w==1);

}

intclass_input(inti)/*班号输入函数*/

{

intj,k,w;

do

{

w=0;

printf("\n班号:

");

scanf("%s",st[i].class_num);

for(j=0;st[i].class_num[j]!

='\0';j++)/*确认班号仅由数字组成*/

if(st[i].class_num[j]<'0'||st[i].class_num[j]>'9')

{

printf("输入错误!

!

班号仅有0-9的数字组成!

请重新输入");

w=1;

break;

}

}

while(w==1);

}

(2)查询模块

主要用于根据题目的要求来查询各学生的信息。

search()

{

intn,w;

do

{

puts("\t\t***********************MENU*************************\n\n");

puts("\t\t\t\t1.按学号查询\n");

puts("\t\t\t\t2.按班号查询\n");

puts("\t\t\t\t3.返回\n");

puts("\n\t\t****************************************************\n");

printf("请选择你需要做什么(1-3):

[]\b\b");

scanf("%d",&n);

if(n<1||n>3)

{

w=1;

getchar();

}

elsew=0;

}

while(w==1);

switch(n)

{

case1:

search_num();break;/*调用按学号查询函数*/

case2:

search_class();break;/*调用按班号查询函数*/

case3:

menu();/*调用主菜单函数*/

}

}

intsearch_num()/*按学号查询函数*/

{

intn,i;

chara[10];

printf("\n请输入要查询学生的学号:

");

scanf("%s",a);

n=load();/*调用加载函数*/

for(i=0;i

{

if(strcmp(st[i].num,a)==0)

{

printf_face();/*调用显示数据结构项目函数*/

printf_one(i);/*调用输出一个学生数据函数*/

break;

}

}

if(i==n)/*判断是否查找到*/

printf("\n没有找到您要查询的学生!

请核对无误后重新输入!

");

printf_back();

}

printf_face()

{

printf("\n学号班号姓名性别民族籍贯出生年份\n");

}

printf_one(inti)

{

printf("%s%s%s%s%s%s%d\n",st[i].num,st[i].class_num,st[i].name,st[i].sex,st[i].nation,st[i].native,st[i].born);

}

intsearch_class()/*按班号查询函数*/

{

intn,i,k=0;

charb[10];

printf("\n请输入要查询的班号:

");

scanf("%s",b);

n=load();/*调用加载函数*/

printf_face();/*调用显示数据结构项目函数*/

for(i=0;i

{

if(strcmp(st[i].class_num,b)==0)

{

printf_one(i);/*调用输出一个学生数据函数*/

k++;

}

}

if(k==0)/*判断是否查找到*/

printf("\n没有找到您要查询的班号!

请核对无误后重新输入!

");

else

printf("\n共查找到该班学生%d个",k);

printf_back();

}

(3)修改模块

主要用于根据学生的学号,修改该学生的学生证信息。

ntrevise()

{

intn,m;

n=load();/*调用加载文件函数*/

m=queren();/*调用确认修改函数*/

revise_one(m);/*调用修改一个学生信息函数*/

save(n);/*调用保存函数*/

printf_back();

}

intqueren()/*确认修改或删除函数*/

{

inti,n,c;

n=load();

printf("\n请输入要修改或删除学生的学号:

");

num_input(n+1);

for(i=0;i

if(strcmp(st[n+1].num,st[i].num)==0)

break;

if(i==n+1)

printf("没有找到你输入的学号的学生!

!

请确认无误后重新输入!

");

else

printf_one(i);/*输出该学生信息*/

printf("输入1确认修改或删除\n输入0返回主菜单:

");

/*确认修改*/

scanf("%d",&c);

if(c==1)

return(i);

else

printf_back();}

revise_one(inti)/*修改一个学生信息函数*/

{

printf_face;

input(i);/*调用学生信息输入函数*/

}

(4)删除模块

主要用于根据学生的学号,删除该学生的学生证信息。

intdelete_student()

{

intm,n;

n=load();

m=queren();

st[m].ave=0;/*表示该记录要删除*/

save(n);

printf_back();

}

(5)统计模块

主要用于提供和统计各类信息,显示学生的信息。

主要按班号,性别,籍贯,民族,出生来统计。

intstat()

{intn,w;

do

{

puts("\t\t***********************MENU*************************\n\n");

puts("\t\t\t\t1.按班号统计\n");

puts("\t\t\t\t2.按性别统计\n");

puts("\t\t\t\t3.按民族统计\n");

puts("\t\t\t\t4.按籍贯统计\n");

puts("\t\t\t\t5.按出生时间\n");

puts("\t\t\t\t6.返回\n");

puts("\n\t\t****************************************************\n");

printf("请选择你需要做什么(1-6):

[]\b\b");

scanf("%d",&n);

if(n<1||n>6)

{

w=1;

getchar();

}

elsew=0;

}

while(w==1);

switch(n)

{

case1:

stat_class();break;

case2:

stat_sex();break;

case3:

stat_nation();break;

case4:

stat_native();break;

case5:

stat_born();break;

case6:

menu();

}

}

intstat_class()/*按班号统计函数*/

{

inti,n,j=0,b,d[M];

chara[10];

n=load();

printf("\n请输入要统计的班号:

");

scanf("%s",a);

for(i=0;i

if(strcmp(a,st[i].class_num)==0)

d[j++]=i;

printf("共查找到%d位符合要求的学生\n",j);

printf("输入1查看详细信息\n输入0返回主菜单:

");

scanf("%d",&b);

if(b==1)

{

printf_face();

for(i=0;i

printf_one(d[i]);

}

printf_back();

}

intstat_sex()/*按性别统计函数*/

{

inti,n,j=0,d[M];

chara[4],b;

n=load();

printf("\n请输入要统计的性别:

");

scanf("%s",a);

for(i=0;i

if(strcmp(a,st[i].sex)==0)

d[j++]=i;

printf("共查找到%d位符合要求的学生\n",j);

printf("输入1查看详细信息\n输入0返回主菜单:

");

scanf("%d",&b);

if(b==1)

{

printf_face();

for(i=0;i

printf_one(d[i]);

}

printf_back();

}

intstat_nation()/*按民族统计函数*/

{

inti,n,j=0,d[M];

chara[10],b;

n=load();

printf("\n请输入要统计的民族:

");

scanf("%s",a);

for(i=0;i

if(strcmp(a,st[i].nation)==0)

d[j++]=i;

printf("共查找到%d位符合要求的学生\n",j);

printf("输入1查看详细信息\n输入0返回主菜单:

");

scanf("%d",&b);

if(b==1)

{

printf_face();

for(i=0;i

printf_one(d[i]);

}

printf_back();

}

intstat_native()/*按籍贯统计函数*/

{

inti,n,j=0,d[M];

chara[10],b;

n=load();

printf("\n请输入要统计的籍贯:

");

scanf("%s",a);

for(i=0;i

if(strcmp(a,st[i].native)==0)

d[j++]=i;

printf("共查找到%d位符合要求的学生\n",j);

printf("输入1查看详细信息\n输入0返回主菜单:

");

scanf("%d",&b);

if(b==1)

{

printf_face();

for(i=0;i

printf_one(d[i]);

}

printf_back();

}

intstat_born()/*按出生年份统计*/

{

inti,n,j=0,a,d[M];

charb;

n=load();

printf("\n请输入要统计的出生年份:

");

scanf("%d",&a);

for(i=0;i

if(a==st[i].born)

d[j++]=i;

printf("共查找到%d位符合要求的学生\n",j);

printf("输入1查看详细信息\n输入0返回主菜单:

");

scanf("%d",&b);

if(b==1)

{

printf_face();

for(i=0;i

printf_one(d[i]);

}

printf_back();

}

intmenu()

{

intn,w;

do

{

puts("\t\t***********************MENU*************************\n\n");

puts("\t\t\t\t1.录入\n");

puts("\t\t\t\t2.查询\n");

puts("\t\t\t\t3.修改\n");

puts("\t\t\t\t4.删除\n");

puts("\t\t\t\t5.统计\n");

puts("\t\t\t\t6.退出\n");

puts("\n\t\t****************************************************\n");

printf("请选择你需要做什么(1-6):

[]\b\b");

scanf("%d",&n);

if(n<1||n>6)

{

w=1;

getchar();

}

elsew=0;

}

while(w==1);

switch(n)

{

case1:

scanf_student();break;

case2:

search();break;

case3:

revise();break;

case4:

delete_student();break;

case5:

stat();break;

case6:

exit(0);

}

}

3.数据结构

structstudent/*定义结构体*/

{

charnum[10];

charclass_num[10];

charname[10];

charsex[4];

charnation[10];

charnative[10];

intborn;

intave;

}

4.公共函数

(1)保存功能函数

intsave(intn)

{

FILE*fp;

inti;

if((fp=fopen("studentcard.txt","wb"))==NULL)

{

printf("\nCannotopenfile\n");

returnNULL;

}

for(i=0;i

if(st[i].ave!

=0)

fprintf(fp,"%s%s%s%s%s%s%d%d",st[i].num,st[i].class_num,st[i].name,st[i].sex,st[i].nation,st[i].native,st[i].born,st[i].ave);

fclose(fp);

}

intprintf_back()

{

inta;

printf("\n输入1回主菜单,0退出程序:

");

scanf("%d",&a);

if(a==0)

exit(0);

else

menu();

}

六、上机操作

 

七、上机感想

通过这次上机课,我在真真领会到计算机的真谛,对计算机有了初步的了解。

通过这次编程我也认识到了自己在于计算机方面的不足。

对于计算机编程,如果仅仅只是停留在书本上是没有用的,要经常上机,经常摸索才能够及时发现自己的不足,认识自己的错误。

也只有经常上机才能够感受到计算机编程的乐趣。

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2