c语言 学生档案管理,求C语言学生档案管理系统 程序设计 最好有(模块设计图.流程设计图.代码)!!! 必有重谢!!!...

匿名用户

1级

2010-12-26 回答

这是我的课程设计,希望对你有所帮助。

题目:学生档案管理系统

目录

1、 设计目的

2、 总体设计

3、 详细设计

4、 调试与测试:

5、 总结与体会

附:源程序清单和执行结果

1.设计目的

a)了解和掌握c语言面向对象程序设计的基本过程

b)进一步熟悉C语言的特点

c)学会总体规划一个程序,从各个部分把一个程序完成好

d)能够使自己的程序实现一定的功能,对C++产生一种浓厚的兴趣

e)培养耐心,遇困难不退缩

f)了解团队精神的重要性,团结合作

加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力

在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,以及文件的读写操作等

2.总体设计

学生信息管理系统

成绩录入

成绩

修改

成绩查询

删除成绩

输出成绩

统计成绩

退出系统

流程

1

开始

输入密码

密码验证

2

基本信息录入

基本信息保存

基本信息显示

基本信息修改

基本信息查询

基本信息删除

3

1. 按学号查询

2. 按姓名查询

3. 按性别查询

4. 按年龄查询

4

显示所有

5

结束,保存信息

6退出系统

3.详细设计

本程序由一个Void main(),一个Void GetInfo(),一个Void Display(),一个Void Save(),

一个Void Modfiy(),一个Void Delete()和一个Void Search()共七个主要函数来实现

该程序的编程的。其中在主函数Void main()中调用其他六个函数,通过Switch语

句来实现调用进入各个函数,在进入主菜单之前有个密码验证的过程,主要通过

bool Cherk() 来实现密码的判断,其中密码保存在c:\\text.1中,当输入的密码与

保存的密码相同时,则进入主菜单,见以下主要程序分析。bool Check(char pas[6])//密码验证

{

FILE *fp;

char ch;

char a[7]={" "};//密码为六个字符的字符串

int i = 0;

if ((fp=fopen("c:\\1.txt","r"))==NULL)//密码不相符

{

printf("打开文件失败!\n");

exit(0);//返回值为0

}

ch=fgetc(fp);//以下为进入修改时密码的验证

while (ch!=EOF&&i<6)

{

a = ch;

ch=fgetc(fp);//密码取自相同地方

i++;

}

a[6] = '\0';

if (!strcmp(pas,a))//密码比较相符

{

return true;

}

else

{

printf("密码错误\n");

return false;

}

fclose(fp);

}

密码验证过程中应用了if条件语句,以及字符串比较函数,从而达到密码设置效果。

学生信息输入应用了结构数组,学生信息主要包括姓名,学号,性别,年龄以及备注。

其中年龄为整型,其他为字符型。调用函数时,学生信息运用了指针数组,如void Modfiy(struct student* arr,int n)

在Void Delete()调用函数中,当bool flag=ture是该学生不存在,即已被删除。

在Void search()调用函数中,当bool flag=ture是该学生存在,即已被查询到。

当flag=false时则说明没有该学生信息。在查询系统中,有四种查询方式,分别是

按姓名查询,按学号查询,按性别查询和按年龄查询。四种查询方式用Switch语句

连接起来,进入每种查询方式要输入所需信息才能进入。

该程序最大的特点是Switch连接各调用函数和各查询方式以及结构数组的运用,将各

函数有序的连接起来,

各个调用函数功能的实现如下:

1) 信息的录入主要运用循环语句将各个学生信息依次输入

2) 信息的显示也是用循环语句将各个学生信息显示出来。

3) 信息的保存是将信息重写到保存到的文件位置,其中信息保存在c:\\student.text

4) 信息的删除是运用字符串复印函数,将空格复印到信息字符上达到删除的效果

5) 信息的修改是输入学号用循环语句将需修改的信息显示出来,然后再输入新的信息

6) 信息的查询是通过Switch语句将查询方式连接起来,并在各个查询方式中用循环语句将要查询的信息显示出来。

4.调试与测试

1.初步调试的结果出现问题较多,经过多次修正和调试解决了许多问题。

最后调试的结果为:

请输入密码:

输入密码后跳出主菜单如下:

*************欢迎进入郑州航空工业管理学院学生档案管理系统!*********************

****************************主菜单********************************"

***********1-学生基本信息录入 * 2-学生基本信息显示***********"

***********3-学生基本信息保存 * 4-学生基本信息删除***********"

***********5-学生基本信息修改 * 6-学生基本信息查询***********"

*******************7-退出学生信息系统 ******************" ***************************************************************"

按1后出现信息为:

输入学生基本信息:姓名 学号 性别 年龄 备注

输入两个学生信息后按2会显示你所输入的信息,

按3后会保存你所输入的信息。

按5后出现请输入密码,密码输入后会跳出

学生基本信息修改

请输入学号

输入学号后出现 infor: name no sex age

输入要修改信息后出现

Please input the informasion

输入确定后信息已修改

按4后出现

删除信息

输入学号 输入学号后该学生信息被删除

按6后出现

---------------1-通过学号查询 -------------

---------------2-通过姓名查询--------------

---------------3-通过性别查询--------------

--------------4-通过年龄查询--------------

-------------------5-退出--------------

按1 后出现输入学号

输入学号后显示出查询信息

按2后出现输入姓名

输入姓名后显示查询信息

按3后出现输入性别

输入性别后显示查询信息

按4后出现输入年龄

输入年龄后显示查询信息

以上为调试结果

5.心得与体会

终于可以松口气了,经过一个思考,查资料,写源程序,上机调试.现在终于告一段落了.看到自己的劳动成果,心中不免有些惊喜,没想到自己还能独立完成初次的课程设计.

这种课程设计是枯燥无味的,但对C++这门程序语言的掌握却有非常大的作用.从开始对题目的分析,就注定摆在我这样一个对C++了解不多的新手面前的是一段艰难的旅程.但最终很庆幸的是我居然能够坚持下来,而且完成了设计工作.

C++是很难学的,这也许是因人而异,但对我来说确实是一个障碍.如今要自己完成一个课程设计,无疑是对自己的一个挑战.先是上网查找有关的资料,分析题目所需的数据,要用到哪些函数等等,星期二上网初步调试,将函数用些结构和语句连接起来,做这个工作时,又将书本翻阅了一遍,重新获得许多东西。如带参函数的特点,以及一些语句的运用及特点等等。将工作分配到每块是我完成这个设计的主要方法,然而将每块都完成看起来比较轻松,但实际操作起来却是比较麻烦的.由于平时对C++知识的积累较为匮乏,(这可能是最主要的原因了),所以操作起来真是寸步难行,没办法,只有拿出课本找到相应的知识点,临阵磨枪.费了一番功夫,再上机调试时就是最痛苦的时候了,错误一大堆,要一个一个的修改。经过几翻调试修改之后终于可以执行了,那时还兴奋了好长时间呢!然而执行出来的结果是不令人满意的,界面不美观不说,最重要的是输入太烦琐,而且受到的限制太多,如只能以某种方式输入,且个数受限制。于是又发费了大量时间去修改,终于比较满意了,但也到了星期五了,也就是答辩的时间。答辩的时候我才发现还有好多知识是我不会的,老师问了我一些问题,我回答出来的却不多,我体会到我还要很努力的学习,在C++的学习上我还有很长的一段路要走。今天不管怎样把这个设计作出来是件很高兴的事情,不过能够把这个设计顺利完成要归功于我的指导老师,帮了我很多忙,也让我发现了我有好多欠缺的地方,真的很感谢你们,谢谢!

但不管怎么样,我还是完成了这个设计.虽说累了点,但我想这对我们进一步掌握C++,并为下学期的C++二级考试是有很大的帮助的.能够编出程序,其实本身就是对自己的一种肯定,是对自己前面一段时间学习C++综合水平的一个检阅.当然完成后的兴喜,只有经历过了才能体会到.而我体会到了.

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在几位老师的辛勤指导下,终于游逆而解。同时,在各老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※以下为原程序密码保存在c:\\text.中

#include

#include

#include

#include

#define N 3

struct student

{

char name[10];

char no[10];

char sex;

int age;

char bnote[100];

};

void print(bool menu)//打印基本信息

{

printf("\n\t\t*************欢迎进入湖南工程学院学生档案管理系统!*************");

printf("\n\t\t*********************************主菜单************************************");

printf("\n\t\t***********1-学生基本信息录入 * 2-学生基本信息显示***********");

printf("\n\t\t***********3-学生基本信息保存 * 4-学生基本信息删除***********");

printf("\n\t\t***********5-学生基本信息修改 * 6-学生基本信息查询***********");

printf("\n\t\t**********************7-退出学生信息系统 ****************************");

printf("\n\t\t******************Made by Shanglogo*********************************");

}

bool Check(char pas[6])//密码验证

{

FILE *fp;

char ch;

char a[7]={" "};

int i = 0;

if ((fp=fopen("c:\\1.txt","r"))==NULL)

{

printf("打开文件失败!\n");

exit(0);

}

ch=fgetc(fp);

while (ch!=EOF&&i<6)

{

a = ch;

ch=fgetc(fp);

i++;

}

a[6] = '\0';

if (!strcmp(pas,a))

{

return true;

}

else

{

printf("密码错误\n");

return false;

}

fclose(fp);

}

void GetInfo(struct student *arr,int n)//学生基本信息录入

{

for (int i = 0;i

{

printf("输入学生的基本信息: 姓名 学号 性别 年龄 入学总分\n");

scanf("%s %s %c %d %s",arr.name,arr.no,&arr.sex,&arr.age,arr.bnote);

}

}

void Display(struct student* arr,int n)//学生基本信息显示

{

printf("学生信息: 姓名 学号 性别 年龄 入学总分\n");

for (int i = 0;i

{

printf("%15s%15s%15c%15d%15s\n",arr.name,arr.no,arr.sex,arr.age,arr.bnote);

}

}

void Save(struct student* arr,int n)//学生基本信息保存,保存在c:\\student.txt

{

FILE * fp;

fp= fopen("c:\\student.txt","w+");

if (fp == NULL)

{

printf("文件不存在!\n");

exit(0);

}

fwrite(arr,sizeof(struct student)*n,n,fp);

fclose(fp);

}

void Modfiy(struct student* arr,int n)//学生基本信息修改

{

char number[10];

bool flag=false;

char pass[6];

printf("请输入密码:\n");

scanf("%s",pass);

if (Check(pass))

{

printf("修改学生信息:\n");

printf("请输入学号:\n");

scanf("%s",number);

for (int i =0;i

{

if (!strcmp(number,arr.no))

{

printf("infor: name no sex age note\n");

printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,

arr.sex,arr.age,arr.bnote);

printf("please input information:\n");

scanf("%s%s%c%d%s",arr.name,arr.no,&arr.sex,&arr.age,arr.bnote);

Save(arr,n);

flag = true;

}

}

if (flag == false)

{

printf("该学生不存在!:\n");

}

}

}

void Delete(struct student* arr,int n)//学生基本信息删除

{

char number[10];

bool flag=false;

printf("删除信息:\n");

printf("请输入学号:\n");

scanf("%s",number);

for (int i =0;i

{

if (!strcmp(number,arr.no))

{

strcpy(arr.name," ");

strcpy(arr.no," ");

strcpy(arr.bnote," ");

arr.sex = ' ';

arr.age = ' ';

Save(arr,n);

flag = true;

}

}

if (flag == true)

{

printf("该学生不存在!:\n");

}

}

void Search(struct student* arr,int n)//学生基本信息查询

{

int temp,i;

bool flag=false;

printf("---------------1-通过学号查询 -------------\n");

printf("---------------2-通过姓名查询--------------\n");

printf("---------------3-通过性别查询--------------\n");

printf("---------------4-通过年龄查询--------------\n");

printf("-------------------5-退出------------------\n");

scanf("%d",&temp);

switch (temp)

{

case 1://按照学号查询

{

char num[10];

printf("请输入学号:\n");

scanf("%s",num);

for ( i =0;i

{

if (strcmp(num,arr.no))

{

printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,

arr.sex,arr.age,arr.bnote);

flag = true;

}

}

if (!flag)

{

printf("该学生不存在.\n");

}

}

break;

case 2://按照名字查询

{

char num[10];

printf("please input name:\n");

scanf("%s",num);

for ( i =0;i

{

if (strcmp(num,arr.name))

{

printf("%12s%12s%12c%12d%12s",arr.name,arr.no,

arr.sex,arr.age,arr.bnote);

flag = true;

}

}

if (!flag)

{

printf("该学生不存在.\n");

}

}

break;

case 3://按照性别查询

{

char ch;

printf("请输入性别:\n");

//scanf("%c",&ch);

ch = getch();

for ( i =0;i

{

if (ch == arr.sex)

{

printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,

arr.sex,arr.age,arr.bnote);

flag = true;

}

}

if (!flag)

{

printf("t该学生不存在.\n");

}

}

break;

case 4://按照年龄查询

{

char num_age;

printf("请输入年龄:\n");

scanf("%d",&num_age);

for ( i =0;i

{

if (num_age == arr.age)

{

printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,

arr.sex,arr.age,arr.bnote);

flag = true;

}

}

if (!flag)

{

printf("该学生不存在.\n");

}

}

break;

default:

break;

}

}

void main()

{

struct student arr[N];

char ps[6];

bool flag =false;

printf("请输入密码:\n");

scanf("%s",ps);

flag = Check(ps);

if (flag)

{

int select;

print(false);

scanf("%d",&select);

while (0

{

switch (select)

{

case 1:

GetInfo(arr,N);

print(true);

break;

case 2:

Display(arr,N);

print(true);

break;

case 3:

Save(arr,N);

print(true);

break;

case 4:

Delete(arr,N);

print(true);

break;

case 5:

Modfiy(arr,N);

print(true);

break;

case 6:

Search(arr,N);

print(true);

break;

default:

break;

}

printf("请选择:\n");

scanf("%d",&select);

}

}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值