當前位置:首頁 » 考試成績 » 班級學生成績管理程序

班級學生成績管理程序

發布時間: 2020-12-23 20:04:07

㈠ 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;
}

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919