C语言实验报告-学生信息资源管理系统
C语言学生信息管理系统实验报告
实验四:结构体实验目的:1.更加灵活的使用数组作为函数参数;2.初步掌握开发一个小型实用系统的基本方法;3.初步掌握书写程序设计开发文档的能力。
实验内容:程序一:学生信息管理系统编写程序,实现学生信息的管理(包括学生信息的建立、增加、删除、修改、查找),要求:小组分工情况小组分工情况统计表I设计一个学生成绩管理系统至少具有以下功能:(1)菜单功能:采用文本菜单界面。
(2)学生信息的建立。
(3)学生信息的增加。
(4)学生信息的删除。
(5)学生信息的修改。
(6)学生信息的查找。
II数据库结构struct student{ char num[10];char name[10];char xibie[10];char sex;int age;}st[30];二总体设计框架结构图(系统的功能结构图)程序流程图: (visio)三、详细设计(流程图!!!)四、程序源代码(参考答案)1.用结构体数组完成2.用结构体指针完成1. #includ e "stdio.h"#includ e "string.h"typede f struct node{ char num[10];char name[10];char xibie[10];char sex;int age;int n;st *cresli nk(){int i;st s[10];printf("请输入要录入的人数:");scanf("%d",&n);for (i=0;i<=n-1;i++){ printf("请输入第%d名学生的学号,姓名,系别,年龄,性别:",i+1);scanf("%s%s%s%d%c",s[i].num,s[i].name,s[i].xibie,&s[i].age,&s[i].sex);}return s;}int getlen(st s[]){return n;}insert(st s[],char num[],char name[],char xibie[],int age,char sex){ strcpy(s[n].num,num);strcpy(s[n].name,name);strcpy(s[n].xibie,xibie);s[n].age=age;s[n].sex=sex;n++;}delete(st s[],char num[]){int i,j;for(i=0;i<n;i++)if(strcmp(s[i].num,num)==0)break;for(j=i+1;j<n;j++)s[j-1]=s[j];n--;}void list(st s[]){ int i;printf("学号\t姓名\t系别\t年龄\t性别\n");for(i=0;i<n;i++)printf("%s\t%s\t%s\t%d\t%c\n",s[i].num,s[i].name,s[i].xibie,s[i].age,s[i].sex);}void main(){int k,f,age;char num[10],name[10],xibie[10],sex;while(1){printf("\n\n\t\t\t学生信息管理系统\n");printf("\t\t*************************************\n");printf("\t\t\t1.录入学生信息\n");printf("\t\t\t2.插入新学生信息\n");printf("\t\t\t3.删除学生信息\n");printf("\t\t\t4.输出学生信息\n");printf("\t\t\t5.输出学生总数\n");printf("\t\t\t6.退出\n");printf("\t\t*************************************\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:s=cresli nk();break;case 2: printf("请输入新学生的学号,姓名,系别,年龄,性别:");scanf("%s%s%s%d%c",num,name,xibie,&age,&sex);i nsert(s,num,name,xibie,age,sex);b reak;case 3:printf("请输入要删除的学生的学号:");scanf("%s",num);d elete(s,num);break;case 4:list(s);break;case 5:f=getlen(s);printf("学生总数为:%d",f);break;case 6:return;}}}2.#includ e "stdio.h"#includ e "string.h"#define null 0typede f struct node{ char num[10];char name[10];char xibie[10];char sex;int age;struct node *next;}slink;slink*cresli nk(){slink*head,*p,*s;int i,n;printf("请输入要录入的人数:");scanf("%d",&n);if(n<1)return null;p=head=(slink*)malloc(sizeof(slink));head->next=null;for (i=1;i<=n;i++){s=(slink*)malloc(sizeof(slink));printf("请输入第%d名学生的学号,姓名,系别,年龄,性别:",i); scanf("%s%s%s%d%c",s->num,s->name,s->xibie,&s->age,&s->sex);p->next=s;p=s;}p->next=null;return head;}int getlen(slink*head){slink*p;int n;p=head->next;n=0;while(p!=null){n++;p=p->next;}return n;}insert(slink*head,char num[],char name[],char xibie[],int age,char sex) {slink*p,*q;p=head;while(p->next!=null) p=p->next;q=(struct node *)malloc (sizeof(slink));strcpy(q->num,num);strcpy(q->name,name);strcpy(q->xibie,xibie);q->sex=sex;q->age=age;q->next=p->next;p->next=q;}delete(slink*head,char num[]){slink*p,*q;p=head;while(p->next!=null&&strcmp(p->next->num,num)!=0)p=p->next;q=p->next;p->next=q->next;free(q);}void list(slink*head){slink*p;printf("学号\t姓名\t系别\t年龄\t性别\n");p=head->next;while(p!=null){printf("%s\t%s\t%s\t%d\t%c\n",p->num,p->name,p->xibie,p->age,p->sex);p=p->next;}printf("\n");}void main(){int k,f,age;char num[10],name[10],xibie[10],sex;slink*head;while(1){printf("\n\n\t\t\t学生信息管理系统\n");printf("\t\t*************************************\n");printf("\t\t\t1.录入学生信息\n");printf("\t\t\t2.插入新学生信息\n");printf("\t\t\t3.删除学生信息\n");printf("\t\t\t4.输出学生信息\n");printf("\t\t\t5.输出学生总数\n");printf("\t\t\t6.退出\n");printf("\t\t*************************************\n");printf("请选择:");scanf("%d",&k);switch(k){case 1:head=cresli nk();break;case 2: printf("请输入新学生的学号,姓名,系别,年龄,性别:");scanf("%s%s%s%d%c",num,name,xibie,&age,&sex);insert(head,num,name,xibie,age,sex);b reak;case 3:printf("请输入要删除的学生的学号:");scanf("%s",num);d elete(head,num);break;case 4:list(head);break;case 5:f=getlen(head);printf("学生总数为:%d",f);break;case 6:return;}}}。
C语言学生信息管理系统设计实验报告
信
信
信
息
息
息
的
的
的
浏
增
录
览
加
入
信
信
退
息
息
出
的
的
系
修
查
统
改
询
信
信
信
息
息
息
导
录
保
出
入
存
按
按
学
姓
号
名
查
查
询
询
7.各模块功能简介 信息浏览模块:用导入函数调入信息,用 for 循环依次输出学生信息。
3
信息的增添模块:先确定增添人数,用 for 循环输入指针数组数据,调用保存函 数进行保存。 信息的录入模块:确定人数,for 循环依次输入信息,调用保存函数保存。 信息的修改模块:用 if(strcmp(work[i].name,name)==0) 先找出要修改的学生信息,用 switch 确定修改那一项,输入修改的数据进行保 存。 信息的查询模块:用 if(strcmp(work[i].name,name)==0)查找学生姓名,用 if(num1==work[i].num)对学号查找。 退出:用 goto 语句指向固定行。 8.主要函数流程图 修改函数
录入学生个数
文件
work_list.txt
保存学生信息
2
函数
baicun()、type_in()、 保存 录入 删除 del()、change()、add 修改 查找 插入 ()、scan()search() 显示学生信息、查
找
4.设计平台 有 Visual C 语言编写,语言简单、紧凑,使用方便、灵活。运算符丰富,数据 类型丰富,具有结构化的控制语句,语法限制不太严格,程序设计自由度大。C 语言允许直接访问物理地址,能进行行位操作,能实现汇编语言的大部功能。生 产目标代码质量高,程序执行效率高,用 C 语言编写的程序可移植性好。 5.设计思想 采用了系统模块化:(1)自顶向下;(2)逐步细化;(3)模块化设计;(4) 结构化编码。用这种方法便于验证算法的正确性,在向下展开之前应仔细检查本 层设计是否正确,只有上一层正确才能向下细化。本程序分为六大模块:浏览模 块、增加模块、录入模块、修改模块、查询模块、退出。其中录入模块包括录入、 导出、保存。查询模块包括学号查询和姓名查询。浏览函数由岳映强完成,增添 模块由马玉帅完成,录入模块由章成完成,修改模块由陈耀明和徐川鹤完成,查 询模块由刘永亮完成,退出模块由钱程完成。 6.设计框图
c语言课程设计报告---学生信息管理系统
题目:学生信息管理系统一、需求分析任务要求:自学C语言中有关链表及外部文件得内容,设计学生信息管理系统。
具体要求如下:◆建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;◆能够提供添加、删除与修改学生信息等功能;◆能将通讯录保存在文件中;◆能够按指定方式输出学生信息.系统功能需求分析:★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型得指针,用于指向各结点;★ 2、分别建立具有添加、删除、修改、查询等功能得子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表得删除、插入等知识。
删除时用一结构体指针指向链表得第一个结点,检查该节点得值就是否等于输入得要删除得学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加.★3、为实现存储功能,需用到文件得相关函数,打开文件,将添加、修改或删除得信息存入磁盘中。
★4、为以表格得形式输出文件,宏定义格式化输出语句,指定输出学生信息。
二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找与显示功能得子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:三、详细设计主要功能模块得算法设计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存得文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息.2、添加信息函数(void add())(1)定义指向结构体变量得指针;(2)移动指针,找到插入结点;(3)在要插入得结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
3、删除信息函数(void del())(1)定义指向结构体变量得指针;(2)用指针检验链表中就是否有记录,若没记录,返回主函数;(3)根据要修改得编号查找要删除得结点;(4)修改链表,删除对应结点。
C语言学生管理系统综合实验报告
count++;
printf("\n");}
}
printf("--------------------------------------------------\n");
}
void tjbhgrs()
{
int j,count=0;
printf("有不及格科目的学生是:\n");
}
}
void sx()
{
struct student temp;
int a,b,c;
for(a=0;a<i-1;a++)
{
c=a;
for(b=a+1;b<i;b++)
if(stu[b].ave>stu[c].ave)
c=b;
temp=stu[b];
stu[b]=stu[c];
stu[c]=temp;
佛山科学技术学院
实验报告
实验名称小型学生信息管理系统
实验项目编写一学生信息管理系统,用来管理学生基本信息及成绩信息
专业班级姓名XXX学号
指导教师成绩日期
一、试验目的
本实验为学生提供了一个既动手又动脑,上机实践的机会。学生通过分析和解决该实验,将课本上的理论知识和实际有机地结合起来,锻炼学生分析、解决较复杂问题的能力,提高学生编写综合系统程序的能力。
printf("\n");
}
printf("----------------------------------------------------------------\n");
C语言课程设计实验报告学生信息管理系统
C语言课程设计实验报告学生信息管理系统语言程序设计实验报告C报告人:孟凡超指导老师:姜林报告日期:XX年x月x日C语言程序设计实验报告C语言课程设计实验报告1设计目的:学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-等试设计一学生信息管理系统,使之能提供以下功能: 1 系统以菜单方式工作 2 学生信息录入功能---输入 3 学生信息浏览功能---输出 4 查询、排序功能---算法按学号查询按姓名查询5 学生信息的删除与修改2总体设计:程序设计组成框图学生信息录入学生信息浏览主菜单学分查询信息编辑信息添加信息删除信息查询信息添加姓名查询信息编辑信息删除2C语言程序设计实验报告流程图开始清屏n=1判断n>0?NYpr输入选择chch1调用2 调用3 调用 pr24N=0结束3C语言程序设计实验报告3详细设计:1>函数入口说明 pr 输出主菜单pr2 输出检索菜单界面文件操作:打开文件操作:保存( n) 编辑子菜单:对姓名编辑 ( n) 编辑子菜单:对年龄编辑 ( n) 编辑子菜单:对性别编辑 ( n) 编辑子菜单:对出生年月编辑 ( n) 编辑子菜单:对住址编辑 ( n) 编辑子菜单:对电话进行编辑( n) 编辑子菜单:对电子邮件地址编辑 ( n) 显示翻页致末尾的信息 ( n) 信息编辑函数 ( n) 删除信息的函数 ( n) 输出编辑界面检索:按学号检索:按姓名录入、添加信息学生信息查看主函数 2>调用关系( n) ( n)pr( n)pr2( n)( n)( n)( n) (同上)( n)( n) ( n) ( n) ( n) ( n)3>参数说明( n)、( n)、( n) 、( n) 、( n) 、( n)、( n)、( n)、( n)、( n)、( n) 函数中的n都为检索中确定的学生数组下标4C语言程序设计实验报告4调试与测试:1>调用pr2函数一闪而过解决方法:添加语句使程序暂停2>无法有效的控制输出函数循环终止解决方法:添加全局变量“”使用该全局变量来记录学生总数,从而控制输出循环的次数3>查询函数数据量过多时同时输出,先输出的内容无法查看,或需用户自行查看解决方法:添加语句使程序暂停,当用户按时继续4>文件在打开和保存时有问题解决方法:调整文件的打开方式,从原来的单纯的w+修改为添加一个语句,当没有文件时执行w+的操作,否则执行r+避免了原存储文件被覆盖的问题5C语言程序设计实验报告5源程序清单和执行结果:#<> #<> #<> #<> =0; { id; [30]; ; [2]; [9]; [80]; [15];[25]; }[];pr { (""); ("******学生信息管理系统******"); ("\n----------V ----------"); ("\n您想要:"); ("\n 1录入学生信息"); ("\n 2浏览学生信息"); ("\n 3检索学生信息"); ("\n 4退出信息管理"); ("\n----- 孟凡超-----"); ("\n****************************\n"); }pr2 { ; ; a; ch; (a) { (""); ("******学生信息管理系统******"); ("\n----------检索----------"); ("\n您想要:"); ("\n 1按学号检索"); ("\n 2按姓名检索"); ("\n 3返回主菜单"); ("\n\n----- 孟凡超-----"); ("\n****************************\n"); ch=; (ch) { '1':;; '2':;; '3':a=0;; } } }{ *fp; n; ((fp=("""r+"))==) fp=("""w+"); (n=0;n<;n++) (&[n]( )1fp);(&41fp);(fp); }{ n; *fp; fp=("""r+");6C语言程序设计实验报告(n=0;n<;n++) (&[n]( )1fp); (&41fp); (fp); }( n) { ("\n新姓名:"); ("%s"[n]); }( n) { ("\n新年龄:"); ("%d"&[n]); }( n) { ("\n新性别:"); ("%s"[n]); }( n) { ("\n新出生年月"); ("%s"[n]); }( n) { ("\n新地址:"); ("%s"[n]); }( n) { ("\n新电话:"); ("%s"[n]); }( n) { ("\n新E-:"); ("%s"[n]); }( n) { (n==) (""); //清屏 ("******学生信息管理系统******"); ("\n----------检索----------"); ("\n已检索到末尾"); ("\ "); ("\n\n----- 孟凡超-----"); ("\n****************************\n"); }( n) { ch; a=1b; (a) { (""); ("******学生信息管理系统******"); ("\n----------修改----------"); ("\n请输入你想修改的内容:"); ("\n1姓名 2年龄 3性别 4出生年月 5地址 6电话 \n"); ("\n\n----- 孟凡超-----"); ("\n****************************\n"); ; ch=; (ch) {7C语言程序设计实验报告'1':(n);; '2':(n);; '3':(n);; '4':(n);; '5':(n);; '6':(n);; '7':(n);; } b=1; (b) { ("\n确认吗?(y/n)"); ; ch=; (ch) { 'Y': 'y':b=0;a=0;; 'N': 'n':b=0;; } } } }( n) { a; (a=n;a<;a++) { ([a][a+1]); [a]=[a+1]; ([a][a+1]); ([a][a+1]); ([a][a+1]); ([a][a+1]); ([a][a+1]); } --; ("删除成功!"); }( n) { a=1; ch; (a) { ; ("\n您想要:"); ("\n\n1修改学生信息"); ("\n2删除该条信息"); ("\n3返回上级菜单"); ("\n4查看下条信息"); ch=; (ch) { '1':(n)a=0;; '2':(n)a=0;; '3':a=0;(0);; '4':a=0;; } } }{ nij=0; (""); ("******学生信息管理系统******"); ("\n----------检索----------"); ("\n请输入想要检索的学号:"); ("%d"&n); (n<=) { n=n--; //拷贝后一个学生信息到前一个人上8C语言程序设计实验报告("学号姓名年龄性别出生年月\n"); ("%4d "[n]id); ("%12s "[n]); ("%4d "[n]); ("%4s "[n]); ("%8s \n"[n]); ("\n\n\n学号电话E- 地址\n"); ("%4d "[n]id); ("%15s "[n]); ("%15s "[n]); ("%s\n" [n]); j=(n); i++; } (i==0) { ("\:无此学生"); ("\n----- 孟凡超-----"); ("\n****************************\n"); } { (j==0) ; { (""); (n); ; } }:; }{ nji=0; m[30]; (""); ("******学生信息管理系统******"); ("\n----------检索----------"); ("\n请输入想要检索的姓名:"); ("%s"m); (n=0;n<;n++) { ((m[n])==0) { (""); ("学号姓名年龄性别出生年月\n"); ("%4d "[n]id); ("%8s "[n]); ("%4d "[n]); ("%4s "[n]); ("%8s \n"[n]); ("\n\n\n学号电话 E- 地址\n"); ("%4d "[n]id); ("%15s "[n]); ("%15s "[n]); ("%s\n" [n]); i++; ((j=(n))==0) ; } } (i==0) ("\:无此学生"); (j!=0) (n); ; ; }{ an=1m;9C语言程序设计实验报告ch; (n) { a=; (""); ("ID:"); [a]id=(a+1); ("%d"[a]id); ("\:"); ("%s"&[a]); ("\:"); ("%d"&[a]); ("\:"); ("%s"&[a]); ("\( ):"); ("%s"&[a]); ("\:"); ("%s"&[a]); ("\:"); ("%s"&[a]); ("\nE-:"); ("%s"&[a]); m=1; (m) //做一个循环,直到m=0时跳出{ (""); ("ID:"); ("%d"[a]id); ("\:"); ("%s"[a]); ("\:"); ("%d"[a]); ("\:"); ("%s"&[a]); ("\:"); ("%s"[a]); ("\:"); ("%s"[a]); ("\:"); ("%s"[a]); ("\nE-"); ("%s"[a]); ("\n请选择:1确认并继续 2重新填写 3放弃并返回 4确认并返回"); ch=; (ch) { '1':m=0;++;; '2':m=0;; '3':m=0n=0;; //选择此项时,m=0,循环终止 '4':m=0n=0;a=++;; } } } }{ =1in=1=1=/5+1; //设定变量控制翻页 ch; (n) { (""); ("学号姓名年龄性别出生年月\n"); (i=-1;i<+4&&i<;i++) { ("%4d "[i]id); ("%12s "[i]); ("%4d "[i]); ("%4s "[i]); ("%8s\n"[i]); } ("\n\n\n学号电话 E- 地址\n"); (i=-1;i<+4&&i<;i++)10C语言程序设计实验报告{ ("%4d "[i]id); ("%15s "[i]); ("%15s "[i]); ("%s\n" [i]); } ("\n1上一页 2下一页 0退出共学生%d人第%d页共%d页\n"); ch=; (ch) { '1':--; (==0) =(-1)*5+1=; =(-1)*5+1;; '2':++; (>) =1=1; =(-1)*5+1;; '0':n=0;; } } }。
C语言课程设计报告 --学生管理系统
C语言课程设计报告 --学生管理系统一、实验目的:通过本次实验,学习C语言的语法和数据类型,设计一个简单的学生管理系统,结合文件I/O所学,可以将学生信息保存至文件中,再读取时自动填充至程序中。
同时,体验软件开发的流程,从需求分析到具体实现。
二、需求分析:1、学生信息包括:学号、姓名、性别、年龄、成绩。
2、学生信息需要添加、删除、修改、查找和显示。
3、程序启动时自动从文件中读取数据,退出时自动保存数据。
三、实验过程:1、确定数据结构和变量类型通过分析需求,学生信息包含多个属性,可以使用结构体来保存每个学生的信息。
同时,为了便于程序运行,需要定义一个链表来保存所有学生信息。
/* 学生信息结构体 */typedef struct _Student {char id[12]; // 学号char name[20]; // 姓名char gender; // 性别int age; // 年龄double score; // 成绩} Student;/* 学生信息链表节点 */typedef struct _StudentNode {Student data; // 学生信息struct _StudentNode *next; // 下一节点指针} StudentNode;/* 学生信息链表头节点 */StudentNode *head = NULL;2、设计主菜单功能考虑学生管理系统的主要功能,可以设计以下主菜单:---------------------------1. 添加学生2. 删除学生3. 修改学生信息4. 查找学生5. 显示所有学生6. 退出---------------------------可以使用一个while循环来循环处理,直到用户选择退出。
3、实现主菜单功能添加学生:先从用户输入中获取学生信息,然后创建一个新的学生信息节点,并将其添加到链表的末尾。
1. 定义变量/* 输入缓存区大小 */#define BUFFER_SIZE 2562. 实现函数/* 添加学生到链表末尾 */void add_student() {Student student; // 待添加的学生信息printf("请输入学号:");scanf("%s", student.id);printf("请输入姓名:");scanf("%s", );printf("请输入性别(M/F):");scanf(" %c", &student.gender);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入成绩:");scanf("%lf", &student.score);StudentNode *node =(StudentNode*)malloc(sizeof(StudentNode));node->data = student;node->next = NULL;if (head == NULL) {head = node;} else {StudentNode *p = head;while (p->next != NULL) {p = p->next;}p->next = node;}printf("添加学生成功!\n");}删除学生:先从用户输入中获取学生学号,然后遍历链表,找到该学号对应的学生信息节点,并删除。
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语言课程设计学生信息管理系统姓名洪伟生院系计算机学院日期年 7 月 5 日目录第一章设计要求………………………………………………第二章算法分析1.理论依据…………………………………………………2.主要实现方法……………………………………………2.1整体流程图………………………………………2.2函数功能和函数之间的调用关系………………第三章代码(源代码)………………………………………第四章分析说明………………………………………………第五章总结……………………………………………………第一章、设计要求1、利用所学的知识、理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;2、经过C语言各个函数功能来实现对学生信息的管理,学生信息包括学生姓名,学号,各科成绩;管理方式包括对学生信息的录入,保存,排序,查找、修改、删除等功能。
第二章、算法分析1、程序理论依据经过C语言的程序设计基础的掌握,对学生成绩管理系统进行编写程序。
首先,经过链表这一数据结构来对学生的信息进行录入以及操作,在其过程中,经过各个功能语句以及选择结构,循环结构等方式的结合来达到所要实现的程序功能。
最后经过对C 语言中对文件的操作,对已有学生成绩的读取和新建学生成绩的录入保存。
2、主要实现方法2.1整体流程图2.2、函数功能和函数之间的调用关系2.2.1、函数功能:void Menu_1(); //主菜单void Menu_2(); //二级菜单学生信进退出学生信学生信学生信学生信学生信学生信返回主void swap(struct student * phead,struct student * pback);// 链表节点互换void Save(struct student * head); // 写入磁盘void Search(struct student * head); // 查找学生信息void Read(struct student * head); // 显示学生信息void Sort(struct student * head); // 链表节点排序struct student * Create(); //学生信息手动录入struct student * Readpoint(); //磁盘文件写入内存struct student * Modify(struct student * head); // 链表结构体成员修改struct student * Add(struct student * head); // 链表节点插入struct student * Delete(struct student * head); // 链表节点删除。
C语言学生管理系统_综合实验报告
C语言学生管理系统_综合实验报告一、引言学生管理系统是一种方便高校进行学生信息管理的工具,具备添加、删除、查询、修改等基本功能,可以提高学校教务部门的工作效率,减少人力资源的浪费。
本文将介绍一个基于C语言的学生管理系统的设计和实现。
二、系统设计1.需求分析学生管理系统主要包括学生信息、教师信息和课程信息的录入、查询、修改和删除等功能,同时要求可以按照学号、姓名等字段进行快速检索。
系统还需要能够自动生成学生的成绩单和课程表,方便学生进行查看。
2.系统架构学生管理系统采用客户端-服务器模式,客户端和服务器之间通过网络进行数据传输。
客户端通过命令行界面与用户交互,服务器负责处理客户端发送的请求并返回相应的结果。
3.系统功能模块(1)学生信息管理模块:包括学生信息的添加、查询、修改和删除等功能。
(2)教师信息管理模块:包括教师信息的添加、查询、修改和删除等功能。
(3)课程信息管理模块:包括课程信息的添加、查询、修改和删除等功能。
(4)成绩管理模块:包括成绩的录入和查询功能。
(5)课程表模块:根据学生选课情况生成学生的课程表。
三、系统实现1.开发环境系统开发环境选择C语言,编译器使用GCC,开发工具使用Dev-C++。
2.数据存储系统的数据存储采用文本文件的形式,每个学生、教师和课程信息分别存储在一个文本文件中,使用逗号分隔各个字段。
3.界面设计系统界面使用命令行界面,通过菜单来提供各个功能的选项,用户可以根据提示输入相应的指令进行操作。
4.功能实现(1)学生信息管理功能:用户输入学生信息后,系统将学生信息保存到指定的文本文件中,并返回操作结果。
(2)教师信息管理功能:用户输入教师信息后,系统将教师信息保存到指定的文本文件中,并返回操作结果。
(3)课程信息管理功能:用户输入课程信息后,系统将课程信息保存到指定的文本文件中,并返回操作结果。
(4)成绩管理功能:用户输入学生学号和对应的课程信息后,系统将成绩保存到指定的文本文件中,并返回操作结果。
C语言课程设计实验报告 学生信息管理系统
课题:学生信息管理系统设计 报告人:阮家友 方鹏飞 叶成 指导老师: 严碧波 孙祥娥 报告日期:2014 年 6 月 23 日
语言课程设计Байду номын сангаас验报告
C 语言课程设计实验报告
C 语言课程设计实验报告
1.设计目的:
学生信息管理系统设计
学生信息包括:学号、姓名、年龄、电话号码、性别、出生年月、QQ、班级 等。试设计一学生信息管理系统,使之能提供以下功能: 1. 系统以菜单方式工作 2. 学生信息添加功能---输入 3. 查询功能---算法 按学号查询 按姓名查询 4. 学生信息的删除与修改 5. 学生信息整表浏览功能---输出
4.调试与测试:
1>调用 STU * load_info()函数(文件载入) ,读写出现乱码 解决方法:更改相应指针指向,及有关变量的初值设置。
4
C 语言课程设计实验报告
2>边界测试 解决方法:用极端的或偏门的情况来探测和验证代码在处理时会发生什么。
3>执行窗口执行多次命令后显示过多,不利于输入指令及结果查看 解决方法:调用系统清屏函数 system("cls");。
case 3
调用 serch_info ()
case 4
调用 delete_info ()
case 5
调用 delete_info ()
case6
调用 preview_info( )
调用 add_info()
结束
3
C 语言课程设计实验报告
3.详细设计:
1>函数入口说明 menu() 输出主菜单 load_info() 载入函数:txt 转为链表 add_info(STU*h) 增加学生信息 search_info(STU*h,int type) 搜索学生信息 delete_info(STU*h) 删除学生信息 update_info(STU*h) 修改学生信息 output_info(STU*h) 输出学生信息 preview_info(STU*h,int type) 预览学生信息 main() 主函数 2>调用关系 load_info() add_info(STU*h)
C语言学生信息管理系统实验报告
C语言学生信息管理系统实验报告 -C语言学生信息管理系统实验报告一、实验目的本次实验旨在通过C语言编程实现一个简单的学生信息管理系统,以帮助学生更好地理解和掌握C语言的基本语法、数据类型、程序控制结构以及文件操作等知识点。
同时,通过实际操作,提高学生的编程能力和问题解决能力。
二、实验内容1、系统的基本功能:实现学生信息的输入、存储、查询、修改和删除等操作。
2、数据存储方式:使用文件存储学生信息,保证数据的持久性。
3、用户界面:实现一个简单的命令行界面,方便用户进行操作。
三、实验步骤及实现1、打开一个新文件,命名为“student_info.txt”,用于存储学生信息。
2、定义一个结构体,包含学生的基本信息,如学号、姓名、年龄、性别等。
3、编写程序,实现学生信息的输入、存储和输出。
4、编写程序,实现学生信息的查询、修改和删除操作。
5、在命令行界面中,使用scanf函数获取用户输入的指令,并根据指令执行相应的操作。
6、在操作结束后,将结果显示在命令行界面上。
四、实验结果与分析1、学生信息管理系统的基本功能已经实现,可以正常进行学生信息的输入、存储、查询、修改和删除等操作。
2、使用了文件操作函数,可以将学生信息持久化存储,避免了每次运行程序都需要重新输入信息的麻烦。
3、通过实际操作,学生对C语言的基本语法、数据类型、程序控制结构以及文件操作等知识点有了更深入的理解和掌握。
五、实验总结与建议1、在实现学生信息管理系统时,需要注意数据的正确性和完整性,尤其是输入数据时需要做好错误处理。
2、在实现系统功能时,可以进一步优化代码,提高程序的效率和可读性。
3、可以增加更多的功能,如统计学生人数、打印学生信息等,以使系统更加完善。
4、在实际应用中,需要考虑系统的安全性和稳定性,如数据的备份和恢复、系统的异常处理等。
通过本次实验,学生对C语言有了更深入的理解和掌握,同时提高了编程能力和问题解决能力。
建议在今后的实验中,注重理论与实践相结合,提高学生的实际应用能力。
C语言学生管理系统综合实验报告
C语言学生管理系统综合实验报告##一、实验目的本实验旨在设计和实现一个简单的学生管理系统,使用C语言编写,帮助学生了解C语言常用的数据结构和文件操作,并能够实际应用在实际的学生管理中。
##二、实验内容本实验要求设计一个学生管理系统,能够完成以下功能:1.添加学生信息:包括学号、姓名、性别、年龄等基本信息;2.修改学生信息:根据学号修改学生的基本信息;3.删除学生信息:根据学号删除学生的信息;4.查询学生信息:根据学号或姓名查询学生的信息;5.显示全部学生信息:将所有学生的信息显示出来;6.保存学生信息到文件:将学生的信息保存到文件中;7.从文件读取学生信息:从文件中读取学生的信息。
##三、实验设计###数据结构设计在设计学生管理系统时,我们需要选择合适的数据结构来存储学生的信息。
本实验中,我们选择使用结构体来表示学生的信息,代码如下:```cstruct Studentint id; // 学号char name[20]; // 姓名char gender[5]; // 性别int age; // 年龄};```###功能实现根据实验要求,我们需要实现添加、修改、删除、查询、显示和文件操作等功能。
以下是具体实现的思路:1.添加学生信息:从用户输入获取学生的信息,并将其添加到学生数组中;2.修改学生信息:根据用户输入的学号,在学生数组中找到对应的学生信息,并更新其基本信息;3.删除学生信息:根据用户输入的学号,在学生数组中找到对应的学生信息,并将其删除;4.查询学生信息:根据用户输入的学号或姓名,在学生数组中找到对应的学生信息,并将其显示出来;5.显示全部学生信息:遍历学生数组,将所有学生的信息显示出来;6.保存学生信息到文件:将学生数组中的所有学生信息保存到文件中;7.从文件读取学生信息:从文件中读取学生信息,并将其存储到学生数组中。
##四、实验结果经过实验的设计与实现,我们成功完成了学生管理系统的编写,并进行了测试。
C语言学生信息管理系统设计实验报告
通过本次实验对 C 语言有了初步了解,但如果想要进一步了解,还应加强练习, 组员之间的配合在设计过程中是很重要的。 参考资料:C 程序设计 C 语言程序基础
7
Main 函数
信
信
信
息
息
息
的
的
的
浏
增
录
览
加
入
信
信
退
息
息
出
的
的
系
修
查
统
改
询
信
信
信
息
息
息
导
录
保
出
入
存
按
按
学
姓
号
名
查
查
询
询
7.各模块功能简介 信息浏览模块:用导入函数调入信息,用 for 循环依次输出学生信息。
3
信息的增添模块:先确定增添人数,用 for 循环输入指针数组数据,调用保存函 数进行保存。 信息的录入模块:确定人数,for 循环依次输入信息,调用保存函数保存。 信息的修改模块:用 if(strcmp(work[i].name,name)==0) 先找出要修改的学生信息,用 switch 确定修改那一项,输入修改的数据进行保 存。 信息的查询模块:用 if(strcmp(work[i].name,name)==0)查找学生姓名,用 if(num1==work[i].num)对学号查找。 退出:用 goto 语句指向固定行。 8.主要函数流程图 修改函数
录入学生个数
文件
work_list.txt
保存学生信息
2
函数
baicun()、type_in()、 保存 录入 删除 del()、change()、add 修改 查找 插入 ()、scan()search() 显示学生信息、查
c语言学生信息管理系统实训报告
c语言学生信息管理系统实训报告
C语言学生信息管理系统是以C语言为编程语言开发的数据管理系统,该系统基于数
据库技术,实现了人事档案管理、班级管理、成绩管理、考勤管理及学生信息管理等功能。
本次实训,我使用C语言编程,在Visual Studio2017环境下,实现了一种自定义的
学生信息管理系统。
该系统实现学生信息的查询、删除、添加及修改功能。
在项目的开发
过程中,我也使用了文件读取与保存、数据结构训练、数据处理等编程技术。
其中,采用
C语言处理文本文件,用链表结构组织数据,并实现增删改查等功能;使用链表结构处理学生信息,实现数据的添加、修改和删除等操作;使用文件读取及保存,在开发过程中
记录及复用学生信息,并按要求输出学生信息报表;使用数据结构进行数据处理,通过
数据的排序、查找等操作,实现提高学生管理的效率。
实训过程运用C语言基础知识和结构化编程思想,巩固了编写程序的知识和编程技术,让我更加深入地理解面向对象思想。
在实训过程中,我熟练掌握了if语句、while语句、switch语句等基础编程语句,加深了对编程概念的理解,同时也学会了在实际编程中如何把这些概念运用到编程中,从而熟练掌握C语言的编程技巧。
实训结束时,我认为自己在编程方面有了很大的进步,对C语言的编程也有了更深的
理解,同时自己也掌握了一套独立的编程思维,并能够利用面向对象思想,实现学生信息
管理系统客户端最新需求。
学生系统 c 实验报告
学生系统c 实验报告引言学生管理系统是一种用于管理学生信息的软件,它能够帮助学校、教育机构以及各类培训机构对学生的信息进行存储、查询和管理。
在本次实验中,我们使用C 语言设计并实现了一个简单的学生系统,通过该系统可以进行学生信息的新增、修改、查询和删除等操作。
设计思路在本次实验中,我们采用了模块化的设计思路,将学生系统分为学生信息管理模块、数据库模块和用户界面模块。
学生信息管理模块该模块用于处理学生信息相关的操作,包括增加学生信息、修改学生信息、查询学生信息和删除学生信息等功能。
为了方便之后的扩展性,我们将学生信息的数据结构定义为一个结构体,包括学生姓名、学号、性别和年龄等信息。
在学生信息管理模块中,我们通过链表的方式进行数据的存储和管理。
数据库模块数据库模块用于实现学生信息的持久化,将学生信息存储到磁盘文件中,以便之后的读取和修改操作。
在本次实验中,我们采用了文本文件的方式实现数据库模块,将学生信息保存为文本格式,并通过文件操作函数对数据进行读写。
用户界面模块用户界面模块用于实现与用户的交互,包括菜单显示、用户输入和信息输出等功能。
我们通过命令行界面的方式设计用户界面,用户可以通过输入对应的命令来操作学生信息。
实验结果经过实验的设计和编码,我们成功实现了一个简单的学生系统。
用户可以通过菜单选择不同的操作,进行学生信息的增删改查。
系统在运行时可以正常读取和保存学生信息,并且能够根据用户的选择执行相应的操作。
实验总结通过本次实验,我们深入理解了学生系统的设计思路和实现过程。
学会了如何使用C 语言进行模块化设计,分解问题并解决问题。
同时,我们也对文件操作和链表数据结构有了更深入的了解和掌握。
在实验过程中,我们也遇到了一些问题和挑战,比如对学生信息的输入和验证、文件读写的处理和用户界面的设计等。
通过不断的调试和优化,我们最终完成了系统的开发和测试。
通过本次实验,我们不仅提高了编程能力和解决问题的能力,还加深了对学生系统的理解和应用。
学生信息管理系统C语言报告
学生信息管理系统C语言报告简介学生信息管理系统是一种可以对学生信息进行管理的软件系统。
通过该系统,可以方便地添加、修改、查询和删除学生信息,提高学生信息管理的效率和准确性。
本报告将介绍学生信息管理系统的设计和实现过程,包括系统功能、技术选型和代码结构等方面。
通过该报告的阅读,读者可以了解到该系统的开发背景和主要功能,以及查看源代码和运行效果。
系统功能学生信息管理系统的主要功能如下:1. 添加学生信息:可以输入学生的姓名、年龄、性别、学号等基本信息,并保存到系统中。
2. 修改学生信息:可以根据学生的学号或姓名,修改学生的基本信息。
3. 查询学生信息:可以根据学生的学号、姓名、年龄、性别等条件,查询学生的基本信息。
4. 删除学生信息:可以根据学生的学号或姓名,将学生的基本信息从系统中删除。
技术选型为了实现学生信息管理系统的需求,我们选择使用C语言进行开发。
C语言是一种高效、可靠的编程语言,有着丰富的开发资源和庞大的用户群体。
在开发过程中,我们采用了以下技术选型:- 编程语言:C语言C语言作为一种结构化的编程语言,具有强大的计算能力和灵活的控制语句,非常适合开发类似学生信息管理系统这样的小规模应用。
代码结构学生信息管理系统的代码结构如下:cinclude <stdio.h>struct Student {char name[50];int age;char gender[10];int student_id;};void add_student(struct Student *students, int *count) {添加学生信息的代码逻辑}void modify_student(struct Student *students, int count) {修改学生信息的代码逻辑}void query_student(struct Student *students, int count) {查询学生信息的代码逻辑}void delete_student(struct Student *students, int *count) {删除学生信息的代码逻辑}int main() {struct Student students[100];int count = 0;主程序逻辑,包括用户界面等}在代码结构中,我们定义了一个`Student`结构体,用于存储学生的基本信息。
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语言程序设计实践报告题目学生信息管理系统#include <string.h>#include <windows.h>struct student{long int num;char name[20];int age;char sex[4];int class;int pt; /*定义一个变量来储存大学物理的考试成绩*/int ps; /*定义一个变量来储存大学物理的平时成绩*/int et; /*定义一个变量来储存英语的考试成绩*/int es; /*定义一个变量来储存英语夫人平时成绩*/int ct; /*定义一个变量来储存微积分的考试成绩*/int cs; /*定义一个变量来储存微积分的平时成绩*/int xt; /*定义一个变量来储存信号的考试成绩*/int xe; /*定义一个变量来储存信号的平时成绩*/};int n=0;struct student stu[100];struct student *p;void tc();void tc()void lr();/*录入函数*/void ll();void cx();/*查询函数*/void xg();/*修改函数*/void sc();/*删除函数*/void bj();/*不及格学生列表函数*/void pj();/*平均成绩计算函数*/void kc();/*课程查询函数*/②主函数模块:一般比较简单,只提供输入,处理,输出的调用函数,即只有界面显示语句,子函数选择语句,主要的调用语句。
void main(){int z;printf("\t\t\t +---------------------------+\n");printf("\t\t\t | 学生信息管理系统欢迎您 |\n");printf("\t\t\t +---------------------------+\n");printf("\t\t\t + 设计者:张眼\n");printf("\t\t\t + 指导老师:刘伟荣\n");printf("重要提示:为保证您的操作得到保存,请按正常顺序退出系统!谢谢合作\n");do{printf("\n\t\t\t+++++++++++++++++++++++++++++\n");printf("\t\t\t|** 菜单 **|\n");printf("\t\t\t+++++++++++++++++++++++++++++++++\n");printf("\t\t\t* [1]----录入/插入学生信息 *\n");printf("\t\t\t* [2]----浏览学生信息 *\n");printf("\t\t\t* [3]----查询学生信息 *\n");printf("\t\t\t* [4]----删除学生信息 *\n");printf("\t\t\t* [5]----修改学生信息 *\n");printf("\t\t\t* [6]----不及格学生列表 *\n");printf("\t\t\t* [7]----成绩信息查询 *\n");printf("\t\t\t* [8]----平均成绩 *\n");printf("\t\t\t* [0]----退出系统 *\n");printf("\t\t\t********************************\n"); printf("请输入您的选择:");scanf("%d", &z);switch(z){case 0 :tc();break;case 1 :lr();break;case 2 :ll();break;case 3 :cx();break;case 4 :sc();break;case 5 :xg();break;case 6 :bj();break;case 7 :kc();break;case 8 :pj();break;default:printf("\n无效选项!");}}while(z!= 0);}运行结果:③输入模块:输入部分包括学生的姓名,学号等基本信息以及学生的大学物理,英语,微积和信号的成绩,主要是通过指针来实现数据的输入。
C语言程序设计报告-学生管理系统
C语言程序设计大型作业报告题目:学生信息管理一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
三、实践任务现有学生成绩信息,内容如下姓名学号语文数学英语张明明01 67 78 82李成友02 78 91 88张辉灿03 68 82 56王露04 56 45 77陈东明05 67 38 47…。
.。
.。
. …请用C编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:(一)功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护.此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60-—70),统计出在此分数段的学生情况。
(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)(二)其它要求:(1)只能使用C语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档四、相关程序#include ”stdio。
h"#include ”stdlib。
h”#include ”string。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言实验报告院系:数学与计算科学学院班级:信息与计算科学2班:学号:2011年12月21日一、问题描述编写一个信息管理系统,包括、性别、年龄、班级、学号、地址、各科成绩等,要求能进行查找、排序和计算,按加权平均排序、按某一课程排序和按学号排序。
二、分析问题,解决问题的步骤1、输入初始的学生信息:输入信息包括学生的、性别、年龄、班级、学号、地址、各科成绩等相关信息;可用函数void input(STUDENT *data, int *len)来实现此操作。
2、成绩输出模块:输出学生的信息以及成绩void output(STUDENT *data, int len):通过学生的来查看学生的相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出成绩的平均分数、最高和最低分数。
3、排序模块:用函数void sort(STUDENT *data, int len)来实现。
4、成绩查询模块:可用void find(STUDENT *data, int len) 来实现。
找到就输出此学生全部信息。
5、统计功能能:用函数void stat(STUDENT *data, int len) 来实现。
6、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的存空间,再退出此程序。
三、程序编写#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAXN 35#define Maxsize325typedef struct student //学生信息{int no;char name[Maxsize];char sex[Maxsize];char age[Maxsize];char adress[Maxsize];char glassnum[Maxsize];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].sex,&data[*len].age,&data[*len].adress,&data[*len].glassnum, &data[*len].Chinese,&data[*len].math,&data[*len].English);data[*len].mark_ave=(data[*len].Chinese+data[*len].math+ 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].sex);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; /*exit 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].sex);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(" 制作者: XX \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("成绩统计表.txt","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].sex);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("文件已保存到\"成绩统计表.txt\"");getchar();getchar();}/*-----------主程序--------------*/void main(){STUDENT data[MAXN];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);}}四、误差分析此程序没有按加权平均排序功能是本程序的一大弊端,还有就是所列科目少了点,由于本课题中的许多知识点都没有学过,需要查找课外资料,所以如有错误,希望老师多多指正,!。