當前位置:法律諮詢服務網 - 企業資訊 - c語言課程設計人員信息管理系統

c語言課程設計人員信息管理系統

我有壹個學生成績管理系統的C程序,是我們去年的設計題目,供妳參考。感覺壹樣,基本壹樣。這個設計還是要自己寫。只有這樣才能學好C,C語言很有用,是語言學的基礎。妳壹定是工科生,所以很重要。比如在清華,C語言課是壹學期三節。後來每個人都有幾個這樣的課程設計題目,能編幾百行。並不是說他們聰明,但他們當然不傻...所以都是氛圍和興趣的問題。多做參考是對的。從圖書館借壹些相關的書上網查,但是不要抄襲別人的。.....

這供妳參考。

# include & ltstdio.h & gt

# include & ltconio.h & gt

# include & ltmalloc.h & gt

# include & ltstring.h & gt

typedef結構學生

{

char student number[10];/*學生ID */

char student name[20];/*學生姓名*/

char class name[20];/*類名*/

float mark 1;/*等級1 */

浮動標記2;/*二年級*/

浮動標記3;/*三年級*/

結構學生*下壹個;

}學生;

學生* headLink/*鏈表頭指針*/

/*以下是函數聲明*/

void ReadInfoFormFile(void);

void DesplayMenu(void);

void CreateHeadLink(void);

STUDENT * MallocNode(void);

void get information(STUDENT * t);

void OutputInformation(無效);

void desplayfobystudentname(void);

void desplayfobystudentnumber(void);

void DesplayOneNode(學生* t);

void InsertOneNode(學生* t);

void DeleteNodeBystudentNumber(void);

void ChangeMarkByName(void);

void ChangeMarkByNumber(void);

void SaveLinkToFile(void);

void DesplayMarkSegment(void);

void compositorbytolmark(void);

int choose/*用於接受用戶的選擇*/

/*主函數*/

主()

{

CreateHeadLink();

ReadInfoFormFile();

DesplayMenu();

}

/************************************

函數功能:從文件中讀取學生信息到鏈表中。

************************************/

void ReadInfoFormFile(void)

{

FILE * fp

學生* p;

fp=fopen("student.txt "," r ");

如果(!fp)

{

Printf("文件不存在\ n ");

返回;

}

p = MallocNode();

while(fscanf(fp," %s%s%s%f%f ",p-& gt;學生編號,p-& gt;學生姓名,p-& gt;類名。(p->;馬克1);(p->;mark2),以及amp(p->;mark 3))& gt;0)

{

insertone node(p);

p = MallocNode();

}

fclose(FP);

}

/************************************

功能函數:顯示菜單,根據用戶的輸入。

完成相應的功能。

************************************/

void DesplayMenu(void)

{

學生* p;

Printf(" -請選擇相應的函數);

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 Exit | \ n \ n ");

scanf("%d ",& amp選擇);/*獲得用戶的選擇*/

切換(選擇)

{

案例1:

output information();/*顯示所有學生的信息*/

打破;

案例二:

desplayofbystudentname();

打破;

案例三:

desplayofbystudentnumber();/*根據用戶輸入的學號顯示學生的信息*/

打破;

案例4:

p = MallocNode();/*先申請新節點*/

GetInformation(p);/*要求用戶在新節點中輸入信息*/

insertone node(p);/*向鏈表添加新節點*/

打破;

案例5:

DeleteNodeBystudentNumber();/*根據用戶輸入的學號刪除學生*/

打破;

案例6:

ChangeMarkByName();/*根據用戶輸入的姓名修改學生成績*/

打破;

案例7:

ChangeMarkByNumber();/*根據用戶輸入的學號修改學生成績*/

打破;

案例8:

SaveLinkToFile();/*保存數據*/

打破;

案例9:

DesplayMarkSegment();/*顯示各年級學生的分數*/

打破;

案例10:

compositorbytolmark();

打破;

案例11:

SaveLinkToFile();/*退出前保存數據*/

免費(headLink);

退出(1);

打破;

默認值:

打破;

}

DesplayMenu();/*遞歸調用*/

}

/************************************

功能:創建鏈表頭。

************************************/

void CreateHeadLink(void)

{

學生* p;

p=(學生*)malloc(sizeof(學生));

headLink = p;

p->;next = NULL

}

/************************************

功能:申請新節點並初始化。

************************************/

學生*MallocNode(void)

{

學生* p;

int I;

p=(學生*)malloc(sizeof(學生));

if(p==NULL)

返回NULL

for(I = 0;我& lt10;i++)

p->;student number[I]= ' \ 0 ';

for(I = 0;我& lt20;i++)

p->;student name[I]= ' \ 0 ';

for(I = 0;我& lt20;i++)

p->;class name[I]= ' \ 0 ';

p->;mark 1 = 0.0;

p->;mark2 = 0.0

p->;mark3 = 0.0

p->;next = NULL

返回p;

}

/************************************

函數Function:獲取用戶輸入的學生信息。

************************************/

void GetInformation(學生*t)

{

Printf("請輸入學號:\ n ");

scanf("%s ",t-& gt;學生編號);

Printf("請輸入學生姓名:\ n ");

scanf("%s ",t-& gt;student name);

Printf("請輸入該學生的班級:\ n ");

scanf("%s ",t-& gt;class name);

Printf("請輸入1等級:\ n ");

scanf("%f ",& amp(t->;mark 1));

Printf("請輸入二年級:\ n ");

scanf("%f ",& amp(t->;mark 2));

Printf("請輸入三年級:\ n ");

scanf("%f ",& amp(t->;mark 3));

}

/************************************

功能:在鏈表的末尾添加壹個節點。

************************************/

void InsertOneNode(STUDENT *t)

{

學生* p;

p = headLink

while(p->;下壹個)

{

p = p-& gt;接下來;

}

p->;next = t;

}

/************************************

功能功能:根據用戶輸入的學生姓名顯示該學生的信息。

************************************/

void desplayfobystudentname(void)

{

學生* p;

char student name[20];

char flag = 0;

p = head link-& gt;接下來;

Printf("請輸入學生姓名:\ n ");

scanf("%s ",student name);

while(p)

{

if(strcmp(p-& gt;學生名,學生名)==0)

{

Printf("學號\t姓名\t班級\t年級1\t年級1\t年級3\t總成績\t平均成績\ n \ n \ ");

去播放節點(p);

flag = 1;

打破;

}

p = p-& gt;接下來;

}

如果(!旗幟)

Printf("抱歉,沒有叫%s \n "的學生,student named

}

/************************************

功能功能:根據用戶輸入的學號顯示該學生的信息。

************************************/

void desplayfobystudentnumber(void)

{

學生* p;

char student number[10];

char flag = 0;

p = head link-& gt;接下來;

Printf("請輸入學號:\ n ");

scanf("%s ",student number);

while(p)

{

if(strcmp(p-& gt;學生編號,學生編號)==0)

{

Printf("學號\t姓名\t班級\t年級1\t年級1\t年級3\t總成績\t平均成績\ n \ n \ ");

去播放節點(p);

flag = 1;

打破;

}

p = p-& gt;接下來;

}

如果(!旗幟)

Printf("抱歉,沒有學號為%s \n "的學生,student number);

}

/************************************

函數Function:輸出壹個節點的信息。

************************************/

無效取消播放節點(學生*t)

{

printf("%s\t ",t-& gt;學生編號);

printf("%s\t ",t-& gt;student name);

printf("%s\t ",t-& gt;class name);

printf("%.2f\t ",t-& gt;mark 1);

printf("%.2f\t ",t-& gt;mark 2);

printf("%.2f\t ",t-& gt;mark 3);

printf("%.2f\t ",t-& gt;mark 1+t->;mark 2+t-& gt;mark 3);

printf("%.2f\t\n ",(t-& gt;mark 1+t->;mark 2+t-& gt;mark 3)/3);

}

/************************************

功能:根據用戶輸入的學號刪除學生。

************************************/

void DeleteNodeBystudentNumber(void)

{

char student number[10];

學生*p,* q;

char flag = 0;

Printf("請輸入要刪除的學號:");

scanf("%s ",student number);

p = headLink

q = headLink-& gt;接下來;

while(q)

{

if(strcmp(q-& gt;學生編號,學生編號)==0)

{

p->;next = q-& gt;接下來;

免費(q);

flag = 1;

打破;

}

p = p-& gt;接下來;

q = q-& gt;接下來;

}

如果(!旗幟)

{

Printf("沒有此學號的學生\ n ");

返回;

}

Printf("成功刪除\ n ");

}

/************************************

功能功能:顯示所有學生的信息。

************************************/

無效輸出信息(無效)

{

學生* p;

p = head link-& gt;接下來;

if(p==NULL)

{

Printf("現在沒有學生信息,請先輸入學生信息\ n \ n ");

返回;

}

Printf("學號\t姓名\t班級\t年級1\t年級1\t年級3\t總成績\t平均成績\ n \ n \ ");

while(p)

{

去播放節點(p);

p = p-& gt;接下來;

}

}

/************************************

功能作用:根據輸入的名稱修改等級。

************************************/

void ChangeMarkByName(void)

{

學生* p;

char student name[20];

char flag = 0;

float mark1,mark2,mark3

p = head link-& gt;接下來;

Printf("請輸入學生姓名:\ n ");

scanf("%s ",student name);

while(p)

{

if(strcmp(p-& gt;學生名,學生名)==0)

{

Printf("請輸入新的1等級:\ n ");

scanf("%f ",& ampmark 1);

Printf("請輸入新的二年級:\ n ");

scanf("%f ",& ampmark 2);

Printf("請輸入新的三年級:\ n ");

scanf("%f ",& ampmark 3);

p->;mark 1 = mark 1;

p->;mark2 = mark2

p->;mark3 = mark3

flag = 1;

Printf("修改成功\ n ");

打破;

}

p = p-& gt;接下來;

}

如果(!旗幟)

Printf("抱歉,沒有叫%s \n "的學生,student named

}

/************************************

功能作用:根據輸入的學號修改成績。

************************************/

void ChangeMarkByNumber(void)

{

學生* p;

char student number[20];

char flag = 0;

float mark1,mark2,mark3

p = head link-& gt;接下來;

Printf("請輸入學號:\ n ");

scanf("%s ",student number);

while(p)

{

if(strcmp(p-& gt;學生編號,學生編號)==0)

{

Printf("請輸入新的1等級:\ n ");

scanf("%f ",& ampmark 1);

Printf("請輸入新的二年級:\ n ");

scanf("%f ",& ampmark 2);

Printf("請輸入新的三年級:\ n ");

scanf("%f ",& ampmark 3);

p->;mark 1 = mark 1;

p->;mark2 = mark2

p->;mark3 = mark3

flag = 1;

Printf("修改成功\ n ");

打破;

}

p = p-& gt;接下來;

}

如果(!旗幟)

Printf("抱歉,沒有學號為%s \n "的學生,student number);

}

/************************************

功能:將鏈表數據保存到文件中。

************************************/

void SaveLinkToFile(void)

{

學生* p;

FILE * fp

p = head link-& gt;接下來;

if(p==NULL)

{

Printf("現在沒有學生信息,請先輸入學生信息\ n \ n ");

返回;

}

fp=fopen("student.txt "," w+");

如果(!fp)

{

Printf("文件不存在\ n ");

返回;

}

while(p)

{

fprintf(fp," %s %s %s %f %f %f\n ",p-& gt;學生編號,p-& gt;學生姓名,p-& gt;類名,p-& gt;mark1,p->mark2,p-& gt;mark 3);

p = p-& gt;接下來;

}

fclose(FP);

}

/************************************

功能:顯示優秀和失敗學生的分數。

************************************/

void DesplayMarkSegment(void)

{

學生* p;

int count = 0;

p = head link-& gt;接下來;

printf(" 60(不及格)以下學生分數如下:\ n ");

Printf("學號\t姓名\t班級\t年級1\t年級1\t年級3\t總成績\t平均成績\ n \ n \ ");

while(p)

{

如果((6 & gt((int)(p-& gt;mark 1/10)))| |(6 & gt;((int)(p-& gt;mark 2/10)))| |(6 & gt;((int)(p-& gt;Mark 3/10)))/*只要有壹科不及格,就認為該生不及格*/

{

count++;

去播放節點(p);

}

p = p-& gt;接下來;

}

Printf("有%d個學生不及格-* * \n ",count);

p = head link-& gt;接下來;

Printf("成績優秀的學生成績如下:\ n ");

Printf("學號\t姓名\t班級\t年級1\t年級1\t年級3\t總成績\t平均成績\ n \ n \ ");

count = 0;

while(p)

{

如果((8 & lt=((int)(p-& gt;mark 1/10))& amp;& amp(8 & lt=((int)(p-& gt;mark 2/10)))& amp;& amp(8 & lt=((int)(p-& gt;mark3/10))))

{

count++;

去播放節點(p);

}

p = p-& gt;接下來;

}

Printf("有%d個成績優秀的學生\n ",count);

}

/************************************

函數函數:按總分排序

************************************/

void compositorbytalmark(void)

{

學生交換,*r,*p,* q;

r = head link-& gt;接下來;

if(r==NULL)

{

Printf("還沒有學生信息,請先輸入學生信息\ n ");

返回;

}

While(r)/*兩層While循環實現排序*/

{

p = r;

q = r-& gt;接下來;

while(q)

{

如果((q-& gt;mark 1+q->;mark 2+q-& gt;mark3)>(p->;mark 1+p-& gt;mark 2+p-& gt;mark3))

{

strcpy(exchange.studentNumber,q-& gt;學生編號);/*將Q節點信息復制到exchange*/ first */

strcpy(exchange.studentName,q-& gt;student name);

strcpy(exchange.className,q-& gt;class name);

exchange . mark 1 = q-& gt;mark 1;

exchange . mark 2 = q-& gt;mark2

exchange . mark 3 = q-& gt;馬克3;

strcpy(q-& gt;學生編號,p-& gt;學生編號);/*然後將P節點信息復制到q*/

strcpy(q-& gt;學生姓名,p-& gt;student name);

strcpy(q-& gt;類名,p-& gt;class name);

q->;mark 1 = p-& gt;mark 1;

q->;mark 2 = p-& gt;馬克3;

q->;mark 3 = p-& gt;馬克3;

strcpy(p-& gt;studentNumber,exchange . student number);/*最後,將交換節點信息復制到p*/

strcpy(p-& gt;studentName,exchange . student name);

strcpy(p-& gt;className,exchange . class name);

p->;mark 1 = exchange . mark 1;

p->;mark 2 = exchange . mark 2;

p->;mark 3 = exchange . mark 3;

}

q = q-& gt;接下來;

}

r = r-& gt;接下來;

}

output information();

}

祝妳學好C語言。我來這裏不是為了分,我只是想讓妳知道大學的真諦,這種實用的食物可以讓妳逐漸成熟!

  • 上一篇:面試前需要準備的問題有哪些
  • 下一篇:內蒙古自治區創造的口腹經濟壹體化典型
  • copyright 2024法律諮詢服務網