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语言+数据库学生管理系统课程设计1. 引言学生管理系统作为一个学校的重要组成部分,通常用于管理学生的基本信息、课程安排以及成绩管理等功能。
本文将介绍一个基于C语言和数据库的学生管理系统的课程设计方案。
2. 功能需求学生管理系统应具备以下基本功能:•学生信息管理:包括学生基本信息的录入、修改和删除等操作;•课程管理:包括课程信息的录入、修改和删除等操作;•成绩管理:包括成绩录入、查询和统计等操作;•选课管理:学生选课和退课的管理;•查询与统计:包括学生信息、课程信息、成绩信息的查询与统计功能;•用户权限管理:包括管理员和普通用户权限的划分。
3. 系统设计3.1 数据库设计学生管理系统需要设计适当的数据库来存储学生、课程和成绩信息。
常见的关系型数据库如MySQL和SQLite都可以作为学生管理系统的数据库选择。
数据库设计需要考虑以下几个表:学生信息表、课程信息表、选课信息表和成绩信息表。
每个表需要定义合适的字段,并设置主键和外键关联。
3.2 程序设计学生管理系统的程序设计使用C语言完成,可以使用C语言的文件操作、结构体和函数等特性来实现各功能。
系统的设计可以分为多个模块,包括学生管理模块、课程管理模块、成绩管理模块、选课管理模块、查询与统计模块和用户权限管理模块。
每个模块负责相应的功能实现,模块之间可以相互调用。
3.3 用户界面设计学生管理系统的用户界面应该友好、简洁且易于使用。
可以使用命令行界面实现,通过菜单和命令来完成各项操作。
用户界面设计应该考虑到不同类型用户的需求,管理员和普通用户的界面应有所区别,并设置相应的权限控制。
4. 实施步骤4.1 数据库创建在数据库设计完成后,需要创建数据库和相应的表结构。
根据数据库选择和学校要求,可以使用相应的命令或工具来创建数据库和表。
4.2 程序实现根据系统设计,实现各个功能模块。
需要编写对应的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语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。
在主函数里能实现以下功能。
运行后出现一个选择提示。
可选择的功能有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语言如何设计一个学生信息管理系统。
一、需求分析学生信息管理系统是以管理学生信息为主要功能的软件系统。
在设计之前,我们需要了解用户的需求。
通过对用户需求的分析,我们得出以下功能模块: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语言编写的一个学生信息管理系统

路漫漫其修远兮,吾将.上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语言开发的数据管理程序,可实现对学生信息的增删改查等功能。
具体功能列表如下: a. 添加学生信息:可根据学生的基本信息,如学生学号、姓名、性别、地址、联系电话等,依次记录入系统; b. 删除学生信息:可根据学生学号、姓名等信息,从系统中删除不必要的学生信息; c. 修改学生信息:可根据已有的学生信息,修改学生某些属性内容,以更新系统中的数据; d. 查看学生信息:可根据学生学号、姓名等信息,查看指定学生的所有信息及多种查询功能; e. 数据保存功能:可将当前系统中的学生信息,保存成文件的形式; f. 备份/恢复功能:可对学生信息文件进行备份并对备份文件进行恢复; g. 查询统计功能:可根据学院代号、专业代号等信息,进行不同的查询统计; h. 排序功能:可根据学生学号、姓名等信息,对学生信息进行排序; i. 帮助功能:可提供详细的使用帮助文档,以帮助用户更好地使用系统;二、程序实现及结构1. 主程序:此程序用于控制整个系统的运行,可实现系统菜单显示、功能调用及功能切换等功能,可根据用户的操作需求,调用其他子程序实现各项功能。
2. 子程序:此程序是系统的主要部分,可实现学生信息的增删改查等功能,并可支持学生信息的备份,恢复,排序及查询统计等功能,用于实现主程序调用的功能。
3. 管理模块:此模块可实现对用户的登录及注册功能,可检测用户登录及注册的账号是否正确,以及是否有权限使用系统;4. 数据库模块:此模块可实现对学生信息的存储及调用,便于对各类学生信息进行更方便的管理。
此模块还可以负责系统的备份及恢复功能的实现。
5. 图形界面模块:此模块负责实现系统的图形化界面,使用户可以更加友好地操作系统,可以根据用户的需求,随时更改系统界面设置。
三、程序设计学生信息管理系统的设计主要有四个部分:1. 主程序:主程序的设计要求负责控制整个系统的运行,并根据用户的操作调用子程序实现各个功能。
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);}}四、误差分析此程序没有按加权平均排序功能是本程序的一大弊端,还有就是所列科目少了点,由于本课题中的许多知识点都没有学过,需要查找课外资料,所以如有错误,希望老师多多指正,!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);}}}。