c语言课程设计报告学生证系统分解.docx

上传人:b****5 文档编号:6360600 上传时间:2023-01-05 格式:DOCX 页数:33 大小:141.38KB
下载 相关 举报
c语言课程设计报告学生证系统分解.docx_第1页
第1页 / 共33页
c语言课程设计报告学生证系统分解.docx_第2页
第2页 / 共33页
c语言课程设计报告学生证系统分解.docx_第3页
第3页 / 共33页
c语言课程设计报告学生证系统分解.docx_第4页
第4页 / 共33页
c语言课程设计报告学生证系统分解.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

c语言课程设计报告学生证系统分解.docx

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

c语言课程设计报告学生证系统分解.docx

c语言课程设计报告学生证系统分解

《高级语言程序设计》课程设计

题目:

学生证管理程序

班级:

学生学号:

学生姓名:

指导老师:

提交时间:

华南农业大学信息(软件)学院

 

学生证管理程序

1系统分析

1.1问题描述:

设计一个学生证的管理程序。

实现录入、修改、删除学生的学生证信息,并能根据输入的学生的学号,显示该学生的学生证信息或根据输入的班级的名称,显示该班所有学生的学生证信息,以及实现一些统计各类信息的功能。

1.2系统功能分析:

学生证管理程序是用来进行学生证管理的应用软件,不属于学生可使用的系统,个人认为进入该系统不需要进行相应的身份登录。

所以进入系统者应当可以使用所有功能;

使用者可行使基本功能有:

录入某位学生的学生证信息;根据给定学生的学号,修改、删除或显示该学生的学生证信息;根据输入的班级的编号,显示该班所有学生的学生证信息和一些统计功能。

另外,为了方便管理员操作,减少管理员重复工作的可能,另外加入额外功能:

批量录入学生的学生证信息和班级删除。

除此以外,亦另外添加操作台指令,方便管理员进行功能切换。

1.3开发平台及工具介绍:

根据所学知识及所要用到的相关操作,采用C语言进行开发。

开发平台:

CodeBlocks+MinGW+wxWidgets

2系统设计

2.1系统总体结构设计

在对学生证管理程序进行系统功能分析之后,我对整个系统进行总体设计。

首先,确定大致的开发和设计的思路,并在此基础上,用图表将系统总体的设计架构勾画出来,制定模块结构图,通过模块功能分析对每一个模块进行总体设计。

值得一提,总体的设计架构中,shell和kernel的设计应注意彼此的联系,这一方面设计的好坏对后面的设计有很大的影响。

然后,根据总体设计的需求,确定要首先那些函数。

学生证管理程序可视作一个简易身份证管理系统,开发设计的方向是方便管理员的操作,节省管理员的操作时间。

对于这个问题,可采用批量操作和指令操作的思路。

可以将所有的学生证信息存储在一个文件(txt格式)中,在对大量学生证数据的处理用到链表和文件处理等基本技术,并用两个函数实现文件读取和写入。

 

2.2系统各个功能模块详细设计

及功能模块之间关系设计(包括功能结构图等)

(1)添加模块(录入模块):

可以逐个录入学生信息,也可以设定录入人数,批量录入学生信息。

在输入学生信息时,可输入return返回,可随意输入指令进行功能切换。

其功能图如下图.

(2)搜索模块:

根据给出信息,可以是学号,名字或班级,搜索符合条件的某位学生或某些学生,并返回地址。

(3)修改模块:

通过地址找到该学生信息,然后进行修改。

(4)统计模块,统计学生总男女生人数;某班男生人数,女生人数;统计指定日子出生的学生;统计与指定名字相同的学生;

(5)显示模块,显示学生证信息。

分为针对单人的详细显示和针对集体的行显示两种模式。

(6)删除模块,本模块有2种删除方式,分别是按学号删除和按班级名删除。

(7)指令模块,本模块负责辨认输入的为指令还是操作序号,并根据输入选择操作。

2.3数据结构的设计(文件等)

(1)学生证信息结构

描述学生证信息,并作为一整条记录存放在文件中。

typedefstructstud

{

charname[20];

charsex[8];

charsnumber[14];

chartime[12];

charid[20];

charcollege[24];

charmajor[20];

charclasses[40];

structstud*next;

}LNode,*LinkList;

LinkListp,q,m,n,c;

(2)链表

存储学生证信息,并作为一整条记录在程序中进行操作。

p=(LinkList)malloc(sizeof(LNode));//头指针

q=p;

(3)文件

在程序开始前和结束后存储学生证信息

voidrewirte()//程序结束后将一切写进文件

voidload()//文件内容装载至链表

2.4界面设计

遵循简洁美观、方便使用的原则。

(1)首页:

用printf语句构造简单的界面,注重界面的简洁性。

(2)、录入界面

(3)、修改界面:

(4)删除界面

(5)学号查询

(6)班级查询

(7)其他

(8)指令

(9)统计班级男女人数

(10)统计同名

(11)统计同年同日出生

流程图如下:

3系统实现

基于系统需求分析与系统总体设计的结果,本系统采用开发平台:

CodeBlocks+MinGW+wxWidgets实现各模块的功能,下面将展现某些模块的录入操作的详细设计和实现过程。

录入模块:

(1)

(2)代码段片段

相关函数

charconsole()//控制台

录入:

voidentry()//录入

{

system("cls");

char,op,i=1;

LinkListstd;

std=(LinkList)malloc(sizeof(LNode));

std->next=NULL;

printf("请分别输入学生的信息\n");

while(i<9)

{

switch(i)

{

case1:

printf("姓名(如:

王小明):

");break;

case2:

printf("性别(如:

男):

");break;

case3:

printf("学号(如:

):

");break;

case4:

printf("入学时间(如:

2013-09-01):

");break;

case5:

printf("身份证号码(如:

):

");break;

case6:

printf("学院(如:

):

");break;

case7:

printf("专业(如:

):

");break;

case8:

printf("班级(如:

):

");break;

}

op=console();

if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k==840||k==839||k==836||k==1076||k==1161)

{

sw=1;free(std);return;

}

switch(i)

{

case1:

strcpy(std->name,cl);break;

case2:

strcpy(std->sex,cl);break;

case3:

strcpy(std->snumber,cl);break;

case4:

strcpy(std->time,cl);break;

case5:

strcpy(std->id,cl);break;

case6:

strcpy(std->college,cl);break;

case7:

strcpy(std->major,cl);break;

case8:

strcpy(std->classes,cl);break;

}

i++;

}

q->next=std;

q=q->next;

q->next=NULL;

printf("录入成功\n");

printf("输入任意键以退出\n");

a=getchar();

}

4系统测试

模块测试:

测试各模块的测试

显示模块:

(1)输出单个学生学生证信息。

1、输入学号

2、预期结果:

3、输出结果:

4、结论:

运行正常。

(2)显示班级学生证信息

1、输入2013软件工程1班

2、预期结果:

3、

4、结论:

运行正常。

系统测试:

系统功能的完整测试

(1)系统测试1:

1、输入流程:

批量录入信息batchentry输入3后输入信息

信息如下:

根据学号输出信息,

根据班级输出信息,

2、预测结果:

3、实际结果:

4、结论:

运行正常。

5系统运行界面

1、运行界面1:

统计同年同日生的学生

2、运行界面2:

指令实现

6总结

怎么说呢,这次设计的并不难,要是只完成基本功能的话其实不用什么力气。

但在这次设计中呢,却陆陆续续地遇到小问题。

这些问题都得归因于自己整体设计时不够用心,未曾仔细地思考,又盲目地想做点新意,结果有一阵子一直停滞不前。

结果,最后还是静下心来梳理了一遍思路,做好前期准备,情况才好起来。

然后,感觉做这种课题真的非常好,题目分析、整体设计、模块分析......一整套做下来实在令人兴奋。

Debug过程既是无聊的也是有趣的。

能在程序设计中找到快乐实在不错。

这次设计已经完结了,但是我的路还有很长,离成为一个合格的程序员实在还有很远,不过,还有几年时间可以抢救一下,我觉得我还有救的

7参考文献

《C语言程序设计(第二版)》

 

附录:

全代码:

#include

#include

#include

#include

#include

#defineTRUE1

#defineOK1

#defineERROR0

#defineINFEASIBLE-1

#defineSTACK_INIT_SIZE100

charneed='',ne='\n';

intk=0,sw=0;

charcl[80];

typedefstructstud

{

charname[20];

charsex[8];

charsnumber[14];

chartime[12];

charid[20];

charcollege[24];

charmajor[20];

charclasses[40];

structstud*next;

}LNode,*LinkList;

LinkListp,q,m,n,c;

charconsole()

{

inti=0;

k=0;

gets(cl);

if(cl[0]<='9'&&cl[0]>='1'&&!

cl[1])returncl[0];

else

while(cl[i])

{

k=k+cl[i];

i++;

}

return'0';

}

voidshell()

{

printf("学生证管理系统\n");

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

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

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

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

printf("4、显示学生的学生证信息\n");

printf("5、显示班级所有学生学生证信息\n");

printf("6、其他\n");

printf("7、说明书\n");

printf("8、结束\n");

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

printf("请输入操作序号或正确指令\n");

}

voidshell_II()

{

/*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("8、班级\n");

printf("9、返回\n");

}

voidshell_III()

{

printf("请选择你想实现的统计功能\n");

printf("1、统计某个班的男女人数\n");

printf("2、统计已录入学生之间的男女人数\n");

printf("3、统计并显示已录入学生中同名的学生\n");

printf("4、统计同年同日出生同学\n");

printf("5、批量录入\n");

printf("6、班级删除\n");

}

voidrewirte()//罚抄

{//程序结束后将一切写进文件

FILE*fp;

fp=fopen("date.txt","w+");

q=p;

p=p->next;

while(p)

{

fputs(p->name,fp);

fputc(need,fp);

fputs(p->sex,fp);

fputc(need,fp);

fputs(p->snumber,fp);

fputc(need,fp);

fputs(p->time,fp);

fputc(need,fp);

fputs(p->id,fp);

fputc(need,fp);

fputs(p->college,fp);

fputc(need,fp);

fputs(p->major,fp);

fputc(need,fp);

fputs(p->classes,fp);

fputc(need,fp);

fputc(ne,fp);

q=p;

p=p->next;

free(q);

}

}

voidload()

{//文件内容装载至链表

FILE*fp;

charch,e[80];

LinkListone;

inti=1,l=0;

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

while(!

feof(fp))

{

i=1;l=0;

one=(LinkList)malloc(sizeof(LNode));

ch=fgetc(fp);

if(feof(fp))break;

while(ch!

=ne)

{

while(ch!

='')

{e[l++]=ch;

ch=fgetc(fp);}

ch=fgetc(fp);

e[l]='\0';

switch(i)

{

case1:

strcpy(one->name,e);break;

case2:

strcpy(one->sex,e);break;

case3:

strcpy(one->snumber,e);break;

case4:

strcpy(one->time,e);break;

case5:

strcpy(one->id,e);break;

case6:

strcpy(one->college,e);break;

case7:

strcpy(one->major,e);break;

case8:

strcpy(one->classes,e);break;

default:

break;

}

l=0;i++;

}

q->next=one;

q=q->next;

q->next=NULL;

}

fclose(fp);

}

voidpri(LinkListl)

{

printf("姓名:

");

puts(l->name);

printf("\n");

printf("性别:

");

puts(l->sex);

printf("\n");

printf("学号:

");

puts(l->snumber);

printf("\n");

printf("入学时间:

");

puts(l->time);

printf("\n");

printf("身份证号码:

");

puts(l->id);

printf("\n");

printf("学院:

");

puts(l->college);

printf("\n");

printf("专业:

");

puts(l->major);

printf("\n");

printf("班级:

");

puts(l->classes);

printf("\n");

}

voidpri_II(LinkListl)

{

printf("%s%s%s%s%s%s%s%s\n",l->name,l->sex,l->snumber,l->time,l->id,l->college,l->major,l->classes);

}

voidsearch()//根据学号找人

{

charop;

op=console();

if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k==840||k==839||k==836||k==1076||k==1161)

{

sw=1;return;

}

m=n=p->next;

while(n)

{

if(strcmp(cl,n->snumber)==0)

{

break;

}

m=n;n=n->next;

}

}

voidsearch_II()//根据班级找人

{

system("cls");

charop;

inti=0;

printf("请输入要查询的班级(如2013软件工程1班):

\n");

op=console();

if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k==840||k==839||k==836||k==1076||k==1161)

{

sw=1;return;

}

n=p->next;

while(n)

{

if(strcmp(cl,n->classes)==0)

{

pri_II(n);

i++;

}

n=n->next;

}

if(i==0)printf("找不到要查询的班级\n");

}

voidentry()//录入

{

system("cls");

char,op,i=1;

LinkListstd;

std=(LinkList)malloc(sizeof(LNode));

std->next=NULL;

printf("请分别输入学生的信息\n");

while(i<9)

{

switch(i)

{

case1:

printf("姓名(如:

王小明):

");break;

case2:

printf("性别(如:

男):

");break;

case3:

printf("学号(如:

):

");break;

case4:

printf("入学时间(如:

2013-09-01):

");break;

case5:

printf("身份证号码(如:

440781************):

");break;

case6:

printf("学院(如:

):

");break;

case7:

printf("专业(如:

):

");break;

case8:

printf("班级(如:

):

");break;

}

op=console();

if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k==840||k==839||k==836||k==1076||k==1161)

{

sw=1;free(std);return;

}

switch(i)

{

case1:

strcpy(std->name,cl);break;

case2:

strcpy(std->sex,cl);break;

case3:

strcpy(std->snumber,cl);break;

case4:

strcpy(std->time,cl);break;

case5:

strcpy(std->id,cl);break;

case6:

strcpy(std->college,cl);break;

case7:

strcpy(std->major,cl);break;

case8:

strcpy(std->classes,cl);break;

}

i++;

}

q->next=std;

q=q->next;

q->next=NULL;

printf("录入成功\n");

printf("输入任意键以退出\n");

a=getchar();

}

voidbatchentry()//批量录入

{

system("cls");

inti=0,num=0;

charop;

printf("请输入录入人数\n");

op=console();

if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k==840||k==839||k==836||k==1076||k==1161)

{

sw=1;return;

}

else

{

while(cl[i])

{

num+=cl[i]-'0';

i++;

}

}

i=1;

while(i<=num)

{

entry();

if(sw==1)return;

}

}

voidclassdelete()//班级删除

{

system("cls");

charop;

inti=0;

printf("请输入要删除的班级:

\n");

op=console();

if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k==840||k==839||k==836||k==1076||k==1161||k==1161)

{

sw=1;return;

}

n=p->next;m=p;

while(n)

{

if(strcmp(cl,n->classes)==0)

{

m->next=n->next;

free(n);

n=m->next;

i++;

}

else{m=n;n=n->next;}

}

if(i==0)printf("找不到要查询的班级\n");

}

voidstatistical_I()//统计某个班的男女人数

{

inti=0,boy=0,girl=0,sum=0;

charop;

printf("请输入你所要查询的

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

当前位置:首页 > 法律文书 > 调解书

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

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