培訓機構管理系統c語言代碼,c++教務管理系統源代碼

本文目錄一覽:

學生會組織機構管理系統的設計與實現(C語言算法)急,請C語言高手幫忙

剛寫好的代碼,VC下編譯通過。合併排序法的關鍵步驟實現。

#include stdio.h

#include stdlib.h

void merge(int A[], int B[], int C[], int n1, int n2){

int i = 0;

int j = 0;

int k = 0;

int pA = 0, pB = 0;

for(k=0; kn1+n2; k++){

if(pA==1 pB==0){

C[k] = B[j];

j++;

}

else if(pA==0 pB==1){

C[k] = A[i];

i++;

}

else if(pA==0 pB==0){

if(A[i]B[j]){

C[k] = A[i];

i++;

if(i=n1)

pA = 1;

}

else{

C[k] = B[j];

j++;

if(j=n2)

pB = 1;

}

}

}

}

void main(){

int n1, n2;

int *A, *B, *C;

int i;

printf(“輸入n1: “);

scanf(“%d”, n1);

A = (int*)malloc(sizeof(int)*n1);

printf(“從小到大輸入%d個整數: \n”, n1);

for(i=0; in1; i++){

printf(“A[%d] = “, i);

scanf(“%d”, A[i]);

}

printf(“輸入n2: “);

scanf(“%d”, n2);

B = (int*)malloc(sizeof(int)*n2);

printf(“從小到大輸入%d個整數: \n”, n2);

for(i=0; in2; i++){

printf(“B[%d] = “, i);

scanf(“%d”, B[i]);

}

C = (int*)malloc(sizeof(int)*(n1+n2));

printf(“A: “);

for(i=0; in1; i++)

printf(“%d “, A[i]);

printf(“\n”);

printf(“B: “);

for(i=0; in2; i++)

printf(“%d “, B[i]);

printf(“\n”);

merge(A, B, C, n1, n2);

printf(“調用merge()函數對A和B進行合併,結果保存在C…\n”);

printf(“合併後的C: “);

for(i=0; in1+n2; i++)

printf(“%d “, C[i]);

printf(“\n”);

free(A);

free(B);

free(C);

}

跪求c語言教務管理系統源代碼

#include stdio.h

#include string.h

#include windows.h

struct student

{

long int num;

char name[20];

int age;

char sex[4];

char b[30];

char p[15];

};

int n=0;

struct student stu[100];

struct student *p;

void lr();

void ll();

void cx();

void xg();

void sc();

void main()

{

int z;

printf(“+—————————+\n”);

printf(“| 歡迎使用學生信息管理系統 |\n”);

printf(“+—————————+\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+ [0]—-退出系統 |\n”);

printf(“\t\t\t——————————–\n”);

printf(“請輸入您的選擇:”);

scanf(“%d”, z);

system(“color 2f”);

switch(z)

{

case 0 : break;

case 1 :lr();break;

case 2 :ll();break;

case 3 :cx();break;

case 4 :sc();break;

case 5 :xg();break;

default:printf(“\n無效選項!”);

}

}

while(z!= 0);

}

void lr()/*錄入函數*/

{

int y;

if(n==0)

p=stu;

do

{

printf(“——————–\n”);

printf(“請輸入學生的學號:”);

scanf(“%ld”,p-num);

printf(“請輸入學生的姓名:”);

scanf(“%s”,p-name);

printf(“請輸入學生的年齡:”);

scanf(“%d”,p-age);

printf(“請輸入學生的性別:”);

scanf(“%s”,p-sex);

printf(“請輸入學生的地址:”);

scanf(“%s”,p-b);

printf(“請輸入學生的電話:”);

scanf(“%s”,p-p);

n++;

p++;

printf(“\n1.繼續輸入.\n0.輸入完畢.\n”);

printf(“請選擇:”);

scanf(“%d”,y);

}

while(y==1);

printf(“提示:輸入完畢!你一共輸入%d個\n”,n);

}

void ll()/*瀏覽函數*/

{

int i,j;

if(n!=0)

{ printf(“學生總數:%d\n”, n);

printf(“學號\t姓名\t年齡\t性別\t地址\t\t電話\n”);

printf(“—————————————————–\n”);

for(i=0;in;i++)

printf(“%ld\t%s\t%d\t%s\t%s\t\t%s\n”,stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

}

else printf(“提示:無學生數據,請輸入數據!”);

}

void cx()/*查詢函數*/

{

int c;

int w,i,j=0;

char name[20];

if(n!=0)

{

do{ printf(“\n”);

printf(“+——————–+\n”);

printf(“| 按學號查詢 請按 1 |\n”);

printf(“| 按姓名查詢 請按 2 |\n”);

printf(“| 取消 請按 0 |\n”);

printf(“+——————–+\n”);

printf(“請輸入您的選擇:”);

scanf(“%d”, c);

switch(c)

{

case 0:break;

case 1:

printf(“請輸入學生的學號;”);

scanf(“%ld”, w);

printf(“\n”);

for(i=0;in;i++)

if(stu[i].num==w)

{

printf(“\n學號\t姓名\t年齡\t性別\t地址\t\t電話\n”);

printf(“%ld\t%s\t%d\t%s\t%s\t\t%s\n”,stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

j=1;

}

if(j==0)

printf(“提示:沒有該學生記錄,請核對!”);

break;

case 2:

printf(“請輸入學生的姓名:”);

scanf(“%s”, name);

printf(“\n”);

for(i=0;in;i++)

if(strcmp(name,stu[i].name)==0)

{

printf(“\n學號\t姓名\t年齡\t性別\t地址\t\t電話\n”);

j=1;

printf(“%ld\t%s\t%d\t%s\t%s\t\t%s\n”,stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

}

if(j==0)

printf(“提示:沒有該學生記錄,請核對!”);

break;

default:

printf(“\n提示:無效選項!”);

break;

}

}while(c!= 0);

}else printf(“提示:無學生數據,請輸入數據!”);

return;

}

void xg()/*修改函數*/

{

long int num;

int i,j,c;

if(n!=0)

{

printf(“請輸入您要修改的學生的學號:”);

scanf(“%ld”, num);

printf(“\n”);

for(i=0;in;i++)

if(stu[i].num==num)

j=i;

do{

printf(“請選擇您要修改的學生的信息內容:\n”);

printf(“+———————-+\n”);

printf(“| 姓名 請按 1 |\n”);

printf(“| 年齡 請按 2 |\n”);

printf(“| 性別 請按 3 |\n”);

printf(“| 學號 請按 4 |\n”);

printf(“| 地址 請按 5 |\n”);

printf(“| 電話 請按 6 |\n”);

printf(“| 取消 請按 0 |\n”);

printf(“+———————-+\n”);

printf(“請輸入您的選擇:”);

scanf(“%d”, c);

printf(“\n”);

switch(c)

{

case 0:break;

case 1:printf(“請輸入新姓名:”);

scanf(“%s”,stu[j].name);

break;

case 2:printf(“請輸入新年齡:”);

scanf(“%d”,stu[j].age);

break;

case 3:printf(“請輸入新性別:”);

scanf(“%s”,stu[j].sex);

break;

case 4:printf(“請輸入新學號:”);

scanf(“%ld”,stu[j].num);

break;

case 5:printf(“請輸入新地址:”);

scanf(“%s”,stu[j].b);

break;

case 6:printf(“請輸入新電話:”);

scanf(“%s”,stu[j].p);

break;

default:

printf(“\n無效選項!”);

break;

}

}while(c!= 0);

}else printf(“提示:無學生數據,請輸入數據!”);

}

void sc()/*刪除函數*/

{

long int num;

int i,j,e;

if(n!=0)

{

printf(“學號\t姓名\t年齡\t性別\t地址\t\t電話\n”);

printf(“—————————————————–\n”);

for(i=0;in;i++)

printf(“%ld\t%s\t%d\t%s\t%s\t\t%s\n”,stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

printf(“請輸入您要刪除的學生的學號:”);

scanf(“%ld”, num);

printf(“\n”);

for(i=0;in;i++)

if(num==stu[i].num)

j=i;

if(j!=(n-1))

{

for(e=i-1;en;e++,j++)

{

stu[j].num=stu[j+1].num;

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j].sex,stu[j+1].sex);

stu[j].age=stu[j+1].age;

strcpy(stu[j].b,stu[j+1].b);

strcpy(stu[j].p,stu[j+1].p);

n–;p–;

}

}else {n–;p–;}

printf(“提示:刪除完畢!”);

}else printf(“提示:無學生數據,請輸入數據!”);

}

c語言學生管理系統源代碼

頭文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include “stdio.h”

#include “string.h”

#include “malloc.h”

#define LEN sizeof(struct message_student) /*一個結構體數組元素的長度*/

#define numsubs 5 /*學科數目*/

typedef struct message_student /*結構體定義*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /*學生數目*/

extern student *pointer; /*指向結構體數組*/

extern int lens;

int menu_select(); /*函數聲明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include “head.h”

int menu_select()

{

char c;

printf(“\n\n”);

printf(” | 1. 增加學生記錄 5.統計信息 |\n”);

printf(” | 2. 查詢學生記錄 6.打開文件 |\n”);

printf(” | 3. 修改學生記錄 7.保存文件 |\n”);

printf(” | 4. 學生紀錄排序 8.顯示記錄 |\n”);

printf(” | 0.退出系統 |\n”);

printf(“\n\n”);

printf(“請選擇(0-8):”);

c=getchar();

getchar();

return (c-‘0’);

}

#include “head.h”

int findrecord(student stud[]) /*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf(“沒有可被查找的記錄\n”);

return -1;

}

else

{

printf(“以何種方式查找?\n1.學號\t2.姓名\t3.名次\n”);

gets(str);

if(str[0]==’1′) /*按學號查找*/

{

printf(“請輸入學號:”);

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]==’2′) /*按姓名查找*/

{

printf(“請輸入姓名:”);

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]==’3′) /*按名次查找*/

{

printf(“請輸入名次:”);

scanf(“%d”,num);

getchar();

for(i=0;i=numstus;i++)

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

printf(“沒有查找所要的信息。\n”);

return -1;

}

return i;

}

}

#include”head.h”

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

printf(“已經有記錄存在,是否保存?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

writetotext(stu);

}

printf(“請輸入文件名:”);

gets(filename);

numstus=0;

if((fp=fopen(filename,”rb+”))==NULL)

{

printf(“無法打開該文件\n”);

return(-1);

}

fscanf(fp,”%d”,numstus);

fgetc(fp);

while(inumstus)

{

fscanf(fp,”%s”,stu[i].number);

fscanf(fp,”%s”,stu[i].name);

fscanf(fp,”%s”,stu[i].sex);

for(j=0;jnumsubs;j++)

fscanf(fp,”%f”,stu[i].subject[j]);

fscanf(fp,”%f”,stu[i].score);

fscanf(fp,”%f”,stu[i].average);

fscanf(fp,”%d”,stu[i].index);

i++;

}

fclose(fp);

printf(“文件讀取成功\n”);

printf(“是否顯示紀錄?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

display(stu,0,numstus-1);

return(0);

}

#include “head.h”

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

printf(“沒有可供查詢的記錄!”);

}

while(1)

{

for(i=0;;i++)

{

printf(” 請輸入查詢方式:”);

printf(“(直接輸入回車則結束查詢操作)\n”);

printf(“1.按照學號\t”);

printf(“2.按照姓名\t”);

printf(“3.按照名次\n”);

gets(str);

if(strlen(str)==0) break;

if(str[0]==’1′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]==’2′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]==’3′)

{

printf(“請輸入排序次序:\n”);

printf(“1.升序排列\t”);

printf(“2.降序排列\n”);

gets(str);

if(str[0]==’1′)

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf(“請輸入1~3”);

printf(“是否退出排序?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’) break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[j].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include”head.h”

void statistic(student stud[]) /*新增功能,輸出統計信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf(“沒有可被查找的記錄\n”);

else

{

while(1)

{

printf(“下面將統計考試成績\n”);

printf(“請選擇你要統計哪科的成績 1.A\t2.B\t3.C\t4.D\t5.E\n”);

c1=getchar();

printf(“\t一共有個%d記錄\n”,numstus); /*總共記錄數*/

switch(c1)

{

case ‘1’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]stud[i].subject[0]) k=i;

if(stud[j].subject[0]stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf(“\t科目A的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[0]);

printf(“\t科目A的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[0]);

printf(“\t科目A的平均分是 %5.2f\n”,average[0]); /*平均分*/

break;

case ‘2’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]stud[i].subject[1]) k=i;

if(stud[j].subject[1]stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf(“\t科目B的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[1]);

printf(“\t科目B的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[1]);

printf(“\t科目B的平均分是 %5.2f\n”,average[1]); /*平均分*/

break;

case ‘3’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]stud[i].subject[2]) k=i;

if(stud[j].subject[2]stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf(“\t科目C的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[2]);

printf(“\t科目C的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[2]);

printf(“\t科目C的平均分是 %5.2f\n”,average[2]); /*平均分*/

break;

case ‘4’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]stud[i].subject[3]) k=i;

if(stud[j].subject[3]stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf(“\t科目D的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[3]);

printf(“\t科目D的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[3]);

printf(“\t科目D的平均分是 %5.2f\n”,average[3]); /*平均分*/

break;

case ‘5’:

for(i=0;inumstus;i++) /*循環輸入判斷*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]stud[i].subject[4]) k=i;

if(stud[j].subject[4]stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf(“\t科目E的最高分:\n”); /*最高分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[j].number,stud[j].name,stud[j].subject[4]);

printf(“\t科目E的最低分是:\n”); /*最低分*/

printf(“\t\t學號:%s 姓名:%s 分數:%.2f\n”,stud[k].number,stud[k].name,stud[k].subject[4]);

printf(“\t科目E的平均分是 %5.2f\n”,average[4]); /*平均分*/

break;

default:printf(“輸入錯誤!請輸入1~5之間的數\n”);

}

sum=0;

getchar();

printf(“是否繼續進行統計?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’) ;

else break;

}

}

}

#include”head.h”

int writetotext(student stud[]) /*將所有記錄寫入文件*/

{

int i=0,j;

FILE *fp;

char filename[20];

printf(“輸入文件名稱:”);

gets(filename);

fp=fopen(filename,”w”);

fprintf(fp,”%d\n”,numstus);

while(inumstus)

{

fprintf(fp,”%s %s %s “,stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;j++)

fprintf(fp,”%f “,stud[i].subject[j]);

fprintf(fp,”%f %f %d “,stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

printf(“已成功存儲!\n”);

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include”head.h”

void welcome()

{

printf(“\t*************************************************************\n”);

printf(“\t\t\t\t這是一個學生成績管理系統\n\t\t\t\t 傾情奉獻 歡迎使用!\n”);

printf(“\t*************************************************************\n”);

}

void showtable()

{

printf(“—————————————————————————————\n”);

printf(“學號\t姓名\t性別\tA\tB\tC\tD\tE\t總分\t平均分\t名次\n”);

printf(“—————————————————————————————\n”);

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /*顯示錶頭*/

for(i=n1;i=n2;i++)

printf(“%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n”,stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通過循環輸出數據*/

}

void display1()

{

printf(“\t\t本系統由計應精英一組親情製作\n\n”);

printf(“\t\t製作人員列表: (按比劃)\n”);

printf(“\t\t王慶斌\t\t\t張威\n\t\t李智\t\t\t周在峰\n\t\t楊凱\t\t\t胡楊\n”);

printf(“\n\n”);

getchar();

}

#include”head.h”

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用戶輸入*/

int i=-1,j;

if(numstus==0) /*沒有記錄返回*/

printf(“沒有可供修改的記錄!”);

while(i0)

{

i=findrecord(stud);

if(i=0)

{

printf(“要刪除這個學生的信息嗎?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

{

deleterecord(stud,i);

count(stud);

}

else

{

printf(“確定要修改這個學生的信息嗎?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

{

printf(“下面請重新輸入學生的信息:\n”);

printf(“請輸入學號:”);

gets(stud[i].number);

printf(“請輸入姓名:”);

gets(stud[i].name);

printf(“請輸入性別(男/女 1/0):”);

gets(str);

if(str[0]==’0′)

strcpy(stud[i].sex,”女”);

else

strcpy(stud[i].sex,”男”);

stud[i].score=0;

printf(“請按順序輸入成績:”);

for(j=0;jnumsubs;j++)

{

scanf(“%f”,stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf(“是否繼續進行其他修改?(y/n)\n”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i) /*刪除信息*/

{

int j;

while(i=0)

{

for(j=i;jnumstus;j++)

stu[j]=stu[j+1];

numstus–;

printf(“刪除成功!\n”);

}

}

void count(student stud[])

{

int i,j;

for(i=0;inumstus;i++)

{

stud[i].index=1;

for(j=0;jnumstus;j++)

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include “head.h”

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf(“已有記錄存在是否覆蓋?(y/n)\n”);

gets(str);

if(str[0]==’Y’||str[0]==’y’)

i=0;

else i=numstus;

}

printf(“請輸入增加的學生信息條目數:”);

scanf(“%d”,num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

printf(“請輸入學生信息:\n”);

for(;inumstus;i++)

{

getchar();

printf(“請輸入學號:”);

gets(pointer[i].number);

printf(“請輸入姓名:”);

gets(pointer[i].name);

printf(“請輸入性別(男/女 1/0):”);

gets(pointer[i].sex);

if(pointer[i].sex[0]==’0′) strcpy(pointer[i].sex,”女”);

else strcpy(pointer[i].sex,”男”);

printf(“請輸入各科成績:(按ABCDE的順序):”);

stud[i].score=0;

for(j=0;jnumsubs;j++)

{

scanf(“%f”,stud[i].subject[j]); /*計算總分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs; /*計算平均分*/

}

count(stud); /*附名次*/

display(stud,0,numstus-1);

getchar();

}#include “head.h”

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student *)malloc(lens*LEN); /*分配內存*/

numstus=0;

welcome(); /*歡迎界面*/

while(i0)

{

i=menu_select(); /*控制菜單*/

switch(i)

{

case 1:addrecord(pointer);break; /*增加學生信息*/

case 2:findrecord(pointer);break; /*查詢學生信息*/

case 3:amendrecord(pointer);break; /*修改學生信息*/

case 4:sort(pointer);break; /*學生信息排序*/

case 5:statistic(pointer);break; /*統計信息*/

case 6:openfile(pointer);break; /*打開文件*/

case 7:writetotext(pointer);break; /*保存文件*/

case 8:display(pointer,0,numstus-1);break; /*顯示記錄*/

case 0:

if(numstus!=0) printf(“是否保存當前記錄?(y/n)”);

gets(str);

if(str[0]==’y’||str[0]==’Y’)

writetotext(pointer);

i=-1;break; /*退出系統*/

default:printf(“請輸入數字0~8:\n”);i=1; /*輸入錯誤*/

}

}

printf(“\t\t歡迎再次使用本系統。\n\n”);

display1();

}

自己一改就能用,給我加分哈!

打字不易,如滿意,望採納。

c語言課程設計—教師工作量管理系統源代碼

#includestdio.h //標準輸入、輸出頭文件

#includestring.h //包含字符串函數處理頭文件

#includestdlib.h //包含動態存儲與釋放函數頭文件

#includeiostream // system

#define TEALEN sizeof(teanode) //教師信息結構體長度

#define LEN sizeof(Lnode) //鏈表節點長度

#define MAX 10

int SAME[MAX];

typedef struct teanode

{

char name[10]; //教師姓名

int lesson; //授課工作量

int exper; //實驗工作量

int cdesign; //課程設計工作量

int gdesign; //畢業設計工作量

int total; //總工作量

int pos; //排序位置

}teanode,*linknode;//教師信息結構體

typedef struct Lnode

{

char no[20]; //教師編號

linknode info; //節點信息詳細指針指向教師信息結構體

struct Lnode *prior,*next; //雙向鏈表指針域

}Lnode,*linklist;//鏈表節點

void newLnode();

void initlist();

void prin();

void initlist(linklist *T)

{

*T=(linklist)malloc(LEN);

(*T)-info=(linknode)malloc(TEALEN);//為頭結點申請空間

(*T)-prior=*T;//設置頭結點的前驅指針

(*T)-next=*T;//設置頭結點的後繼指針

}//初始化雙向循環鏈表

void newLnode(linklist*p)

{

*p=(linklist)malloc(LEN);//新節點

if(!p)

{

printf(“申請節點失敗”);

exit(0);

}

(*p)-info=(linknode)malloc(TEALEN);

}

void prin(linklist * L)

{

if(L==NULL)

{

printf(“沒有可以顯示的信息\n”);

return;

}

linklist p=(*L)-next;

// printf(“********************************************************************************\n”);

printf(“教師編號 教師姓名 工作量排名 工作總量\n\n”);

while (p!=*L)

{

printf(“%7s%9s%10d%10d\n”,p-no,p-info-name,p-info-pos,p-info-total);

p=p-next;

}

}

void main()

{

linklist input(linklist L);

linklist sort(linklist L);

int j;//用來判斷是否結束

linklist L;

initlist(L);

do{

system(“cls”);//清屏函數

printf(” ★— 您好,歡迎進入教師工作量統計系統! —★\n”);

printf(“================================================================================\n”);

printf( ” ——– ☆ 1.輸入教師工作量信息 ☆——– \n\n”

” ——– ☆ 2.進行教師工作量排序 ☆——– \n\n”

” ——– ☆ 3.顯示教師工作量情況 ☆——– \n\n”

” ——– ☆ 0.退出 ☆——– \n\n”);

printf(“================================================================================\n”);

printf(“請在0-3中選擇以回車鍵結束:\n\n”);

scanf(“%d”,j);

switch(j) {

case 1:

L=input(L);

prin(L);

printf(“錄入結束\n”);

system(“pause”);

break;

case 2:

L=sort(L);

printf(“排序成功\n”);

system(“pause”);

break;

case 3:

prin(L);

system(“pause”);

break;

case 0:;

break;

}

}while(j!=0);

printf(“謝謝使用,再見!\n”);

}//主函數結束

linklist input(linklist L)

{

linklist workload(linklist p);

linklist adworkload(linklist p);

linklist searinsert(linklist L,linklist p);

linklist sort(linklist L);

int flag=0;

char no[10];

linklist p;

p=L-next;

for(;;)

{

if(flag==1)

break;

printf(“請輸入教師編號輸入@結束:\n\n”);

scanf(“%s”,no);

if(no[0]==’@’)

{

flag=1;

break;

}

while (p!=L)//當鏈表不空時

{

if (strcmp(p-no,no)==0)

{

printf(“該教師編號已存在,輸入需要增加的工作量\n\n”);

p-prior-next=p-next;

p-next-prior=p-prior;//刪除P,

p=adworkload(p);//修改P中的詳細信息info指針域的內容

L=searinsert(L,p);//重新查找P的位置插入鏈表L中

return L;

}

p=p-next;

}//跳出循環則該教師編號第一次輸入

newLnode(p);

strcpy(p-no,no);

printf(“請輸入教師姓名:\n”);

scanf(“%s”,p-info-name);

p=workload(p);

L=searinsert(L,p);

}

return L;

}

linklist adworkload(linklist p)

{

int a;

printf(“請輸入增加的授課工作量:\n”);

scanf(“%d”,a);

p-info-lesson+=a;

printf(“請輸入增加的實驗工作量:\n”);

scanf(“%d”,a);

p-info-exper+=a;

printf(“請輸入增加的課程設計工作量:\n”);

scanf(“%d”,a);

p-info-cdesign+=a;

printf(“請輸入增加的畢業設計工作量:\n”);

scanf(“%d”,a);

p-info-gdesign+=a;

//p-info-pos=0;

p-info-total=p-info-lesson+p-info-exper+p-info-cdesign+p-info-gdesign;//求總工作量

return p;

}

linklist workload(linklist p)

{

printf(“請輸入該教師的授課工作量:\n”);

scanf(“%d”,(p-info-lesson));

printf(“請輸入該教師的實驗工作量:\n”);

scanf(“%d”,(p-info-exper));

printf(“請輸入該教師的課程設計工作量:\n”);

scanf(“%d”,(p-info-cdesign));

printf(“請輸入該教師的畢業設計工作量:\n”);

scanf(“%d”,(p-info-gdesign));

p-info-pos=0;

p-info-total=p-info-lesson+p-info-exper+p-info-cdesign+p-info-gdesign;//求總工作量

return p;

}

linklist searinsert(linklist L,linklist p)

{//將P放置L中合適的位置

linklist tra;//遍歷指針

linklist x;//P插入位置的前一個節點指針

tra=L-next;//指向第一個節點

if ((L-next==L)||(p-info-totaltra-info-total)) //第一次插入或者大於表頭的情況

{

x=L;//插入表頭

}

else if (p-info-totalL-prior-info-total) //小於表尾的情況

{

x=L-prior;//插入表尾

}

else

{ while (p-info-totaltra-info-total)

tra=tra-next;

x=tra-prior;//正常查找情況

}

//將P接到X後面

p-next=x-next;

p-prior=x;

x-next=p;

p-next-prior=p;

return L;

}

linklist sort(linklist L)

{

linklist sortfisrtlast(linklist L,linklist first,linklist last,int n);

int i;

for(i=0;iMAX;i++)

SAME[i]=0;//初始化數組SAME[MAX]

linklist p,first,last;

int x,n=1,k;

p=L-next;

while (p!=L)

{

x=1;

while ((p-next-info-total!=p-info-total)p!=L)

{

p-info-pos=n;

p=p-next;

n++;

}

if (p==L)

return L;

else

while ((p-next-info-total==p-info-total)p!=L)

{

k=n;

if (x==1)

{

//k=n;

first=p;

}

p-info-pos=k;

x++;

p=p-next;

p-info-pos=k;

//保存X

SAME[k]=x;

}

n+=x-1;

if (p==L)

return L;

else

{

last=p;

p=last-next;

L=sortfisrtlast(L,first,last,k);//調用fisrt last函數

}

}

}

linklist sortfisrtlast(linklist L,linklist first,linklist last,int n)

{

if (first==last)

return L;

linklist head,posa,posb,p,t;

linklist tra;//遍歷指針

linklist x;//P插入位置的前一個節點指針

posa=first-prior;//接入位置a

posb=last-next;//接入位置b

posa-next=last-next;

last-next-prior=posa;

last-next=NULL;

first-prior=NULL;//刪除這段

initlist(head);

p=first;

while (p!=NULL)

{

tra=head-next;

if ((head-next==head)||strcmp(p-no,tra-no)0)//第一次插入或者小於當前節點

x=head;

else if (strcmp(p-no,head-prior-no)0)

x=head-prior;

else

{

while(strcmp(p-no,tra-no)0)

tra=tra-next;

x=tra-prior;

}

t=p;//將P接到X後

p=p-next;

t-next=x-next;

t-prior=x;

x-next=t;

t-next-prior=t;

}

printf(“********************************************************************************\n”);

// printf(“================================================================================\n”);

printf(“工作量名次相同的教師名單:(按編號排序)\n\n”);

printf(“名次為%d教師共有%d名\n\n”,n,SAME[n]);

prin(head);

first=head-next;

last=head-prior;

posa-next=first;

first-prior=posa;

posb-prior=last;

last-next=posb;

return L;

}

原創文章,作者:WMTPP,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/331489.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WMTPP的頭像WMTPP
上一篇 2025-01-16 15:47
下一篇 2025-01-16 15:47

相關推薦

  • 銀行資金管理系統總結

    銀行資金管理系統是銀行日常業務運營的核心支撐系統,主要負責處理銀行的資金流動、結算、清算等業務。本文將從功能特點、技術架構、安全性以及未來發展趨勢等多個方面對銀行資金管理系統進行詳…

    編程 2025-04-29
  • g3log源代碼學習

    g3log是一個高性能C++日誌庫,其代碼十分精簡和可讀性強,本文將從3個方面詳細介紹g3log源代碼學習。 一、g3log源代碼整體架構 g3log的整體架構十分清晰,其中有3個…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29
  • Python員工管理系統

    Python員工管理系統是一款基於Python語言開發的企業級應用軟件,它可以幫助企業高效地管理員工信息,提高管理效率和工作質量。下面我們將從多個方面對該系統進行詳細闡述。 一、系…

    編程 2025-04-28
  • 數字孿生源代碼的介紹

    數字孿生源代碼是一種用於模擬現實世界的技術。它將現實世界的實體或場景進行數字化,使得我們可以通過計算機程序對其進行模擬,以便進行分析和預測。數字孿生源代碼包含了許多組件和算法,下面…

    編程 2025-04-28
  • 北京有哪些好的Python培訓機構

    想要成為一名全能開發工程師,Python是必不可少的編程語言之一。在北京,Python培訓機構也是各式各樣。下面就從教學質量、師資力量、教學內容、服務質量等多個方面,為大家推薦幾個…

    編程 2025-04-28
  • 赤峰教育培訓機構排名

    本文將從師資力量、教學設施、學員口碑等多個角度對赤峰教育培訓機構排名進行詳細的闡述。 一、師資力量 優秀的師資力量是教育培訓機構的核心競爭力之一。赤峰教育培訓機構的師資力量如何呢?…

    編程 2025-04-27
  • Python 進度管理系統

    本文將從多個方面詳細闡述 Python 進度管理系統,包括如何使用 Python 進行進度管理系統的開發以及管理、優化等方面的問題。 一、系統開發 為了開發一個完善的進度管理系統,…

    編程 2025-04-27
  • 製作一個簡單的管理系統的成本及實現

    想要製作一個簡單的管理系統,需要進行技術選型、開發、測試等過程,那麼這個過程會花費多少錢呢?我們將從多個方面來闡述製作一個簡單的管理系統的成本及實現。 一、技術選型 當我們開始思考…

    編程 2025-04-27
  • Python管理系統設計報告

    本文將從系統設計、數據存儲、界面設計、安全性等多個方面,詳細闡述Python管理系統的設計,為讀者提供完整且系統的解決方案。 一、系統設計 Python管理系統的設計需要考慮到系統…

    編程 2025-04-27

發表回復

登錄後才能評論