C语言设计-学生成绩管理系统

合集下载

C语言课程设计报告学生成绩管理系统(广工)

C语言课程设计报告学生成绩管理系统(广工)

一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。

对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。

三、概要设计程序要有的功能:1。

输入记录2。

用指定格式显示全部记录3。

根据姓名查找记录4。

根据姓名删除记录5. 保存记录到文件6。

按序号显示记录7。

按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。

对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。

再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。

在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。

最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。

与及格成绩作比较,输出及格人数等相关信息。

流程图:四、详细设计源程序:#include ”stdio。

h”#include "stdlib.h”#include "string。

h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。

学生成绩管理系统C++程序设计(共5篇)

学生成绩管理系统C++程序设计(共5篇)

学生成绩管理系统C++程序设计(共5篇)第一篇:学生成绩管理系统C++程序设计项目设计题目(学生成绩管理系统)学号:姓名:自评成绩:成绩:1.选题意义、依据学生成绩系统的设计从学生的应用中而来,学生了解该系统的组成和运行过程,它贴近学生的生活能使学生更加方便的使用各个语句、函数、结构体等。

依据学生期末成绩表的格式。

2.系统功能设计与分析(功能模块说明)系统主要用于从一个文件夹读入学生信息(101 张三78 87 102 李斯103 王红79 87 104 赵子龙 72 75 76李洪磊 88 98 89),包括学生学号、姓名、成绩(数学、英语、数据库),程序中引用了八个函数void Cscore(int);void Rank(int ave);void Listnumber(int i);void Listscore(int i);void Lookup(int);void Alter(int);void Dele(int &i);void Insert(int &i);系统主要实现的功能有:查询、修改、删除、插入、成绩单(以学号排名)和成绩单(以名次排名)。

Cscore 函数主要是对学生进行排名。

具有相同总分的学生具有相同的名次,例如:第三名和第四名具有相同的总分则在表中不会出现第四名,将出现两个第三名紧接着出现第五名学生的情况。

Rank 函数主要用于按平均分对学生进行备注。

把学生分为四个等级:>90分为excellent,80—90分为medium,60—80分为qualified,<60分为disqualified。

Listnumber 函数主要用于把学生的信息(学号姓名数学英语数据库总分平均分名次备注)以学号排名的顺序用表的形式输出,方便学生查看。

Listnumber 函数中还调用了Cscore 和Rank 函数。

Listscore 函数是把学生的信息以总成绩排名的形式输出。

学生管理系统c语言简单版

学生管理系统c语言简单版

学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。

本文将介绍如何使用C语言编写一个简单的学生管理系统。

功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。

我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。

C语言程序设计实习报告学生信息管理系统

C语言程序设计实习报告学生信息管理系统

C语言程序设计实习报告学生信息管理系统C 语言课程设计题目:学生信息管理系统设计者:梁天江专业:机械设计制造及其自动化班级学号: 072084-31所属院系:机电学院指导教师:吴湘宁7月17日1.题目和要求:1.1问题提出与要求:学生成绩管理系统[要求]设计一个学生成绩管理系统,对在校某班学生几门课程的考试成绩进行统一管理。

每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。

(1)一个文件按以班为单位存储学生记录。

(2)将允许的操作分为六种A:插入一个新的学生记录(录入学生信息)B:修改学生记录C:删除一个学生记录D:登记成绩E:修改成绩F:浏览全班成绩(3)计算学生的总成绩(4)输出全班成绩表1.2需求分析.根据题目要求,由于学生信息是存放在文件中,因此应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.2.功能实现设计:2.1总体设计:分析系统:根据题目的需求分析,可将这个系统设计为六大模块(见下图):插入学生信息,修改,删除,登记,浏览,统计。

2.2详细设计:1、主函数主函数设计得比较简洁,只提供输入、功能处理和输出部分的函数调用。

其中各功能模块用菜单方式选择;其流程图如下:[程序]void main(){int a;do{printf("\t\t\t\t\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t作者:梁天江班级:072084-31 学号: 1004528\n"); printf("\t\t\t-------------------------------------------\n\n");printf("\t 1.插入新的学生记录\n");printf("\t 2.修改学生记录\n");printf("\t 3.删除学生记录\n");printf("\t 4.显示学生成绩和总分\n");printf("\t 5.浏览全班成绩\n");printf("\t 6.退出\n\n");。

C语言学生成绩管理系统课程设计

C语言学生成绩管理系统课程设计

课程设计说明书设计名称: C语言课程设计题目:学生成绩管理系统学生姓名:专业:网络工程班级: 12级1班学号: 2012394108指导教师:日期:年月日课程设计任务书网络工程专业 12 年级 1 班孙璐一、设计题目学生成绩管理系统二、主要内容数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。

要求具有以下功能:(1)系统以菜单方式工作。

(2)显示、保存记录;添加、删除、修改任意个记录。

(3)排序功能:打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小),存盘并显示这两个文件的全部记录。

(4)查询功能:打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。

并能按学号或姓名查找并显示某个学生的各科成绩。

(5)统计功能:对各科成绩统计分析(平均分、最高分、最低分、及格率等);统计各科各分数段人数。

三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉Tuber C 或C++的上机环境。

能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。

4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。

如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。

5.学习并了解良好的程序设计风格。

按质、按量、并按时间完成课程设计的任务。

6.提供可运行的课程设计系统,参加上机面试答辩。

本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。

基于C语言的学生成绩管理系统源码

基于C语言的学生成绩管理系统源码

学生成绩管理系统本系统是在C语言下实现的学生成绩管理,是一个简单的课程设计,但是功能齐全,增减删除,指针排序等等,是基础学习的一个好实践材料.全部代码2000多行.共26页.主要实现功能如下:一、学生菜单1、查看个人成绩2、按学号排序查看班级成绩3、按学生总成绩排序查看成绩4、查看不及格学生的成绩5、给管理员留言6、更改登录密码二、管理员菜单1、按班级查询学生信息2、按姓名查询学生信息3、按学号查询学生信息4、插入学生信息删除学生信息5、更改学生信息6、添加班级信息7、查看学生留言8、更改登录密码#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <conio.h>#include <string.h>static int newcount=0;char obj[4][10]={"英语","数理","语言","微分"};struct student{long num;char classes[20];char name[20];char sex[2];long birthday;float score[4];float total;struct student *next;};struct student *create(int n) /*手动插入班级文件*/{struct student *head=NULL,*p1,*p2;int i,j;for(i=1;i<=n;i++){float total=0;p1=(struct student *)malloc(sizeof(struct student));printf("请输入第%d个学生的:\n",i);printf("学号:");scanf("%ld",&p1->num);printf("班级:");scanf("%s",p1->classes);printf("姓名:");scanf("%s",p1->name);printf("性别:");scanf("%s",p1->sex);printf("生日:");scanf("%ld",&p1->birthday);for(j=0;j<4;j++){printf("%s分数:",obj[j]);scanf("%f",&p1->score[j]);total=total+(p1->score[j]);}p1->total=total;p1->next=NULL;if(i==1)head=p1;elsep2->next=p1;p2=p1;}return(head);}void clrscr() //空行{int t;for(t=0;t<=40;t++)printf("\n");}void print(struct student *head) //显示文件{struct student *p=head;printf("学号\t 班级\t姓名\t性别\t生日\t英语语言数理微分总分\n\n");while(p!=NULL&&p->total!=0){printf("%-10ld%5s\t%-7s\t%s %-8ld %.1f %.1f %.1f %.1f %.1f\n\n",p->num,p-> classes,p->name,p->sex,p->birthday,p->score[0],p->score[1],p->score[2],p->score[3],p->total);p=p->next;}}struct student *save(struct student *head,char *inputclasses) //存入班级文件{FILE *fp;struct student *p;p=head;fp=fopen(inputclasses,"ab");while(p!=NULL){fwrite(p,sizeof(struct student),1,fp);p=p->next;}fclose(fp);}struct student *load(char *inputclasses) //读取班级文件{FILE *fp;int j=1;struct student *head,*p1,*p2;fp=fopen(inputclasses,"rb");p1=(struct student *)malloc(sizeof(struct student));while(!feof(fp)){fread(p1,sizeof(struct student),1,fp);p1->next=(struct student *)malloc(sizeof(struct student));if(j==1)head=p1;p2=p1;p1=p1->next;j++;}return(head);fclose(fp);}int mainmenu() //主目录{int m;printf("\t\t*********************************************\n");printf("\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t\t 主菜单\n");printf("\n");printf("\t\t*********************************************\n");printf("\n");printf("\t\t\t\t(1)、管理员模式!\n");printf("\n");printf("\t\t\t\t(2)、学生模式!\n");printf("\n");printf("\t\t\t\t(3)、退出!\n");printf("\n");printf("\t\t*********************************************\n");printf("\t\t\t请选择1、2、3,您的选择是:");scanf("%d",&m);printf("\n");return m;}int studentmenu() //学生菜单{int k;printf("\t\t*********************************************\n");printf("\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t\t 学生菜单\n");printf("\n");printf("\t\t\t\t(1)、查看个人成绩\n");printf("\n");printf("\t\t\t\t(2)、按学号排序查看班级成绩\n");printf("\n");printf("\t\t\t\t(3)、按学生总成绩排序查看成绩\n");printf("\n");printf("\t\t\t\t(4)、查看不及格学生的成绩\n");printf("\n");printf("\t\t\t\t(5)、给管理员留言\n");printf("\n");printf("\t\t\t\t(6)、更改登录密码\n");printf("\n");printf("\t\t\t\t(7)、退回到主菜单\n");printf("\n");printf("\t\t\t\t(8)、退出\n");printf("\n");printf("\t\t*********************************************\n");printf("\t\t你的选择是:");scanf("%d",&k);return k;}int adminmenu() //管理员菜单{int k;printf("\t*****************************************************************\n");printf("\n\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t\t 管理员菜单\n");printf("\n\n");printf("\t(1)、按班级查询学生信息\t\t(2)、按姓名查询学生信息");printf("\n\n");printf("\t(3)、按学号查询学生信息\t\t(4)、插入学生信息");printf("\n\n");printf("\t(5)、删除学生信息\t\t(6)、更改学生信息");printf("\n\n");printf("\t(7)、添加班级信息\t\t(8)、查看学生留言");printf("\n\n");printf("\t(9)、更改登录密码\t\t(10)、退回到主菜单");printf("\n\n");printf("\t(11)、退出");printf("\n\n");printf("\t******************************************************************\n");printf("\t\t\t\t你的选择是:");scanf("%d",&k);return k;}int checkcode(int n,char *inputname,char *inputcode) //密码验证{FILE *fp;int i;char code[20],code2[20],name[20];if(n==1){fp=fopen("admincode.txt","r");if(fp==NULL){printf("\n\t\t*********************************************");printf("\n");printf("\t\t\t密码还没有设置,请设置密码!\n\n");codesign: printf("\n请设置登录名:");scanf("%s",name);printf("\n\t\t*********************************************");printf("\n\t\t\t请设置登录密码:");scanf("%s",code);printf("\n\t\t*********************************************");printf("\n\t\t\t请再次输入密码:");scanf("%s",code2);fp=fopen("admincode.txt","w");if(strcmp(code,code2)==0){fprintf(fp,"%s\n",name);fprintf(fp,"%s",code);}else{printf("\t\t\t两次密码不一致,请再输入一次!\n\n");goto codesign;}fclose(fp);return 1;}else{fscanf(fp,"%s\n",name);fscanf(fp,"%s",code);if(strcmp(name,inputname)==0&&strcmp(code,inputcode)==0)return 1;else return 0;fclose(fp);}}if(n==2){fp=fopen("stucode.txt","rw");if(fp==NULL){printf("\n\t\t*********************************************");printf("\n");printf("\t\t\t密码还没有设置,请设置密码!\n\n");codesign2: printf("\n请设置登录名:");scanf("%s",name);printf("\n\t\t*********************************************");printf("\n\t\t\t请设置登录密码:");scanf("%s",code);printf("\n\t\t*********************************************");printf("\n\t\t\t请再次输入密码:");scanf("%s",code2);fp=fopen("stucode.txt","w");if(strcmp(code,code2)==0){fprintf(fp,"%s\n",name);fprintf(fp,"%s",code);}else{printf("\t\t\t两次密码不一致,请再输入一次!\n\n");goto codesign2;}fclose(fp);return 1;}else{fscanf(fp,"%s",name);fscanf(fp,"%s",code);if(strcmp(name,inputname)==0&&strcmp(code,inputcode)==0)return 1;else return 0;fclose(fp);}}}void classescheck() //查看班级情况{struct student *head;char inclasses[20],*inputclasses;printf("\t*****************************************************************\n");printf("\n\t\t\t请输入你要查询的班级:");scanf("%s",inclasses);printf("\t*****************************************************************\n");if(checkclasses(inclasses)){inputclasses=strcat(inclasses,".txt");head=load(inputclasses);print(head);}else printf("\n\t\t\t你输入的班级不存在,任意键继续!");}void printp(struct student *p) //显示符合条件的个人信息{printf("\t\t**************************************************************\n");printf("学号\t 班级\t姓名\t性别\t生日\t英语语言数理微分总分\n\n");printf("%-12ld%5s\t%-7s\t%s %-8ld %.1f %.1f %.1f %.1f %.1f\n",p->num,p->classes, p->name,p->sex,p->birthday,p->score[0],p->score[1],p->score[2],p->score[3],p->total);}int checkclasses(char *inputclasses) //检查班级的存在{FILE *fp;int i=0,j;int sign=0;char classes[100][20];fp=fopen("classes.txt","r");while(!feof(fp)){fscanf(fp,"%s",classes[i]);i++;}for(j=0;j<i;j++)if(strcmp(classes[j],inputclasses)==0)sign=1;return sign;}void namecheck() //按姓名查看{char inputname[20],*name,inputclasses[20];struct student *head,*p1,*p2;printf("\t\t*********************************************\n");printf("\t\t\t 请输入该同学的班级:");scanf("%s",inputclasses);if(checkclasses(inputclasses)){name=strcat(inputclasses,".txt");head=load(name);printf("\n\t\t\t 请输入学生姓名:");scanf("%s",inputname);p1=head;while(strcmp(p1->name,inputname)!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,inputname)==0)printp(p1);else{printf("\t\t**************************************************\n");printf("\t\t\t不存在这个同学!");}}else{printf("\t\t*********************************************\n");printf("\t\t\t请确认所在班级!\n");}}void numcheck() //按学号查看{char *name,inputclasses[20];long inputnum;struct student *head,*p1,*p2;printf("\t\t*********************************************\n");printf("\t\t\t 请输入该同学的班级:");scanf("%s",inputclasses);if(checkclasses(inputclasses)){name=strcat(inputclasses,".txt");head=load(name);printf("\n\t\t\t 请输入学生姓名:");scanf("%ld",&inputnum);p1=head;while(p1->num!=inputnum&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->num==inputnum){printp(p1);}else{printf("\t\t**************************************************\n");printf("\t\t\t不存在这个学号!");}}else{printf("\t\t*********************************************\n");printf("\t\t\t请确认所在班级!\n");}}void addclasses() //添加班级{struct student *head;FILE *fp1,*fp2;int n;char addclasses[20],*addclasses2;printf("\n************************************************************\n");printf("\t\t\t请输入你要加入的班级:");scanf("%s",addclasses);if(checkclasses(addclasses)){printf("\n************************************************************\n");printf("你输入的班级已经存在!");printf("\n************************************************************\n");}else{printf("\n\t\t************************************************************\n");printf("请输入班级人数:");scanf("%d",&n);fp1=fopen("classes.txt","a");fprintf(fp1,"%s\n",addclasses);fclose(fp1);head=create(n);addclasses2=strcat(addclasses,".txt");save(head,addclasses);printf("\n\t\t************************************************************\n");printf("以下是你加入的信息:\n");head=load(addclasses);print(head);printf("\n\t\t************************************************************\n"); }}int classesnum(struct student *head,long n) //检查学号是否存在{struct student *p1,*p2;int sign=0;p1=head;while(p1->next!=NULL&&p1->num!=n){p2=p1;p1=p1->next;}if(p1->num==n)sign=1;return sign;}void modifynews() //更改学生信息{struct student *head,*p1,*p2,*p;char inputclasses[20];char modifyclasses[20],modifyname[20];char *classes;long inputnum;int j;float total=0;p=(struct student *)malloc(sizeof(struct student));clrscr();printf("\t*****************************************************************\n");printf("\t\t\t请输入你要修改的学生的班级:");scanf("%s",inputclasses);if(checkclasses(inputclasses)){classes=strcat(inputclasses,".txt");head=load(classes);printf("\n\n\t\t\t请输入要修改学生的学号:");scanf("%ld",&inputnum);if(classesnum(head,inputnum)==0){printf("\t\t\t该学生并不存在不能修改!");}else{clrscr();printf("\t************************************************************");p1=head;while(p1->num!=inputnum){p2=p1;p1=p1->next;}printp(p1);printf("\n\n\n\t\t\t请修改学号为%ld的学生的信息:\n",inputnum);p->num=inputnum;printf("\n\t\t\t班级:");scanf("%s",p->classes);printf("\n\t\t\t姓名:");scanf("%s",p->name);printf("\n\t\t\t性别:");scanf("%s",p->sex);printf("\n\t\t\t生日:");scanf("%ld",&p->birthday);for(j=0;j<4;j++){printf("\n\t\t\t%s分数:",obj[j]);scanf("%f",&p->score[j]);total=total+(p->score[j]);}p->total=total;if(p1==head){p->next=head->next;head=p;}else if(p1->next==NULL){p2->next=p;p->next=NULL;}else{p2->next=p;p->next=p1->next;}save(head,classes);print(head);}}}void insert() //插入学生信息{struct student *head,*p1,*p2,*p;char inputclasses[20];char insertclasses[20],insertname[20];char *classes;long inputnum;int j;float total=0;p=(struct student *)malloc(sizeof(struct student));clrscr();printf("\t*****************************************************************\n");printf("\t\t\t请输入你要插入的学生的班级:");scanf("%s",inputclasses);if(checkclasses(inputclasses)){classes=strcat(inputclasses,".txt");head=load(classes);printf("\n\n\t\t\t请输入要插入学生的学号:");scanf("%ld",&inputnum);if(classesnum(head,inputnum)==1){printf("\t\t\t该学生已经存在!");}else{printf("\t********************************************************\n\n");p1=head;while(p1->num<inputnum&&p1->next!=NULL&&p1->total!=0){p2=p1;p1=p1->next;}printp(p1);printf("\n\n\n\t\t\t请插入学号为%ld的学生的信息:\n",inputnum);p->num=inputnum;printf("\n\t\t\t班级:");scanf("%s",p->classes);printf("\n\t\t\t姓名:");scanf("%s",p->name);printf("\n\t\t\t性别:");scanf("%s",p->sex);printf("\n\t\t\t生日:");scanf("%ld",&p->birthday);for(j=0;j<4;j++){printf("\n\t\t\t%s分数:",obj[j]);scanf("%f",&p->score[j]);total=total+(p->score[j]);}p->total=total;if(inputnum<head->num){p->next=head->next;head=p;}else if(p1->next==NULL){p1->next=p;p->next=NULL;}else{p2->next=p;p->next=p1;}save(head,classes);print(head);}}}int classesname(struct student *head,char *inputname) //检查学生姓名是否存在{struct student *p1,*p2;int sign=0;p1=head;while(p1->next!=NULL&&strcmp(p1->name,inputname)!=0){p2=p1;p1=p1->next;}if(strcmp(p1->name,inputname)==0)sign=1;return sign;}void delet() //删除信息{struct student *head,*p1,*p2;char inputclasses[20],*classes;long inputnum;char inputname[20];printf("\n\t\t*********************************************************\n");printf("\t\t\t请输入要删除的学生的班级:");scanf("%s",inputclasses);if(checkclasses(inputclasses)){printf("\n\n\t\t\t请输入要删除学生的学号:");scanf("%ld",&inputnum);printf("\n\n\t\t\t请输入要删除学生的姓名:");scanf("%s",inputname);classes=strcat(inputclasses,".txt");head=load(classes);if(classesnum(head,inputnum)&&classesname(head,inputname)){p1=head;while(p1->num!=inputnum&&strcmp(p1->name,inputname)!=0){p2=p1;p1=p1->next;}if(p1->num==inputnum&&strcmp(p1->name,inputname)==0){p2->next=p1->next;save(head,classes);print(head);}}else{printf("\n\n\t\t****************************************************");printf("\n\n\t\t\t你输入的学生不存在");}}else{printf("\n\n\t\t****************************************************");printf("你输入的班级不存在");}}void newsckeck() //查看留言{FILE *fp1,*fp2;int i=1,j=0,t=1;char news[10][200],name[50][20],num1[2],*num2;fp1=fopen("留言.txt","rw");while(!feof(fp1)){fscanf(fp1,"%s",name[t]);t++;}for(i=1;i<t-1;i++){fscanf(fp1,"%s",name[i]);printf("\n\n\t\t\t第%d为学生:",i);puts(name[i]);}fclose(fp1);i--;while(i>0){printf("\n\n\t\t\t请输入编号查看留言:");scanf("%s",num1);printf("\n\n\t\t\t编号为%s的留言内容是:\n");num2=strcat(num1,".txt");fp2=fopen(num2,"r");while(fgets(news[j],200,fp2)!=NULL){puts(news[j]);}i--;}printf("\n\n\t\t************************************");printf("\n\n\t\t\t你暂时没有留言!!!!!\n\n");fp1=fopen("留言.txt","w");fclose(fp1);}void sentnews() //给管理员留言{FILE *fp1,*fp2;static int j=0;char inputnews[200],inputname[20];char name[3],*name2;printf("\n\n\t\t***********************************************");printf("\n\n\t\t\t输入你的姓名:");scanf("%s",inputname);fp1=fopen("留言.txt","a");fprintf(fp1,"%s\n",inputname);newcount=newcount+1;j++;fclose(fp1);itoa(j,name,10);name2=strcat(name,".txt");printf("\n\n\t\t\t请输入你的留言:\n\n\n");scanf("%s",inputnews);fp2=fopen(name2,"w");fputs(inputnews,fp2);fclose(fp2);printf("\n\n\n\t\t************************************************");printf("\n\n\t\t\t\t留言成功!!!!!!!!");}void admodifycode() //管理员修改密码{char inputname[20],code[20],mdname[20],mdcode[20],mdcode2[20];FILE *fp;printf("\n\n\t\t\t请输入你用户名:");scanf("%s",inputname);printf("\n\n\t\t\t请输入你的密码:");scanf("%s",code);if(checkcode(1,inputname,code)){fp=fopen("admincode.txt","w");printf("\n\t\t*********************************************");codesign3: printf("\n\t\t\t请设置登录名:");scanf("%s",mdname);printf("\n\t\t*********************************************");printf("\n\t\t\t请设置登录密码:");scanf("%s",mdcode);printf("\n\t\t*********************************************");printf("\n\t\t\t请再次输入密码:");scanf("%s",mdcode2);fp=fopen("admincode.txt","w");if(strcmp(mdcode,mdcode2)==0){fprintf(fp,"%s\n",mdname);fprintf(fp,"%s",mdcode);}else{printf("\t\t\t两次密码不一致,请再输入一次!\n\n");goto codesign3;}fclose(fp);}else{printf("\n\t\t*****************************************************");printf("\n\n\t\t\t密码错误!!!!!!!!!!!");}}void stumodifycode(){char inputname[20],code[20],mdname[20],mdcode[20],mdcode2[20];FILE *fp;printf("\n\n\t\t\t请输入你用户名:");scanf("%s",inputname);printf("\n\n\t\t\t请输入你的密码:");scanf("%s",code);if(checkcode(2,inputname,code)){fp=fopen("stucode.txt","w");printf("\n\t\t*********************************************");codesign4: printf("\n\t\t\t请设置登录名:");scanf("%s",mdname);printf("\n\t\t*********************************************");printf("\n\t\t\t请设置登录密码:");scanf("%s",mdcode);printf("\n\t\t*********************************************");printf("\n\t\t\t请再次输入密码:");scanf("%s",mdcode2);fp=fopen("stucode.txt","w");if(strcmp(mdcode,mdcode2)==0){fprintf(fp,"%s\n",mdname);fprintf(fp,"%s",mdcode);}else{printf("\t\t\t两次密码不一致,请再输入一次!\n\n");goto codesign4;}fclose(fp);}else{printf("\n\t\t*****************************************************");printf("\n\n\t\t\t密码错误!!!!!!!!!!!");}}void sstudent(){struct student *head,*p1,*p2;char inputclasses[20],*inputclasses2,inputname[20];long inputnum;printf("\n\n\t\t***************************************************");printf("\n\n\t\t\t请输入你的班级:");scanf("%s",inputclasses);if(checkclasses(inputclasses)){inputclasses2=strcat(inputclasses,".txt");head=load(inputclasses2);p1=head;printf("\n\n\t\t\t请输入你的学号:");scanf("%ld",&inputnum);printf("\n\n\t\t\t请输入你的姓名:");scanf("%s",inputname);if(classesnum(head,inputnum)&&classesname(head,inputname)){while(p1->num!=inputnum&&strcmp(p1->name,inputname)!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->num==inputnum&&strcmp(p1->name,inputname)==0)printp(p1);}else{printf("\n\n\t\t**************************************************");printf("\n\n\t\t你输入学生不存在!!!!!!!!!!!!");}}else{printf("\n\n\t\t**************************************************");printf("\n\n\t\t你输入的班级不存在!!!!!!!!!!!!");}}void badstudent(){struct student *head,*p1,*p2,*p3,*p4,*p5;char inputclasses[20],*inputclasses2;printf("\n\n\t\t***************************************************");printf("\n\n\t\t\t请输入你的班级:");scanf("%s",inputclasses);printf("\n\n\t\t***************************************************\n");if(checkclasses(inputclasses)){inputclasses2=strcat(inputclasses,".txt");head=load(inputclasses2);p1=head;p3=head;p4=head;p5=head;print(head);printf("\n\n\t\t***************************************************");printf("\n\n\t\t\t英语不及格的同学情况:");printf("\n\n\t\t\t姓名\t分数");while(p1->next!=NULL&&p1->total!=0){p2=p1;p1=p1->next;if(p1->score[0]<60)printf("\n\n\t\t\t%s\t%.1f",p1->name,p1->score[0]);}printf("\n\n\t\t***************************************************");printf("\n\n\t\t\t数理不及格的同学情况:");printf("\n\n\t\t\t姓名\t分数");while(p3->next!=NULL&&p3->total!=0){p2=p3;p3=p3->next;if(p3->score[1]<60)printf("\n\n\t\t\t%s\t%.1f",p3->name,p3->score[1]);}printf("\n\n\t\t***************************************************");printf("\n\n\t\t\t语言不及格的同学情况:");printf("\n\n\t\t\t姓名\t分数");while(p4->next!=NULL&&p4->total!=0){p2=p4;p4=p4->next;if(p4->score[2]<60)printf("\n\n\t\t\t%s\t%.1f",p4->name,p4->score[2]);}printf("\n\n\t\t***************************************************");printf("\n\n\t\t\t微分不及格的同学情况:");printf("\n\n\t\t\t姓名\t分数");while(p5->next!=NULL&&p5->total!=0){p2=p5;p5=p5->next;if(p5->score[3]<60)printf("\n\n\t\t\t%s\t%.1f",p5->name,p5->score[3]);}}}void sortstudent(){FILE *fp;struct student *head,*p1,*p2,*p3,stu[100];int i=0,j,k,t;char inputclasses[20],*inputclasses2;printf("\n\n\t\t***************************************************");printf("\n\n\t\t\t请输入你的班级:");scanf("%s",inputclasses);printf("\n\n\t\t***************************************************\n");if(checkclasses(inputclasses)){inputclasses2=strcat(inputclasses,".txt");head=load(inputclasses2);p1=head;print(head);while(p1->next!=NULL&&p1->total!=0){p2=p1;p1=p1->next;i++;}p1=head;p2=head;for(j=0;j<i;j++){for(k=0;k<i-1;k++){t=k;while(t>0){p3=p2;p2=p2->next;t--;}t=k+1;while(t>0){p1=p2->next;t--;}if(p2->total<p1->total){if(p1==head){head=p1;p2->next=head->next;head->next=p2;}else{p3->next=p1;p2->next=p1->next;p1->next=p2;}}p2=head;p1=head;}p2=head;p1=head;}}print(head);int admcode(){FILE *fp;char inputname[20], inputcode[20],c;int flag=0,j;char code[20],code2[20],name[20];printf("\t\t*********************************************\n");printf("\n");printf("\t\t\t 请输入你的用户名:");scanf("%s",inputname);printf("\n\t\t*********************************************\n");printf("\n\n");printf("\t\t\t 请输入密码:");c=getch();if(c!='\r')printf("*");while(c!='\r'){ inputcode[j++]=c;c=getch();if(c!='\r')printf("*");else inputcode[j]='\0';}printf("\n");fp=fopen("admincode.txt","r");fscanf(fp,"%s\n",name);fscanf(fp,"%s",code);fclose(fp);if(strcmp(name,inputname)==0&&strcmp(code,inputcode)==0)flag=1;return flag;}int stucode(){FILE *fp;char inputname[20], inputcode[20],c;int flag=0,j;char code[20],code2[20],name[20];printf("\t\t*********************************************\n");printf("\n");printf("\t\t\t 请输入你的用户名:");scanf("%s",inputname);printf("\n\t\t*********************************************\n");printf("\n\n");printf("\t\t\t 请输入密码:");c=getch();if(c!='\r')printf("*");while(c!='\r'){ inputcode[j++]=c;c=getch();if(c!='\r')printf("*");else inputcode[j]='\0';}printf("\n");fp=fopen("stucode.txt","r");fscanf(fp,"%s\n",name);fscanf(fp,"%s",code);fclose(fp);if(strcmp(name,inputname)==0&&strcmp(code,inputcode)==0)flag=1;return flag;}int main(){struct student *head;int maininput,sign,j=0;mainlabe:while(1){maininput=mainmenu();switch(maininput){case 1:{sign=admcode();if(sign==1){while(1)。

c语言成绩管理系统课程设计报告

c语言成绩管理系统课程设计报告一、引言:成绩管理系统是一种可以有效管理学生课程成绩的工具。

通过该系统,教师可以方便地录入、修改和查询学生的成绩,而学生和家长也可以方便地查看自己的成绩情况。

本次课程设计旨在设计一个基于C语言的成绩管理系统,实现对学生课程成绩的录入、修改和查询等功能。

二、系统设计:1. 数据结构设计:为了实现成绩管理系统的各项功能,需要设计相关的数据结构。

对于学生信息,可以设计一个结构体,包含学号、姓名、性别等字段;对于课程成绩,可以设计一个结构体,包含学号、课程名称、成绩等字段。

2. 功能设计:(1) 学生信息录入功能: 教师可以通过输入学生的学号、姓名、性别等信息,将学生信息录入系统中。

(2) 成绩录入功能: 教师可以通过输入学生的学号和课程名称,将学生的课程成绩录入系统中。

(3) 成绩修改功能: 教师可以根据学生的学号和课程名称,修改学生的课程成绩。

(4) 成绩查询功能: 学生和家长可以通过输入学生的学号,查询学生的课程成绩。

三、系统实现:1. 用户界面设计:使用C语言中的控制台窗口,通过菜单的方式显示系统功能选项,用户可以通过键盘输入选择对应的功能。

2. 数据存储设计:使用文件存储学生信息和课程成绩。

通过读取和写入文件的方式,实现数据的持久化存储。

3. 功能实现:(1) 学生信息录入功能的实现: 用户输入学生的学号、姓名、性别等信息后,将学生信息写入文件。

(2) 成绩录入功能的实现: 用户输入学生的学号、课程名称和成绩后,将成绩信息写入文件。

(3) 成绩修改功能的实现: 用户输入学生的学号、课程名称和新的成绩后,根据学号和课程名称找到对应的成绩信息并修改。

(4) 成绩查询功能的实现: 用户输入学生的学号后,根据学号在文件中查找对应的成绩信息并显示在控制台窗口。

四、系统测试:对于每一个功能,设计相应的测试用例,验证系统的正确性和稳定性。

例如,录入一个学生信息后,查询该学生的信息是否正确;录入一门课程成绩后,修改该成绩并查询是否修改成功等。

学生管理系统c语言毕业设计

学生管理系统c语言毕业设计学生管理系统是一个用于管理学生信息和学校日常运营的软件系统。

它能够帮助学校管理学生的个人信息、课程安排、成绩记录以及其他相关事务。

以下是关于学生管理系统的一些常见问题和解释:1. 学生管理系统是什么学生管理系统是一种软件系统,用于帮助学校管理学生信息和学校事务。

它可以存储学生的个人信息,包括姓名、年龄、性别、联系方式等。

同时,学生管理系统还提供了一系列功能,例如课程安排、成绩记录、考勤管理等。

2. 学生管理系统有哪些功能学生管理系统通常包含以下主要功能:-学生信息管理:可以记录学生的个人信息,包括姓名、年龄、性别、住址等。

-课程安排:可以安排学生的课程表,包括课程名称、教师信息、上课时间和地点等。

-成绩记录:可以记录学生的考试成绩和平时成绩,以便后续查询和统计。

-考勤管理:可以记录学生的出勤情况,包括迟到、早退、请假等。

-统计分析:可以根据学生的成绩和出勤情况进行统计分析,提供相关报表和图表。

3. 学生管理系统的优势是什么学生管理系统有以下几个优势:-提高工作效率:学生管理系统可以自动化学生信息的录入和管理,减少了手工操作的时间和错误。

-方便数据查询:学生管理系统可以快速查询和检索学生的个人信息、课程安排和成绩记录,提供了方便快捷的数据访问方式。

-信息安全性:学生管理系统可以设置权限和保护机制,保证学生信息的安全性和隐私保护。

4. 如何设计一个学生管理系统设计一个学生管理系统需要考虑以下几个方面:-数据库设计:需要设计一个合适的数据库结构来存储学生信息、课程安排和成绩记录等。

-用户界面设计:需要设计用户友好的界面,方便用户进行操作和查询。

-功能实现:根据需求,实现学生信息管理、课程安排、成绩记录等功能模块。

-数据安全性和权限控制:保证学生信息的安全性和隐私保护,设置合适的权限和保护机制。

希望以上解答对您的学生管理系统项目有所帮助。

如果您需要更具体的信息或具体的代码实现,还请进一步提供相关要求。

学生管理系统 C语言代码

#include"stdio.h"#include"stdlib.h"#include"string.h"struct stu_info1{char num[13];//学号char name[10];//姓名char sex[5];//性别char cls[20];//班级}stu1[6];struct stu_info2{char counum[6];//课程号char counam[20];//课程名称int credit;//学分}stu2[6];struct stu_info3{char num[13];//学号char counum[6];//课程号float results;//分数}stu3[12];struct stu_info4{char num[13];//学号char counum[6];//课程号float results;//分数}stu4[12];int n=11;void main(){void gengxin();void input1();void input2();void input3();void output();void xianshi();void chaxun();void printf1();void printf2();input1();input2();output();int i;loop: ;printf("*************欢迎使用分数查询系统*************\n");printf("** 请选择**\n");printf("** 1.录入2.删除无用信息(管理员功能) **\n");printf("** 3.显示4.查询(学生功能) **\n");printf("** 5.显示学生信息6.显示课程信息**\n");printf("** 7.退出**\n");printf("**********************************************\n");scanf("%d",&i);switch(i){case 1: input3();break;case 2:gengxin();break;case 3:xianshi();goto loop;case 4: chaxun();goto loop;case 5: printf1();goto loop;case 6: printf2();goto loop;case 7:break;default:printf("error");break;}}void input1()//录入结构体stu1[]{int i;FILE *fp;if((fp=fopen("A.txt","r"))==NULL){printf("can not open file\n");exit(0);}/* printf(" 学号姓名性别班级\n");*/for(i=0;i<=5;i++){fscanf(fp,"%s%s%s%s",&stu1[i].num,&stu1[i].name,&stu1[i].sex,&stu1[i].cls);/*printf("%-13s %-10s %-5s %-20s\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i] .cls);*/}fclose(fp);}void input2()//录入结构体stu2[]{int i;FILE *fp;if((fp=fopen("B.txt","r"))==NULL){printf("can not open file\n");exit(0);}for(i=0;i<=5;i++){fscanf(fp,"%s%s%d",&stu2[i].counum,&stu2[i].counam,&stu2[i].credit);}fclose(fp);}void input3()//录入成绩{FILE *fp;fp=fopen("C.txt","w");int a,i,j,k;float cetss;char number[13],cnum[6],mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){printf("请输入要录入学生成绩的个数\n");scanf("%d",&a);for(i=1;i<=a;i++){printf("请输入要录入的第%d同学的学号:",i);scanf("%s",number);printf("请输入要录入的第%d同学的课程号:",i);scanf("%s",cnum);for(j=0;j<=5;j++)//学号{if((strcmp(number,stu1[j].num)==0))break;}if(j<=5){for(k=0;k<=5;k++)//课程号{if(strcmp(cnum,stu2[k].counum)==0){printf("请输入要录入同学的成绩:");scanf("%f",&cetss);fprintf(fp,"%s %s %f\n",number,cnum,cetss);break;}}}if(j>5||k>5){printf("Error,please input again");i=i-1;}printf("录入成功\n");}}else{printf("密码错误\n");}}void output()// 录入结构体stu3[]{int i;FILE *fp=fopen("C.txt","r");for(i=0;i<n;i++){fscanf(fp,"%s%s%f",&stu3[i].num,&stu3[i].counum,&stu3[i].results);/*printf("%s%s%f\n",stu3[i].num,stu3[i].counum,stu3[i].results);*/ }fclose(fp);}void xianshi()// 显示成绩{int i,j;for(i=0;i<n;i++){for(j=0;j<6;j++){if((strcmp(stu3[i].num,stu1[j].num))==0)printf("%s\t",stu1[j].name);}for(j=0;j<6;j++){if(strcmp(stu3[i].counum,stu2[j].counum)==0)printf("%s\t",stu2[j].counam);}printf("%3.1f\n",stu3[i].results);}}void chaxun()//查询功能{char number[13],c;int i,j,k,a,b,d;while((c=getchar())!='Q'){a=0,b=0;//a记录学分b记录学科printf("请输入要查询同学的学号\n");scanf("%s",number);for(i=0;i<n;i++){if(strcmp(number,stu3[i].num)==0){printf("学号:%s\t",stu3[i].num);for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){printf("姓名:%s\n",stu1[j].name);}}break;}}d=i;for(i=0;i<n;i++)if(strcmp(number,stu3[i].num)==0){b=b+1;for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<6;k++){if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;}break;}}if(stu3[i].results>=60){a=a+stu2[k].credit;printf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,stu2[k].credit);}elseprintf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,0);}if(d<n){printf("共修%d科\t\t实得总学分:%d\n",b,a);}else{printf("学号输入错误\n");}getchar();printf("退出请按Q+回车,继续查询请按回车键");}}void gengxin()//更新信息,删除C.txt中无用信息{FILE *fp;int i,j,k;char mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){fp=fopen("C.txt","w");for(i=0;i<n;i++){for(j=0;j<6;j++)if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<=5;k++)if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;if(k<=5){fprintf(fp,"%s %s %f\n",stu3[i].num,stu3[i].counum,stu3[i].results);}}}printf("更新C.txt成功\n");fclose(fp);}else{printf("密码错误\n");}}void printf1()//显示学生信息{int i;printf(" 学号姓名性别班级\n");for(i=0;i<=5;i++){printf("%-13s%-10s%-5s %-20s\n\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i].cls);}}void printf2()//显示课程信息{int i;printf(" 课程编号课程名称学分\n");for(i=0;i<=5;i++){printf("%-6s%-20s %-4d\n\n",stu2[i].counum,stu2[i].counam,stu2[i].credit);}}。

学生成绩管理系统实验报告(附C语言源码)

学⽣成绩管理系统实验报告(附C语⾔源码)程序设计训练报告(附源码)题⽬学⽣成绩管理系统学⽣姓名学⽣学号专业班级指导⽼师2012年7 ⽉⽬录⼀、设计⽬的要求 (1)⼆、设计功能简介 (1)三、本⼈⼯作 (2)四、详细设计⽅案 (2)1.需求分析 (2)2.模块详细设计 (2)(1)模块功能 (2)(2)定义函数功能说明 (4)(3)模块算法流程图 (6)3.核⼼模块源程序 (10)4.实验结果 (16)五、使⽤说明 (21)六、程序设计⼼得体会 (21)七、附录 (22)附录1:参考⽂献 (22)附录2:主要变量及⾃定义函数说明 (22)附录3:源程序代码 (22)⼀、设计⽬的要求通过C语⾔程序设计这门课程,我想,我们应该达到的⽬的与要求应该有以下内容:1.在编辑应⽤程序过程中,逐步加深对C语⾔编程的理解,掌握结构化程序设计的基本思路和⽅法;2.加强实践的能⼒,动⼿能⼒,同时进⼀步对所学的知识进⾏巩固,为以后的学习奠定基础;3.增强学⽣我们利⽤⾃⼰所学知识解决实际问题的能⼒4.掌握书写程序设计说明⽂档的能⼒⼆、设计功能简介本程序针对登录系统的不同⾝份(有管理员、学⽣两个⾝份)有不同的功能。

管理员的功能有以下⼏个:1.管理⽤户:其中包括浏览⽤户、增添⽤户、修改⽤户、删除⽤户四个功能;2.管理成绩:其中包括浏览成绩、增添成绩、修改成绩、删除成绩、成绩排序五个功能;3.个⼈密码修改。

学⽣的功能有:1.查看成绩:其中可直接查看各科成绩,也可查看单科、总分成绩的排名;2.查看个⼈信息:3.修改个⼈密码。

三、本⼈⼯作虽然编程本⾝是⼀件⾟苦的事,但作为⼀个爱好电脑学科的我来说,并不在意。

我在这个系统上,花了两天时间。

为了这个系统,我反复查资料,调试,纠错……最终完成了这整个系统。

四、详细设计⽅案1.需求分析为了管理员能⽅便了解、管理班上学⽣的成绩与其他信息,也同时为了学⽣能够⾃主查询⾃⼰的成绩的具体情况与其他信息且不能查看别⼈的私密信息,设计了这个学⽣成绩管理系统。

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

1 课程设计说明 课程设计目的: 通过此课程,更系统和全面地掌握程序设计的相关知识,巩固和加深《C程序设计》理论知识,把理论与实践相结合,掌握基本编程技巧,学习调试程序,锻炼独立思考能力,培养创新思维,提高编程能力。 本程序运用了数组、指针、结构体、函数、循环语句、文件保存和读取等知识,由于上学期时间紧张,部分知识并没有学透彻。通过这次机会,可以获得更深的理解和应用,为以后学习打下坚实的基础。

软件的总体结构图以及主要功能模块

一、 输入和添加信息模块 使用此模块时,系统会提示你想要输入的学生数目,然后通过for的循环语句实现逐个输入学生学号、姓名、年龄、成绩等,并进行总分计算和排名。如果想再输入新信息,系统会开辟新空间,并提示你是否覆盖以前信息,从而实现新信息

二查找信息

一输入和添加信息

三修改信息 四成绩排序 五文件处理 六浏览记录

按学号 按姓名

打开文件显示信息 保存文件

退出系统

学生信息管理系统 2

的输入。 未进行此操作前,先进行其它操作,系统都会提示你现在没有信息。 二、 查找信息模块 输入信息后进行此操作,系统会提示你是按学号查找,还是按姓名查找,然后通过字符串的比较查找信息,并在屏幕显示是否找到信息。若没找到,系统会提示没有要找的信息;若找到信息,就会在屏幕上把信息内容显示出来。 三、 修改信息 进行此操作时,系统会提示你是按学号还是按姓名查找,然后把要修改人的信息全部显示出来,再次确认是否真的要修改。若要修改,就输入新信息,把要修改的信息覆盖,并重新排名,把修改后的信息全部显示出来。 四、 成绩排序 此模块包括四个被调函数,应用了字符串和指针知识。同样,系统会提示你是按学号还是按姓名(abc)排序,选择后,系统会提示是按升序还是降序排列,最终把排序后的信息全部显示出来。 五、 文件处理 文件处理包含文件的打开和文件的保存。应用文件打开和关闭函数,以读写方式将文件保存到一个二进制文件中。若未保存前,先打开文件,如果无信息,系统会提示没有文件;如果有信息,系统会提示你先保存文件。打开文件后,可以在屏幕上显示全部信息。 六、 浏览信息 随时浏览最新信息。学生学号、姓名、各科成绩、总成绩、排名等一目了然。

源程序: #include "stdio.h" #include "string.h" #include "malloc.h"

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/ #define course 3 /*学科数目*/ typedef struct message_student /*结构体定义*/ { char number[6]; char name[20]; int age; float subject[course]; float score; int index; }student;

extern int numstus; /*学生数目*/ extern student *pointer; /*指向结构体数组*/ extern int lens; 3

int openfile(student stu[]); int findrecord(student stud[]); int writetotext(student stud[]); void welcome(); void display1(); void showtable(); void sort(student stu[]); void addrecord(student stud[]); void display(student stud[],int n1,int n2); void amendrecord(student stud[]); void count(student stud[]); void sortnum(student stud[]); void sortnum2(student stud[]); void sortname(student stud[]); void sortname2(student stud[]);

void display(student stud[],int n1,int n2) /*浏览信息*/ { int i; showtable(); /*显示表头*/ for(i=n1;i<=n2;i++) printf("\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].age,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].score,stud[i].index); /*通过循环输出数据*/

}

int findrecord(student stud[]) /*查找信息*/ { char str[2]; char i; if(numstus==0) { printf("No records to search\n"); } else { printf("search by?\n1.number\t2.name\n"); scanf("%s",str); 4

if(str[0]=='1') /*按学号查找*/ { printf("Enter num:"); scanf("%s",&str); for(i=0;iif(strcmp(str,stud[i].number)==0) { display(stud,i,i); break; } else continue; } else if(str[0]=='2') /*按姓名查找*/ { printf("Enter name:"); scanf("%s",str); for(i=0;iif(strcmp(str,stud[i].name)==0) { display(stud,i,i); break; } else continue; } if(i>numstus) { printf("No records to search\n"); return -1; } return i; } }

int openfile(student *stu) /*打开文件*/ { int i=0; student *p; FILE *fp; p=stu; char filename[20],str[2]; if(numstus!=0) { 5

printf("Record existed,save?(y/n)"); scanf("%s",str); if(str[0]=='y'||str[0]=='Y') writetotext(stu); } printf("Enter file name:"); scanf("%s",&filename); numstus=0; free(p); if((fp=fopen(filename,"rb"))==NULL) { printf("Cannot open file\n"); return(-1); } for(i=0;i{ if(fread(&stu[i],sizeof(student),1,fp)!=1) i++; numstus++; {if(!feof(fp)) return(-1); printf("file read error\n"); } } fclose(fp); printf("Read sucessfully\n"); printf("Reveal record?(y/n)"); scanf("%s",&str); if(str[0]=='y'||str[0]=='Y') display(stu,0,numstus-1); return(0); }

void sort(student stud[]) /*排序*/ { int j=0; int k; char str; student *p; p=stud; if(numstus==0) { printf("No records to search!"); } while(1) 6

{ aa: printf("1.by number\n"); printf("2.by name\n"); scanf("%d",&k); if(k==1) { printf("Order by:\n"); bb: printf("1.按升序\t"); printf("2.按降序\n"); scanf("%d",&k); if(k==1) sortnum2(p); else if(k==2) sortnum(p); else goto bb; display(stud,0,numstus-1); } else if(k==2) { printf("Order by:\n"); cc: printf("1.按升序\t"); printf("2.按降序\n"); scanf("%d",&k); if(k==1) sortname2(p); else if(k==2) sortname(p); else goto cc; display(stud,0,numstus-1); } else goto aa; printf("Exit order?(y/n)"); scanf("%s",&str); if(str=='n'||str=='N') goto aa; else return; } } void sortnum(student stud[]) { int i,j; student temp; student *p;

相关文档
最新文档