C语言设计学生信息数据库

合集下载

原创c语言+数据库 学生管理系统课程设计

原创c语言+数据库 学生管理系统课程设计

原创C语言+数据库学生管理系统课程设计一、引言学生管理系统是一种应用程序,旨在管理学生的基本信息、课程信息、成绩信息以及其他相关信息。

本文将介绍一个基于C语言和数据库的学生管理系统的课程设计。

二、系统设计学生管理系统主要分为以下几个模块:学生信息管理、课程信息管理、成绩管理和报告生成。

2.1 学生信息管理学生信息管理模块主要用于添加、修改、删除和查询学生的基本信息。

学生的基本信息包括学号、姓名、性别、年龄等。

利用数据库存储学生信息可以提高系统的效率和数据的安全性。

通过C语言与数据库的交互,可以实现对学生信息的增删改查操作。

2.2 课程信息管理课程信息管理模块用于添加、修改、删除和查询课程的相关信息。

每门课程有自己的课程编号、课程名称、上课地点、上课时间等。

同样地,课程信息也可以通过数据库进行存储和管理。

2.3 成绩管理成绩管理模块用于录入和查询学生的成绩信息。

每名学生可以选择多门课程,并获取相应的成绩。

成绩信息包括学生学号、课程编号、成绩等。

通过C语言与数据库的结合,可以方便地进行成绩的录入、修改和查询。

2.4 报告生成报告生成模块将学生的基本信息、课程信息和成绩信息综合起来,生成一份完整的报告。

该报告可以用于学校的教务管理、学生的评估等。

通过对数据库中的数据进行查询和整合,可以实现报告的自动生成。

三、技术实现在这个学生管理系统的课程设计中,我们将使用C语言作为编程语言,以及使用MySQL作为数据库管理系统。

具体的实现步骤如下:1.建立数据库首先,我们需要创建一个数据库,用于存储学生信息、课程信息和成绩信息。

可以使用MySQL命令行或者图形化界面工具创建数据库。

2.建立表格在数据库中创建相关的表格,用于存储学生信息、课程信息和成绩信息。

表格的列可以根据实际需要进行设计,例如学生表格可以包括学号、姓名、年龄等列。

3.连接数据库使用C语言编写程序,连接到MySQL数据库。

可以使用MySQL提供的C语言接口库,实现与数据库的连接。

c语言+数据库 学生管理系统课程设计

c语言+数据库 学生管理系统课程设计

c语言+数据库学生管理系统课程设计1. 引言学生管理系统作为一个学校的重要组成部分,通常用于管理学生的基本信息、课程安排以及成绩管理等功能。

本文将介绍一个基于C语言和数据库的学生管理系统的课程设计方案。

2. 功能需求学生管理系统应具备以下基本功能:•学生信息管理:包括学生基本信息的录入、修改和删除等操作;•课程管理:包括课程信息的录入、修改和删除等操作;•成绩管理:包括成绩录入、查询和统计等操作;•选课管理:学生选课和退课的管理;•查询与统计:包括学生信息、课程信息、成绩信息的查询与统计功能;•用户权限管理:包括管理员和普通用户权限的划分。

3. 系统设计3.1 数据库设计学生管理系统需要设计适当的数据库来存储学生、课程和成绩信息。

常见的关系型数据库如MySQL和SQLite都可以作为学生管理系统的数据库选择。

数据库设计需要考虑以下几个表:学生信息表、课程信息表、选课信息表和成绩信息表。

每个表需要定义合适的字段,并设置主键和外键关联。

3.2 程序设计学生管理系统的程序设计使用C语言完成,可以使用C语言的文件操作、结构体和函数等特性来实现各功能。

系统的设计可以分为多个模块,包括学生管理模块、课程管理模块、成绩管理模块、选课管理模块、查询与统计模块和用户权限管理模块。

每个模块负责相应的功能实现,模块之间可以相互调用。

3.3 用户界面设计学生管理系统的用户界面应该友好、简洁且易于使用。

可以使用命令行界面实现,通过菜单和命令来完成各项操作。

用户界面设计应该考虑到不同类型用户的需求,管理员和普通用户的界面应有所区别,并设置相应的权限控制。

4. 实施步骤4.1 数据库创建在数据库设计完成后,需要创建数据库和相应的表结构。

根据数据库选择和学校要求,可以使用相应的命令或工具来创建数据库和表。

4.2 程序实现根据系统设计,实现各个功能模块。

需要编写对应的C语言代码,包括定义结构体、实现函数和处理文件等操作。

在实现过程中,需要考虑数据的合法性和正确性,进行适当的输入和输出验证。

c语言程序设计学生信息管理系统

c语言程序设计学生信息管理系统

c语言程序设计学生信息管理系统学生信息管理是学校管理系统中非常重要的一部分,因此我们需要一个高效的系统进行管理。

在此背景下,C语言程序设计可以成为一个非常有用的工具。

首先,我们需要定义学生信息的数据结构。

通常情况下,学生信息包括姓名,性别,年龄,出生日期,籍贯,班级等等。

我们可以使用结构体来定义这个数据类型,代码如下:```typedef struct{char name[20];char sex[10];int age;char birth[20];char place[20];char clazz[20];}STUDENT;```其中,我们使用了char数组来存储字符串类型的数据。

在使用数组之前,我们需要考虑数据大小,以免溢出。

在这里,我们将数组的大小设置为了20。

接下来,我们需要实现学生信息的输入和输出功能。

我们可以使用scanf函数来输入信息,使用printf函数来输出信息。

代码如下:```void input_stu(STUDENT *stu){printf("Input Student's Name:");scanf("%s",stu->name);printf("Input Student's Gender:");scanf("%s",stu->sex);printf("Input Student's Age:");scanf("%d",&stu->age);printf("Input Student's Birth:");scanf("%s",stu->birth);printf("Input Student's Place:");scanf("%s",stu->place);printf("Input Student's Class:");scanf("%s",stu->clazz);}void output_stu(STUDENT *stu){printf("Name:%s\n",stu->name);printf("Gender:%s\n",stu->sex);printf("Age:%d\n",stu->age);printf("Birth:%s\n",stu->birth);printf("Place:%s\n",stu->place);printf("Class:%s\n",stu->clazz);}```注意,在使用scanf函数输入字符串类型的数据时,应该使用%s 格式控制符。

用C语言编写的一个学生信息管理系统

用C语言编写的一个学生信息管理系统

用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。

在主函数里能实现以下功能。

运行后出现一个选择提示。

可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"jiemian();struct student{char name[50];char sex[5];int age;char num[50];float score1;float score2;float score3;float sum;float ave;}stu[50],del;void gn1(){int i=0;char num1;for(i=0;i<50;i++){printf("请输入要添加的学生资料:\n");printf("学号:");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",&stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续添加:y/n\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n'){system("cls");jiemian();}}}void gn2(){int i;char num[50];printf("请输入要查找的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==0){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);break;}if(i==50)printf("查找不到!请重新输入!\n");getch();system("cls");jiemian();}void gn3(){char num1,i=0;printf("请输入要修改的学生学号:\n");scanf("%s",stu[i].num);printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续修改:y/n?\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n')system("cls");jiemian();}void gn4(){int i;char num[50];printf("请输入要删除的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(num,stu[i].num)==0){printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n");break;}if(i==50)printf("您输入的信息不存在!\n");getch();system("cls");jiemian();}void gn5(){int i=0;stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t 平均成绩\n"); for(i=0;i<50;i++){if(stu[i].age==0)break;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);}printf("按任意键返回...");getch();system("cls");jiemian();}void gn6(){FILE *fp;int i;char filename[50];printf("\n");printf("\n");printf("请输入要保存的文件名:");scanf("%s",filename);if((fp=fopen(filename,"wb"))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++){if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件保存失败!\n");}fclose(fp);printf("文件已保存!\n");printf("按任意键返回...\n");getch();system("cls");jiemian();}void gn7(){FILE *fp;int i=0; //打开文件流char filename[50];printf("请输入文件名:");scanf("%s",filename); //输入要载入的文件名if((fp=fopen(filename,"rb"))==0) //如果当前目录下不存在相对应的文件,输出文件不存在,退出系统。

学生信息管理系统详细设计说明c语言

学生信息管理系统详细设计说明c语言

学生信息管理系统详细设计说明c语言如何设计一个学生信息管理系统。

一、需求分析学生信息管理系统是以管理学生信息为主要功能的软件系统。

在设计之前,我们需要了解用户的需求。

通过对用户需求的分析,我们得出以下功能模块:1、学生信息录入:录入学生信息,包括学号、姓名、性别、出生日期、班级等信息。

2、学生信息查询:根据学号、姓名等关键字进行学生信息的查询,支持模糊查询。

3、学生信息修改:可以修改学生的相关信息,包括学号、姓名、班级等。

4、学生信息删除:删除已经录入的学生信息。

5、学生成绩查询:根据学号查询该学生的相关成绩信息。

6、学生成绩录入:录入学生的相关成绩信息,包括语文、数学、英语等。

二、系统设计在需求分析的基础上,我们可以开始进行系统设计。

1、数据结构设计(1)学生信息结构体/* 学生信息结构体*/typedef struct {/* 学号*/char id[11];/* 姓名*/char name[21];/* 性别*/char sex[3];/* 出生日期*/char birthday[11];/* 班级*/char class[21];} Info;(2)学生成绩结构体/* 学生成绩结构体*/typedef struct {/* 学号*/char id[11];/* 语文成绩*/int chinese;/* 数学成绩*/int math;/* 英语成绩*/int english;} Score;2、功能模块设计(1)学生信息录入在学生信息录入模块中,我们需要设计一个函数来进行学生信息的录入。

void AddInfo(Info *info);该函数的参数是学生信息结构体的指针,通过该参数可以将学生信息录入到系统中。

在该函数中,我们需要进行如下操作:1、提示用户输入学生信息;2、从键盘获取用户输入;3、将用户输入保存到结构体中;4、将结构体保存到文件中。

(2)学生信息查询在学生信息查询模块中,我们需要设计一个函数来查询学生信息。

用c语言编写的一个学生信息管理系统

用c语言编写的一个学生信息管理系统

路漫漫其修远兮,吾将.上F而求索・百度文库用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。

在主函数里能实现以下功能。

运行后出现一个选择提示。

可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对■链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h n#include ,,conio.h Hjiemian();struct student(char name[50];char sex[5];int age;char num[50];float scorel;float score2;float score3;float sum;float ave;}stu[50],del;void gnl()(int i=0;char numl;for(i=0;i<50;i++)(printf「请输入要添加的学生资料:\n“);printf(“学号巧;scanf("%s",stu[i].num);printf("姓名巧;scanf("%s",stu[i].name);printf(“性别巧;scanf("%s",&stu[i].sex);printf(“年龄巧;scanf("%d",&stu[i].age);11目上下而求索•百度文库printf(”请输入学生的三门成绩:'俏;printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语巧;scanf(,,%f,,,&stu[i].score3);printf("是否继续添加:y/n\n“); scanf(,,%c,,,&numl);scanf(,,%c,,,&numl);if(numl==,N, 11 numl=="n,){system(,,cls"); jiemian();)))void gn2()(int i;char num[50];printf「请输入要查找的学生学号:\n“);scanf(,,%s,,/num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==O) (stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum^;printf(',%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);break;)if(i==50)printf("查找不到!请重新输入!\n");22路漫漫其修远兮,吾将上F而求索・百度文库getch(); systemf'cls"); jiemian();)void gn3()(char numlJ=0;printf("请输入要修改的学生学号:\n“);scanf(,,%s,,/stu[i].num);printf(,l%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);printf("姓名门;scanf(,,%s,,/stu[i].name);printf(“性别门;scanf(,,%s,,/stu[i].sex);printf("年龄门;scanf(,,%d,,,&stu[i].age);printf(“请输入学生的三门成绩:\n“);printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语门;scanf(,,%f,,,&stu[i].score3);printf("是否继续修改:y/n?\n“);scanf(,,%c"/&numl);scanf(,,%c,\&numl);if(numl==,N, 11 numl==,n,)systemf'cls"); jiemian();)void gn4()(int i;char num[50];printf("请输入要删除的学生学号:\n“);scanf(,,%s,,,num);for(i=0;i<50;i++) 33if(strcmp(num,stu[i].num)==O)(printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n“); break;)if(i==50)printf ("您输入的信息不存在!\n”);getch();system("cls"); jiemian();)void gn5()(int i=0;stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t平均成绩\n");for(i=0;i<50;i++)(if(stu[i].age==O)break;printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);)printf("按任意键返回.getch();system(,,cls n);jiemian();)void gn6()(FILE *fp;int i;char filename[50];printf(,,\n N); 44路漫漫其修远兮,吾将上F而求索・百度文库printf(,,\n M);printf(“请输入要保存的文件名:");scanf(”%s”,filename);if((fp=fopen(filename/,wb,,))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++)(if(fwrite(&stu[i],sizeof(struct student),l,fp)!=l) printf("文件保存失败!\n”);)fclose(fp);printf (“文件己保存!\n“);printf。

c语言课程设计(学生信息管理系统)

c语言课程设计(学生信息管理系统)

c语言课程设计(学生信息管理系统)一、系统功能学生信息管理系统是一款基于C语言开发的数据管理程序,可实现对学生信息的增删改查等功能。

具体功能列表如下: a. 添加学生信息:可根据学生的基本信息,如学生学号、姓名、性别、地址、联系电话等,依次记录入系统; b. 删除学生信息:可根据学生学号、姓名等信息,从系统中删除不必要的学生信息; c. 修改学生信息:可根据已有的学生信息,修改学生某些属性内容,以更新系统中的数据; d. 查看学生信息:可根据学生学号、姓名等信息,查看指定学生的所有信息及多种查询功能; e. 数据保存功能:可将当前系统中的学生信息,保存成文件的形式; f. 备份/恢复功能:可对学生信息文件进行备份并对备份文件进行恢复; g. 查询统计功能:可根据学院代号、专业代号等信息,进行不同的查询统计; h. 排序功能:可根据学生学号、姓名等信息,对学生信息进行排序; i. 帮助功能:可提供详细的使用帮助文档,以帮助用户更好地使用系统;二、程序实现及结构1. 主程序:此程序用于控制整个系统的运行,可实现系统菜单显示、功能调用及功能切换等功能,可根据用户的操作需求,调用其他子程序实现各项功能。

2. 子程序:此程序是系统的主要部分,可实现学生信息的增删改查等功能,并可支持学生信息的备份,恢复,排序及查询统计等功能,用于实现主程序调用的功能。

3. 管理模块:此模块可实现对用户的登录及注册功能,可检测用户登录及注册的账号是否正确,以及是否有权限使用系统;4. 数据库模块:此模块可实现对学生信息的存储及调用,便于对各类学生信息进行更方便的管理。

此模块还可以负责系统的备份及恢复功能的实现。

5. 图形界面模块:此模块负责实现系统的图形化界面,使用户可以更加友好地操作系统,可以根据用户的需求,随时更改系统界面设置。

三、程序设计学生信息管理系统的设计主要有四个部分:1. 主程序:主程序的设计要求负责控制整个系统的运行,并根据用户的操作调用子程序实现各个功能。

C语言实验报告-学生信息资源管理系统

C语言实验报告-学生信息资源管理系统

C语言实验报告一、问题描述编写一个信息管理系统,包括、性别、年龄、班级、**、地址、各科成绩等,要求能进行查找、排序和计算,按加权平均排序、按*一课程排序和按**排序。

二、分析问题,解决问题的步骤1、输入初始的学生信息:输入信息包括学生的、性别、年龄、班级、**、地址、各科成绩等相关信息;可用函数void input(STUDENT *data, int *len)来实现此操作。

2、成绩输出模块:输出学生的信息以及成绩void output(STUDENT *data, int len):通过学生的来查看学生的相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和average() 来输出成绩的平均分数、最高和最低分数。

3、排序模块:用函数void sort(STUDENT *data, int len)来实现。

4、成绩查询模块:可用void find(STUDENT *data, int len) 来实现。

找到就输出此学生全部信息。

5、统计功能能:用函数void stat(STUDENT *data, int len) 来实现。

6、退出系统:可用一个函数e*it()来实现,首先将信息保存到文件中,释放动态创建的存空间,再退出此程序。

三、程序编写#include <stdlib.h>#include <stdio.h>#include <string.h>#define MA*N 35#define Ma*size325typedef struct student //学生信息{int no;char name[Ma*size];char se*[Ma*size];char age[Ma*size];char adress[Ma*size];char glassnum[Ma*size];double Chinese;double math;double English;double mark_ave;double mark_tot;} STUDENT;/*-----------输入信息子程序---------*/ void input(STUDENT *data, int *len) {int no;putchar('\n');printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");printf("%s\n", "格式:\n**\n");printf("%s\n", " 性别年龄地址班级 ** 语文数学英语");putchar('\n');printf("如:\n");printf("1\n");printf("三 93 95 89\n");scanf("%d", &no);while(no != -1) {data[*len].no = no;scanf("%s %s %s %s %s %lf %lf %lf", data[*len].name,&data[*len].se*,&data[*len].age,&data[*l en].adress,&data[*len].glassnum,&data[*len].Chinese,&data[*len].math,&data[*len].English);data[*len].mark_ave=(data[*len].Chinese+data[*len].ma th+data[*len].English)/3.0;data[*len].mark_tot=data[*len].Chinese+data[*len].mat h+data[*len].English;(*len)++;scanf("%d", &no);}/*---------------输出信息子程序---------------*/ void output(STUDENT *data, int len){int i;system("cls");printf("%8s", "");printf("%8s", "性别");printf("%8s", "年龄");printf("%8s", "地址");printf("%8s", "班级");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');for (i = 0; i< len; i++){printf("%8d", data[i].no);printf("%8s", data[i].name);printf("%8s", data[i].se*);printf("%8s", data[i].age);printf("%8s", data[i].adress);printf("%8s", data[i].glassnum);printf("%8.1lf", data[i].Chinese); printf("%8.1lf", data[i].math);printf("%10.1lf", data[i].English); printf("%12.1lf", data[i].mark_ave); printf("%10.1lf", data[i].mark_tot); putchar('\n');}for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("按回车键继续.");getchar();getchar();}/*--------------排序子程序------------*/void sort(STUDENT *data, int len){int i,j,k;STUDENT temp;for (i=0; i<len-1; i++) {for (k=i, j=i+1; j<len; j++)if (data[k].mark_ave > data[j].mark_ave) k=j;if (k != i) {temp = data[i];data[i] = data[k];data[k] = temp;}}}/*--------------------查询子程序-----------------------*/ void find(STUDENT *data, int len){int find_no, result ;int i;lab: result=0;printf("%s\n", "请输入需要查找的学生的**,退出当前菜单请输入 -1.");scanf("%d", &find_no);if (find_no == -1) return; /*e*it the fine sub program*/while( data[result].no != find_no && result < len) result ++;if (result >= len ) {printf("%s\n", "未查询到相关信息");goto lab;}else {system("cls");printf("%s\n", "查询信息如下:");for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("%8s", "**");printf("%8s", "");printf("%8s", "性别");printf("%8s", "年龄");printf("%8s", "地址");printf("%8s", "班级");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');printf("%8d", data[result].no);printf("%8s", data[result].name);printf("%8s", data[result].se*);printf("%8s", data[result].age);printf("%8s", data[result].adress);printf("%8s", data[result].glassnum);printf("%8.1lf", data[result].Chinese);printf("%8.1lf", data[result].math);printf("%10.1lf", data[result].English);printf("%12.1lf", data[result].mark_ave);printf("%10.1lf", data[result].mark_tot);putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');goto lab;}}/*---------------统计子程序------------*/void stat(STUDENT *data, int len){int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0; int i;for (i = 0;i < len; i++) {if (data[i].mark_ave <=59) no_59++;else if (data[i].mark_ave <=69) no_69++;else if (data[i].mark_ave <=79) no_79++;else if (data[i].mark_ave <= 89) no_89++;else no_100++;}system("cls");for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("%10s", "分数");printf("%10s", "0--59"); printf("%10s", "60--69"); printf("%10s", "70--79"); printf("%10s", "80--89"); printf("%10s", "90--100");putchar('\n');putchar('\n');printf("%10s", "学生");printf("%10d", no_59);printf("%10d", no_69);printf("%10d", no_79);printf("%10d", no_89);printf("%10d", no_100);putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("按回车键返回");getchar();getchar();}/*---------------显示信息子程序------------*/void paint(){int i;system("cls");printf("%55s\n", "信计二班学生成绩管理系统\n");printf(" 制作者: ** \n");for (i = 0; i < 80; i++)putchar('=');putchar('\n');printf(" 1 输入信息 2 输出信息\n");printf(" 3 按平均分排序 4 按**查找\n");printf(" 5 按平均分输出统计信息 6 保存到文件\n");printf(" 0 退出\n");for (i = 0; i<= 79; i++)putchar('=');putchar('\n');printf("%s\n", "请输入各操作对应的序号:");}void save(STUDENT *data, int len)//将数据保存到文件{int i;FILE *fp;fp=fopen("成绩统计表.t*t","w");fprintf(fp,"%8s", "**");fprintf(fp,"%8s", "");fprintf(fp,"%8s", "性别");fprintf(fp,"%8s", "年龄");fprintf(fp,"%8s", "地址");fprintf(fp,"%8s", "班级");fprintf(fp,"%8s", "语文");fprintf(fp,"%8s", "数学");fprintf(fp,"%10s", "英语");fprintf(fp,"%12s", "平均分");fprintf(fp,"%10s\n", "总分");fprintf(fp,"=============================================== =========================\n");putchar('\n');for (i = 0; i< len; i++)fprintf(fp,"%8d", data[i].no);fprintf(fp,"%8s", data[i].name);fprintf(fp,"%8s", data[i].se*);fprintf(fp,"%8s", data[i].age);fprintf(fp,"%8s", data[i].adress);fprintf(fp,"%8s", data[i].glassnum);fprintf(fp,"%8.1lf", data[i].Chinese);fprintf(fp,"%8.1lf", data[i].math);fprintf(fp,"%10.1lf", data[i].English);fprintf(fp,"%12.1lf", data[i].mark_ave);fprintf(fp,"%10.1lf\n", data[i].mark_tot);}fprintf(fp,"=============================================== =========================\n");fclose(fp);printf("文件已保存到\"成绩统计表.t*t\"");getchar();getchar();}/*-----------主程序--------------*/void main()STUDENT data[MA*N];int len = 0;char ctrl_ch;paint();scanf("%c", &ctrl_ch);while (ctrl_ch != '0') {; case '1':input(data, &len);break;case '2':output(data, len);break;case '3':sort(data, len);break;case '4':find(data, len);break;case '5':insert(data, &len);break;case '6':delete_item(data, &len);break;case '7':stat(data, len);break;case '8':save(data, len);break;default:if (ctrl_ch != '\n') printf("%s\n", "输入错误!");break;}if (ctrl_ch != '\n') paint();scanf("%c", &ctrl_ch);}}四、误差分析此程序没有按加权平均排序功能是本程序的一大弊端,还有就是所列科目少了点,由于本课题中的许多知识点都没有学过,需要查找课外资料,所以如有错误,希望老师多多指正,!。

学生信息管理系统c语言版源代码

学生信息管理系统c语言版源代码

学生信息管理系统c语言版源代码#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #define N 1000typedef struct student {int number;char name[20];int grade;int gaoshu;int yingyu;int jisuanji;int sum;}STUDENT;STUDENT student[N]; int shuliang=0;void menu();void fhzjm(){char biaozhi[20];printf("\n");printf("还需要操作么,如果需要操作请输入:yes,否则请输入:no\n");scanf("%s",biaozhi);if(strcmp(biaozhi,"yes")==0){menu();}else if(strcmp(biaozhi,"no")==0)exit(0);else{printf("请输入正确的字符,谢谢~\n"); fhzjm();}}void DengJi(){int rs;int i,k=1;system("CLS");printf("请输入需要输入几个学生信息:"); scanf("%d",&rs);for(i=shuliang;i<shuliang+rs;i++,k++) {printf("请输入第%d个学生的学号:",k); scanf("%d",&student[i].number);printf("请输入学生的姓名:");scanf("%s",student[i].name);printf("请输入学生3门课的成绩:"); printf("请输入第1门课的成绩:");scanf("%d",&student[i].gaoshu);printf("请输入第2门课的成绩:");scanf("%d",&student[i].yingyu);printf("请输入第3门课的成绩:");scanf("%d",&student[i].jisuanji);}shuliang=shuliang+rs;fhzjm();}void ShanChu(){char shanchuinfo[10];system("CLS");printf("删除全部学生信息请输入\"all\",删除指定学号的学生信息请输入\"one\"\n");scanf("%s",shanchuinfo);if(strcmp(shanchuinfo,"all")==0){int j;printf("你删除的学生信息如下:\n");printf("-----------学号-------------姓名-------------高数--------------英语--------------计算机\t\n");for(j=0;j<shuliang;j++)printf("----%d-------%s-------%d-------%d-------%d\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].jisuanji);shuliang=0;printf("删除成功\n\n");}else if(strcmp(shanchuinfo,"one")==0){struct student *p=NULL;int choice;int i,j,k=0;printf("请输入你要删除的人的学号:");scanf("%d",&choice);for(i=0;i<shuliang;i++){if(choice==student[i].number){k=1;j=i;break;}}if(k){if(shuliang==1){p=&student[0];free(p);shuliang=0;}else{for(i=j;i<shuliang;i++) {student[i]=student[i+1];}shuliang=shuliang-1;}printf("删除成功\n\n");}else{printf("输入数据错误~\n"); }}fhzjm();}void LiuLan(){int i;system("CLS");if(shuliang==0){printf("系统里面没有任何学生的信息~\n");}else{for(i=0;i<shuliang;i++){printf("第%d个学生的学号为:%d\n",i+1,student[i].number);printf("第%d个学生的姓名为:%s\n",i+1,student[i].name);printf("第%d个学生的第一门课的成绩为:%d\n",i+1,student[i].gaoshu);printf("第%d个学生的第二门课的成绩为:%d\n",i+1,student[i].yingyu);printf("第%d个学生的第三门课的成绩为:%d\n",i+1,student[i].jisuanji);student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuan ji;printf("第%d个学生的总成绩为:%d\n",i+1,student[i].sum);}}fhzjm();}void ChaZhao(){int xx;char choice,yy[20];int i,j,k=0;system("CLS");if(shuliang==0){printf("系统里面没有任何学生的信息~\n");fhzjm();}printf("三种查找方式:学号,姓名,成绩\n");printf("如果按学号查找请输1,如果按姓名查找请输2,如果按成绩查找请输3\n");printf("请输入您查找的方式:");scanf("%s",&choice);if(choice=='1'){printf("请输入需要查找学生的学号:");scanf("%d",&xx);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数成绩----英语成绩----计算机成绩----\t\n");for(i=0;i<shuliang;i++){if(xx==student[i].number){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jis uanji);}}if(k==0)printf("输入信息有误:\n");}else if(choice=='2'){printf("请输入需要查找学生的姓名:\n");scanf("%s",yy);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数成绩----英语成绩----计算机成绩----\t\n");for(i=0;i<shuliang;i++){if(strcmp(yy,student[i].name)==0){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[j].jis uanji);}}if(k==0)printf("输入信息有误:\n");}else if(choice=='3'){printf("请输入需要查找学生的成绩:\n");scanf("%d",&xx);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数----英语----计算机----\t\n");for(i=0;i<shuliang;i++){if(xx==student[i].grade){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jis uanji);}}if(k==0)printf("输入信息有误:\n");}fhzjm();}void PaiXu(){struct student *p1[N],**p2,*temp;int i,j;system("CLS");p2=p1;for( i=0;i<shuliang;i++){p1[i]=student+i;}for( i=0;i<shuliang;i++){for( j=i+1;j<shuliang;j++){if((*(p2+i))->sum<(*(p2+j))->sum){temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;} }}printf("按照总成绩排序之后的信息为:\n");printf("----学号----姓名----总成绩----\t\n");for( i=0;i<shuliang;i++){student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuan ji;printf("----%d-----%s----%d-----\n",(*(p2+i))->number,(*(p2+i))->name,(*(p2+i))->sum);}fhzjm();}void CunChu(){int i;FILE *rs;if((rs=fopen("student.txt","w"))==NULL){printf("not open");exit(0);}for(i=0;i<shuliang;i++){fwrite(&student[i], sizeof(student[i]), 1, rs); }if(ferror(rs)){fclose(rs);perror("写文件失败~\n");return;}printf("存储文件成功~\n");fclose(rs);fhzjm();}void DaoChu(){struct student t;int i=0;FILE* fp = fopen("student.txt", "r");shuliang=0;if(NULL==fp){perror("读取文件打开失败~\n");return;}memset(student,0x0,sizeof(student));while(1){fread(&t,sizeof(t),1,fp);if(ferror(fp)){fclose(fp);perror("读文件过程失败~\n");return;}if(feof(fp)){break;}student[i]=t;i++;}fclose(fp);shuliang=i; printf("导出文件成功~\n"); fhzjm();}void menu(){int n=0;system("CLS");printf(" 学生信息管理系统\n");printf(" 作者:陈椿\n");printf("-------------------MENU-----------------\n"); printf(" 1.登记学生信息\n");printf(" 2.删除学生信息\n");printf(" 3.浏览所有已经登记的学生\n");printf(" 4.查找\n");printf(" 4.1按学号查找\n");printf(" 4.2按姓名查找\n");printf(" 4.3按成绩查找\n");printf(" 5.根据总成绩排序\n");printf(" 6.存储到文件\n");printf(" 7.从文件导出\n");printf(" 8.退出系统\n");a: printf(" 请选择:");scanf("%d",&n);switch (n){case 1:DengJi();break;case 2:ShanChu();break;case 3:LiuLan();break;case 4:ChaZhao();break;case 5:PaiXu();break;case 6:CunChu();break;case 7:DaoChu();break;case 8:exit(0);break;default:{printf("请输入1-8之间的数字,谢谢~\n"); goto a;}}}main() {menu();}。

C语言学生成绩管理系统的数据库设计与管理

C语言学生成绩管理系统的数据库设计与管理

C语言学生成绩管理系统的数据库设计与管理数据库设计与管理是C语言学生成绩管理系统的核心部分,合理的数据库设计和有效的管理,对系统的性能和稳定性有着至关重要的影响。

本文将从需求分析、数据库设计、数据表关系建立以及数据的增删改查等方面进行详细的讨论。

一、需求分析在进行数据库设计之前,首先需要进行需求分析,明确所需的功能和数据结构。

C语言学生成绩管理系统的主要功能包括学生信息管理、课程信息管理、成绩录入与查询以及报表生成等。

根据系统的需求,可以确定以下几个数据表:学生表、课程表、成绩表。

二、数据库设计1. 学生表设计学生表用于存储学生的基本信息,包括学生ID、姓名、性别、年龄等字段。

学生ID作为主键,用于唯一标识每位学生。

可以选择使用自增字段或者手动指定学生ID。

2. 课程表设计课程表用于存储课程的相关信息,包括课程ID、课程名称、授课教师等字段。

课程ID作为主键,用于唯一标识每门课程。

3. 成绩表设计成绩表用于存储学生的课程成绩信息,包括学生ID、课程ID、成绩等字段。

学生ID和课程ID作为外键,与学生表和课程表建立关联关系。

同时,可以添加日期字段用于记录成绩录入的时间。

三、数据表关系建立在数据库设计中,需要建立各个数据表之间的关系,以便进行数据的关联查询和数据的完整性保证。

1. 学生表与课程表的关系学生表与课程表之间为多对多关系,一个学生可以选择多门课程,一门课程可以有多名学生。

可以通过引入关联表来实现多对多关系的建立,例如创建一个选课表,包括学生ID和课程ID字段。

2. 学生表与成绩表的关系学生表与成绩表之间为一对多关系,一个学生可以有多门课程的成绩。

可以通过学生表中的学生ID字段与成绩表中的学生ID字段建立关联。

3. 课程表与成绩表的关系课程表与成绩表之间为一对多关系,一门课程可以有多名学生的成绩。

可以通过课程表中的课程ID字段与成绩表中的课程ID字段建立关联。

四、数据的增删改查数据库管理系统需要提供对数据的增加、删除、修改以及查询等操作,以满足系统的功能需求。

用C语言编写学生信息管理系统

用C语言编写学生信息管理系统

用C语言编写学生信息管理系统Design Purpose:Design Content:1. Problem n:Design a student n management system that includes student n such as student ID, name, age, gender, date of birth, address, phone number, and email.2. nal Requirements:1. The system works in menu mode.2. Student n entry n (student n is saved in a file) - input.3. Student n browsing n - output.4. Student n query n - algorithm according to student ID query and name query.Detailed Design:1. Menu: void menu() {}2. Establish n: void readfile() {}3. Search: void seek() {}4. Modify n: void modify() {}5. Insert n: void insert() {}6. Delete n:void del(){}7. Browse n:void display(){}8. Save:void save(){Debugging and Testing:1. System nal menu.2. Select the menu "", enter the system help and ns n.3. Select menu "4" to add student n. (1) Input the number of people to be added. (2) Enter the student ID, name, age, gender, date of birth, address, phone number, and email in order. After input, the menu pops up.#include#include#include#define BUFLEN 100 #define LEN 15struct record{char code[LEN+1]; char name[LEN+1]; int age;char sex[3];char time[LEN+1];char add[30];char tel[LEN+1];char mail[30];void readfile();void seek();void modify();void modify() {int i, item, num;char sex1[3], s1[LEN+1], s2[LEN+1];printf("请输入要修改的学生的学号:\n"); scanf("%s", s1);for (i = 0; i < n; 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) {case 1:printf("请输入新的姓名:\n"); scanf("%s", s2);strcpy(stu[num].name, s2);break;case 2:printf("请输入新的年龄:\n");scanf("%d", &stu[num].age);break;case 3:printf("请输入新的性别:\n");scanf("%s", sex1);strcpy(stu[num].sex, sex1);break;case 4:printf("请输入新的出生年月:\n"); scanf("%s", s2);strcpy(stu[num].time, s2);break;case 5:printf("请输入新的地址:\n");scanf("%s", s2);strcpy(stu[num].add, s2);break;case 6:printf("请输入新的电话号码:\n");scanf("%s", s2);strcpy(stu[num].phone, s2);break;case 7:printf("请输入新的E-mail地址:\n");scanf("%s", s2);strcpy(stu[num].email, s2);break;case 8:return;default:printf("输入有误,请重新选择子菜单编号\n"); break;}}void input(){int i;char s[10];printf("请输入学生人数:\n"); scanf("%d",&n);for(i=0;i<n;i++){printf("请输入学号:\n");scanf("%s",stu[i].code);printf("请输入姓名:\n");scanf("%s",stu[i].name);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);}void modify(){int num,choice;char s2[10];printf("请输入要修改信息的学生的学号:\n");scanf("%s",s2);for(num=0;num<n;num++){if(strcmp(stu[num].code,s2)==0){printf("请选择要修改的信息:\n");printf("1.学号 2.姓名 3.性别 4.年龄 5.出生日期\n");printf("6.家庭住址 7.电话号码 8.E-mail地址 9.退出\n");scanf("%d",&choice);switch(choice){case 1:printf("请输入新的学号:\n"); scanf("%s",s2);strcpy(stu[num].code,s2);break;case 2:printf("请输入新的姓名:\n"); scanf("%s",s2);strcpy(stu[num].name,s2);break;case 3:printf("请输入新的性别:\n"); scanf("%s",s2);strcpy(stu[num].sex,s2);break;case 4:printf("请输入新的年龄:\n");scanf("%d",&stu[num].age);break;case 5:printf("请输入新的出生日期:\n"); scanf("%s",s2);strcpy(stu[num].time,s2);break;case 6:printf("请输入新的家庭住址:\n"); scanf("%s",s2);strcpy(stu[num].add,s2);break;case 7:printf("请输入新的电话号码:\n"); scanf("%s",s2);strcpy(stu[num].tel,s2);break;case 8:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2);break;case 9:return;default:printf("请在1-8之间选择\n"); }}}void sort(){int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;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].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}}void insert() {int i = 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 < i; 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++;}} while (i < n + m);n += m;printf("录入完毕!\n\n");sort();void del() {int i, j, flag = 0;char s1[LEN + 1];printf("请输入要删除学生的学号:\n");scanf("%s", s1);for (i = 0; i < n; i++) {if (strcmp(stu[i].code, s1) == 0) {flag = 1;for (j = i; j < n - 1; j++) {stu[j] = stu[j + 1];}n--;printf("删除成功!\n\n"); break;}}if (flag == 0) {printf("未找到该学号!\n\n"); }。

C课程设计学生信息管理系统

C课程设计学生信息管理系统

查询模块:根据条件查询学生信息
系统管理模块:系统设置、权限管理 等功能
01
系统实现
系统开发环境与工具
开发语言:Java 开发工具:Eclipse 数据库:MySQL
前端框架:Bootstrap 版本控制工具:Git 测试工具:JUnit
系统关键技术实现
数据库设计:使用SQL Server 或MySQL等数据库管理系统进 行数据存储和管理
稻壳公司
C课程设计学生信息 管理系统
单击此处添加副标题
汇报人:
目录
单击添加目录项标题
01
系统概述
02
系统需求分析
03
系统设计
04
系统实现
05
系统评估与总结
06
01
添加章节标题
01
系统概述
系统的目标与功能
目标:实现学生信息的高效管理 功能:学生信息录入、查询、修改、删除 功能:课程信息录入、查询、修改、删除 功能:成绩信息录入、查询、修改、删除 功能:用户权限管理,确保信息安全
01
系统设计
系统架构设计
前端:使用HTML、CSS、 JavaScript等技术进行 页面布局和功能实现
后端:使用Java、 Spring Boot等技术进 行业务逻辑处理和数据库 操作
数据库:使用MySQL、 Oracle等关系型数据库 进行数据存储和管理
接口:使用RESTful API 进行前后端数据交互
风险评估:系统可能面临 的风险及应对措施
系统性能评估
响应时间:系统处理用户请求所需的时 间
可靠性:系统在运行过程中出现故障 的概率
吞吐量:系统在单位时间内处理的请 求数量
可扩展性:系统适应未来业务增长的 能力

设计一个C语言课程的学生信息管理系统

设计一个C语言课程的学生信息管理系统

1. 设计一个C语言课程的学生信息管理系统在计算机编程领域,学生信息管理系统是一种常见且重要的工具。

针对C语言课程,设计一个学生信息管理系统可以使教师和学生更有效地管理和跟踪课程进展。

本文将基于这一需求,介绍一个设计方案,并讨论其实现和应用。

1.1 系统需求分析设计学生信息管理系统的首要步骤是确定系统的需求。

在C语言课程中,我们通常需要管理学生的基本信息(例如尊称、学号、通信方式等),以及他们的课程成绩、作业提交情况等。

针对这些需求,我们可以将学生信息管理系统的功能分为以下几个方面:1.学生信息录入:教师或管理员可以将学生的基本信息录入系统,包括尊称、学号、通信方式等。

2.成绩管理:系统可以记录和管理学生的课程成绩,并提供查询和统计功能。

3.作业管理:学生可以通过系统提交作业,教师可以查看和评分。

4.考勤管理:记录学生的出勤情况,方便教师管理课堂纪律。

1.2 系统设计与实现1.2.1 数据结构设计为了有效地管理学生信息,我们需要设计合适的数据结构。

在C语言中,可以使用结构体来表示学生的信息,其中包括尊称、学号、通信方式等字段。

为了便于管理多个学生,可以使用链表或数组来组织学生信息。

typedef struct Student {char name[50];int studentId;char contact[50];float grade;struct Student* next;} Student;在上述代码中,我们定义了一个Student结构体,包含了学生的尊称、学号、通信方式、课程成绩以及一个指向下一个学生的指针。

1.2.2 功能实现为了实现学生信息管理系统的各个功能,我们需要编写相应的函数。

下面是几个基本功能的示例代码:1.2.2.1 学生信息录入Student* createStudent(char name[50], int studentId, char contact[50]) { // 创建一个新的学生结构体Student* student = (Student*)malloc(sizeof(Student));// 设置学生的基本信息strcpy(student->name, name);student->studentId = studentId;strcpy(student->contact, contact);student->grade = 0.0;student->next = NULL;return student;}void addStudent(Student** head, Student* newStudent) {if (*head == NULL) {// 如果链表为空,则直接将新学生作为头节点*head = newStudent;} else {// 找到链表的尾节点,并将新学生添加到末尾Student* current = *head;while (current->next != NULL) {current = current->next;}current->next = newStudent;}}void inputStudentInformation(Student** head) {char name[50], contact[50];int studentId;printf("请输入学生尊称:");scanf("%s", name);printf("请输入学生学号:");scanf("%d", &studentId);printf("请输入学生通信方式:");scanf("%s", contact);// 创建新的学生信息Student* newStudent = createStudent(name, studentId, contact);// 将学生信息添加到链表addStudent(head, newStudent);printf("学生信息录入成功!\n");}在上述代码中,我们首先定义了一个createStudent函数,用于创建一个新的学生结构体并初始化其基本信息。

学生信息管理系统c语言数据结构

学生信息管理系统c语言数据结构

学生信息管理系统c语言数据结构以下是一个基于C语言的数据结构实现的学生信息管理系统示例:```cinclude <>include <>include <>// 定义学生结构体struct Student {char name[20];int age;int id;};// 定义学生信息管理系统结构体struct StudentSystem {struct Student students[100]; // 学生数组int count; // 学生数量};// 初始化学生信息管理系统void initStudentSystem(struct StudentSystem system) {system->count = 0;}// 添加学生信息void addStudent(struct StudentSystem system, char name, int age, int id) {if (system->count >= 100) {printf("学生数量已达上限!\n");return;}system->students[system->count].name[0] = '\0';strcpy(system->students[system->count].name, name);system->students[system->count].age = age;system->students[system->count].id = id;system->count++;}// 查询学生信息void queryStudent(struct StudentSystem system, int id) {for (int i = 0; i < system->count; i++) {if (system->students[i].id == id) {printf("学生姓名:%s,年龄:%d\n", system->students[i].name, system->students[i].age);return;}}printf("未找到该学生!\n");}// 显示所有学生信息void showAllStudents(struct StudentSystem system) {for (int i = 0; i < system->count; i++) {printf("学生姓名:%s,年龄:%d,学号:%d\n", system->students[i].name, system->students[i].age, system->students[i].id); }}// 测试代码int main() {struct StudentSystem system;initStudentSystem(&system); // 初始化学生信息管理系统 addStudent(&system, "张三", 20, 1001); // 添加学生信息 addStudent(&system, "李四", 21, 1002); // 添加学生信息 showAllStudents(&system); // 显示所有学生信息queryStudent(&system, 1002); // 查询学生信息return 0;}```。

学生信息管理系统C语言编程

学生信息管理系统C语言编程

学生信息管理系统C语言编程【问题描述】学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。

该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。

通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。

【基本要求】(1)学生信息包括:学生基本信息文件(student.txt)(注:该文件不需要编程录入数据,可用文本编辑工具直接生成)的内容如下:(2)学生成绩基本信息文件(score.dat)及其内容如下:((注:该文件内容需要编程录入数据,具体做法见下面的要求)学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分(3)需要实现的功能1)数据录入和计算功能:对score.dat进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,综合成绩、实得学分由程序根据条件自动运算。

综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 。

实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 ,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下 ,应得学分=学分*0%。

2)查询功能:分为学生基本情况查询和成绩查询两种(1)学生基本情况查询:①、输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出,格式如下:②、输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。

(格式如上所示)(2)成绩查询:①、输入一个学号时,查询出此生的所有课程情况,格式如下:学号:xx 姓名:xxxxx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx ……………………共修:xx科,实得总学分为: xxx(3)删除功能:提供待删除学生的学号,则在student.txt和score.dat中删除所有与该学生有关的信息。

C语言上机实验报告--学生信息管理系统设计__内附源代码

C语言上机实验报告--学生信息管理系统设计__内附源代码

C语言上机实验报告------学生信息管理系统设计姓名:学号:班级:指导老师:学院:学校:C语言上机实验报告------学生信息管理系统设计一、实验题目学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。

试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)---输入(3)学生信息浏览功能---输出(4)查询、排序功能---算法(5)按学号查询(6)按姓名查询(7)学生信息的删除与修改(可选项)二、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。

希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。

三、分析过程1、能够实现对学生基本信息数据的增加和删除2、实现对录入保存后的学生基本信息进行格式化浏览3、提供学号和姓名两种方式对学生基本信息数据的查询4、能够对随机输入的学生基本信息数据按学号进行排序5、学生信息数据保存在文件中,方便数据的多次使用为了实现以上功能,必须设计的函数如下:录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等四、实验源代码:#include <stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<time.h>#define num 12//定义学生结构体typedef struct student{int id;char name[num];int age;char sex[4];struct birth{int year;int month;int day;}date;char add[30];int phone;}stu;//功能选择菜单void menu(){printf("\n");printf("\n");printf(" 学生信息管理系统\n");printf("\n");printf("********************************************************************* **\n");printf(" ==============1.学生信息录入 2.学生信息浏览===============\n");printf("\n");printf(" ==============3.学号查询信息 4.姓名查询信息===============\n");printf("\n");printf(" ==============5.按学号排序 6.删除学生信息===============\n");printf("\n");printf(" ============== 0.退出系统===============\n");printf("\n");printf("\n");printf("********************************************************************* *\n");printf("\n");printf(" 按编号选择对应功能\n");printf("\n");printf(" +++++++++++++++++++ XXXXXXX制作+++++++++++++++++++++\n");printf("\n");}//修改菜单void printmenu(){printf("********************************************************* **\n");printf("-------1.完全修改 2.学号修改---------");printf("-------3.姓名修改 4.性别修改---------");printf("-------5.生日修改 6.地址修改---------");printf("-------7.电话修改 0.退出修改---------");printf("********************************************************* **\n");}//取当前时间int nowtime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t);return local->tm_year+1900;//求出当前时间的年份}//输出文件中学生信息void print(char *file){stu temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("打开文件%s失败!\n",file);return;}printf("文件%s中学生信息如下:\n",file);printf("%8s%8s%6s%6s%8s%4s%4s%16s%12s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");fseek(fp,0,SEEK_SET);//从文件开始为之读取while(fread(&temp,sizeof(stu),1,fp))printf("%8d%8s%6d%6s%8d%4d%4d%16s%12d\n",temp.id,,temp.age,t emp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.ph one);//格式化输出学生信息fclose(fp);//关闭文件}void luru(char *file){int count,sexnum,i=0,m;stu temp,temp1;FILE *fp=fopen(file,"a+");//追加方式打开文件if(fp==NULL){printf("打开文件%s失败!",file);return;}printf("请确定本次需要录入几名学生信息:");scanf("%d",&count);for (i=0;i<count ;i++ ){printf("录入要写入文件%s的第%d名学生信息\n",file,i+1); Repeat:printf("请输入学号:");m=scanf("%d",&temp.id);if (m==0){printf("输入的数据不是整型数据!\n");fflush(stdin);//清除缓存goto Repeat;}fseek(fp,0,SEEK_SET);//从文件开始位置读取while(fread(&temp1,sizeof(stu),1,fp)){if (temp1.id==temp.id)//判断学号是否已存在{printf("学号已存在!\n");goto Repeat;}//若学号已存在,返回继续读取学号}printf("请输入姓名:");scanf("%s",);printf("请输入性别:0为女生,1为男生:");{scanf("%d",&sexnum);if (sexnum==1) strcpy(temp.sex,"男");else strcpy(temp.sex,"女");}printf("请输入出生年月日:");scanf("%d%d%d",&temp.date.year,&temp.date.month,&temp.date.day);temp.age=nowtime()-temp.date.year;printf("请输入地址:");scanf("%s",&temp.add);printf("请输入联系电话11位:");scanf("%d",&temp.phone);if(!fwrite(&temp,sizeof(stu),1,fp)){printf("向文件%s写入信息失败!\n",file);return;}}printf("向文件%s写入信息成功!\n",file);fclose(fp);}int IsEmpty(FILE *fp){int len;fseek(fp,0,SEEK_END);//指针移动到文件尾len=ftell(fp);//取指针的文职获取长度return(len==0)?1:0;//0代表文件为空}void idsearch(char *file){int findid;stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}printf("输入要查找学生的学号:");scanf("%d",&findid);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if(temp.id==findid){printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到学号为%d的学生的信息!",findid);return;fclose(fp);}void namesearch(char *file){char name[num];stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先输入学生信息!");return;}printf("输入要查找的学生的姓名:");scanf("%s",name);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if (!strcmp(,name)){printf("下面是姓名为%s的学生的信息:\n",name);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到姓名为%s的学生的信息!",name);fclose(fp);}//排序函数void paixu(char *file){int i,j,k,len;stu s[num],temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}fseek(fp,0,SEEK_END);//指针移动到文件末尾len=ftell(fp)/sizeof(stu);fseek(fp,0,SEEK_SET);for(i=0;i<len;i++)fread(s+i,sizeof(stu),1,fp);fclose(fp);for(i=0;i<len;i++){k=i;for(j=i+1;j<len;j++){if(s[j].id<s[k].id)k=j;}if(k!=i){temp=s[i];s[i]=s[k];s[k]=temp;}}printf("下面是按学号从小到大顺序排序后的学生的信息:\n");printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");for(i=0;i<len;i++)printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息remove("学生信息表.txt");//删除以前存放数据的文件fp=fopen(file,"w");for(i=0;i<len;i++)fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}//删除函数void shanchu(char *file){int i=0,len,del;stu s[num];FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入学生信息!");return;}printf("输入需要删除的学生的学号:");scanf("%d",&del);fseek(fp,0,SEEK_SET);while(fread(s+i,sizeof(stu),1,fp)){if(s[i].id==del){printf("下面是按学号为%d的学生的信息:\n",del);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息i=i-1;}i++;}fclose(fp);len=i;fp=fopen(file,"w");fseek(fp,0,SEEK_SET);for(i=0;i<len;i++) //删除后重写文件fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}void main(){int key;char file[]={"学生信息表.txt"};do{menu();printf("选择对应功能操作:");scanf("%d",&key);switch(key){case 1:luru(file);break;case 2:print(file);break;case 3:idsearch(file);break;case 4:namesearch(file);break;case 5:paixu(file);break;case 6:shanchu(file);break;case 0:exit(0);default:printf("选择错误,请重新选择!");}printf("\n");printf("按任意键返回上级菜单!");getch();fflush(stdin);system("cls");}while (key!=0);}五.实验过程及结果:1.程序主菜单运行界面2.学生信息录入运行界面3.学生信息浏览运行界面4.学生学号查询运行界面5.学生姓名查询运行界面6.按学号排序运行界面第一次出现乱码,改正后运行如第二张图片所示7.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。

c语言程序设计学生信息系统

c语言程序设计学生信息系统

c语言程序设计学生信息系统C语言是一门广泛应用于计算机科学领域的编程语言,它是一种结构化的、面向过程的语言,被广泛用于开发各种软件应用和系统。

学生信息系统作为一个常见的应用场景,可以利用C语言进行开发,帮助学校、学生和教师管理学生的相关信息。

本文将介绍如何使用C语言来设计一个学生信息系统,并展示其基本功能和实现方法。

一、需求分析在开始设计学生信息系统之前,首先需要进行需求分析。

我们需要确定系统需要实现的基本功能和使用场景,从而为后续的系统设计提供指导。

学生信息系统的基本功能包括学生信息的录入、修改、删除和查询。

具体而言,系统需要能够记录学生的基本信息,如姓名、年龄、性别、学号等;还需要能够记录学生的课程成绩和考勤情况,并对其进行统计和分析。

此外,系统还应该支持学生信息的导入和导出功能,以便于数据的备份和共享。

二、系统设计在系统设计阶段,我们需要根据需求分析的结果来确定系统的整体架构和数据结构。

1. 整体架构学生信息系统可以采用分层架构进行设计,将功能模块划分为不同的层次,相互独立且互相依赖。

常见的分层架构包括用户界面层、业务逻辑层和数据访问层。

用户界面层负责与用户进行交互,提供友好的界面和交互方式;业务逻辑层负责处理用户的请求,并进行相应的业务处理;数据访问层负责与数据库进行交互,提供数据的读写和查询功能。

2. 数据结构学生信息系统可以使用结构体来表示学生的基本信息,使用数组来存储多个学生的信息。

同时,可以使用链表来组织学生的课程成绩和考勤情况,方便对其进行统计和分析。

结构体可以包含学生的姓名、年龄、性别、学号等字段,如下所示:```typedef struct {char name[20];int age;char gender[10];int studentId;} Student;```链表可以使用指针来实现,每个节点包含学生的课程成绩和考勤情况,如下所示:```typedef struct Node {double score;int attendance;struct Node* next;} Node;```三、系统实现在系统设计完成后,我们可以开始使用C语言来实现学生信息系统。

c语言学生管理系统设计

c语言学生管理系统设计

C语言学生管理系统设计引言学生管理系统在教育领域起着非常重要的作用。

它能够帮助学校、教师和学生有效地管理学生信息,提供便捷的查询、统计和分析功能。

本文将介绍一个基于C语言的学生管理系统设计,主要包括需求分析、系统设计和实现。

需求分析功能需求学生管理系统的主要功能需求包括:1.添加学生信息:包括姓名、性别、年龄、学号、班级等基本信息。

2.修改学生信息:根据学生学号,可以修改学生的基本信息。

3.删除学生信息:根据学生学号,可以删除学生的信息。

4.查询学生信息:根据学生学号或姓名,可以查询学生的基本信息。

5.统计学生信息:统计学生总人数、男女比例等统计信息。

6.显示学生信息:以表格形式展示学生的基本信息。

性能需求为了确保学生管理系统的性能满足需求,需要考虑以下方面:1.数据库设计:合理设计数据库结构,在存储和查询数据方面具有高效性。

2.数据操作:要求对学生信息的增、删、改、查操作具有快速响应能力。

3.用户界面:用户交互要友好,并具备良好的用户体验。

系统设计数据库设计学生管理系统的数据库设计是系统设计的重要一环。

为了存储学生信息,我们可以设计一个包含以下字段的学生表:•学号(ID):唯一标识学生信息的字段。

•姓名(Name):学生的姓名。

•性别(Gender):学生的性别。

•年龄(Age):学生的年龄。

•班级(Class):学生所属的班级。

功能模块设计学生管理系统可以划分为以下几个功能模块:1.添加模块:提供一个界面,录入学生的基本信息,并将信息存入数据库。

2.修改模块:提供一个界面,根据学号查询学生信息,并可以修改学生的基本信息。

3.删除模块:提供一个界面,根据学号查询学生信息,并可以删除学生的信息。

4.查询模块:提供一个界面,根据学号或姓名查询学生的基本信息,并显示查询结果。

5.统计模块:对学生信息进行统计,计算学生总人数、男女比例等统计指标。

6.显示模块:以表格形式展示学生的基本信息。

界面设计为了提供友好的用户界面和良好的用户体验,可以使用C语言的图形库进行界面设计。

C语言设计学生信息数据库

C语言设计学生信息数据库

第一届C语言大赛设计报告题目: C题学生信息数据库 .院系名称:电气工程学院 .专业班级: .学生姓名: .学号:报告框架如下:摘要-----四号字------关键词:四号字目录第一章综述………………………………………………………………1.1 课题的现实意义……………………………………………………1.2 软件环境……………………………………………………………第二章系统设计流程图…………………………………………………2.1 系统流程图…………………………………………………………2.2 主要功能表………………………………………………………第三章系统分析和设计…………………………………………………3.1 图形的绘制和输出 (7)3.2 文本的输出显示 (9)3.3 计算函数的调用 (10)3.4 程序的运行和退出 (11)第四章系统测试 (12)4.1 系统测试 (12)4.2 调试 (13)4.3 错误原因分析一 (14)第五章使用说明 (15)5.1 运行Turbo C程序进入计算器界面 (15)5.2 计算器的使用………………………………………………………5.3 退出程序……………………………………………………………第六章设计总结…………………………………………………………参考文献……………………………………………………………………附录:源程序………………………………………………………………在本题中用到的图形不多,在制作运行界面时没有选择添加图形,而是采用了输入字符串代替图形。

3.2文本的输出显示在制作程序时也遇到了怎样在tc上显示汉字的问题,刚开始我想通过windows自带的记事本进行编译来解决,结果并不尽如人意,最后选择用英文来代替中文。

3.3计算函数的调用没有调用,无加密设计3.4程序的运行和退出4.1系统检测4.2调试4.3错误原因分析关于tc输入汉字的问题,我们打算用windows自带的记事本输入程序源代码,再通过tc编译,结果出现乱码,所以决定用英文代替中文。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一届C语言大赛设计报告题目: C题学生信息数据库 .院系名称:电气工程学院 .专业班级: .学生姓名: .学号:报告框架如下:摘要-----四号字------关键词:四号字目录第一章综述………………………………………………………………1.1 课题的现实意义……………………………………………………1.2 软件环境……………………………………………………………第二章系统设计流程图…………………………………………………2.1 系统流程图…………………………………………………………2.2 主要功能表………………………………………………………第三章系统分析和设计…………………………………………………3.1 图形的绘制和输出 (7)3.2 文本的输出显示 (9)3.3 计算函数的调用 (10)3.4 程序的运行和退出 (11)第四章系统测试 (12)4.1 系统测试 (12)4.2 调试 (13)4.3 错误原因分析一 (14)第五章使用说明 (15)5.1 运行Turbo C程序进入计算器界面 (15)5.2 计算器的使用………………………………………………………5.3 退出程序……………………………………………………………第六章设计总结…………………………………………………………参考文献……………………………………………………………………附录:源程序………………………………………………………………在本题中用到的图形不多,在制作运行界面时没有选择添加图形,而是采用了输入字符串代替图形。

3.2文本的输出显示在制作程序时也遇到了怎样在tc上显示汉字的问题,刚开始我想通过windows自带的记事本进行编译来解决,结果并不尽如人意,最后选择用英文来代替中文。

3.3计算函数的调用没有调用,无加密设计3.4程序的运行和退出4.1系统检测4.2调试4.3错误原因分析关于tc输入汉字的问题,我们打算用windows自带的记事本输入程序源代码,再通过tc编译,结果出现乱码,所以决定用英文代替中文。

5.设计总结通过本次的比赛,使我能够对c语言有了更进一步的了解,特别是在调试的时候,老是出现问题,细节注意不够导致的,这是在以后需要加强的,这可以让我们进入社会之后有更大的选择空间以及竞争力。

附录:源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include <windows.h>#include <winbase.h>typedef struct node{ /* 定义链表 */char name[20]; /* 姓名 */char address[40]; /* 籍贯 */char phone[15]; /* 电话 */long zip; /* 性别 */struct node *next;}add_list;struct person{ /* 定义一个结构备用 */char name[20];char address[50];char phone[15];long zip;};FILE *fp;add_list *tail,*head; /* 定义链表尾节点指针和头指针 *//* 从文件中读出数据生成通讯录链表,如果文件不存在,生成空链表*/add_list *load(char filename[]){ add_list *new1,*head;struct person t;head=(add_list *)malloc(sizeof(add_list));tail=head=NULL;if((fp=fopen(filename,"rb"))==NULL)return head;elseif(!feof(fp))if(fread(&t,sizeof(struct person),1,fp)==1){ new1=(add_list *)malloc(sizeof(add_list)); /* 连入链表第一个节点 */strcpy(new1->name,);strcpy(new1->address,t.address);strcpy(new1->phone,t.phone);new1->zip=t.zip;head=tail=new1;new1->next=NULL;while(!feof(fp)) /* 连入链表其余节点 */{ if(fread(&t,sizeof(struct person),1,fp)==1) { new1=(add_list *)malloc(sizeof(add_list)); strcpy(new1->name,);strcpy(new1->address,t.address);strcpy(new1->phone,t.phone);new1->zip=t.zip;tail->next=new1;new1->next=NULL;tail=new1;}}}fclose(fp);return head;}/* 自定义函数,进度条 */void jindutiao(void){ int i;for(i=0;i<78;i++) putchar('.');printf("\r\a");for(i=0;i<78;i++){if(i==0) putchar('|');Sleep(100);printf("\b|>");}}/* 插入一条通讯录记录 */void insert(add_list **head){ add_list * new1;new1=(add_list *)malloc(sizeof(add_list));system("cls");printf("\n请输入姓名:"); getchar();gets(new1->name); printf("\n请输入籍贯:"); scanf("%s",new1->address); printf("\n请输入电话:"); scanf("%s",new1->phone); printf("\n请输入性别:"); scanf("%ld",&new1->zip);if(*head==NULL) /* 表头为空时 */{ *head=new1;new1->next=NULL;tail=new1;}else /* 插入到表尾 */{ tail->next=new1;new1->next=NULL;tail=new1;}printf("输入完成,按回车键返回......"); getchar();getchar();}/* 将通讯录链表中的内容保存到指定文件中 */ void save(add_list *head,char filename[]) { add_list *p;struct person t;if((fp=fopen(filename,"wb"))==NULL){ printf("错误:不能打开文件%s\n",filename); exit(1);}else{ p=head;while(p!=NULL){ strcpy(,p->name);strcpy(t.address,p->address);strcpy(t.phone,p->phone);t.zip=p->zip;fwrite(&t,sizeof(struct person),1,fp);p=p->next;}}fclose(fp);printf("保存成功,按回车键返回......");getchar();getchar();}/* 显示通讯录内容 */void display(add_list *head){ add_list *p;p=head;if(p!=NULL)printf("姓名:\t\t籍贯:\t\t电话:\t\t性别:\n");while(p!=NULL){printf("%s\t\t%s\t\t%ld\t\t%s\n",p->name,p->address,p->zip,p->phone);p=p->next;}printf("按回车键返回......");getchar();getchar();}/* 按姓名查询通讯录记录 */int search(add_list *head){ add_list *p;char name[20];int flag=0;printf("请输入要查找的人的姓名:");getchar();gets(name);p=head;while(p!=NULL){ if(strcmp(name,p->name)==0){ printf("姓名:\t\t籍贯:\t\t电话:\t\t性别:\n");printf("%s\t\t%s\t\t%ld\t\t%s\n",p->name,p->address,p->zip,p->phone);flag=1;}p=p->next;}return flag;}/* 按姓名删除一条通讯录记录 */int delete1(add_list **head){ add_list *p,*q,*t;char name[20],c;int flag=0;printf("请输入要删除人的姓名:");scanf("%s",name);q=p=*head;while(p!=NULL){ if(strcmp(name,p->name)==0) /* 找到要删除的人 */{ printf("姓名:\t\t籍贯:\t\t电话:\t\t性别:\n");printf("%s\t\t%s\t\t%ld\t\t%s\n",p->name,p->address,p->zip,p->phone);printf("真的要删除吗?(Y:是,N:否)\n"); /* 征求意见(删&不删) */getchar();c=getchar();if(c=='y'||c=='Y') /* 删除 */{ if(p==*head)*head=p->next;elseq->next=p->next;t=p;p=p->next;free(t);flag=1;}else /* 不删,跳过 */{ q=p;p=p->next;flag=1;}}else /* 没找到,继续 */{ q=p;p=p->next;}}return flag;printf("按回车键返回......");getchar();}/* 显示菜单并选择菜单项 */int menu_select(){ char c;system("cls");printf("\t\t********************通讯录********************\n");printf("\t\t\t 1:输入新的通讯记录\n"); printf("\t\t\t\t 2:删除记录\n");printf("\t\t\t\t 3:查找\n");printf("\t\t\t\t 4:保存文件\n");printf("\t\t\t 5:浏览所有通讯记录\n");printf("\t\t\t\t 6:退出\n");do{printf("请输入你的选择(1~~6):"); c=getchar();}while(c<'1'||c>'6');return c;}/* 主函数 */int main(void){ char filename[20];char c;int t;printf("\n\n\n\n\n\n\t\t\t\t通讯录启动中...\n\n\n\n\n\n\n\n\n\n\n\n\n"); jindutiao();system("cls");printf("请输入通讯录文件名称:\n"); scanf("%s",filename);getchar();head=load(filename);while(1){ c=menu_select();switch(c){ case '1': insert(&head); break;case '2': t=delete1(&head);if(!t) printf("记错了吧,没这人!\n按回车键返回......"); getchar();getchar(); break;case '3': t=search(head);if(!t) printf("天啊!居然没找到!\n按回车键返回......");getchar(); break;case '4': save(head,filename); break;case '5': display(head); break;case '6': exit(0);}}}。

相关文档
最新文档