最新C语言学生信息管理系统4.docx

上传人:b****3 文档编号:26573696 上传时间:2023-06-20 格式:DOCX 页数:24 大小:297.04KB
下载 相关 举报
最新C语言学生信息管理系统4.docx_第1页
第1页 / 共24页
最新C语言学生信息管理系统4.docx_第2页
第2页 / 共24页
最新C语言学生信息管理系统4.docx_第3页
第3页 / 共24页
最新C语言学生信息管理系统4.docx_第4页
第4页 / 共24页
最新C语言学生信息管理系统4.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

最新C语言学生信息管理系统4.docx

《最新C语言学生信息管理系统4.docx》由会员分享,可在线阅读,更多相关《最新C语言学生信息管理系统4.docx(24页珍藏版)》请在冰豆网上搜索。

最新C语言学生信息管理系统4.docx

最新C语言学生信息管理系统4

学生信息管理系统

本题目设计目的是训练用户的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。

本程序中涉及结构体、单链表、文件及各种语句的运用如for();switch();if….else等方面的知识。

通过本程序的训练,使用户能对C语言的文件操作有一个更深刻的了解,初步掌握链表的一些结构及构成。

掌握利用单链表存储结构实现对用户成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。

1、问题定义

创建一个学生信息管理系统。

假设系统中学生信息记录包括1录入学生信息:

学号,姓名,年龄,性别,出生年月,地址,电话和E-mail。

2:

浏览学生信息。

3查询学生信息:

按学号查询,按姓名查询。

4:

删除学生信息。

5:

修改学生信息。

6:

退出系统。

程序的运行效果如下图所示,选择任意菜单后,实现相应功能。

在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。

2、系统设计

2.1总体设计

采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。

需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。

可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。

 

本号码管理系统要求采用单链表实现,它由如下六大功能模块组成:

●录入学生信息模块。

●浏览学生信息模块。

●查询学生信息模块。

●删除学生信息模块。

●修改学生信息模块。

●退出系统模块。

2.2详细设计

#include

#include

#include

#include

#defineNULL0

#defineLENsizeof(structstudent)

#defineFILE_DATA_PATH"c:

\student.txt"

structstudent

{longintnum;

charname[20];

intage;

charsex[4];

charbirthday[10];

charaddress[30];

longinttele_num;

charE_mail[20];

structstudent*next;};

intTOTAL_NUM=0;

structstudent*head=NULL;

voidwelcome();

voidmainmenu();

voidrecord();

voidinsert(structstudent*stu);

voiddisplay(structstudent*stu);

voiddisplayAll();

voidquery();

voidquery_by_num();

voidquery_by_name();

voidreadData();

voidwriteData();

voidfreeAll();

voiddel();

voidchange();

voiddevise(structstudent*p);

intmain()

{welcome();

mainmenu();

}

/*显示欢迎信息*/

voidwelcome()

{

printf("\t\t\t+---------------------------+\n");

printf("\t\t\t||\n");

printf("\t\t\t|欢迎使用学生信息管理系统|\n");

printf("\t\t\t||\n");

printf("\t\t\t+---------------------------+\n");

}

/*系统主菜单*/

voidmainmenu()

{

intchoice;

choice=-1;

readData();

do

{

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

printf("\t\t\t+------------------------------+\n");

printf("\t\t\t|学生信息管理系统|\n");

printf("\t\t\t+------------------------------+\n");

printf("\t\t\t|[1]----录入学生信息|\n");

printf("\t\t\t|[2]----浏览学生信息|\n");

printf("\t\t\t|[3]----查询学生信息|\n");

printf("\t\t\t|[4]----删除学生信息|\n");

printf("\t\t\t|[5]----修改学生信息|\n");

printf("\t\t\t|[0]----退出系统|\n");

printf("\t\t\t+------------------------------+\n");

printf("请输入您的选择:

");

scanf("%d",&choice);

switch(choice)

{

case0:

writeData();

freeAll();

exit(0);

case1:

record();

break;

case2:

displayAll();

break;

case3:

query();

break;

case4:

del();

break;

case5:

change();

break;

default:

printf("\n无效选项!

");

break;

}

}

while(choice!

=0);

}

/*录入学生信息*/

voidrecord()

{

structstudent*p0;

p0=(structstudent*)malloc(LEN);

printf("请输入学生的学号:

");

scanf("%ld",&p0->num);

printf("请输入学生的姓名:

");

scanf("%s",p0->name);

printf("请输入学生的年龄:

");

scanf("%d",&p0->age);

printf("请输入学生的性别:

");

scanf("%s",p0->sex);

printf("请输入学生的出生年月:

");

scanf("%s",p0->birthday);

printf("请输入学生的地址:

");

scanf("%s",p0->address);

printf("请输入学生的电话:

");

scanf("%ld",&p0->tele_num);

printf("请输入学生的E-mail:

");

scanf("%s",p0->E_mail);

insert(p0);

printf("该学生的信息为:

\n");

printf("-------------------------------------------------------------------------------");

printf("学号\t姓名\t年龄\t性别\t出生年月\t\t地址\t电话\tE-mail\n");

display(p0);

}

voidinsert(structstudent*stu)

{

structstudent*p0,*p1,*p2;

p1=head;

p0=stu;

if(head==NULL)

{

head=p0;

p0->next=NULL;

}else

{

while((p0->num>p1->num)&&(p1->next!

=NULL))

{

p2=p1;

p1=p1->next;

}

if(p0->num<=p1->num)

{

if(head==p1)

head=p0;

else

p2->next=p0;

p0->next=p1;

}

else

{

p1->next=p0;

p0->next=NULL;

}

}

TOTAL_NUM++;

}

voiddisplay(structstudent*p)

{

printf("%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",p->num,p->name,p->age,p->sex,p->birthday,p->address,p->tele_num,p->E_mail);

}

/*浏览学生信息*/

voiddisplayAll()

{

structstudent*p;

printf("学生总数:

%d\n",TOTAL_NUM);

p=head;

if(head!

=NULL)

{

printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");

printf("-------------------------------------------------------------------------------");

do

{

display(p);

p=p->next;

}

while(p!

=NULL);

}

printf("\n");

}

/*查询学生信息*/

voidquery()

{

intchoice;

choice=-1;

do

{

printf("\n");

printf("+--------------------+\n");

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

printf("|按姓名查询请按2|\n");

printf("|取消请按0|\n");

printf("+--------------------+\n");

printf("请输入您的选择:

");

scanf("%d",&choice);

switch(choice)

{

case0:

return;

case1:

query_by_num();

break;

case2:

query_by_name();

break;

default:

printf("\n无效选项!

");

break;

}

}

while(choice!

=0);

}

/*按学号查询学生信息*/

voidquery_by_num()

{

intnum;

structstudent*p1;

printf("请输入学生的学号:

");

scanf("%ld",&num);

if(head==NULL)

{

printf("无学生记录!

\n");

return;

}

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

p1=p1->next;

if(num==p1->num)

{

printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");

printf("-------------------------------------------------------------------------------");

display(p1);

}

else

printf("没有该学生记录,请核对!

");

}

/*按姓名查询学生信息*/

voidquery_by_name()

{

charname[20];

structstudent*p1;

printf("请输入学生的姓名:

");

scanf("%s",name);

if(head==NULL)

{

printf("无学生记录!

\n");

return;

}

p1=head;

while(strcmp(name,p1->name)&&p1->next!

=NULL)

p1=p1->next;

if(!

strcmp(name,p1->name))

{

printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");

printf("-------------------------------------------------------------------------------");

display(p1);

}

else

printf("没有该学生记录,请核对!

");

}

/*写入文件*/

voidwriteData()

{

FILE*fp;/*文件指针*/

structstudent*p;

fp=fopen(FILE_DATA_PATH,"w");

if(!

fp)

{

printf("文件打开错误!

");

return;

}

fprintf(fp,"%d\n",TOTAL_NUM);

for(p=head;p!

=NULL;p=p->next)

{fprintf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",

p->num,p->name,p->age,p->sex,p->birthday,p->address,p->tele_num,p->E_mail);

}

fclose(fp);

}

voidfreeAll()

{

structstudent*p1,*p2;

p1=p2=head;

while(p1)

{

p2=p1->next;

free(p1);

p1=p2;}

}

/*读取文件*/

voidreadData()

{

FILE*fp;/*文件指针*/

structstudent*p1,*p2;

fp=fopen(FILE_DATA_PATH,"r");

if(!

fp)

{printf("文件打开错误!

");

return0;

}

fscanf(fp,"%d\n",&TOTAL_NUM);

head=p1=p2=(structstudent*)malloc(LEN);

fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",

&p1->num,p1->name,&p1->age,p1->sex,p1->birthday,p1->address,&p1->tele_num,p1->E_mail);

while(!

feof(fp))

{

p1=(structstudent*)malloc(LEN);

fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",

&p1->num,p1->name,&p1->age,p1->sex,p1->birthday,p1->address,&p1->tele_num,p1->E_mail);

p2->next=p1;

p2=p1;

}

p2->next=NULL;

fclose(fp);

}

/*删除学生信息*/

voiddel()

{structstudent*p1,*p2;

longintnum;

if(head==NULL)

{printf("无学生记录!

\n");

return;}

printf("请输入您要删除的学生的学号:

");

scanf("%ld",&num);

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

{

p2=p1;

p1=p1->next;

}

if(num==p1->num)

{

if(p1==head)

head=p1->next;

elsep2->next=p1->next;

free(p1);

TOTAL_NUM--;

}

else

printf("没有该学生记录,请核对!

\n");

}

/*修改学生信息*/

voidchange()

{

structstudent*p1,*p2;

longintnum;

if(head==NULL)

{printf("无学生记录!

\n");

return;

}

printf("请输入您要修改的学生的学号:

");

scanf("%ld",&num);

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

{p2=p1;

p1=p1->next;

}

if(num==p1->num)

devise(p1);

else

printf("没有该学生记录,请核对!

\n");

}

voiddevise(structstudent*p)

{

intchoice;

choice=-1;

do

{printf("请选择您要修改的学生的信息内容:

\n");

printf("+----------------------+\n");

printf("|姓名请按1|\n");

printf("|年龄请按2|\n");

printf("|性别请按3|\n");

printf("|出生年月请按4|\n");

printf("|地址请按5|\n");

printf("|电话请按6|\n");

printf("|E-mail请按7|\n");

printf("|取消请按0|\n");

printf("+----------------------+\n");

printf("请输入您的选择:

");

scanf("%d",&choice);

switch(choice)

{

case0:

return;

case1:

printf("请输入新姓名:

");

scanf("%s",p->name);

break;

case2:

printf("请输入新年龄:

");

scanf("%d",&p->age);

break;

case3:

printf("请输入新性别:

");

scanf("%s",p->sex);

break;

case4:

printf("请输入新出生年月:

");

scanf("%s",p->birthday);

break;

case5:

printf("请输入新地址:

");

scanf("%s",p->address);

break;

case6:

printf("请输入新电话:

");

scanf("%ld",&p->tele_num);

break;

case7:

printf("请输入新E-mail:

");

scanf("%s",p->E_mail);

break;

default:

printf("\n无效选项!

");

break;}

}

while(choice!

=0);

}

3、系统实现

 

3.1在主菜单中选择

图3.1主菜单

3.2录入学生信息

图3.2录入学生信息菜单

 

3.3浏览学生信息

图3.3浏览学生信息菜单

 

3.4查询学生信息

图3.4查询学生信息菜单

3.5删除学生信息

图3.5删除学生信息菜单

3.6修改学生信息

图3.6修改学生信息菜单

4、系统维护

在不断的检测中常常会发现一些细微的错误,使整个程序不是很完美,,在不断的发现中,不断地改正,使开发的程序能够跟上发展的步伐,同时将不完美的地方美化。

加拿大beadworks公司就是根据年轻女性要充分展现自己个性的需求,将世界各地的珠类饰品汇集于“碧芝自制饰品店”内,由消费者自选、自组、自制,这样就能在每个消费者亲手制作、充分发挥她们的艺术想像力的基础上,创作出作品,达到展现个性的效果5、归纳总结

(四)DIY手工艺品的“个性化”5.1设计经验

通过对本课题的设计,我体会到要掌握以下几点内容。

●大程序的设计风格。

●编写主函数,并进行测试与调试。

定义函数时,应选好顾名思义的函数名和数据类型。

(一)DIY手工艺品的“多样化”链表和指针的使用要清晰明了。

●图1-4大学生购买手工艺制品目的文件使用方法。

文件使用完毕后应及时关闭。

(三)大学生购买消费DIY手工艺品的特点分析

5.2实训中遇到的问题及解决方法

在这次的实训中,主要遇到的问题是对链表的不熟悉和指针的指向不明的问题。

对链表的使用不熟悉,不能很正确地使用,以及指针指向不明确,导致程序无法进行。

后来经过上网查询和请教同学,终于找到了根源,可以正常运行。

同时在文件的不断调用过程中,我常常打开文件之后,就忘记了关闭文件,以致出现了好多的错误,最后在不断地运行实践下,终于可以成功运行。

2003年,上海市人均GDP按户籍人口计算就达到46700元,是1995年的2.5倍;居民家庭人均月可支配收入为14867元,是1995年的2.1倍。

收入不断增加的同时,居民的消费支出也在增加。

2003年上海居民人均消费支出为11040元,其中服务性消费支出为3369元,是1995年的3.6倍。

5.3设计中尚存的不足之处

价格便宜些□服务热情周到□店面装饰有个性□商品新颖多样□关于这次的程序,也有挺多不足的地方。

首先,我觉得程序还不够完善,有些地方的菜单名字取得不是很合理,有些函数的放置也不是很合理;其次,有些地方做的不是很详细,比如,对学生信息录入的主菜单,查询局限,功能不怎么全等;最后,就是该程序界面不够美观大方,在DOS界面上的排版不是很好,有些东西没有中放置。

除了“漂亮女生”形成的价格,优惠等条件的威胁外,还有“碧芝”的物品的新颖性,创意的独特性等,我们必须充分预见到。

5.4感想和心得体会

为期两个星期的C语言实训结束了,在这两个星期内我的感触颇深。

因为在写程序中实在

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

当前位置:首页 > PPT模板 > 艺术创意

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

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