c语言大作业学生管理系统
C语言课程设计--学生成绩管理系统

*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");printf(" 制作人:章建\n");printf("********************** 学生成绩管理系统************************\n");printf(" 1.输入学生成绩\n");printf(" 2.输出学生成绩\n");printf(" 3.查找并显示学生成绩\n");printf(" 4.按姓名查找,修改学生资料\n");printf(" 5.显示所有学生名单\n");printf(" 6.查找并删除学生信息\n");printf(" 7.从文件读取数据\n");printf(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。
【基于C语言的学生信息管理系统的设计与实现9000字(论文)】

基于C语言的学生信息管理系统的设计与实现目录1结论 (2)2关键技术 (3)2.1C#技术 (3)2.2SQ1server (3)2.3Visua1Studio (3)3系统分析 (4)3.1可行性分析 (4)3.1.1技术可行性 (4)3.1.2经济可行性 (4)3.1.3操作可行性 (4)3.1.4时间可行性 (4)3.2系统性能分析 (5)3.3系统用例分析 (5)4系统设计 (6)4.1系统结构设计 (6)4.2系统顺序图 (7)4.2.1登录模块顺序图 (7)4.2.2添加课程信息模块顺序图 (8)4.2.3添加学生信息模块顺序图 (8)424修改密码模块顺序图 (9)4.3数据库设计 (9)4.3.1数据库E-R图设计 (9)4.3.2数据库表设计 (10)5系统的实现 (12)5.1管理员模块实现 (12)5.1.1登录界面 (12)5.1.2后台管理主界面 (13)5.1.3管理员管理界面 (13)5.1.4学生管理界面 (14)5.1.5课程管理界面 (14)5.2用户模块实现 (15)5.2.1选择课程界面 (15)5.2.2课表信息界面 (15)5.2.3我的成绩单界面 (16)6系统测试 (16)6.1测试方法 (16)6.2测试目的 (17)6.3测试策略 (17)6.4测试分析 (18)6.4.1用户登录模块测试用例 (19)6.4.2修改密码模块测试用例 (19)6.4.3学生管理模块测试用例 (20)6.4.4课程管理模块测试用例 (20)6.5测试总、结 (21)总结 (21)参考文献 (22)1绪论自从人类迈入信息社会以来,各种电子科学技术飞速发展,人们得以应用的电子产品越来越多,也对电子科技产生了依赖性。
在人们的日常生活中,手机和电脑已经成为了必不可少的电子产品。
而人们对手机和电脑的依赖,是因为通过手机以及电脑,能够运用各种各样的系统,通过虚拟网络完成一系列的事项,十分省时且快捷口在如今这个电子科技发达的时代,构建一个学生信息管理系统,不仅让信息得到良好的储存条件,还更方便系统使用用户的操作,直接通过电脑,使用键盘就可以输入信息、保存信息、快速查找信息以及删除不必要的信息。
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++程序设计项目设计题目(学生成绩管理系统)学号:姓名:自评成绩:成绩: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语言版源代码-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#define N 1000 typedef 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].jisuanji; 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].jisuanji);}}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].jisuanji);}}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].jisuanji);}}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].jisuanji;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语言的语法和结构,以便理解和实现学生信息的管理。
其次,关于系统的功能,可以从学生信息管理、任课管理、教学管理、学术科研、职位设置、绩效考核等方面进行完善。
针对关键管理系统,为了实现系统的可靠性和安全性,将采用多种数据库技术,包括SQL Server、Oracle、MySQL等数据库技术,以及主流计算机语言C++、Java等,实现数据库的操作、学生信息管理系统的开发、学习管理系统的开发等技术需求。
此外,本报告还将对相关技术以及软件测试等内容进行分析,以保证学生信息管理系统的可靠性和稳定性。
本报告的完成,必须充分考虑C语言的基本知识,以及C语言学生信息管理系统在实施过程中的可能风险。
在实施过程中,应该通过计算机技术的应用、软件测试、数据库技术的改进等多方面分析,以保证系统在实施过程中的高效稳定性。
综上所述,本报告将实施C语言学生信息管理系统,实现学校信息管理与市场营销管理,旨在收集、存储和处理数据,同时提高教学管理的质量,提升学生的学习体验,实现学校的管理变得更加规范和有效。
此外,本报告还将深入探讨如何利用计算机技术、数据库技术、软件测试等相关技术,保证学生信息管理系统的可靠性和安全性。
内蒙古科技大学C语言学生信息管理系统
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #define N 3 #define CODE 123 #define LEN sizeof(struct student) typedef struct date{char year[5];// 年char month[5];// 月char day[5];// 日}DATE;struct student{char NO[10];// 学号char name[10];// 姓名char age[5];// 年龄char sex[3];// 性别DATE birthday;// 出生日期char origo[20];// 籍贯char college[10];// 学院char major[10];// 专业char achieve[10];// 奖惩struct student *next;};typedef struct student STU;STU *head=NULL;int n,i=0;void show_stu();// 显示菜单功能void menu_stu();// 选择菜单功能void creat_stu();// 建立链表void input_stu();// 输入功能void print_stu();// 浏览功能void search_NO();// 以学号的方式查找信息void search_name();// 以姓名的方式查找信息void insert_stu();// 插入功能void delete_stu();// 删除功能void revise_stu();// 修改功能void save_stu();// 保存功能void code_stu();// 输入密码void arrage_stu();// 排序功能main(){code_stu(); creat_stu(); menu_stu();}void code_stu() // 输入密码{int start,end,code,i=0;do{i++;if(i>N){ i=1;printf("\t\t 密码错误!请10 秒后重新输入密码:\n"); start=time(NULL);END: end=time(NULL); if(difftime(end,start)==10) //10 秒后重新输入密码goto end;elsegoto END;}end:printf("\t\t 这是第%d 次输入密码(数字):\n",i); scanf("%d",&code);} while(code!=CODE);}void creat_stu(){long size;STU *p,*q;char c;FILE *fp; // 文件指针char ch; // 用来接收读取到的字符head=(STU*)malloc(sizeof(STU));head->next=NULL;if((fp=fopen("fname.txt","r"))==NULL ) // 判断文件是否打开成功{// 打开文件失败了printf("\t\t 没有找到该文件,请查证!\n"); return;} ch=fgetc(fp); // 读取第一个字符size=ftell(fp);if(!size){printf("\t\t 这是空表!\n");printf("\n");return;}printf("\n");printf("\t\t 文档有记录,是否要清空所有记录(y/n)?\t");scanf(" %c",&c);if(c=='Y'||c=='y'){fp=fopen("fname.txt","w+"); // 以只读方式.如果这个文件存在, 就清空, 如果不存在就创建size=ftell(fp);if(!size){printf("\t\t 这是空表!\n");printf("\n");return;}}rewind(fp); // 将文件的位置指针重新移到文件头p=head;while(!feof(fp)){ q=(STU*)malloc(sizeof(STU));fscanf(fp,"%s %s %s %s %s %s %s %s %s %s %s\n",q->NO,q->name,q->age,q->sex,q->birthday.yearJq->birthday.month,q->birthday.day,q->origo,q->college,q->major,q->achieve);p->next=q;p=q;}q->next=NULL;fclose(fp);// 关闭数据文件}void input_stu() // 录入功能{STU *p=NULL,*q=NULL;char c;int n=0;p=head; doq=(STU*)malloc(sizeof(STU));printf( 录入信息**************** **\n");printf("\t\t 学号:");scanf("%s",q->NO); printf("\t\t 姓名:"); scanf("%s",q->name); printf("\t\t 年龄:");scanf("%s",q->age); printf("\t\t 性别:");scanf("%s",q->sex);printf("\t\t 出生年月:");scanf("%s %s %s",q->birthday.year,q->birthday.month,q->birthday.day);printf("\t\t 籍贯:");scanf("%s",q->origo); printf("\t\t 学院:"); scanf("%s",q->college); printf("\t\t 专业:");scanf("%s",q->major); printf("\t\t 奖惩信息:"); scanf("%s",q->achieve); printf("\n");if(head->next==NULL) // 录入信息之前,链表为空,则直接将节点连接{ p->next=q;q->next=NULL;}else{ while(p->next!=NULL) // 若链表不为空,则先遍历整个链表,再将节点连接{ p=p->next;} p->next=q; q->next=NULL;}save_stu();printf("\t\t 是否还要继续录入( Y/N) ?\t"); scanf(" %c",&c);} while(c=='Y'||c=='y');void print_stu()// 浏览功能{STU *p=NULL;int i=0;if(head->next==NULL){printf("\t\t 文档无信息!请先录入信息\n");printf("\n");return;}else// 若链表不为空,则遍历整个链表,并输出信息{printf("\t\t 文档有记录!\n");printf("\n");p=head->next;while(p!=NULL){i++;printf("\t\t 这是第%d 个学生:\n",i);printf("\t\t 学号: %s\n",p->NO);printf("\t\t 姓名: %s\n",p->name);printf("\t\t 年龄:%s\n",p->age);printf("\t\t 性别:%s\n",p->sex);printf("\t\t 出生月: %s %s %s\n",p->birthday.year,p->birthday.month,p->birthday.day);printf("\t\t 籍贯:%s\n",p->origo);printf("\t\t 学院:%s\n",p->college);printf("\t\t 专业:%s\n",p->major);printf("\t\t 奖惩信息:%s\n",p->achieve); printf("\n");p=p->next;}}return;}void delete_stu()// 删除功能{STU *p,*q;int i=0;char NO[10];if(head->next==NULL)printf("\t\t 文档无信息!请先录入信息\n"); printf("\n");}else// 若链表不为空,则遍历链表{printf("\t\t 文档有记录 !\n");printf("\n");printf("\t\t 你想删除学生的学号: \n");scanf("%s",NO);p=head;q=p->next;while(q!=NULL){if(!strcmp(q->NO,NO))// 如果找到要删除的信息,进行删除操作 {月: %s %s %s\n",q->birthday.year,q->birthday.month,q->birthday.day); printf("\t\t 籍贯: %s\n",q->origo); printf("\t\t 学院: %s\n",q->college);printf("\t\t 专业: %s\n",q->major); printf("\t\t 奖惩信息: %s\n",q->achieve); if(q->next!=NULL) // 删除的信息不在尾节点{p->next=q->next;free(q);printf("\t\t 删除成功! \n"); save_stu();return;}else// 删除的信息在尾节点{ p->next=NULL;free(q);printf("\t\t 删除成功! \n");save_stu();return;}}else // 若果没有找到要删除的信息i=1;printf("\t\t 你要删除学生的信息 :\ printf("\t\t 学号: %s\n",q->NO); printf("\t\t 姓名: %s\n",q->name); printf("\t\t 年龄: %s\n",q->age); printf("\t\t 性别: %s\n",q->sex); printf("\t\t出 ");p=p->next; q=q->next;if(!i)〃如果为真,即(!i==1),没有该信息{ printf("\t\t 请查证 ,没有该生信息! \n");}}}void revise_stu() // 修改信息{STU *p ; int a,i=0;char c,NO[10]; if(head->next==NULL){printf("\t\t 文档无信息!请先录入信息 \n"); printf("\n");return;}printf("\t\t 文档有记录 !\n");printf("\n");printf("\t\t 你想修改学生的学号: \n");scanf("%s",NO);p=head;while(p!=NULL){if(!strcmp(p->NO,NO))// 如果找到匹配的信息,则进行选择修改内容 {i=1;printf("\t\t 学院: %s\n",p->college);printf("\t\t 专业: %s\n",p->major);printf("\t\t 奖惩信息 :%s\n",p->achieve); printf("\n"); printf("\t\t 学号: %s\n",p->NO);printf("\t\t 姓名: %s\n",p->name);printf("\t\t 年龄: %s\n",p->age);printf("\t\t 性别: %s\n",p->sex);printf("\t\t出 生 printf( “******************* 你要修改的学生是 月: %s %s %s\n",p->birthday.year,p->birthday.month,p->birthday.day);**********************\n");do{printf(" ***************** 修改%s的信息******************* *\n",NO);printf("\t\t1. 学号\n");printf("\t\t2. 姓名\n");printf("\t\t3. 年龄\n");printf("\t\t4. 性别\n");printf("\t\t5. 出生年月\n");printf("\t\t6. 籍贯\n");printf("\t\t7. 学院\n");printf("\t\t8. 专业\n");printf("\t\t9. 奖惩信息\n");printf("\t\t 选择你想修改的内容!\n"); scanf("%d",&a);switch(a){getchar();case 1:printf("\t\t 修改学生学号为:\t"); scanf("%s",p->NO);printf(" 修改成功!\n");break;case 2:printf("\t\t 修改学生姓名为:\t"); scanf("%s",p->name); printf(" 修改成功!\n");break;case 3:printf("\t\t 修改学生年龄为:\t"); scanf("%s",p->age);printf(" 修改成功!\n");break;case 4:printf("\t\t 修改学生性别为:\t"); scanf("%s",p->sex);printf(" 修改成功!\n");break;case 5:printf("\t\t 修改学生出生年月为:\t");scanf("%s %s %s",p->birthday.year,p->birthday.month,p->birthday.day); printf (" 修改成功!\n");break;case 6:printf("\t\t 修改学生籍贯为:\t");scanf("%s",p->origo);printf(" 修改成功!\n");break;case 7:printf("\t\t 修改学生学院为:\t");scanf("%s",p->college);printf(" 修改成功!\n");break;case 8:printf("\t\t 修改学生专业为:\t");scanf("%s",p->major);printf(" 修改成功!\n");case 9:printf("\t\t 修改学生奖惩信息为:\t");scanf("%s",p->achieve);printf(" 修改成功!\n");break;case 0:exit(0);}save_stu();printf("\t\t 是否继续修改( Y/N)?\t"); scanf(" %c",&c);}while(c=='y'||c=='Y');return;}else // 若没有找到匹配的信息,则将指针向后移动{p=p->next;}}if(!i) // 如果遍历链表,仍然没有找到,则说明没有该信息printf("\t\t 请查证,没有该生的信息!\n");i=0;}void insert_stu()// 插入功能{STU *p,*q;int a,i= 1,n=0 ;p=head;while(p!=NULL) // 遍历链表{if(p->next!=NULL)// 若不是尾节点,则n++n++;}p=p->next; // 否则将指针向后移动}printf("\t\t 你想插入第几个位置:\t"); scanf("%d",&a);if(a>n+1||a<1)// 判断插入的位置是否合法{printf("\t\t 插入位置不合理!\n"); return;} q=(STU*)malloc(sizeof(STU));printf("****************** 插入信息******************\n"); printf("\t\t 学号:");scanf("%s",q->NO);printf("\t\t 姓名:"); scanf("%s",q->name);printf("\t\t 年龄:"); scanf("%s",q->age);printf("\t\t 性别:"); scanf("%s",q->sex);printf("\t\t 出生年月:");scanf("%s %s %s",q->birthday.year,q->birthday.month,q->birthday.day); printf("\t\t 籍贯:");scanf("%s",q->origo);printf("\t\t 学院:"); scanf("%s",q->college);printf("\t\t 专业:"); scanf("%s",q->major);printf("\t\t 奖惩信息:"); scanf("%s",q->achieve);printf("\n");p=head;while(p!=NULL) // 遍历链表{if(i==a) // 如果插入位置与定义的相同{if(p->next!=NULL) // 插入的位置不是尾节点{q->next=p->next;p->next=q;printf("\t\t 插入成功"); printf("\n");save_stu();return;}else // 插入的位置是尾节点{p->next=q; q->next=NULL; printf("\t\t 插入成功 "); printf("\n");save_stu(); return;}}else // 如果插入位置与定义的不同,则将指针向后移动{p=p->next;i++;}}}void search_NO() // 以学号的方式查询学生信息{STU *p;int i=0;char NO[10];if(head->next==NULL){printf("\t\t 文档无信息!请先录入信息 \n"); printf("\n");return;}printf("\t\t 文档有记录 !\n");printf("\n");printf("\t\t 你想查找学生的学号 :\t");scanf("%s",NO);p=head;while(p!=NULL)// 同上{if(!strcmp(p->NO,NO))// 同上你要查找的学生是**********************\n"); %s\n",p->NO);%s\n",p->name); %s\n",p->age);{printf( "*** printf("\t\t printf("\t\t printf("\t\t 学号 姓名 年龄printf("\t\t 性别:%s\n",p->sex);printf("\t\t 出生月:%s %s %s\n",p->birthday.year,p->birthday.month,p->birthday.day);printf("\t\t 籍贯:%s\n",p->origo);printf("\t\t 学院:%s\n",p->college);printf("\t\t 专业:%s\n",p->major);printf("\t\t 奖惩信息:%s\n",p->achieve); printf("\n");return;}else{p=p->next;}}if(!i){printf("\t\t 请查证,没有该生信息!\n");}i=0;}void search_name()// 以姓名的方式查询学生信息{STU *p;int i=0;char name[10];if(head->next==NULL){printf("\t\t 文档无信息!请先录入信息\n");printf("\n");return;}printf("\t\t 文档有记录!\n");printf("\n");printf("\t\t 你想查找学生的姓名:\t");scanf("%s",name);p=head; while(p!=NULL) {if(!strcmp(p->name,name))printf( 你要查找的学生是******************** **\n");printf("\t\t 学号:%s\n",p->NO);printf("\t\t 姓名:%s\n",p->name);printf("\t\t 年龄:%s\n",p->age);printf("\t\t 性别:%s\n",p->sex);printf("\t\t 出生月:t%s %s %s\n",p->birthday.year,p->birthday.month,p->birthday.day);printf("\t\t 籍贯:%s\n",p->origo);printf("\t\t 学院:%s\n",p->college);printf("\t\t 专业:%s\n",p->major);printf("\t\t 奖惩信息:%s\n",p->achieve);printf("\n");return;}else{p=p->next;}}if(!i){printf("\t\t 请查证,没有该生信息!\n");}i=0;}void arrage_stu()// 按学号排序{STU *p,*p1,*p2,*p3;STU h, t;if (head->next== NULL){printf("\t\t 文档无记录!请输入\n");printf("\n");return;}printf("\t\t 文档有记录!\n");printf("\n");h.next=head;p=&h;while (p->next!=NULL){p=p->next;}p=p->next=&t;while (p!=h.next)p3=&h;p1=p3->next;p2=p1->next;while (p2!=p){if (strcmp( p1->NO , p2->NO )<0){p1->next=p2->next;p2->next=p1;p3->next=p2;p3=p2;p2=p1->next;}else{p3=p1;p1=p2;p2=p2->next; }}p=p1;}while (p->next!=&t){p=p->next;}p->next=NULL;save_stu();return;}void save_stu()// 保存信息{printf("\n");printf(" ***************** 信息已保存成功);STU *p=NULL;FILE *fp;char *filename="fname.txt"; if((fp=fopen("fname.txt","w"))==NULL) { printf("\t\t 打不开文件!\n"); return;}if(head->next==NULL)printf("\n");printf("\t\t 信息已为空!\n");return;}elsep=head->next;while(p!=NULL){fprintf(fp,"%s %s %s %s %s %s %s %s %s %s %s\n",p->NO,p->name,p->age,p->sex,p->birthday.yearp->birthday.month,p->birthday.day,p->origo,p->college,p->major,p->achieve);p=p->next;}printf("\n");printf("\t\t 保存完毕!\n"); fclose(fp);}void show_stu()// 显示菜单功能{printf("\n");printf(" ********************* 菜单******************* **\n");printf("\t\t1. 录入信息\n");printf("\t\t2. 显示信息\n");printf("\t\t3. 删除信息\n");printf("\t\t4. 修改信息\n");printf("\t\t5. 插入信息\n");printf("\t\t6. 以学号方式查询信息\n"); printf("\t\t7. 以姓名方式查询信息\n"); printf("\t\t8. 排序\n");printf("\t\t9. 清屏\n");printf("\t\t0. 退出\n");printf(" ********************************************* **\n");printf("\t\t 请选择:\t");printf("\n");}void menu_stu()// 执行菜单功能{int c;show_stu();while(1)scanf("%d",&c);switch(c)getchar();case 1: input_stu(); break;case 2: print_stu(); break;case 3:delete_stu(); break;case 4:revise_stu(); break;case 5: insert_stu(); break; case 6: search_NO(); break; case 7: search_name(); break; case 8: arrage_stu(); break; case 9:system("cls");// 清屏break; case 0:exit(0);}show_stu();。
《C语言高级程序》课程作业——学生成绩管理系统报告
为达到题目说的参加考试的学生人数不超过 30 人,故在程序开
头采用宏定义“#define N 30”已达到系统控制人数的目的。 为保证每次输入的数据的有效性,在输入考生人数和选项的地方
采用防御式编程,减少由于输入错误造成的系统终止。
三、程序代码
#include <stdio.h>
#include <string.h>
姓名查询信息函数、统计各学科各类别的学生人数及所占百分比函数
及输出所有考生信息的函数。
为减少程序长度,单独建立一个供输出单个学生学号、姓名、数
学成绩、英语成绩、物理成绩、总分、平均分的函数。有结构体数组
做函数参数,具体如下:
void menu(struct student stu[]); // 选择菜单
}stu[N]; // 全局变量
3
int num,select;
struct student t;
float math_sum=0.0 0english_aver,
physics_sum=0.0, physics_aver;
// 函数声明
void menu();
一、题目分析 (一)作业题目
学生成绩管理系统 某班有最多不超过 30 人(由键盘输入)参加考试。考试科目为 数学、英语和物理,定义结构体类型,用结构体数组做函数参数,实 现以下可供用户选择的菜单项。 (0)exit; (1)录入每个学生的学号、姓名和各科考试成绩; (2)计算每门课程的总分和平均分; (3)计算每个学生的总分和平均分; (4)按每个学生的总分由高到低排出名次表; (5)按每个学生的总分由低到高排出名次表; (6)按学号由小到大排出成绩表; (7)按姓名的字典顺序排出成绩表; (8)按学号查询学生排名及其考试成绩; (9)按姓名查询学生排名及其考试成绩; (10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、 不及格(0~59)五个类别。对每门课程分别统计每个类别的人数以及 所占的百分比; (11)输出每个学生的学号、姓名、各科考试成绩,以及每门课 程的总分和平均分。 (二)题目分析 1、程序要能做什么 根据题意,本系统要能做到手动输入学生人数以及考生相关信息 (学号、姓名、三科成绩),并能对输入的考生信息进行相应的分析 并显示结果,能根据要求进行查找相关数据信息。 2、程序处理什么 对输入的考生的三科成绩进行各自求和、取平均值; 对数学、英语、物理三科进行分析即求其各自平均值、统计各类 别的学生人数及所占百分比; 分别按学号顺序、姓名、考生总分高低对考生进行排序并输出; 根据提示,分别按给定学号和姓名进行查找并输出。 二、编程思想
c语言课程设计学生成绩管理系统报告
c语言课程设计学生成绩管理系统报告一、教学目标本课程旨在通过C语言编程实现一个学生成绩管理系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生编写程序解决实际问题的能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本语法和编程技巧;(2)了解数据结构的基本概念,学会使用数组、链表等数据结构;(3)熟悉函数的定义和调用,掌握函数的参数传递和返回值;(4)掌握文件操作,了解文件读写的原理和方法。
2.技能目标:(1)能够独立编写C语言程序,解决实际问题;(2)具备良好的编程习惯,代码结构清晰、可读性强;(3)掌握调试和优化程序的方法,提高程序的运行效率;(4)学会使用版本控制系统,如Git,进行代码管理和协作开发。
3.情感态度价值观目标:(1)培养学生的编程兴趣,激发学习C语言的积极性;(2)培养学生团队协作精神,提高沟通与协作能力;(3)培养学生的问题解决能力,培养创新意识和持续学习的态度;(4)培养学生具有良好的职业道德,遵守编程规范,尊重他人代码。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、表达式、控制语句等基本概念;2.数据结构:讲解数组、链表、栈和队列等数据结构的基本原理和应用;3.函数:讲解函数的定义、声明、调用,以及函数的参数传递和返回值;4.文件操作:介绍文件的概念、文件读写的方法和技巧。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数和文件操作等知识,使学生掌握课程的基本概念和编程技巧;2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题解决;3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力;4.小组讨论法:学生进行小组讨论,培养团队协作和沟通能力。
C语言课程设计报告(学生成绩管理系统)
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c语言大作业学生管理系统
C语言大作业学生管理系统
随着信息技术的不断发展,计算机在各行各业的应用越来越广泛。
其中,学生管理系统是教育领域中非常重要的一部分。
在本次大作业中,我们将设计和实现一个基于C语言的学生管理系统,以实现对学生在学籍、成绩等方面的全面管理。
一、确定主题和背景
学生管理系统是一个普遍存在的应用领域,它可以帮助学校或教育机构有效地管理学生信息,包括学生基本信息、成绩、学籍等。
在过去,这些信息通常是通过人工方式进行管理和查询的,这种方式不仅效率低下,而且容易出错。
因此,设计和实现一个自动化的学生管理系统是非常必要的。
二、详细阐述主题
我们的学生管理系统将采用C语言进行编写,使用结构体等数据结构来存储学生信息。
系统的主要功能将包括:学生信息的输入、修改、查询和打印,以及成绩的录入、修改、查询和统计等。
为了使系统更加健壮和易于维护,我们将采用模块化的编程方法,将不同的功能模块分开实现。
三、分析现有技术
目前,已经存在许多成熟的学生管理系统软件,它们的功能和性能各不相同。
其中,一些开源的学生管理系统软件如D7 student和STUDENT2等,可以为我们提供一些参考和启示。
然而,这些软件也存在一些不足之处,例如界面不够友好、操作不够简便等。
因此,我们需要深入了解这些现有技术,并根据实际需求进行改进和创新。
四、设计与实现
在设计与实现阶段,我们将按照以下步骤进行:
1、需求分析:明确系统的功能需求和性能要求,为后续的编码和测试提供依据。
2、系统设计:根据需求分析结果,设计系统的整体架构和模块划分,并绘制相应的流程图和数据结构图。
3、编码实现:根据系统设计,使用C语言进行编码实现。
在编码过程中,我们将遵循良好的编码规范,确保代码的可读性、可维护性和可扩展性。
4、测试与调试:在完成编码后,我们将进行单元测试和集成测试,确保系统的各个模块能够正常工作并相互协同。
同时,我们还将进行调试,修复可能存在的错误和缺陷。
5、部署与使用:最后,我们将把系统部署到相应的运行环境中,并进行用户培训和指导,确保用户能够正确、熟练地使用系统。
五、总结
通过本次大作业,我们不仅掌握了一些基本的C语言编程技巧,还了解了学生管理系统的设计和实现过程。
我们也意识到在实际应用中,还需要考虑更多的因素,如安全性、稳定性和可扩展性等。
因此,我们需要不断学习和探索,不断完善我们的系统,使其更好地服务于广大师生。