本文目录一览:
- 1、C语言成绩管理系统
- 2、用C语言编程实现一个简单的学生成绩管理系统
- 3、用C语言编写一个学生成绩管理系统
- 4、用C语言编写一个简单的成绩管理系统
- 5、c语言成绩管理系统
- 6、C语言 学生成绩管理系统?
C语言成绩管理系统
#include "stdio.h"
struct stu{
int sid,score;
char g;
};
void scorein(struct stu *p,int n){
int i,t;
for(i=0;in;i++){
scanf("%d%d",p[i].sid,p[i].score);
p[i].g = (t=p[i].score)89 t101 ? 'A' : t79 t90 ? 'B' : t69 t80 ? 'C' : t59 t70 ? 'D' : 'E';
}
}
int sum(struct stu *p,int n){
int s=0;
while(n--)
s+=p++-score;
return s;
}
void dssort(struct stu *p,int n){
int i,j,k;
struct stu t;
printf("\nSTUID\tSCORE\tCLASS\n=====================\n");
for(i=0;in;i++){
for(k=i,j=k+1;jn;j++)
if(p[k].scorep[j].score)
k=j;
if(k!=i)
t=p[k],p[k]=p[i],p[i]=t;
printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g);
}
}
void idsort(struct stu *p,int n){
int i,j,k;
struct stu t;
printf("\nSTUID\tSCORE\tCLASS\n=====================\n");
for(i=0;in;i++){
for(k=i,j=k+1;jn;j++)
if(p[k].sidp[j].sid)
k=j;
if(k!=i)
t=p[k],p[k]=p[i],p[i]=t;
printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g);
}
}
void query(struct stu *p,int n){
int id;
printf("\nPlease enter ID(int)...\n");
scanf("%d",id);
while(id-p-sid n)
p++,n--;
if(n=0){
printf("STUID\tSCORE\tCLASS\n=====================\n");
printf("%d\t%d\t%c\n\n",p-sid,p-score,p-g);
}
else
printf("No find!\n\n");
}
void level(struct stu *p,int n){
int d[5],i;
char s[5][7]={"优秀","良好","中等","及格","不及格"};
printf("统计信息如下:\n");
for(i=0;i5;d[i++]=0);
for(i=0;in;i++,d[p++-g-'A']++);
for(i=0;i5;i++)
printf("%6s:\t%d\t%.2f%%\n",s[i],d[i],d[i]/(n+0.0)*100);
}
void outinfo(struct stu *p,int n){
int i;
printf("\nSTUID\tSCORE\n=============\n");
for(i=0;in;i++)
printf("%d\t%d\n",p[i].sid,p[i].score);
}
int main(int argc,char *argv[]){
int n,s;
struct stu a[30];
printf("Please enter n(int 0n31)...\n");
if(scanf("%d",n)!=1 || n1 || n30){
printf("Input error, exit...\n");
return 0;
}
scorein(a,n);//输入
dssort(a,n);//分数降序
idsort(a,n);//学号升序
query(a,n);//查询
level(a,n);//等级和百分比
outinfo(a,n);//输出各位学生信息
printf("总分: %d",s=sum(a,n));
printf(" 平均分: %.2f\n",s/(n+0.0));
return 0;
}
运行样例:
用C语言编程实现一个简单的学生成绩管理系统
#include stdio.h
#include stdlib.h
#include string.h
#includememory.h
typedef struct student
{
char num[16];
char name[20];
float score[4];
struct student *next;
} stu;
stu *head; // 链头指针
stu* create() // 创建链表,从文件读取信息
{
printf("Reading student information:\n");
stu *p=NULL; // 指针,指向个待插入的结点
stu *q=NULL; // 指针,用于在其后插入结点
head = NULL; // 一开始链表为空
FILE * r =fopen("input.dat","r");
p = (stu*)malloc(sizeof(stu));
while(fscanf(r,"%s%s%f%f%f",p-num,p-name,p-score[0],p-score[1],p-score[2])!=EOF)
{
p-score[3]=(p-score[0]+p-score[1]+p-score[2])/3.0;
fprintf(stdout,"%s\t%s\t%g\t%g\t%g\t%.2f\n",p-num,p-name,p-score[0],p-score[1],p-score[2],p-score[3]);
p-next=NULL;
if (head == NULL) // head为空,要插入第一个
{
head = p;
} // 结点,让头指针指向结点p
else
{ // 否则不是头结点,应将p结点
q-next = p; // 插入到q结点的后面
}
q = p; // q指向当前最后一个结点
p = (stu*)malloc(sizeof(stu));
}
fclose(r);
if (head != NULL)
{
q-next = NULL; // 让q所指的最后一个结点的指针域为空说明这已是链尾了
}
return head; // 返回头指针
}
void sort(stu **head,int n)
{
FILE *w=NULL;
if(n==0)
{
w = fopen("sortByMath.dat","w");
}
else if(n==1)
{
w = fopen("sortByEnglish.dat","w");
}
else if(n==2)
{
w = fopen("sortByComputer.dat","w");
}
else if(n==3)
{
w = fopen("sortByAvg.dat","w");
}
stu *q,*t,*p;
stu * new_head = new stu;
new_head-next=*head;
p=new_head;
t=NULL;
while(t!=new_head-next)
{
p=new_head;
q=p-next;
while(q-next!=t)
{
if((p-next-score[n]) (q-next-score[n]))
{
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
}
p=p-next;
q=p-next;
}
t=q;
}
*head = new_head-next;
p = *head;
q = p-next;
printf("学号\t姓名\t数学\t英语\t计算机\t平均成绩\n");
int grade = 1;
while(p!=NULL)
{
fprintf(w,"%s\t%s\t%g\t%g\t%g\t%.2f\t%d\n",
p-num,p-name,p-score[0],p-score[1],p-score[2],p-score[3],grade);
fprintf(stdout,"%s\t%s\t%g\t%g\t%g\t%.2f\t%d\n",
p-num,p-name,p-score[0],p-score[1],p-score[2],p-score[3],grade);
if(q!=NULL q-score[3] p-score[3]) grade += 1;
p=p-next;
if(q!=NULL) q=q-next;
}
printf("\n");
fclose(w);
}
void count(stu* head)
{
float cnt[4][8];
int i,j;
for(i=0;i4;i++)
{
for(j=0;j8;j++)
{
if(j!=2)cnt[i][j]=0;
else cnt[i][j]=100;
}
}
stu* r=head;
while(r!=NULL)
{
r=r-next;
}
}
int main( )
{
head=create();
printf("Sorting by average score:\n");
sort(head,3);
system("pause");
return 0;
}
用C语言编写一个学生成绩管理系统
// testzhidao4.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include stdio.h
#include stdlib.h
#include string.h
#include malloc.h
struct Student //学生结构体
{
char name[20]; //名字
char sex[10]; //性别
char zuanye[20]; //专业
char code[13]; //学号
char department[20]; //学院
char degree[20]; //学历
};
struct node
{
struct Student data;
struct node *next;
};
//---------------------------------------------------------------------------------
void print_menu(void) // 打印总菜单
{
printf(" |--------------------------------------------------|\n");
printf(" | 总 菜 单 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--增加一个学生信息 | 5--删除一个学生信息 |\n");
printf(" | 2--显示一个学生信息 | 6--统计功能 |\n");
printf(" | 3--显示一个班级信息 | 7--结束 |\n");
printf(" | 4--修改一个学生信息 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
}
void print_menu4(void ) //打印修改功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 修 改 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--修改名字 | 5--修改学院 |\n");
printf(" | 2--修改性别 | 6--修改专业 |\n");
printf(" | 3--修改学号 | 7--不作修改 |\n");
printf(" | 4--修改学历 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
printf("再次选择选项 :");
}
void print_static_function_menu(void) //打印统计功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 统 计 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1.男/女人数 | 3.一个专业人数 |\n");
printf(" | 2.一个班级人数 | 4.结束 |\n");
printf(" |--------------------------------------------------|\n");
printf("请选择选项:\n");
}
int compareCode(char a[],char b[]) //比较 判断是否是同一个班级
{
for(int i=0;i9;i++)
if(a[i]!=b[i]) break;
if(i==9) return 1;
else return 0;
}
//-------------------------------------------------------------------------------------
void main() //主函数从这里开始
{
system("color 3");
printf("\n\n\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3 学 生 证 管 理 程 序 \3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 作者: \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
int choice;
struct node *studentlist=(struct node*)malloc(sizeof(struct node)); //学生链表头 //////////////////////////////////////////////////////////
studentlist-next=NULL;
struct node *temp=NULL;
struct node *p=(struct node*)malloc(sizeof(struct node));
char tempcode[13]; //临时学号
char tempclass[11]; //临时班级
char tempzuanye[20];//临时专业
int count=0;
int choice6,count_male,count_female;
const int sizeStu=sizeof(struct Student);
struct Student data;
FILE *fp;
if((fp=fopen("d:\\学生证管理程序.dat","rb"))==NULL)
{
fp=fopen("d:\\学生证管理程序.dat","wb");
}
fclose(fp);
fp=fopen("d:\\学生证管理程序.dat","rb");
while(fread(data,sizeStu,1,fp)==1)
{
p-data=data;
p-next=NULL;
if(studentlist==NULL)
studentlist=p;
else
{ temp=studentlist;
while(temp-next!=NULL){temp=temp-next;}
temp-next=p;
}
p=(struct node*)malloc(sizeof(struct node));
}
fclose(fp);
print_menu(); //打印菜单
scanf("%d",choice); //读进选项
while(choice!=7) //未遇到结束键
{
switch(choice)
{
//----------------------------------------------------------------
//选项1,增加学生学生证信息
case 1: //输入一个学生信息
p=(node*) malloc(sizeof(node));
printf("\n请输入姓名:");
scanf("%s",p-data.name);
printf("\n请输入性别(男/女):");
scanf("%s",p-data.sex);
printf("\n请输入学号(12位):");
scanf("%s",p-data.code);
printf("\n请输入学制(本科生/研究生):");
scanf("%s",p-data.degree);
printf("\n请输入学院:");
scanf("%s",p-data.department);
printf("\n请输入专业:");
scanf("%s",p-data.zuanye);
p-next=NULL;
//----------------------------------------------------------链表连接
if(studentlist==NULL) { studentlist=p; studentlist-next=NULL;}
else {
temp=studentlist;
while(temp-next!=NULL) ////////////////////
{
temp=temp-next;
}
temp-next=p;
p-next=NULL;
}
break;
//---------------------------------------------------------------------
//选项2,显示给定学生学生证信息
case 2: printf("\n请输入学生学号(12位数):");
scanf("%s",tempcode);
temp=studentlist;
while(temp!=NULL) //寻找响应的学生
{
if(strcmp(tempcode,temp-data.code)==0) break;
temp=temp-next;
}
if(temp==NULL) printf("\n不能找到该学生信息.\n");
else {
printf("------------------------------------------------\n");
printf("姓名: %s\n",temp-data.name);
printf("性别: %s\n",temp-data.sex);
printf("学号: %s\n",temp-data.code);
printf("学历: %s\n",temp-data.degree);
printf("学院: %s\n",temp-data.department);
printf("专业: %s\n",temp-data.zuanye);
printf("------------------------------------------------\n\n");
}
break;
//-----------------------------------------------------------------
//选项3,显示给定班级的学生信息
case 3:printf("\n请输入班级号 :"); //输入班级号
scanf("%s",tempclass);
while(strlen(tempclass)10) //班级号位数小于10时,重新输入
{
printf("错误的班级号,请重新输入:");
scanf("%s",tempclass);
}
count=0; //班级学生数
temp=studentlist;
while(temp!=NULL) //检索链表,并打印相应学生的学生证信息
{
if(compareCode(tempclass,temp-data.code)) {//打印属于这个班级的学生
printf("-----------------------------------------------\n");
printf("姓名: %s\n",temp-data.name);
printf("性别: %s\n",temp-data.sex);
printf("学号: %s\n",temp-data.code);
printf("学历: %s\n",temp-data.degree);
printf("学院: %s\n",temp-data.department);
printf("专业: %s\n",temp-data.zuanye);
printf("-----------------------------------------------\n");
count++;
}
temp=temp-next;
}
if(count==0) printf("该班级还未有成员.\n");
break;
//-------------------------------------------------------------------
//选项4,修改给定学生的信息
case 4: printf("请输入要作修改的学生证号:");
scanf("%s",tempcode);
temp=studentlist;
while(temp!=NULL) //寻找响应的学生
{
if(strcmp(tempcode,temp-data.code)==0) break;
temp=temp-next;
}
if(temp==NULL) printf("\n找不到相应学生的信息.\n");//找不到相应的学生
else {
int choice2;
print_menu4();
scanf("%d",choice2);
while(choice2!=7)
{
switch(choice2)
{
case 1:printf("修改名字:"); //修改名字
scanf("%s",temp-data.name);
break;
case 2:printf("修改性别:");//修改性别
scanf("%s",temp-data.sex);
break;
case 3:printf("修改学号:");//修改学号
scanf("%s",temp-data.code);
break;
case 4:printf("修改学历 :"); //修改学历
scanf("%s",temp-data.degree);
break;
case 5:printf("修改学院:"); //修改学院
scanf("%s",temp-data.department);
case 6:printf("修改专业:");//修改专业
scanf("%s",temp-data.zuanye);
break;
default: break;
}
printf("请选择选项:");
scanf("%d",choice2); //再次选择菜单选项
}
}
break;
//----------------------------------------------------------------
//选项5,删除给定学号的学生
case 5: printf("\n输入学号 :"); //输入学号
scanf("%s", tempcode);
temp=studentlist;
p=temp;
while(temp!=NULL) //寻找相应的学生
{
if(strcmp(tempcode,temp-data.code)==0) break;
p=temp;
temp=temp-next;
}
if(temp==NULL) printf("\n找不到该学生信息.\n"); //找不到
else if(temp==studentlist) {studentlist=temp-next; free(temp);}
else {
p-next=temp-next;//找到时删除
free(temp);
}
break;
//------------------------------------------------------------------
//选项6,统计功能
case 6: print_static_function_menu();
scanf("%d",choice6);//选择菜单选项
while(choice6!=4)
{
switch(choice6)
{
//选项1,统计男女个数
case 1:temp=studentlist;
count_male=0; //男生数
count_female=0; //女生数
while(temp!=NULL) //检索链表查找
{
if(strcmp(temp-data.sex,"男")==0) count_male++;
if(strcmp(temp-data.sex,"女")==0) count_female++;
temp=temp-next;
}
printf("男: %d\n",count_male);
printf("女: %d\n",count_female);
break;
//选项2,统计给定班级的人数
case 2:printf("请输入班级号:");
scanf("%s",tempclass); //给定班级
temp=studentlist;
count=0;
while(temp!=NULL) //检索链表查找
{
if(compareCode(temp-data.code,tempclass)==1) count++;
temp=temp-next;
}
printf("%s班级总人数为: %d\n",tempclass,count);
break;
case 3:printf("请输入专业:");
scanf("%s",tempzuanye); //给定专业
temp=studentlist;
count=0;
while(temp!=NULL) //检索链表查找
{
if(strcmp(temp-data.zuanye,tempzuanye)==0) count++;
temp=temp-next;
}
printf("%s专业总人数为: %d\n",tempzuanye,count);
break;
//缺省项
default: break;
}
printf("请选择选项:");
scanf("%d",choice6);
}
break;
//-----------------------------------------------------------------
default:free(p); break;
}
if((fp=fopen("d:\\学生证管理程序.dat","wb"))==NULL)
{
printf("文件无法打开!");
return;
}
p=studentlist;
while(p)
{
fwrite(p-data,sizeStu,1,fp);
p=p-next;
}
fclose(fp);
print_menu( );//打印菜单 进入循环
scanf("%d",choice);
}
}
用C语言编写一个简单的成绩管理系统
(ps:没有自己编译过)
//我写 C++比较多
#include stdio.h
#include stdlib.h
#include string.h
#include conio.h
#define TOTAL_STUD 1000
typedef struct stud {
char name[20];
int score;
} students[TOTAL_STUD],sorted[TOTAL_STUD];
void delstud (int i) {
students[i].name = "无效学生";
students[i].score = -999;
return;
}
#define show(listname,i) printf("%04d %s %d\n",i,listname[i].name,listname[i].score);
int cmpfunc (const void * a, const void * b)
{
return ( *(stud*)a.score - *(stud*)b.score );
} // 本段代码修改自此处
void run(int menu) {
switch (menu) {
case 1:
char uname[20];
int uid,uscore;
printf("请输入学生姓名:");
scanf("%s",uname);
printf("\n 请输入学生学号:");
scanf("%d",uid);
printf("\n 请输入学生成绩:");
scanf("%d",uscore);
students[uid].name = uname;
students[uid].score = uscore;
printf("\n\n插入成功!\n\n");
break;
case 2:
int delid;
printf("要删除谁?学号?");
scanf("%d",delid);
delstud(delid);
break;
case 3:
for (int i = 0; i TOTAL_STUD; i++) {
strcpy(sorted[i].name,students[i].name);
sorted[i].score=students[i].score;
}
qsort(sorted,TOTAL_STUD,sizeof(stud),cmpfunc);
printf("学号 姓名 分数\n");
for (int i = 0; i TOTAL_STUD; i++) {
if (sorted[i].score -900) show(sorted,i);
}
break;
case 4:
for (int i = 0; i TOTAL_STUD; i++) {
if (students[i].score -900) show(students,i);
}
break;
case 5:
int delid;
printf("要查询谁?学号?");
scanf("%d",delid);
show(students,delid);
break;
default:
printf("-- %d 无此功能。请重试。--",menu);
}
return;
}
int main() {
int key = -1;
for (int i = 0; i TOTAL_STUD; i++) {
delstud(i);
}
while (key != 0) {
printf("---成绩管理系统 V0.9 ---\n 请选择:\n1 -- 录入\n2 -- 删除\n3 -- 排序输出\n4 -- 不排序输出\n5 -- 查询\n0 -- 退出");
key=getch()-48;
if (key0) run(key);
else {
printf("谢谢使用!再见!");
return 0;
}
}
return 0;
}
c语言成绩管理系统
#includestdio.h
#includestdlib.h
#includestring.h
#define N 10
struct student
{
char num[5];
char name[20];
int score;
};
struct student stu[N] = { { "1","张三",90 },{ "2","李四",87 },{ "3","王五",76 },{ "4","赵六",67 },{ "5","刘七",56 } };
int count = 5;
void insert(int i) //输入学生具体信息的函数
{
printf("第%d个学生的姓名:", i + 1);
scanf("%s", stu[i].name);
printf("\n");
printf("第%d个学生的分数:", i + 1);
scanf("%d", stu[i].score);
printf("\n");
count++;
sprintf(stu[i].num,"%d",count);
}
void input() //输入数据的函数
{
system("color 3e");
void menu();
void insert(int i);
int i, j, k, l, r;
printf("您想输入几个学生的信息? (1-%d) [ ]\b\b", N - 5);
scanf("%d", j);
r = 5 + j;
for (i = 5; ir; i++)
{
printf("\n输入第%d个学生的信息。\n", i + 1);
insert(i);
}
do
{
printf("返回菜单请按1! [ ]\b\b");
scanf("%d", k);
if (k == 1)
{
system("cls");
menu();
}
else
l = 0;
} while (l == 0);
}
void search() //查询成绩的函数
{
void menu();
void printf_one(int k);
struct student s;
int i, k, w0, w1, w2;
do
{
printf("请选择查找的类别: 1.姓名 2.学号 [ ]\b\b");
scanf("%d", w1);
if (w11 || w12)
{
printf("输入错误!请重新输入!\n");
w2 = 1;
}
else
w2 = 0;
} while (w2 == 1);
if (w1 == 1) //按姓名查找
{
do
{
k = -1;
do
{
printf("\n请输入您想查找的学生的姓名!\nName:");
scanf("%s", s.name);
for (i = 0; i5; i++)
if (strcmp(s.name, stu[i].name) == 0)
{
k = i;
s = stu[i];
}
if (k == -1) //没有找到
{
int o;
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", o);
if (o == 1)
{
system("cls");
search(); //继续查找
}
else
{
system("cls");
menu(); //返回菜单
}
}
} while (k == -1);
system("cls");
printf_one(k); //查找到以后输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", w0);
} while (w0 == 1);
system("cls");
menu(); //不在查找时返回菜单
}
else //按学号查找
{
do
{
k = -1;
do
{
printf("\n请输入您想查找的学生的学号!\nNum:");
scanf("%s", s.num);
for (i = 0; i5; i++)
if (strcmp(s.num, stu[i].num) == 0) //找到了
{
k = i;
s = stu[i];
}
if (k == -1) //没有找到
{
int o;
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", o);
if (o == 1)
{
system("cls");
search(); // 继续查找
}
else
{
system("cls");
menu(); //返回菜单
}
}
} while (k == -1);
system("cls");
printf_one(k); //找到后输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", w0);
} while (w0 == 1);
system("cls");
menu(); //不在查找时返回菜单
}
}
void xiugai() //修改学生信息的函数
{
void menu();
void printf_one(int k);
void xiugai_2();
struct student s;
int i,n,k,w0=1,w1,w2=0,o;
do
{
k=-1;
do
{
printf("\n请输入您想要修改的学生的姓名!Name:");
scanf("%s",s.name);
for(i=0;i5;i++)
if(strcmp(s.name,stu[i].name) == 0) //与其中一个学生匹配
{
k = i;
s = stu[i];
}
if(k == -1) // 没有找到输入的学生
{
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d",o);
if(o == 1)
{
system("cls");
//xiugai(); //继续修改
}
else
{
system("cls");
menu(); //返回菜单
}
}
}while(k == -1);
system("cls");
printf("修改这个学生的分数:");
scanf("%d", stu[k].score);
printf("\n");
printf_one(k); //输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", o);
if (o != 1)
{
system("cls");
menu(); //返回菜单
}
}while(1);
}
void printf_all() //输出所有学生成绩的函数
{
void menu();
system("color 4e");
int i, j, k;
for (i = 0; iN; i++)
{
printf("学号:%s 姓名:%s 分数:%d\n", stu[i].num, stu[i].name, stu[i].score);
}
do
{
printf("返回菜单请按1 [ ]\b\b");
scanf("%d", j);
if (j == 1)
{
system("cls");
menu();
}
else
{
k = 0;
}
} while (k == 0);
}
void printf_one(int k) //输出某一个学生的信息的函数
{
printf("学号: %s 姓名: %s 分数: %d", stu[k].num, stu[k].name, stu[k].score);
}
void Exit() //退出系统的函数
{
exit(0);
}
void menu() //菜单函数
{
system("color 2e");
printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");
printf("\n");
int n, m;
do
{
puts("\t\t********************菜单*********************");
puts("\t\t*********************************************");
puts("\t\t**************学生学籍管理系统***************");
puts("\t\t*********************************************");
puts("\t\t*********************************************");
puts("\t\t******* 1--输入数据 ****");
puts("\t\t******* 2--查询成绩 ****");
puts("\t\t******* 3--修改成绩 ****");
puts("\t\t******* 4--输出所有学生成绩 ****");
puts("\t\t******* 5--统计及格和优秀的人数 ****");
puts("\t\t******* 6--输出所有不及格学生的成绩 **");
puts("\t\t******* 7--输出所有优秀学生姓名和成绩*");
puts("\t\t******* 8--退出系统 ****");
puts("\t\t*********************************************");
printf("请选择服务种类(1~8): [ ]\b\b");
scanf("%d", n);
if (n1 || n8)
{
system("cls");
printf("选择错误! 请重新选择!\n");
m = 1;
}
else
{
m = 0;
}
} while (m == 1);
switch (n)
{
case 1: system("cls"); input(); break;
case 2: system("cls"); search(); break;
case 3: system("cls"); xiugai(); break;
case 4: system("cls"); printf_all(); break;
// case 5: system("cls"); tongji(); break;
// case 6: system("cls"); printf_all_bujige() break;
// case 7: system("cls"); printf_all_youxiu() break;
case 8: Exit(); break;
}
}
int main()
{
menu();
return 0;
}
C语言 学生成绩管理系统?
附录* 综合实例——学生成绩查询系统
这是一个用c语言编写的小软件——学生成绩查询系统,同学们可以将其作为一个综合实例,对其进行仔细的阅读和研究,体验编程处理问题的过程,加深对编程语言的理解,提高处理问题的综合能力。
1、程序的功能:
1)可以根据用户输入的输入、输出文件名,读入学生成绩,完成数据的初始化。
2)可以查询指定学生的成绩,可以是指定科目的成绩,也可以是全部科目的成绩。
3)友好退出。
2、使用说明:
1)将输入文件放到指定的目录下(即../student/)
图1
2)启动管理程序student.exe
3)在程序的使用界面,首先输入输入文件名和输出文件名,完成程序的初始化,操作如下图所示
图2
然后,按照按照提示,输入学生姓名和需要程序的成绩(此软件暂时只设置了五成成绩,同学们可以按照需要扩展)科目代码,也可以输入查询所有成绩的代码。程序成绩,如下图所示
图3
4)输入代码“q”退出程序。
3、程序代码
#include
#include
#include
FILE *f1,*f2;
char file1[20],file2[20],name[200][20],name1[15];
int n,m,data[200][10];
void init(){
int i,j;
char ch=' ';
printf("%20c欢迎使用班级成绩管理系统\n\n",ch);
printf("请输入输入和输出文件名(中间用一个空格隔开):\n");
scanf("%s %s",file1,file2);// 1)该条语句的功能是什么?
f1=fopen(file1,"r");
f2=fopen(file2,"w");
fscanf(f1,"%d%d",n,m); // 2)该条语句的功能是什么?
for(i=1;i=n;i++)
{
fscanf(f1,"%s",name[i]); // 3)该条语句的功能是什么?
data[i][0]=0; // 4)该条语句的功能是什么?没有这条语句可不可以?
for(j=1;j=m;j++)
{
fscanf(f1,"%d",data[i][j]);
data[i][0]+=data[i][j]; // 5)该条语句的功能是什么?
}
}
fprintf(f2,"name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n ");
for(i=1;i=n;i++)
{
fprintf(f2,"%s\t",name[i]);
for(j=1;j=m;j++)
fprintf(f2,"%d\t",data[i][j]);
fprintf(f2,"%d\n",data[i][0]);
}
fclose(f1);// 6)问什么可以在这关闭输入文件?
fclose(f2);
}
void search(char na[],char num){
int i=1,j;
while((i=n)(strcmp(na,name[i])!=0))i++;
if(i=n){
switch(num){
case '1':printf("%s的语文成绩为%d!\n",na,data[i][1]);break;
case '2':printf("%s的数学成绩为%d!\n",na,data[i][2]);break;
case '3':printf("%s的英语成绩为%d!\n",na,data[i][3]);break;
case '4':printf("%s的物理成绩为%d!\n",na,data[i][4]);break;
case '5':printf("%s的化学成绩为%d!\n",na,data[i][5]);break;
case 'a':
printf("%s的各科成绩为:\n",name[i]);
printf("语文\t数学\t英语\t物理\t化学\t总成绩\n");
for(j=1;j=m;j++)
printf("%d\t",data[i][j]);
printf("%d\n",data[i][0]);
break;
default: printf("没有这种查询方式,请确认后再次输入!\n");
}
}
else printf("查无此人,请确认后再次查询!\n");
printf("\n\n");
}
main(){
init();//数据初始化
printf("数据初始化结束!\n\n");
printf("------------------------------------------------\n\n");
char na[20];
char num;
while(1){ // 7)该条语句的功能是什么?
//scanf("%s%c%c",na,num,num); // 8)此处的输入可不可以用这条语句?
printf("请输入学生的姓名和要查询成绩的科目代码(中间用一个空格隔开):\n(1 语文 2 数学 3 英语 4 物理 5 化学 a 所有科目成绩 q 退出)\n");
scanf("%s",na);
if(strcmp(na,"q")==0)break; // 9)问什么要用这条语句strcmp(na,"q")==0?
scanf("%c%c",num,num); // 10)为什么用了两次num?
search(na,num);
printf("------------------------------------------------\n\n");
printf("\n请输入新的查询:\n\n");
}
system("pause");
}
这是我以前的一个程序,你改改吧,应该很好改