c语言课程设计.docx
《c语言课程设计.docx》由会员分享,可在线阅读,更多相关《c语言课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
c语言课程设计
学生信息管理系统
1.课程设计的目的
此课程设计的目的是为了使学生掌握简单的课程设计技巧,同时设计一个简单的学生信息管理系统,可以实现管理学生信息的基本功能。
适合班级统计学生有关信息使用,能够减轻统计工作量,节约统计时间,是一款实用的小型程序复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;在熟练掌握C语言的基本知识:
数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;培养学生在项目开发中团队合作精神、创新意识及能力。
并且可以使学生能够将学到的面向对象的设计思想运用在具体的工作和生活中,加深对所学知识的理解,可以使学生对生活中许多具体的事物抽象出类,并掌握所学函数的概念。
通过这次课程设计掌握的知识,为后续课程和工作打下坚实的基础。
2.设计思路
2.1总体设计思路
学生信息管理系统共有8个模块,分别为:
系统帮助说明模块,输入学生信息模块,查询学生信息模块,修改学生信息模块,增加学生信息模块,按学号删信息模块,显示当前信息模块,保存当前信息模块,退出系统模块。
(1)系统帮助说明模块:
帮助程序更好的运行,对程序的使用进行说明。
(2)输入学生信息模块:
对输入的学生的信息进行录入。
(3)查询学生信息模块:
对满足输入条件的学生进行查询。
(4)修改信息模块:
对学生信息进行修改。
(5)增加学生信息模块:
增加学生的信息。
(6)按学号删信息模块:
对所输入学号的学生的信息进行删除。
(7)显示当前信息模块:
显示当前的学生信息。
(8)保存当前信息模块:
对当前的学生信息进行保存。
(9)退出系统模块:
对出整个系统。
系统功能模块图如图1所示。
图1功能模块
2.2欢迎界面模块的设计思路
首先定义一个函数,定义函数名为huanyingyemian,因为返回值为空,所以函数类型为void。
定义了所需变量,运用struct对各变量做出说明,接着通过while函数进入系统主界面,出现欢迎界面。
2.3系统主界面模块的设计思路
首先定义一个函数,定义函数名为caidan,因为返回值为空,所以函数类型为void。
定义了所需变量,先运用printf函数输出各个数字的功能,在运用switch函数在这些功能间做出选择。
3.设计结果与分析
3.1系统主界面的设计
系统主界面功能:
共有9个功能,分别为:
系统帮助说明,输入学生信息,查询学生信息,修改学生信息,增加学生信息,按学号删学生信息,显示当前信息,保存学生信息,退出系统。
系统主界面截图,如图2所示。
图2系统主界面
系统主界面代码:
intmain()
{
while(k)
{
huanyingyemian();
system("pause");
system("cls");
printf("请按任意键进入主菜单!
\n");
system("cls");
caidan();
system("pause");
}
return0;
}
voidhelp()
{system("COLOR2f");
printf("\n尊敬的用户您好!
");
printf("\n============================================================\n||");
printf("\n|1.欢迎进入帮助系统!
|\n||");
printf("\n|★★★★★★★★|\n||");
printf("\n|2.请按照菜单提示进入数字代号!
|\n||");
printf("\n|3.增加学生信息后,请切记保存!
|\n||");
printf("\n|4.谢谢您的使用!
|\n||");
printf("\n============================================================\n");
}
3.2欢迎界面模块的设计
欢迎界面模块功能:
在欢迎使用界面按任意键,进入系统总界面,按照提示信息,学生的学号,出现子菜单,姓名、年龄、性别、出生年月,地址,电话号码、E-mail等,选择所要信息所对应的数字,输入学生信息。
欢迎界面截图,如图3。
图3欢迎界面
欢迎界面代码:
#include/*I/o函数*/
#include/*其他说明*/
#include/*字符串函数*/
#defineLEN30/*学号和姓名最大学生人数*/
#defineN100/*最大学生人数*/
structrecord/*声明函数体*/
{
charcode[20];/*学号*/
charname[10];/*姓名*/
intage;/*年龄*/
charsex[5];/*性别*/
chartime[20];/*出生年月*/
charadd[20];/*家庭地址*/
chartel[20];/*电话*/
charmail[20];/*邮箱地址*/
}stu[N];
intk=1,m,n;
voidshuru();
voidchaxun();
voidxiugai();
voidzengjia();
voidshanchu();
voidxianshi();
voidbaocun();
voidcaidan();
voidtuichuxitong();
voidhuanyingyemian();
intmain()
{
while(k)
{
huanyingyemian();
system("pause");
system("cls");
printf("请按任意键进入主菜单!
\n");
system("cls");
caidan();
system("pause");
}
return0;
}
voidhuanyingyemian()
{system("COLOR6f");
printf("\n");
printf("\n");
printf("\n");
printf("---------★------------------------信息工程学院----------------------★---------\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("尊敬的用户:
您好!
\n");
printf("\n");
printf("\n");
printf("欢迎使用\n");
printf("\n");
printf("\n");
printf("-------☆--☆------\n");
printf("\n");
}
3.3系统主界面模块的设计
系统主界面模块功能:
在系统主界面中输入所需数字,进入所需学生信息界面,按照提示,输入所操作学生信息的个数,以及所操作学生的姓名、年龄、性别、出生年月,地址,电话号码、E-mail,从而进行所操作学生信息显示。
系统主界面截图,如图4所示。
图4系统主界面
系统主界面代码:
voidcaidan()
{intnum;
system("COLOR1f");
printf("\n\n计算机系10级学生信息管理系统\n\n");
printf("================================================================================\n");
printf("===============制作人:
何琪、刘宇、张瑜、赵静、李梦夏===========\n");
printf("\n");
printf("==============系统功能菜单==============\n");
printf("=======友情提醒:
查询前请刷新系统!
======\n");
printf("========================================\n");
printf("|======================================|\n");
printf("|0.系统帮助说明1.输入学生信息|\n");
printf("|--------------------------------------|\n");
printf("|2.查询学生信息3.修改学生信息|\n");
printf("|--------------------------------------|\n");
printf("|4.增加学生信息5.按学号删信息|\n");
printf("|--------------------------------------|\n");
printf("|6.显示当前信息7.保存当前信息|\n");
printf("|--------------------------------------|\n");
printf("|8.退出系统|\n");
printf("|======================================|\n");
printf("========================================\n");
printf("请选择菜单编号:
");
scanf("%d",&num);
switch(num)
{
case0:
system("cls");help();break;
case1:
system("cls");shuru();break;
case2:
system("cls");chazhao();break;
case3:
system("cls");xiugai();break;
case4:
system("cls");zengjia();break;
case5:
system("cls");shanchu();break;
case6:
system("cls");xianshi();break;
case7:
system("cls");baocun();break;
case8:
system("cls");k=0;tuichuxitong();
break;
default:
printf("请在1--8之间选择\n");
}
}
4.设计体会
通过这次的程序设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。
对知识的学习,不能潜偿辄止,,要深入去学习,去了解,这样才会有所收获。
有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。
在不长的时间里我明白了,不仅仅是要重视,而且要通过不断的上机操作才能更好地学习这门语言。
有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。
我们能够完成一个程序,从起初的总体设计,进行可行性分析,在进行分工编程,最后进行调式,虽然当中有很多的模块都是借鉴的,但毕竟我们还初在出学阶段。
这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!
经过这两周的课程设计,感觉收获很大,对C语言产生了更大的兴趣,对程序设计思想有了初步的理解和体会,对C语言的各种函数功能有了更进一步的了解,并且将平时没有彻底掌握的知识有了深刻的理解,同时自己在这次的课程设计时间中,看到了自己还存在很多方面的不足。
对知识的学习,不能潜偿辄止,,要深入去学习,去了解,这样才会有所收获。
有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。
同时,在这次课程设计的过程中,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,不能只是学习和重视书本上的理论知识,所以日后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机这门课程。
六.参考文献
[1]谭浩强.C程序设计[M].北京:
清华大学出版社,1999.124-2125.
[2]姜仲秋等主编.c语言程序设计[M]南京大学出版社,1998.9
[3]夏克俭.数据结构+算法[M].北京:
国防工业出版社,2001.2264
[4]裘宗燕著,从问题到程序科学出版社,北京大学出版社,1999.4.
6.附录
#include/*I/o函数*/
#include/*其他说明*/
#include/*字符串函数*/
#defineLEN30/*学号和姓名最大学生人数*/
#defineN100/*最大学生人数*/
structrecord/*声明函数体*/
{
charcode[20];/*学号*/
charname[10];/*姓名*/
intage;/*年龄*/
charsex[5];/*性别*/
chartime[20];/*出生年月*/
charadd[20];/*家庭地址*/
chartel[20];/*电话*/
charmail[20];/*邮箱地址*/
}stu[N];
intk=1,m,n;
voidshuru();
voidchaxun();
voidxiugai();
voidzengjia();
voidshanchu();
voidxianshi();
voidbaocun();
voidcaidan();
voidtuichuxitong();
voidhuanyingyemian();
intmain()
{
while(k)
{
huanyingyemian();
system("pause");
system("cls");
printf("请按任意键进入主菜单!
\n");
system("cls");
caidan();
system("pause");
}
return0;
}
voidhelp()
{system("COLOR2f");
printf("\n尊敬的用户您好!
");
printf("\n============================================================\n||");
printf("\n|1.欢迎进入帮助系统!
|\n||");
printf("\n|★★★★★★★★|\n||");
printf("\n|2.请按照菜单提示进入数字代号!
|\n||");
printf("\n|3.增加学生信息后,请切记保存!
|\n||");
printf("\n|4.谢谢您的使用!
|\n||");
printf("\n============================================================\n");
}
voidshuru()/*实现录入学生基本信息功能*/
{
inti,flag=1;
while(flag)
{
flag=0;
printf("请输入需要创建信息的学生人数(1-100):
\n");
scanf("%d",&n);
if(n<1||n>100)
{
flag=1;
printf("输入错误,检查后请重新输入!
\n");
}
}
for(i=0;i{
printf("请输入第%d个学生的基本信息:
\n",i+1);
printf("请输入学号:
\n");
scanf("%s",stu[i].code);
printf("请输入姓名:
\n");
scanf("%s",stu[i].name);
getchar();
printf("请输入性别(男,女):
\n");
scanf("%s",stu[i].sex);
printf("请输入年龄:
\n");
scanf("%d",&stu[i].age);
printf("请输入出生年月(输入格式:
年.月):
\n");
scanf("%s",stu[i].time);
printf("请输入家庭地址:
\n");
scanf("%s",stu[i].add);
printf("请输入电话号码:
\n");
scanf("%s",stu[i].tel);
printf("请输入E-mail地址:
\n");
scanf("%s",stu[i].mail);
}
printf("录入完毕!
\n");
baocun();
}
voidbaocun()/*保存学生信息到文件的函数*/
{
inti;
FILE*fp;
if((fp=fopen("student.txt","wb"))==NULL)/*创建文件并判断是否能够打开成功*/
{
printf("文件不能打开!
\n");
exit(0);/*如果不能打开文件,则关闭当前所有的文件*/
}
for(i=0;iif(fwrite(&stu[i],sizeof(structrecord),1,fp)!
=1)
printf("文件输入错误!
\n");
fclose(fp);/*关闭文件*/
}
voidchazhao()
{
inti,t,flag;
chars1[30];
system("COLOR5f");
printf("\n=================================\n");
printf("|1.按学号查询|\n");
printf("|2.按姓名查询|\n");
printf("|3.退出本菜单|\n");
printf("=================================\n");
while
(1)
{
flag=0;
printf("请输入子菜单编号:
");
scanf("%d",&t);
switch(t)
{
case1:
printf("请输入要查询的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(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;iif(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");
}
}
}
voidxiugai()
{
inti,t,num;
charsex1[3],s1[30],s2[30];
printf("请输入要查询的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
num=i;
system("COLOR4f");
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",&t);
switch(t)
{
case1:
printf("请输入新的姓名:
\n");
scanf("%s",s2);
strcpy(stu[num].name,s2);break;
case2:
printf("请输入新的年龄:
\n");
scanf("%s",s2);
scanf(