班级学生成绩管理程序
㈠ C++学生成绩管理系统对某专业多个班级的学生的多门功课的成绩进行管理,要求实现以下功能: 1. 输入学生成
// 学生成绩管理系统.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define N 2
struct StudentType
{
char no[10];
char name[10];
double foreigen;
double spec1;
double spec2;
double total;
};
void InputMarks(struct StudentType student[],int n);
void AddMarks(struct StudentType student[],int n);
void OutputMarks(struct StudentType student[],int n);
int _tmain(int argc, _TCHAR* argv[])
{
struct StudentType stu[N];
InputMarks(stu,N);
AddMarks (stu,N);printf("各个考生的总成绩为:\n");
OutputMarks(stu,N);
return 0;
}
void InputMarks(struct StudentType student[],int n)
{
for (int i = 0; i<n; i++)
{
printf("请输入第%d个考生考号:",i+1);
scanf("%s",student[i].no);
printf("请输入第%d个考生姓名:",i+1);
scanf("%s",student[i].name);
printf("请输入第%d个考生的外语成绩:",i+1);
scanf("%lf",student[i].foreigen);
printf("请输入第%d个考生专业课程1:",i+1);
scanf("%lf",student[i].spec1);
printf("请输入第%d个考生专业课程2:",i+1);
scanf("%lf",student[i].spec2);
}
return;
}
void AddMarks(struct StudentType student[] , int n)
{
for (int i= 0; i<n ; i++)
{
student[i].total=student[i].foreigen+student[i].spec1+student[i].spec2;
}
return;
}
void OutputMarks(struct StudentType student[],int n)
{
for (int i=0;i<n;i++)
{
printf("%s的总分是5.lf\n",student[i].name,student[i].total);
}
return;
}
㈡ 学生成绩管理
有一个程序差不多的,但是要你自己去改一下
这个给你参考一下吧
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
typedef struct STUDENT
{
char studentNumber[10];/*学生学号*/
char studentName[20];/*学生姓名*/
char className[20];/*班级名称*/
float mark1;/*第1门成绩*/
float mark2;/*第2门成绩*/
float mark3;/*第3门成绩*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink;/*链表表头指针*/
/*以下是函数声明*/
void ReadInfoFormFile(void);
void DesplayMenu(void);
void CreateHeadLink(void);
STUDENT *MallocNode(void);
void GetInformation(STUDENT *t);
void OutputInformation(void);
void DesplayInfoBystudentName(void);
void DesplayInfoBystudentNumber(void);
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber(void);
void ChangeMarkByName(void);
void ChangeMarkByNumber(void);
void SaveLinkToFile(void);
void DesplayMarkSegment(void);
void CompositorByTotalMark(void);
int choose;/*用于接受用户的选择*/
/*主函数*/
main()
{
CreateHeadLink();
ReadInfoFormFile();
DesplayMenu();
}
/************************************
函数功能:从文件中读学生信息到链表中
************************************/
void ReadInfoFormFile(void)
{
FILE *fp;
STUDENT *p;
fp=fopen("student.txt","r");
if(!fp)
{
printf("文件不存在\n");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3))>0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
函数功能:显示菜单,根据用户的输入
完成相应的功能
************************************/
void DesplayMenu(void)
{
STUDENT *p;
printf("-------请选择相应功能------------\n\n");
printf("| 1 显示所有学生的信息 |\n");
printf("| 2 按姓名查询 |\n");
printf("| 3 按学号查询 |\n");
printf("| 4 增加学生 |\n");
printf("| 5 删除学生 |\n");
printf("| 6 按姓名修改学生成绩 |\n");
printf("| 7 按学号修改学生成绩 |\n");
printf("| 8 保存所有学生信息 |\n");
printf("| 9 显示优秀和不及格学生成绩 |\n");
printf("| 10 排序结果并输出绩 |\n");
printf("| 11 退出 |\n\n");
scanf("%d",&choose);/*取得用户的选择*/
switch(choose)
{
case 1:
OutputInformation();/*显示所有学生的信息*/
break;
case 2:
DesplayInfoBystudentName();
break;
case 3:
DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/
break;
case 4:
p=MallocNode();/*先申请一个新结点*/
GetInformation(p);/*要求用户输入信息到新结点中*/
InsertOneNode(p);/*将新结点加到链表中*/
break;
case 5:
DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/
break;
case 6:
ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/
break;
case 7:
ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/
break;
case 8:
SaveLinkToFile();/*保存数据*/
break;
case 9:
DesplayMarkSegment();/*显示各分数段的学生成绩*/
break;
case 10:
CompositorByTotalMark();
break;
case 11:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit(1);
break;
default:
break;
}
DesplayMenu();/*递归调用*/
}
/************************************
函数功能:建立链表表头
************************************/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p->next=NULL;
}
/************************************
函数功能:申请一个新结点,并将其初始化
************************************/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i<10;i++)
p->studentNumber[i]='\0';
for(i=0;i<20;i++)
p->studentName[i]='\0';
for(i=0;i<20;i++)
p->className[i]='\0';
p->mark1=0.0;
p->mark2=0.0;
p->mark3=0.0;
p->next=NULL;
return p;
}
/************************************
函数功能:取得用户输入的学生信息
************************************/
void GetInformation(STUDENT *t)
{
printf("请输入学生学号:\n");
scanf("%s",t->studentNumber);
printf("请输入学生姓名:\n");
scanf("%s",t->studentName);
printf("请输入该生所在班级:\n");
scanf("%s",t->className);
printf("请输入第1门成绩:\n");
scanf("%f",&(t->mark1));
printf("请输入第2门成绩:\n");
scanf("%f",&(t->mark2));
printf("请输入第3门成绩:\n");
scanf("%f",&(t->mark3));
}
/************************************
函数功能:在链表的结尾处增加一个结点
************************************/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/************************************
函数功能:根据用户输入的学生姓名显示该学生的信息
************************************/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
p=headLink->next;
printf("请输入学生姓名:\n");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生\n",studentName);
}
/************************************
函数功能:根据用户输入的学号显示该学生的信息
************************************/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber[10];
char flag=0;
p=headLink->next;
printf("请输入学生学号:\n");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生\n",studentNumber);
}
/************************************
函数功能:输出一个结点的信息
************************************/
void DesplayOneNode(STUDENT *t)
{
printf("%s\t",t->studentNumber);
printf("%s\t",t->studentName);
printf("%s\t",t->className);
printf("%.2f\t",t->mark1);
printf("%.2f\t",t->mark2);
printf("%.2f\t",t->mark3);
printf("%.2f\t",t->mark1+t->mark2+t->mark3);
printf("%.2f\t\n",(t->mark1+t->mark2+t->mark3)/3);
}
/************************************
函数功能:根据用户输入的学号删除该学生
************************************/
void DeleteNodeBystudentNumber(void)
{
char studentNumber[10];
STUDENT *p,*q;
char flag=0;
printf("请输入要删除的学生学号:");
scanf("%s",studentNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->studentNumber,studentNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
{
printf("不存在该学号的学生\n");
return;
}
printf("成功删除\n");
}
/************************************
函数功能:显示所有学生的信息
************************************/
void OutputInformation(void)
{
STUDENT *p;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息\n\n");
return;
}
printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/************************************
函数功能:根据输入的姓名修改成绩
************************************/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink->next;
printf("请输入学生姓名:\n");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("请输入新的第1门成绩:\n");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:\n");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:\n");
scanf("%f",&mark3);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
flag=1;
printf("修改成功\n");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生\n",studentName);
}
/************************************
函数功能:根据输入的学号修改成绩
************************************/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink->next;
printf("请输入学生学号:\n");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("请输入新的第1门成绩:\n");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:\n");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:\n");
scanf("%f",&mark3);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
flag=1;
printf("修改成功\n");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生\n",studentNumber);
}
/************************************
函数功能:保存链表数据到文件中
************************************/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息\n\n");
return;
}
fp=fopen("student.txt","w+");
if(!fp)
{
printf("文件不存在\n");
return;
}
while(p)
{
fprintf(fp,"%s %s %s %f %f %f\n",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3);
p=p->next;
}
fclose(fp);
}
/************************************
函数功能:显示优秀和不及格学生成绩
************************************/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink->next;
printf("60分以下(不及格)的学生成绩如下:\n");
printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");
while(p)
{
if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10))))/*只要有一科不及格就认为该生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("不及格的学生一共有%d人\n",count);
p=headLink->next;
printf("成绩优秀的学生成绩如下:\n");
printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");
count=0;
while(p)
{
if((8<=((int)(p->mark1/10)))&&(8<=((int)(p->mark2/10)))&&(8<=((int)(p->mark3/10))))
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("成绩优秀的学生一共有%d人\n",count);
}
/************************************
函数功能:按总成绩排序
************************************/
void CompositorByTotalMark(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("现在还没学生信息,请先输入学生信息\n");
return;
}
while(r)/*两层while循环实现排序*/
{
p=r;
q=r->next;
while(q)
{
if((q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3))
{
strcpy(exchange.studentNumber,q->studentNumber);/*先复制q结点信息到exchange*/
strcpy(exchange.studentName,q->studentName);
strcpy(exchange.className,q->className);
exchange.mark1=q->mark1;
exchange.mark2=q->mark2;
exchange.mark3=q->mark3;
strcpy(q->studentNumber,p->studentNumber);/*再复制p结点信息到q*/
strcpy(q->studentName,p->studentName);
strcpy(q->className,p->className);
q->mark1=p->mark1;
q->mark2=p->mark3;
q->mark3=p->mark3;
strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/
strcpy(p->studentName,exchange.studentName);
strcpy(p->className,exchange.className);
p->mark1=exchange.mark1;
p->mark2=exchange.mark2;
p->mark3=exchange.mark3;
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}
㈢ 学生成绩管理 (1) 能按学期、按班级完成对学生成绩的录入、修改 (2) 能按班级统计学生的成绩,
我刚在网上搜了一个,正巧,我们做的是同一个,不过我搜的要求跟你们的有点不一样,我下了专个EXE文件,直接就可以属运行了,全中文界面,不过修改不了,一改就错,就算你把某个字删了再按原来的打上去,一样错,不知道是什么原因.
你不是软件专业的吧,对这个要求应该不高,老师应该很容易让你们过的,要是不嫌弃,就用我下的去蒙混一下,看看可以过关不,
同是天涯沦落人
我在你网络空间留个邮箱地址给你,就这样了,不用我的也没关系,我也是为了蒙混过关而已
㈣ 编写学生成绩管理程序,学生信息包括学号、姓名、入学时间、系别、班级、至少5门课程的成绩名称
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#define cj xueshengchengji /*宏定义*/
#define ss struct student
#define t1 "---------------------------学生成绩------------------------------------ \n"
#define t2 "| 姓名 | 学号 |性别|班级 | 数学 | 英语 | 计算机 | 总成绩 |\n"
#define t3 "|%-6d|%-8s|%-4s|%-5d|%-6d|%-6d|%-8d|%-8d|\n"
#define t4 stu[j].num,stu[j].name,stu[j].sex,stu[j].banji,stu[j].math,stu[j].en,stu[j].computer,stu[j].sum
#define t41 stu[j].num,stu[j].name,stu[j].sex,stu[j].banji,stu[j].math,stu[j].en,stu[j].computer
#define t5 "------------------------------------------------------------------------\n"
struct student /*定义结构体数组*/
{
int num;
char name[20];
char sex[20];
int banji;
int math;
int en;
int computer;
int sum;
}stu[100];
void main()
{
int i=0,s=0;
void save(); /*声明已定义的函数*/
void chaxun();
void xianshiquanbu();
void paixu();
void saver();
void qiuhe();
FILE *fp;
fp=fopen("cj.txt","a+"); /*在作用前,若文件不存在,新建文件*/
fclose(fp);
printf("\n");
printf("-----------------------------主菜单---------------------------------------- \n");
printf(" 请选择功 1.成绩录入 2.成绩查询 0.退出程序\n");
printf(" 能并输入 3.浏览全部学生成绩 4.总成绩排序 \n");
printf(" 相应序号 5.求总成绩 6.保存数据 \n");
printf("--------------------------------------------------------------------------- \n");
scanf("%d",&s);
while(s)
{
switch(s) /*选择所需功能*/
{
case 1: system("cls");save();break;
case 2: system("cls");chaxun();break;
case 3: system("cls");xianshiquanbu();break;
case 4: system("cls");paixu();break;
case 5: system("cls");qiuhe();break;
case 6: system("cls");saver();break;
case 0: system("exit");exit(0);
}
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("-----------------------------主菜单---------------------------------------- \n");
printf(" 请选择功 1.成绩录入 2.成绩查询 0.退出程序\n");
printf(" 能并输入 3.浏览全部学生成绩 4.总成绩排序 \n");
printf(" 相应序号 5.求总成绩 6.保存数据 \n");
printf("--------------------------------------------------------------------------- \n");
scanf("%d",&s);
}
}
void save()
{
int i=0;
while(stu[i].num!=0) /*在录入数据前先将结构体数组指向相应位置*/
i++;
printf("请依次输入:学号 姓名 性别 班级 数学 英语 计算机\n");
scanf("%d%s%s%d%d%d%d",&stu[i].num,stu[i].name,stu[i].sex,&stu[i].banji,
&stu[i].math,&stu[i].en,&stu[i].computer);
system("cls");
if(stu[i].num!=0)
printf("保存成功!");
else printf("保存失败!");
}
void chaxun()
{
int m,j=0;
printf("请输入需要查询的学号:");
scanf("%d",&m);
FILE *fp;
fp=fopen("cj","ab+");
while(stu[j].num!=0)
{ /*判断输入学号是否存在*/
if (m==stu[j].num)
{
printf("-----------------------\n");
printf("| 数学 | 英语 | 计算机 |\n");
printf("|%-6d|%-6d|%-8d|\n",stu[j].math,stu[j].en,stu[j].computer);
printf("-----------------------");
break;
}
j++;
}
fclose(fp);
}
void xianshiquanbu()
{
int j=0;
printf(t1);
printf(t2);
while(stu[j].num!=0)
{
stu[j].sum=stu[j].math+stu[j].en+stu[j].computer;
printf(t3,t4);
j++;
}
printf(t5);
}
void paixu()
{
int j,k,i=0;
struct student temp;
while(stu[i].num!=0)
i++;
for(j=0;j<i-1;j++)
{
for( k=j+1;k<i;k++)
{
if(stu[j].sum<stu[k].sum) /*利用双重循环排序,此为交换两结构体位置*/
{
temp=stu[j];
stu[j]=stu[k];
stu[k]=temp;
}
}
}
printf(t1);
printf(t2);
for(j=0;j<i;j++){ /*利用循环输出程序*/
printf(t3,stu[j].num,stu[j].name,stu[j].sex,stu[j].banji,
stu[j].math,stu[j].en,stu[j].computer,stu[j].sum);
}
printf(t5);
}
void qiuhe()
{
int j=0;
printf(t1);
printf(t2);
while(stu[j].num!=0) /*利用循环对每个结构体中的三项成绩求和*/
{
stu[j].sum=stu[j].math+stu[j].en+stu[j].computer;
printf(t3,stu[j].num,stu[j].name,stu[j].sex,stu[j].banji,
stu[j].math,stu[j].en,stu[j].computer,stu[j].sum);
j++;
}
printf(t5);
}
void saver()
{
int j=0;
FILE *fp;
fp=fopen("cj.txt","a+"); /*将其以txt形式保存*/
while(stu[j].num!=0)
{
fprintf(fp,"|%-6d|%-8s|%-4s|%-5d|%-6d|%-6d|%-8d|%-8d|",
stu[j].num,stu[j].name,stu[j].sex,stu[j].banji,stu[j].math,stu[j].en,stu[j].computer,stu[j].sum);
fprintf(fp,"\n");
j++;
}
if(stu[j].num!=NULL)
printf("保存失败!");
else printf("保存成功!");
fclose(fp);
}
㈤ 现有一个班级,50人,共学习三门课程,设计一个学生成绩管理程序,要求如下: 1、 完成三门课程及录入;或
问题都没有完啊
分有点少
网上有好多成绩管理系统下载啊
㈥ 设计一个统计班级学生成绩的c语言程序
仅供参考:
#include"stdio.h"
#defineN35
structstudent
{
intnum; //学号
charname[8]; //姓名
intnannv; //性别
intchines; //语文成绩
intmath; //数学成绩
intEnglish; //英语成绩
intphysics; //物理成绩
intsum; //总分
doubleavr; //平均分
}stu[N];
voidinput(intn)
{
inti;
for(i=0;i<n;i++)
{
intsum=0;
doubleavr=0.0;
printf("请输入第%d个学生信息 ",i+1);
printf("请输入学号:");
scanf("%d",&stu[i].num);
printf("请输入姓名:");
scanf("%s",stu[i].name);
printf("请输入性别:");
scanf("%d",&stu[i].nannv);
printf("请输入语文成绩:");
scanf("%d",&stu[i].chines);
printf("请输入数学成绩:");
scanf("%d",&stu[i].math);
printf("请输入英语成绩:");
scanf("%d",&stu[i].English);
printf("请输入物理成绩:");
scanf("%d",&stu[i].physics);
//计算总分和平均分
stu[i].sum=stu[i].chines+stu[i].math+stu[i].English+stu[i].physics;
stu[i].avr=(double)(stu[i].sum*1.0/4);
}
}
voidoutput(intn)
{
inti;
for(i=0;i<n;i++)
{
printf("------------------------------------------------------------------ ");
printf("第%d名: ",i+1);
printf("学号:%d 姓名:%s 性别:%d ",stu[i].num,stu[i].name,stu[i].nannv);
printf("语文成绩:%d 数学成绩:%d 英语成绩:%d 物理成绩:%d ",
stu[i].chines,stu[i].math,stu[i].English,stu[i].physics);
printf("总分:%d 平均分:%.2f ",stu[i].sum,stu[i].avr);
printf("------------------------------------------------------------------ ");
}
}
voidsort(intn)
{
inti,j;
structstudentst;
//冒泡排序
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(stu[j].sum<stu[j+1].sum)
{
st=stu[j];
stu[j]=stu[j+1];
stu[j+1]=st;
}
}
}
}
voidmain()
{
intn;
printf("请输入学生人数:");
scanf("%d",&n);
input(n); //输入学生信息
sort(n); //按总成绩排序
printf("排名信息如下: ");
output(n); //输出学生信息
}
㈦ C语言程序设计 班级学生成绩管理系统
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
#define ADDRFILE "c:\\addrlist.txt"
typedef struct tagLinkedList
{
char name[30];
char tel[30];
char addr[100];
struct tagLinkedList *prev;
struct tagLinkedLIst *next;
}ADDR;
ADDR *g_pAddrHead = NULL;
ADDR *g_pFind;
int g_bSaved = 1;
void get_addrlist(void);
int add_list(const ADDR *addr);
int find_list(const char *name);
void SetHeadPosition(void);
void SetTailPosition(void);
void Add_addr(void);
void Find_addr(void);
void Modify_addr(void);
void Delete_addr(void);
void Print_addr(void);
void Save_addr(void);
void Remove_addr(void);
void main(void)
{
int ch;
get_addrlist();
puts("通讯录程序 Version 1.0");
while(1)
{
printf("\n[1]新增 [2]搜索 [3]修改 [4]删除 [5]输出 [S]储存 [Q]退出");
ch = getch();
switch(ch)
{
case '1': Add_addr();break;
case '2': Find_addr();break;
case '3': Modify_addr();break;
case '4': Delete_addr();break;
case '5': Print_addr();break;
case 's':
case 'S': Save_addr();break;
case 'q':
case 'Q':
if(g_bSaved == 0)
{
printf("\n\n修改后的数据需要储存吗?(y/n)?");
ch = getchar();
if(ch == 'Y' || ch == 'y') Save_addr();
}
Remove_addr(); exit(1);
default : printf("\n\n 请按1~5或S/Q健.\n\n");break;
}
}
}
void get_addrlist(void)
{
ADDR addr;
FILE *fp;
fp = fopen(ADDRFILE,"rb");
if(fp == NULL)
{
perror("open file error;");
return;
}
while(!feof(fp))
{
fread(&addr,1,sizeof(ADDR),fp);
if(ferror(fp))
{
fclose(fp);
perror("file read error;");
return;
}
if(feof(fp))break;
if(add_list(&addr) == 0)
{
printf(".\n");
}
}
fclose(fp);
}
int add_list(const ADDR *addr)
{
ADDR *plocal,*pn = g_pAddrHead;
SetHeadPosition();
if(g_pAddrHead == NULL)
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));
if(plocal == NULL)
{
return 0;
}
g_pAddrHead = plocal;
g_pAddrHead->prev = NULL;
g_pAddrHead->next = NULL;
}
else
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));
if(plocal == NULL)
{
return 0;
}
while(pn->next)
{
pn = pn->next;
}
pn->next = plocal;
plocal->prev = pn;
plocal->next = NULL;
}
strcpy(plocal->name,addr->name);
strcpy(plocal->tel,addr->tel);
strcpy(plocal->addr,addr->addr);
return 1;
}
int find_list(const char *name)
{
ADDR *plocal;
SetHeadPosition();
plocal = g_pAddrHead;
while(plocal)
{
if(strstr(plocal->name,name))
{
g_pFind = plocal;
return 1;
}
plocal = plocal->next;
}
return 0;
}
void SetHeadPosition(void)
{
if(g_pAddrHead == NULL) return;
while(g_pAddrHead->prev)
{
g_pAddrHead = g_pAddrHead->prev;
}
}
void SetTailPosition(void)
{
if(g_pAddrHead == NULL) return;
while(g_pAddrHead->next)
{
g_pAddrHead = g_pAddrHead->next;
}
}
void Remove_addr(void)
{
ADDR *plocal;
if(g_pAddrHead == NULL) return;
SetHeadPosition();
while(g_pAddrHead)
{
plocal = g_pAddrHead->next;
free(g_pAddrHead);
g_pAddrHead = plocal;
}
g_pAddrHead = NULL;
}
void Add_addr(void)
{
ADDR addr;
memset(&addr,0,sizeof(ADDR));
printf("\n\nName: ");gets(addr.name);
if(strlen(addr.name) == 0) return;
printf("TEL: ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);
if(find_list(addr.name) == 1)
{
printf("\n已经存在的姓名.\n\n");
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
return;
}
if(add_list(&addr))
{
g_bSaved = 0;
printf("\n储存完毕.\n\n");
}
}
void Find_addr(void)
{
char buff[100] ={0,};
ADDR *plocal;
printf("\n\n请输入要查找的姓名/电话/地址.\n");
printf("姓名/电话/地址 :");gets(buff);
if(strlen(buff) == 0) return;
SetHeadPosition();
plocal = g_pAddrHead;
g_pFind = NULL;
while(plocal)
{
if(strstr(plocal->name,buff))
{
g_pFind = plocal;
break;
}
if(strstr(plocal->tel,buff))
{
g_pFind = plocal;
break;
}
if(strstr(plocal->addr,buff))
{
g_pFind = plocal;
break;
}
plocal = plocal->next;
}
if(g_pFind)
{
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
}
else
{
printf("\n\n搜索不到要找的%s.\n\n",buff);
}
}
void Modify_addr(void)
{
char name[100] = {0,};
ADDR addr;
while(1)
{
printf("\n\n要修改的姓名: ");gets(name);
if(strlen(name) == 0) return;
if(find_list(name) == 0)
{
puts("输入的姓名不存在.");
continue;
}
break;
}
printf("\n%s的通讯录如下:\n\n",name);
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
printf("\n输入要修改的姓名/电话/地址.\n\n");
printf("NAME: ");gets(addr.name);
printf("TEL : ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);
if(strlen(addr.name)==0) strcpy(addr.name,name);
strcpy(g_pFind->name,addr.name);
strcpy(g_pFind->tel,addr.tel);
strcpy(g_pFind->addr,addr.addr);
g_bSaved = 0;
printf("%s的通讯录修改成功.\n",name);
}
void Delete_addr(void)
{
char name[100] ={0,};
ADDR *plocal;
int ch;
while(1)
{
printf("\n\n要删除的姓名: ");gets(name);
if(strlen(name)==0) return;
if(find_list(name) == 0)
{
puts("要删除的通讯录不存在.");
continue;
}
break;
}
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
printf("确定要删除%s的通讯录吗(y/n)?",name);
ch = getch();
fflush(stdin);
if(ch == 'Y'||ch == 'y')
{
if(g_pFind->prev == NULL)
{
if(g_pFind->next == NULL)
{
free(g_pFind);
g_pAddrHead = NULL;
}
else
{
plocal = g_pFind->next;
free(g_pFind);
plocal->prev =NULL;
g_pAddrHead = plocal;
}
}
else if(g_pFind->next == NULL)
{
plocal = g_pFind->prev;
free(g_pFind);
plocal->next =NULL;
g_pAddrHead = plocal;
}
else
{
plocal = g_pFind->prev;
plocal->next = g_pFind->next;
plocal = g_pFind->next;
plocal->prev = g_pFind->prev;
free(g_pFind);
g_pAddrHead = plocal;
}
g_bSaved = 0;
printf("\n\n删除完毕.\n\n");
}
}
void Print_addr(void)
{
int count = 1;
ADDR *plocal;
SetHeadPosition();
if(g_pAddrHead == NULL)
{
printf("\n\n无任何数据\n");
return;
}
plocal = g_pAddrHead;
while(plocal->prev)
{
plocal=plocal->prev;
}
printf("\n\n");
while(plocal)
{
printf("NO.%d\n",count++);
puts(plocal->name);
puts(plocal->tel);
printf("%s\n\n",plocal->addr);
printf("请按任意一健(结束:q)\n\n");
getch();
if(getch() == 'q')return;
plocal=plocal->next;
}
}
void Save_addr(void)
{
ADDR *plocal, *pn;
FILE *fp;
if(g_pAddrHead == NULL) return;
fp = fopen(ADDRFILE,"w+b");
if(fp == NULL)
{
perror("file open error;");
return;
}
SetHeadPosition();
plocal = g_pAddrHead;
while(plocal)
{
pn = plocal->next;
plocal = pn;
}
printf("\n所有数据已经储存完毕.");
g_bSaved = 1;
fclose(fp);
}
㈧ 设计一个程序进行学生成绩管理。假设对某个班级的学生的5门课程的学习成绩进行管理。 要求:①求每门课程
设计四个OPTION,一个文本框TEXT及一个COMMANDBUTTON就可以了,每一个OPTION对应一个要求.
1.在文本框中输入要版求平均成绩的科目权,然后确定.
KM=UPPER(ALLT(THISFORM.TEXT1.VALUE))
AA=SUM(&KM)/RECCOUNT()
MESSAGEBOX(KM+"的平均成绩为:"+ALLT(STR(AA)),0+48+0,"平均成绩"
2.要看你把结果输出到什以地方,暂时输出到窗口吧.
KM=UPPER(ALLT(THISFORM.TEXT1.VALUE))
SET FILTER TO &KM>=90分 &&若90分算是优秀的话.
GO TOP
LIST
3.SET FILTER TO KMA<60 .OR. KMB<60 .OR. KMC<60 .OR. KMD<60 .OR. KME<60
4.KM=UPPER(ALLT(THISFORM.TEXT1.VALUE))
INDE ON &KM TO IND.IDX
SET INDE TO IND.IDX
BROW
以上都需要在原始表打开的情况下进行.
㈨ 用C语言程序编写题目为 班级学生成绩管理系统。
如果要来写时间来不急,,我建议就自是先在网上找个。 然后自己发一些时间把一些自己认为对自己有用的部分去尝试不懂的去问。然后去上机试试,之后再交上去。并且注明是网上抄袭的。。但是在里面学到一些书本上难以理解的知识!!!
㈩ 使用STL模板编写程序管理一个班级学生的面向对象的课程成绩,要求能够实现以下功能:
||#include <vector>
#include <iterator>
#include <iostream>
#include <algorithm>
#include <string>
#include <limits>
class Student
{
public:
Student(int id,int score)
:m_id(id)
,m_score(score)
{
}
bool operator <(const Student& other)
{
return m_score<other.m_score;
}
bool operator ==(const Student& other)
{
return m_id==other.m_id;
}
int m_id,m_score;
};
std::ostream& operator<<(std::ostream& o,const Student& s)
{
o<<"id: "<<s.m_id<<" score: "<<s.m_score;
return o;
}
int main(int argc, char *argv[])
{
std::cout<<"a [id] [score] to add\n"
"d [id] to delete\n"
"f [id] to find\n"
"s to sort\n"
"p to print\n"
"q to quit\n"<<std::endl;
char status;
int id=0,score=0;
std::vector<Student> students;
bool done=false,errorFlag=false;
do{
std::cin>>status;
switch(status){
case 'q':
done=true;
break;
case 'a':
std::cin>>id>>score;
students.push_back(Student(id,score));
std::cout<<id<<" added.";
break;
case 'd':
{
std::cin>>id;
Student s(id,-1);
std::vector<Student>::iterator itr=std::find(students.begin(),students.end(),s);
if(itr!=students.end()){
students.erase(itr);
std::cout<<id<<" deleted.";
}
else
std::cout<<"student ["<<id<<"] do not exists!";
}
break;
case 'f':
{
std::cin>>id;
Student s(id,-1);
std::vector<Student>::iterator itr=std::find(students.begin(),students.end(),s);
if(itr==students.end())
std::cout<<"student ["<<id<<"] do not exists!";
else
std::cout<<*itr<<" finded.";
}
break;
case 's':
std::sort(students.begin(),students.end());
std::cout<<"sort end!";
break;
case 'p':
std::(students.begin(),students.end(),std::ostream_iterator<Student>(std::cout,"\n"));
std::cout<<"print end!";
break;
default:
errorFlag=true;
}
if(errorFlag||std::cin.fail()){
errorFlag=false;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout<<"error when input.";
}
std::cout<<std::endl;
}while(!done);
std::cout<<"bye!"<<std::endl;
}