学生信息管理系统.docx

上传人:b****6 文档编号:3866683 上传时间:2022-11-26 格式:DOCX 页数:26 大小:133.83KB
下载 相关 举报
学生信息管理系统.docx_第1页
第1页 / 共26页
学生信息管理系统.docx_第2页
第2页 / 共26页
学生信息管理系统.docx_第3页
第3页 / 共26页
学生信息管理系统.docx_第4页
第4页 / 共26页
学生信息管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

学生信息管理系统.docx

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

学生信息管理系统.docx

学生信息管理系统

一.设计目的:

课程设计容:

1.问题描述

学生信息包括:

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

设计以学生信息管理系统,使之能提供以下功能:

(1).系统以菜单式工作;

(2).学生信息录入功能(学生信息用文件保存)---输入;

(3).学生信息浏览功能---输出;

(4).查询,排序功能---算法:

a.按学号查询;

b.按姓名查询。

(5).学生信息的删除与修改。

2.功能要求

A.界面比较美观;

B.有一定的容错能力。

3.函数功能描述

⑴输入部分

通过键盘输入多位学生的学生信息。

学生的信息包含有:

 学生姓名、性别、学号、出生年月、年龄等。

此次做的学生管理系统是利用链表而完成的程序,故第一部分想要实现建立链表

⑵、输出部分

输出当前已存储的学生信息

⑶、更新部分

①删除删除用户指定的学生信息,这部分的功能是输入学生的学号,找到其在链表中存储的结点处,并将这整个结点删除,再把该结点的前驱结点和后驱节点连接,来实现这个学生信息的删除.

②修改修改用户指定的学生信息,这部分是利用输入学生的学号,来找到存储该学生信息的结点,通过该结点的链域来修改其中的值域,来实现对学生信息的修改.

⑷、查询部分

①按名字查询输出用户查询的学生信息,这部分是利用输入学生的姓名,来找到存储该学生信息的结点,输出该结点的值域中的容,来实现对学生信息的查询功能.

②按学号查询输出用户查询的学生信息,同上,只是查询条件为学号.

4.要求与限制条件

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

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

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

不使用全局变量则能保证函数之间的独立性,利用形参与实参之间的数值传递来实现数据共享。

 

二.总体设计:

查找

修改

三.详细设计:

输入模块

 

voidinsert()/*插入函数*/

{

inti=n,j,flag;

printf("请输入待增加的学生数:

\n");

scanf("%d",&m);

do

{

flag=1;

while(flag)

{

flag=0;

printf("请输入第%d个学生的学号:

\n",i+1);

scanf("%s",stu[i].code);

for(j=0;j

if(strcmp(stu[i].code,stu[j].code)==0)

{

printf("已有该学号,请检查后重新录入!

\n");

flag=1;

break;/*如有重复立即退出该层循环,提高判断速度*/

}

}

printf("请输入第%d个学生的姓名:

\n",i+1);

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

printf("请输入第%d个学生的年龄:

\n",i+1);

scanf("%d",&stu[i].age);

printf("请输入第%d个学生的性别:

\n",i+1);

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

printf("请输入第%d个学生的出生年月:

(格式:

年.月)\n",i+1);

scanf("%s",stu[i].time);

printf("请输入第%d个学生的地址:

\n",i+1);

scanf("%s",stu[i].add);

printf("请输入第%d个学生的:

\n",i+1);

scanf("%s",stu[i].tel);

printf("请输入第%d个学生的E-mail:

\n",i+1);

scanf("%s",stu[i].mail);

if(flag==0)

{

i=i;

i++;

}

}

while(i

n+=m;

printf("录入完毕!

\n\n");

sort();

}

 

查找模块

 

voidseek()/*查找*/

{

inti,item,flag;

chars1[21];/*以姓名和学号最长长度+1为准*/

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

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

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

printf("-----3.退出本菜单-----\n");

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

while

(1)

{

printf("请选择子菜单编号:

");

scanf("%d",&item);

flag=0;

switch(item)

{

case1:

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

\n");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].code,s1)==0)

{

flag=1;

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

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

printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

if(flag==0)

printf("该学号不存在!

\n");break;

case2:

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

\n");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].name,s1)==0)

{

flag=1;

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

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

printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

if(flag==0)

printf("该姓名不存在!

\n");break;

case3:

return;

default:

printf("请在1-3之间选择\n");

}

}

}

 

修改模块

voidmodify()/*修改信息*/

{

inti,item,num;

charsex1[3],s1[LEN+1],s2[LEN+1];/*以姓名和学号最长长度+1为准*/

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

\n");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].code,s1)==0)/*比较字符串是否相等*/

num=i;

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

printf("1.修改姓名\n");

printf("2.修改年龄\n");

printf("3.修改性别\n");

printf("4.修改出生年月\n");

printf("5.修改地址\n");

printf("6.修改\n");

printf("7.修改E-mail地址\n");

printf("8.退出本菜单\n");

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

while

(1)

{

printf("请选择子菜单编号:

");

scanf("%d",&item);

switch(item)

{

case1:

printf("请输入新的姓名:

\n");

scanf("%s",s2);

strcpy(stu[num].name,s2);break;

case2:

printf("请输入新的年龄:

\n");

scanf("%d",&stu[num].age);break;

case3:

printf("请输入新的性别:

\n");

scanf("%s",sex1);

strcpy(stu[num].sex,sex1);break;

case4:

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

\n");

scanf("%s",s2);

strcpy(stu[num].time,s2);break;

case5:

printf("请输入新的地址:

\n");

scanf("%s",s2);

strcpy(stu[num].add,s2);break;

case6:

printf("请输入新的:

\n");

scanf("%s",s2);

strcpy(stu[num].tel,s2);break;

case7:

printf("请输入新的E-mail地址:

\n");

scanf("%s",s2);

strcpy(stu[num].mail,s2);break;

case8:

return;

default:

printf("请在1-8之间选择\n");

}

}

}

 

四.调试:

A先编译程序

B再连接程序生成目标

C运行程序

1调试中的主要问题

调试中主要出现的问题:

⑴经常遇到程序执行到某部分就不运行,而编译和都成功,说明程序设计上有些问题,语法等并未出错,这时就要去再行考虑设计的程序哪部分考虑不全。

⑵因为这次使用链表来设计程序,就牵扯到形参和实参的问题。

曾经因为考虑不全,在自定义函数前的基类出错,导致相关的值未改变,这里就要考虑好形参和实参的问题。

刚开始没有那个初始化函数,程序运行后没有输入任数据就试得去执行显示功能,结果显示的是一些乱码!

加入初始化函数后,这种现象也随之消失。

在没有输入任信息的情况下,不能执行查询、修改、删除、统计、排序功能。

有时候,忘记定义就直接调用,使得出错。

我这时候才真正体会到了一致性的重要。

检查程序很多遍但却始终不知道输入的数据有错,很令人头疼。

2程序的不足和改进之处

因为用链表来设计一个程序,较复杂,最后没来得及,设计相关的文件存储来实现将数据保存,以致每次运行程序都要重新输入新的数据

改进之处:

可以再考虑编写一个函数,这个函数的功能是将数据写入文件中并保存。

五.测试结果:

程序运行:

主界面:

 

输入信息

显示

查询

修改

 

删除

 

六.结束语:

回想学习C语言的过程中,既有快乐又有烦恼。

从领到书的那一刻,我就很郁闷,C语言到底事学什么的,有什么用。

刚开始上课时,还在迷茫这门课程是用来做什么的。

不过,这些感受都是在对这门课程不了解的情况下产生的。

后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。

尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。

通过一个学期的学习,我掌握了基本知识。

期末,被通知要进行课程设计。

当时有点懵,感觉学的东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为我们了。

通过两的自学,第二结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从下手到把程序中的几个模块编写出来,心里挺开心的。

但是,我们又不得不再次陷入困境。

在整个程序的编写过程中。

最难的就是修改和删除这两个模块,这也是我们要解决的重点问题。

开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的容将文本的信息全部覆盖了。

困难之时,我们组的其他人,帮助了我,完成了修改和删除。

这样的话,整个程序基本上全部完成了,就剩下完善工作了。

我们组写了两个程序,最后,两个程序相互组合,互补,大功告成

虽然设计时完成了,但是我觉得其中还是由一些不足之处:

1.警告句。

程序中缺少一些警告句,例如:

“是否真的删除(y/n)?

”。

2.重名的情况。

由于考虑的不全,没有设计遇到重名的情况该怎么处理。

整个程序完成了,还有很多不完善的地,希望自己以后办事的时候要认真,仔细,考虑全。

短短的几课程设计结束了,但是这段时间里,我又学到了更多C知识,如:

对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑全。

,也看到了团队精神和互帮互助的重要性。

这一点会让我终生受益。

通过这次的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这几过的挺充实!

 

七.源程序清单:

#include/*I/O函数*/

#include/*其它说明*/

#include/*字符串函数*/

#defineBUFLEN100/*缓冲区最大字符数*/

#defineLEN15/*学号和姓名最大字符数,实际请更改*/

#defineN100/*最大学生人数,实际请更改*/

structrecord/*结构体*/

{

charcode[LEN+1];/*学号*/

charname[LEN+1];/*姓名*/

intage;/*年龄*/

charsex[3];/*性别*/

chartime[LEN+1];/*出生年月*/

charadd[30];/*家庭地址*/

chartel[LEN+1];/**/

charmail[30];/*电子地址*/

}stu[N];

intk=1,n,m;/*定义全局变量*/

voidreadfile();/*声明函数*/

voidseek();

voidmodify();

voidinsert();

voiddel();

voiddisplay();

voidsave();

voidmenu();

intmain()

{

while(k)

menu();

system("pause");

return0;

}

voidhelp()/*帮助*/

{

printf("\n1.欢迎使用系统帮助!

\n");

printf("\n2.进入系统后,先刷新学生信息,再查询;\n");

printf("\n3.按照菜单提示键入数字代号;\n");

printf("\n4.增加学生信息后,切记保存按8;\n");

printf("\n5.您的使用!

\n");

}

voidreadfile()/*建立信息*/

{

char*p="student.txt";

FILE*fp;

inti=0;

if((fp=fopen("student.txt","r"))==NULL)

{

printf("Openfile%serror!

Strikeanykeytoexit!

",p);

system("pause");

exit(0);

}

while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].code,stu[i].name,&stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)

{

i++;

i=i;

}

fclose(fp);

n=i;

printf("录入完毕!

\n");

}

voidseek()/*查找*/

{

inti,item,flag;

chars1[21];/*以姓名和学号最长长度+1为准*/

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

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

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

printf("-----3.退出本菜单-----\n");

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

while

(1)

{

printf("请选择子菜单编号:

");

scanf("%d",&item);

flag=0;

switch(item)

{

case1:

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

\n");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].code,s1)==0)

{

flag=1;

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

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

printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

if(flag==0)

printf("该学号不存在!

\n");break;

case2:

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

\n");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].name,s1)==0)

{

flag=1;

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

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

printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

if(flag==0)

printf("该姓名不存在!

\n");break;

case3:

return;

default:

printf("请在1-3之间选择\n");

}

}

}

voidmodify()/*修改信息*/

{

inti,item,num;

charsex1[3],s1[LEN+1],s2[LEN+1];/*以姓名和学号最长长度+1为准*/

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

\n");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].code,s1)==0)/*比较字符串是否相等*/

num=i;

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

printf("1.修改姓名\n");

printf("2.修改年龄\n");

printf("3.修改性别\n");

printf("4.修改出生年月\n");

printf("5.修改地址\n");

printf("6.修改\n");

printf("7.修改E-mail地址\n");

printf("8.退出本菜单\n");

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

while

(1)

{

printf("请选择子菜单编号:

");

scanf("%d",&item);

switch(item)

{

case1:

printf("请输入新的姓名:

\n");

scanf("%s",s2);

strcpy(stu[num].name,s2);break;

case2:

printf("请输入新的年龄:

\n");

scanf("%d",&stu[num].age);break;

case3:

printf("请输入新的性别:

\n");

scanf("%s",sex1);

strcpy(stu[num].sex,sex1);break;

case4:

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

\n");

scanf("%s",s2);

strcpy(stu[num].time,s2);break;

case5:

printf("请输入新的地址:

\n");

scanf("%s",s2);

strcpy(stu[num].add,s2);break;

case6:

printf("请输入新的:

\n");

scanf("%s",s2);

strcpy(stu[num].tel,s2);break;

case7:

printf("请输入新的E-mail地址:

\n");

scanf("%s",s2);

strcpy(stu[num].mail,s2);break;

case8:

return;

default:

printf("请在1-8之间选择\n");

}

}

}

voidsort()/*按学号排序*/

{

inti,j,*p,*q,s;

chartemp[10];

for(i=0;i

{

for(j=n-1;j>i;j--)

if(strcmp(stu[j-1].code,stu[j].code)>0)

{

strcpy(temp,stu[j-1].code);

strcpy(stu[j-1].code,stu[j].code);

strcpy(stu[j].code,temp);

strcpy(temp,stu[j-1].name);

strcpy(stu[j-1].name,stu[j].name);

strcpy(stu[j].name,temp);

strcpy(temp,stu[j-1].sex);

strcpy(stu[j-1].sex,stu[j].sex);

strcpy(stu[j].sex,temp);

strcpy(temp,stu[j-1].time);

strcpy(stu[j-1].time,stu[j].time);

strcpy(stu[j].time,temp);

strcpy(temp,stu[j-1].add);

strcpy(stu[j-1].add,stu[j].add);

strcpy(stu[j].add,temp);

strcpy(temp,stu[j-1].tel);

strcpy(stu[j-1].tel,stu[j].tel);

strcpy(stu[j].tel,temp);

strcpy(temp,stu[j-1].mail);

strcpy(stu[j-1].mail,stu[j].mail);

strcpy(stu[j].mail,temp);

p=&stu[j-1

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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