新聞中心
C語言設(shè)計學(xué)生成績管理系統(tǒng)
在win-tc 下編輯的:
創(chuàng)新互聯(lián)為客戶提供專業(yè)的網(wǎng)站設(shè)計、做網(wǎng)站、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項目涵蓋了網(wǎng)頁設(shè)計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都手機(jī)網(wǎng)站制作等網(wǎng)站方面業(yè)務(wù)。
程序如下:
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#define NULL 0
#define Q 10
#define LEN sizeof(struct student)
struct student /*定義一個學(xué)生考試信息的結(jié)構(gòu)體*/
{char name[Q]; /*用來存放姓名的*/
char sex[Q]; /*用來存放性別的*/
long id; /*用來存放準(zhǔn)考證號的*/
int score[4]; /*用來存放分?jǐn)?shù)的*/
int total; /*用來存放總分?jǐn)?shù)的*/
int m_c; /*用來存放名次的*/
struct student *next;/*定義指向下一個結(jié)構(gòu)體的指針*/
};
int n; /*用來統(tǒng)計考生人數(shù)的*/
char ch[Q]; /*用來存放姓名的*/
struct student *creat() /*定義一個指向struct student的結(jié)構(gòu)體指針函數(shù)*creat()用來修改考生信息.*/
{int i;
struct student *head,*p1,*p2;/*定義三個指向struct student的結(jié)構(gòu)體指針*/
p1=p2=(struct student *)malloc(LEN);/*調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元*/
n=0;
printf("請輸入學(xué)生考試信息!\n");
printf("請在姓名處鍵以\"!\"結(jié)束輸入。\n");
printf("姓名:");
scanf("%s",ch);
head=NULL; /*給指針head賦初值*/
while (strcmp(ch,"!")!=0) /*調(diào)用字符比較函數(shù)strcmp()用來判斷是否繼續(xù)輸入*/
{p1=(struct student *)malloc(LEN);/*調(diào)用malloc()函數(shù)用來開辟一個新的存儲單元*/
strcpy(p1-name,ch); /*將循環(huán)結(jié)構(gòu)前面輸入的姓名復(fù)制到結(jié)構(gòu)體名為p1的數(shù)組name中*/
printf("性別:");
scanf("%s",p1-sex);
printf("準(zhǔn)考證號(8位):");
scanf("%ld",p1-id);/*將輸入的準(zhǔn)考證號存放到p1所指結(jié)構(gòu)體的數(shù)組id中*/
printf("數(shù)學(xué)成績:");
scanf("%d",p1-score[0]);/*將輸入的數(shù)學(xué)成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/
printf("物理成績:");
scanf("%d",p1-score[1]);/*將輸入的物理成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/
printf("英語成績:");
scanf("%d",p1-score[2]);/*將輸入的英語成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/
printf("C語言成績:");
scanf("%d",p1-score[3]);/*將輸入的C語言成績存放到p1所指結(jié)構(gòu)體的數(shù)組score中*/
p1-total=p1-score[0]+p1-score[1]+p1-score[2]+p1-score[3];/*計算總分 */
if(n==0)head=p1;/*如果是輸入第一組學(xué)生考試信息就將指針p1賦給指針head*/
else p2-next=p1;/*否則將p1賦給p2所指結(jié)構(gòu)體的next指針*/
p2=p1;/*將指針p1賦給指針p2*/
n++; /*將n的值加1*/
printf("姓名:");
scanf("%s",ch);/*將輸入的姓名存放到字符數(shù)組ch中*/
}
p2-next=NULL;/*將p2所指結(jié)構(gòu)體的next指針重新賦空值*/
return (head);/*將輸入的第一組學(xué)生考試信息返回*/
}
void output(struct student *head) /*定義output()函數(shù)將考生的信息從頭指針?biāo)竷?nèi)容開始輸出*/
{struct student *p;/*定義一個指向struct student的結(jié)構(gòu)體指針p*/
printf("-----------------------------------------------------------------------\n");
printf(" *學(xué)生考試成績信息表*\n");
printf("-----------------------------------------------------------------------\n"); /*71個“-”*/
printf("準(zhǔn)考證號 姓 名 性別 數(shù)學(xué) 物理 英語 C語言 平均分 總分\n");
printf("-----------------------------------------------------------------------\n");
p=head;/*將頭指針賦給p*/
if(head!=N)
Go語言的支持平臺
LiteIDE是一款專門為Go語言開發(fā)的跨平臺輕量級集成開發(fā)環(huán)境(IDE),由QT編寫。
LiteIDE主要特點: 支持主流操作系統(tǒng)
Windows
Linux
MacOS X Go編譯環(huán)境管理和切換
管理和切換多個Go編譯環(huán)境
支持Go語言交叉編譯 與Go標(biāo)準(zhǔn)一致的項目管理方式
基于GOPATH的包瀏覽器
基于GOPATH的編譯系統(tǒng)
基于GOPATH的Api文檔檢索 Go語言的編輯支持
類瀏覽器和大綱顯示
Gocode(代碼自動完成工具)的完美支持
Go語言文檔查看和Api快速檢索
代碼表達(dá)式信息顯示F1
源代碼定義跳轉(zhuǎn)支持F2
Gdb斷點和調(diào)試支持
gofmt自動格式化支持 其他特征
支持多國語言界面顯示
完全插件體系結(jié)構(gòu)
支持編輯器配色方案
基于Kate的語法顯示支持
基于全文的單詞自動完成
支持鍵盤快捷鍵綁定方案
Markdown文檔編輯支持
實時預(yù)覽和同步顯示
自定義CSS顯示
可導(dǎo)出HTML和PDF文檔
批量轉(zhuǎn)換/合并為HTML/PDF文檔 Sublime Text 2(以下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。
其優(yōu)點有: 自動化提示代碼。 保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標(biāo)準(zhǔn)。 支持項目管理 支持語法高亮 熟悉Java的讀者應(yīng)該對于idea不陌生,idea是通過一個插件來支持go語言的高亮語法,代碼提示和重構(gòu)實現(xiàn)。
尋高手幫忙做個關(guān)于學(xué)生成績管理系統(tǒng)的C語言程序!
分是少了點,不過好心的我就幫幫你吧,呵呵!
你以上的功能我的程序里全有,你自己看看改改吧!
#include stdio.h
#include malloc.h
#include string.h
#include stdlib.h
#define InputRcd 1
#define UpdateRcd 2
#define SelectRcd 3
#define Exit 4
#define NAMELEN 16
#define CLASSLEN 6
struct record {
char classID[CLASSLEN];
int term;
char name[NAMELEN];
int chinese,math,english;
};
void showProgInform()
{
printf("-------------------------------------------------\n");
printf("| *** STUDENTS' SCORE PLATFORM *** |\n");;
printf("-------------------------------------------------\n\n");
}
void showMenu() {
system("cls");
showProgInform();
printf("Please select an operation fo the following MENU: \n");
printf(" 1. Input a record \n");
printf(" 2. Update a record\n");
printf(" 3. Select record(s)\n");
printf(" 4. Exit. \n");
}
void inputRecord() {
struct record inscr;
FILE * fp;
system("cls");
showProgInform();
printf("Mention: You are to add new record\n\n");
printf("Please input by the following instructions: \n");
printf("Class ID: ");
scanf("%s",inscr.classID);
printf("Term Number: ");
scanf("%d",(inscr.term));
printf("Student Name: ");
scanf("%s",inscr.name);
printf("Chinese score: ");
scanf("%d",(inscr.chinese));
printf("Math score: ");
scanf("%d",(inscr.math));
printf("English Score: ");
scanf("%d",(inscr.english));
getchar();
if((fp=(fopen("stu_score.rcd","ab+")))==NULL) {
printf("Input record failed!\n");
return;
}
fwrite(inscr,sizeof(struct record),1,fp);
fclose(fp);
if((fp=fopen("stu_score.txt","ab+"))==NULL) {
return;
}
fprintf(fp,"%s-%d %s: %d %d %d\r\n",inscr.classID,inscr.term,inscr.name,inscr.chinese,inscr.math,inscr.english);;
fclose(fp);
}
void showSingleRecord(struct record rc) {
printf("%s-%d %s: (CHI)%d (MAT)%d (ENG)%d\n",rc.classID,rc.term,rc.name,rc.chinese,rc.math,rc.english);
}
void updateRecord()
{
long fsize,arraySize,i;
struct record *allRecords,newRcd;
int hasFound = 0;
FILE * fp;
FILE * txt;
system("cls");
showProgInform();
if((fp = fopen("stu_score.rcd","rb")) == NULL ) {
printf("! No records , cannot operate\n");
return;
}
printf("Mention: You are to update record\n\n");
printf("Please the record you want to update by the follow mention: \n");
printf("Class Id: ");
scanf("%s",newRcd.classID);
printf("Term number: ");
scanf("%d",newRcd.term);
printf("Student name: ");
scanf("%s",newRcd.name);
fseek(fp,0,SEEK_END);
fsize = ftell(fp);
arraySize = fsize/(sizeof(struct record));
allRecords = (struct record *)calloc(arraySize,sizeof(struct record));
rewind(fp);
fread(allRecords,sizeof(struct record),arraySize,fp);
for(i=0;iarraySize;i++) {
if(strcmp(newRcd.classID,allRecords[i].classID)==0 newRcd.term==allRecords[i].term strcmp(newRcd.name,allRecords[i].name)==0) {
printf("Find the matching record: ");
showSingleRecord(allRecords[i]);
printf("Input new Score: \n");
printf("New Chinese Score: ");
scanf("%d",(allRecords[i].chinese));
printf("New Math Score: ");
scanf("%d",(allRecords[i].math));
printf("New English Score: ");
scanf("%d",(allRecords[i].english));
printf("After update ,the records is : \n\t");
showSingleRecord(allRecords[i]);
printf("\n");
hasFound = 1;
break;
}
}
fclose(fp);
if(!hasFound) {
printf("No matching record has found!\n");
free(allRecords);
return;
}
if((fp = fopen("stu_score.rcd","w"))==NULL) {
printf("Write file stu_score.rcd failed\n");
return;
}
if((txt = fopen("stu_score.txt","w"))==NULL) {
printf("Write file stu_score.txt failed\n");
return;
}
fwrite(allRecords,sizeof(struct record),arraySize,fp);
for(i=0;iarraySize;i++) {
fprintf(txt,"%s-%d %s: %d %d %d\r\n",allRecords[i].classID,allRecords[i].term,allRecords[i].name,allRecords[i].chinese,allRecords[i].math,allRecords[i].english);
}
free(allRecords);
fclose(fp);
fclose(txt);
}
void showSelectMenu(char classID[],int term) {
system("cls");
showProgInform();
printf("Mention: All the following opertion based on classID: %s,Term: %d\n\n",classID,term);
printf("Mention: You are to select the records\n\n");
printf("\t Please choose an operation: \n");
printf("\t 1. Select all records of the classID.\n");
printf("\t 2. Sort by the average score.\n");
printf("\t 3. Select no passed record.\n");
printf("\tOther. Return the high level menu.\n\n");
}
void showStatistic(struct record *r ,long size,char classID[],int term) {
int total;
float ave;
long i;
system("cls");
showProgInform();
printf("All records for class: %s,term: %d; total record nubmer: %ld\n",classID,term,size);
printf("********************************************************\n");
for(i=0;isize;i++) {
total = r[i].chinese+r[i].english +r[i].math ;
ave = (float)total/3;
printf(" %s: (CHI)%d (MAT)%d (ENG)%d (Total)%d (Ave)%.2f\r\n",r[i].name,r[i].chinese,r[i].math,r[i].english,total,ave);
}
printf("********************************************************\n\n");
printf("Press Enter to return Select submenu\n");
getchar();
}
void sortSelectByAve(struct record * r,long size) {
FILE *fp;
struct record temp;
float outerAve ,innerAve;
int total;
long i,j;
system("cls");
showProgInform();
printf("\nSorted the records by average score\n");
for(i=0;isize;i++) {
outerAve = (float)(r[i].chinese+r[i].math+r[i].english)/3;
for(j=i+1;jsize;j++) {
innerAve = (float)(r[j].chinese+r[j].math+r[j].english)/3;
if(innerAve outerAve) {
strcpy(temp.name,r[j].name);
temp.chinese = r[j].chinese;
temp.math = r[j].math ;
temp.english = r[j].english ;
strcpy(r[j].name,r[i].name);
r[j].chinese = r[i].chinese ;
r[j].math = r[i].math ;
r[j].english = r[i].english ;
strcpy(r[i].name,temp.name);
r[i].chinese = temp.chinese ;
r[i].math = temp.math ;
r[i].english = temp.english ;
}
}
}
printf("\nshow sorted records \n");
printf("********************************************\n");
for(i=0;isize;i++) {
total = r[i].chinese + r[i].math + r[i].english ;
innerAve = (float)total/3;
printf("%s: %d %d %d %d %f\n",r[i].name,r[i].chinese,r[i].math,r[i].english,total,innerAve);
}
printf("********************************************\n");
printf("write sorted records to \"sorted.txt\"\n");
if((fp = fopen("sorted.txt","w"))== NULL) {
printf("open sort.txt failed\n");
return;
}
for(i=0;isize;i++) {
total = r[i].chinese + r[i].math + r[i].english ;
innerAve = (float)total/3;
fprintf(fp,"(CLASS-TERM)%s-%d (NAME)%s: (CHI)%3d (MAT)%3d (ENG)%3d (TOTAL)%4d (AVERG)%.2f\r\n",r[i].classID,r[i].term,r[i].name,r[i].chinese,r[i].math,r[i].english,total,innerAve);
}
printf("write file sorted.txt finished\n");
fclose(fp);
printf("\nPress any key to return Select subMenu\n");
}
void noPass(struct record * r,int size) {
long i=0,j=0;
FILE * fp;
if((fp=fopen("no-pass.txt","w"))==NULL) {
printf("create no-pass.txt failed");
return;
}
system("cls");
showProgInform();
printf("Mention: The following operation will be all on the classId and term you input\n\n");
printf("\nShow student that one subject is no-pass\n");
printf("***********************************************\n");
for(i=0;isize;i++) {
if(r[i].chinese 60 || r[i].math60 || r[i].english 60) {
printf("%s-%d %s: ",r[i].classID,r[i].term,r[i].name);
fprintf(fp,"%s-%d %s: ",r[i].classID,r[i].term,r[i].name);
if(r[i].chinese 60 ) {
printf("(Chinese)%d ",r[i].chinese);
fprintf(fp,"(Chinese)%d ",r[i].chinese );
}
if(r[i].math 60) {
printf("(Math)%d ",r[i].math);
fprintf(fp,"(Math)%d ",r[i].math);
}
if(r[i].english 60) {
printf("(English)%d",r[i].english);
fprintf(fp,"(English)%d",r[i].english);
}
printf("\r\n");
fprintf(fp,"\r\n");
}
}
printf("***********************************************\n");
fclose(fp);
printf("Press Enter to return \"Select\" submenu\n");
}
void selectRecord() {
char classID[CLASSLEN];
int term;
FILE * fp;
long fsize=0,arraySize=0,thisSize=0,i=0,j=0;
struct record *allRcd,*thisClass;
system("cls");
showProgInform();
printf("Mention: The following operation will be all on the classId and term you input\n\n");
printf("Mention: please operate by the following instructions\n\n");
printf("Input ClassID: ");
scanf("%s",classID);
printf("Input term number: ");
scanf("%d",term);
if((fp=fopen("stu_score.rcd","r"))==NULL) {
printf("\nWarining: No record exists!\n");
return;
}
fseek(fp,0,SEEK_END);
fsize = ftell(fp);
arraySize = fsize/(sizeof(struct record));
allRcd = (struct record *)calloc(arraySize,sizeof(struct record));
rewind(fp);
fread(allRcd,sizeof(struct record),arraySize,fp);
printf("Press Enter to show the sub menu of Select menu\n");
for(i=0;iarraySize;i++) {
if(strcmp(classID,allRcd[i].classID)==0 term==allRcd[i].term) {
thisSize++;
}
}
if(thisSize==0) {
printf("\nWaring: No record for Class %s Term %d\n",classID,term);
fclose(fp);
free(allRcd);
return;
}
thisClass = (struct record *)calloc(thisSize,sizeof(struct record));
j=0;
for(i=0;iarraySize;i++) {
if(strcmp(classID,allRcd[i].classID)==0 term==allRcd[i].term ) {
strcpy(thisClass[j].classID,classID) ;
thisClass[j].term = term ;
strcpy(thisClass[j].name,allRcd[i].name);
thisClass[j].chinese = allRcd[i].chinese;
thisClass[j].math = allRcd[i].math ;
thisClass[j].english = allRcd[i].english ;
j++;
}
}
free(allRcd);
/////////////////////////////////////////////////////////////
getchar();
getchar();
while(1) {
system("cls");
showProgInform();
printf("Mention: The following operation will be all on the classId and term you input\n\n");
showSelectMenu(classID,term);
switch(getchar()) {
case '1':
getchar();
showStatistic(thisClass,thisSize,classID,term);
break;
case '2':
getchar();
sortSelectByAve(thisClass,thisSize);
getchar();
break;
case '3':
getchar();
noPass(thisClass,thisSize);
printf("0: Press 0 to return \"Select\" submenu\n");
if(getchar()=='0')
break;
default:
getchar();
return;
}
}
free(thisClass);
fclose(fp);
}
void go_on() {
printf("Press Enter to continue\n");
getchar();
}
void main() {
showProgInform();
while(1) {
showMenu();
switch(getchar()) {
case '1':
getchar();
inputRecord();
go_on();
break;
case '2':
getchar();
updateRecord();
getchar();
go_on();
break;
case '3':
getchar();
selectRecord();
getchar();
go_on();
break;
case '4':
getchar();
//exit(1);
return;
default:
getchar();
printf("Wrong Option! input again\n");
go_on();
break;
}
}
}
求救 學(xué)生成績管理C程序
/*頭文件*/
#include stdio.h
#includedos.h
#includestdlib.h /*其它說明*/
#includestring.h /*字符串函數(shù)*/
#includemem.h /*內(nèi)存操作函數(shù)*/
#includectype.h /*字符操作函數(shù)*/
#includealloc.h /*動態(tài)地址分配函數(shù)*/
#define LEN sizeof(STUDENT)
typedef struct stu /*定義結(jié)構(gòu)體數(shù)組用于緩存數(shù)據(jù)*/
{char num[6];
char name[5];
int score[3];
int sum;
float average;
int order;
struct stu *next;
}STUDENT;
/*函數(shù)原型*/
STUDENT *init(); /*初始化函數(shù)*/
int menu_select(); /*菜單函數(shù)*/
STUDENT *create(); /*創(chuàng)建鏈表*/
void print(STUDENT *head); /* 顯示全部記錄*/
void search(STUDENT *head); /*查找記錄*/
STUDENT *delete(STUDENT *head); /*刪除記錄*/
STUDENT *sort(STUDENT *head); /*排序*/
STUDENT *insert(STUDENT *head,STUDENT *new); /*插入記錄*/
void save(STUDENT *head); /*保存文件*/
STUDENT *load(); /*讀文件*/
/*主函數(shù)界面*/
main()
{STUDENT *head,new;
head=init(); /*鏈表初始化,使head的值為NULL*/
for(;;) /*循環(huán)無限次*/
{switch(menu_select())
{
case 1:head=create();break;
case 2:print(head);break;
case 3:search(head);break;
case 4:head=delete(head);break;
case 5:head=sort(head);break;
case 6:head=insert(head,new);break; /*new表示返回地址*/
case 7:save(head);break;
case 8:head=load(); break;
case 9:exit(0); /*如菜單返回值為9則程序結(jié)束*/
}
}
}
/*初始化函數(shù)*/
STUDENT *init()
{
return NULL; /*返回空指針*/
}
/*菜單選擇函數(shù)*/
menu_select()
{int n;
struct date d; /*定義時間結(jié)構(gòu)體*/
getdate(d); /*讀取系統(tǒng)日期并把它放到結(jié)構(gòu)體d中*/
printf("\n按任一鍵進(jìn)入主菜單...... \npress any key to enter the menu......"); /*按任一鍵進(jìn)入主菜單*/
getch(); /*從鍵盤讀取一個字符,但不顯示于屏幕*/
clrscr(); /*清屏*/
printf("********************************************************************************\n");
printf("\t\t 歡迎 Welcome to\n");
printf("\n\t\t\t 使用學(xué)生管理系統(tǒng)1.0\n\n\t\t\t\t\t-----------景炎中學(xué)計算機(jī)組WJQ\n");
printf("*************************************MENU***************************************\n");
printf("\t\t\t1. 輸入學(xué)生成績記錄 Enter the record\n"); /*輸入學(xué)生成績記錄*/
printf("\t\t\t2. 顯示 Print the record\n"); /*顯示*/
printf("\t\t\t3. 尋找 Search record on name\n"); /*尋找*/
printf("\t\t\t4. 刪除 Delete a record\n"); /*刪除*/
printf("\t\t\t5. 排序 Sort to make new a file\n"); /*排序*/
printf("\t\t\t6. 插入 Insert record to list\n"); /*插入*/
printf("\t\t\t7. 保存 Save the file\n"); /*保存*/
printf("\t\t\t8. 讀取 Load the file\n"); /*讀取*/
printf("\t\t\t9. 退出 Quit\n"); /*退出*/
printf("\n\t\t 制作吳俊遒WJQ Made by Wu Junqiu.\n");
printf("********************************************************************************\n");
printf("\t\t\t\t當(dāng)前系統(tǒng)日期:%d\\%d\\%d\n",d.da_year,d.da_mon,d.da_day); /*顯示當(dāng)前系統(tǒng)日期*/
do{
printf("\n\t\t\t輸入你的選擇Enter your choice(1~9):");
scanf("%d",n);
}while(n1||n9); /*如果選擇項不在1~9之間則重輸*/
return(n); /*返回選擇項,主函數(shù)根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/
}
/*輸入函數(shù)*/
STUDENT *create()
{int i,s;
STUDENT *head=NULL,*p; /* 定義函數(shù).此函數(shù)帶回一個指向鏈表頭的指針*/
clrscr();
for(;;)
{p=(STUDENT *)malloc(LEN); /*開辟一個新的單元*/
if(!p) /*如果指針p為空*/
{printf("\n輸出內(nèi)存溢出. Out of memory."); /*輸出內(nèi)存溢出*/
return (head); /*返回頭指針,下同*/
}
printf("輸入學(xué)號Enter the num(0:list end):");
scanf("%s",p-num);
if(p-num[0]=='0') break; /*如果學(xué)號首字符為0則結(jié)束輸入*/
printf("輸入名字Enter the name:");
scanf("%s",p-name);
printf("請輸入3門成績Please enter the %d scores\n",3); /*提示開始輸入成績*/
s=0; /*計算每個學(xué)生的總分,初值為0*/
for(i=0;i3;i++) /*3門課程循環(huán)3次*/
{
do{
printf("成績score%d:",i+1);
scanf("%d",p-score[i]);
if(p-score[i]0 || p-score[i]100) /*確保成績在0~100之間*/
printf("數(shù)據(jù)錯誤,請重新輸入 Data error,please enter again.\n");
}while(p-score[i]0 || p-score[i]100);
s=s+p-score[i]; /*累加各門成績*/
}
p-sum=s; /*將總分保存*/
p-average=(float)s/3; /*先用強(qiáng)制類型轉(zhuǎn)換將s轉(zhuǎn)換成float型,再求平均值*/
p-order=0; /*未排序前此值為0*/
p-next=head; /*將頭結(jié)點做為新輸入結(jié)點的后繼結(jié)點*/
head=p; /*新輸入結(jié)點為新的頭結(jié)點*/
}
return(head);
}
/* 顯示全部記錄函數(shù)*/
void print(STUDENT *head)
{int i=0; /* 統(tǒng)計記錄條數(shù)*/
STUDENT *p; /*移動指針*/
clrscr();
p=head; /*初值為頭指針*/
printf("\n************************************STUDENT************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
while(p!=NULL)
{
i++;
printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
i, p-num,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);
p=p-next;
}
printf("-------------------------------------------------------------------------------\n");
printf("**************************************END**************************************\n");
}
/*查找記錄函數(shù)*/
void search(STUDENT *head)
{STUDENT *p; /* 移動指針*/
char s[5]; /*存放姓名用的字符數(shù)組*/
clrscr();
printf("請輸入個姓名來查找. Please enter name for searching.\n");
scanf("%s",s);
p=head; /*將頭指針賦給p*/
while(strcmp(p-name,s) p != NULL) /*當(dāng)記錄的姓名不是要找的,或指針不為空時*/
p=p-next; /*移動指針,指向下一結(jié)點*/
if(p!=NULL) /*如果指針不為空*/
{printf("\n*************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p-num,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
}
else
printf("\n沒有該學(xué)生 There is no num %s student on the list.\n",s); /*顯示沒有該學(xué)生*/
}
/*刪除記錄函數(shù)*/
STUDENT *delete(STUDENT *head)
{int n;
STUDENT *p1,*p2; /*p1為查找到要刪除的結(jié)點指針,p2為其前驅(qū)指針*/
char c,s[6]; /*s[6]用來存放學(xué)號,c用來輸入字母*/
clrscr();
printf("請輸入要刪除的學(xué)號 Please enter the deleted num: ");
scanf("%s",s);
p1=p2=head; /*給p1和p2賦初值頭指針*/
while(strcmp(p1-num,s) p1 != NULL) /*當(dāng)記錄的學(xué)號不是要找的,或指針不為空時*/
{p2=p1; /*將p1指針值賦給p2作為p1的前驅(qū)指針*/
p1=p1-next; /*將p1指針指向下一條記錄*/
}
if(strcmp(p1-num,s)==0) /*學(xué)號找到了*/
{printf("**************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p1-num,p1-name,p1-score[0],p1-score[1],p1-score[2],p1-sum,p1-average,p1-order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
printf("\n是否要刪除,輸入Y刪除,N則退出\nAre you sure to delete the student Y/N ?"); /*提示是否要刪除,輸入Y刪除,N則退出*/
for(;;)
{scanf("%c",c);
if(c=='n'||c=='N') break; /*如果不刪除,則跳出本循環(huán)*/
if(c=='y'||c=='Y')
{
if(p1==head) /*若p1==head,說明被刪結(jié)點是首結(jié)點*/
head=p1-next; /*把第二個結(jié)點地址賦予head*/
else
p2-next=p1-next; /*否則將一下結(jié)點地址賦給前一結(jié)點地址*/
n=n-1;
printf("\n學(xué)號為(Num): %s 學(xué)生以被刪除(student have been deleted.)\n",s);
printf("別忘了保存. Don't forget to save.\n");break; /*刪除后就跳出循環(huán)*/
}
}
}
else
printf("\n沒有這個學(xué)生在表上\nThere is no num %s student on the list.\n",s); /*找不到該結(jié)點*/
return(head);
}
/*排序函數(shù)*/
STUDENT *sort(STUDENT *head)
{int i=0; /*保存名次*/
STUDENT *p1,*p2,*t,*temp; /*定義臨時指針*/
temp=head-next; /*將原表的頭指針?biāo)傅南乱粋€結(jié)點作頭指針*/
head-next=NULL; /*第一個結(jié)點為新表的頭結(jié)點*/
while(temp!=NULL) /*當(dāng)原表不為空時,進(jìn)行排序*/
{
t=temp; /*取原表的頭結(jié)點*/
temp=temp-next; /*原表頭結(jié)點指針后移*/
p1=head; /*設(shè)定移動指針p1,從頭指針開始*/
p2=head; /*設(shè)定移動指針p2做為p1的前驅(qū),初值為頭指針*/
while(t-averagep1-averagep1!=NULL) /*作成績平均分比較*/
{
p2=p1; /*待排序點值小,則新表指針后移*/
p1=p1-next;
}
if(p1==p2) /*p1==p2,說明待排序點值大,應(yīng)排在首位*/
{
t-next=p1; /*待排序點的后繼為p*/
head=t; /*新頭結(jié)點為待排序點*/
}
else /*待排序點應(yīng)插入在中間某個位置p2和p1之間,如p為空則是尾部*/
{
t-next=p1; /*t的后繼是p1*/
p2-next=t; /*p2的后繼是t*/
}
}
p1=head; /*已排好序的頭指針賦給p1,準(zhǔn)備填寫名次*/
while(p1!=NULL) /*當(dāng)p1不為空時,進(jìn)行下列操作*/
{
i++; /*結(jié)點序號*/
p1-order=i; /*將結(jié)點序號賦值給名次*/
p1=p1-next; /*指針后移*/
}
printf("排序成功 Sorting is sucessful.\n"); /*排序成功*/
return (head);
}
/*插入記錄函數(shù)*/
STUDENT *insert(STUDENT *head,STUDENT *new)
{STUDENT *p0,*p1,*p2;
int n,sum1,i;
p1=head; /*使p1指向第一個結(jié)點*/
p0=new; /*p0指向要插入的結(jié)點*/
printf("\nPlease enter a new record.\n"); /*提示輸入記錄信息*/
printf("輸入學(xué)號Enter the num:");
scanf("%s",new-num);
printf("輸入名字Enter the name:");
scanf("%s",new-name);
printf("Please enter the %d scores.\n",3);
sum1=0; /*保存新記錄的總分,初值為0*/
for(i=0;i3;i++)
{
do{
printf("成績score%d:",i+1);
scanf("%d",new-score[i]);
if(new-score[i]100||new-score[i]0)
printf("數(shù)據(jù)錯誤Data error,please enter again.\n");
}while(new-score[i]100||new-score[i]0);
sum1=sum1+new-score[i]; /*累加各門成績*/
}
new-sum=sum1; /*將總分存入新記錄中*/
new-average=(float)sum1/3;
new-order=0;
if(head==NULL) /*原來的鏈表是空表*/
{head=p0;p0-next=NULL;} /*使p0指向的結(jié)點作為頭結(jié)點*/
else
{while((p0-averagep1-average)(p1-next!=NULL))
{p2=p1; /*使p2指向剛才p1指向的結(jié)點*/
p1=p1-next; /*p1后移一個結(jié)點*/
}
if(p0-average=p1-average)
{if(head==p1)head=p0; /*插到原來第一個結(jié)點之前*/
else p2-next=p0; /*插到p2指向的結(jié)點之后*/
p0-next=p1;}
else
{p1-next=p0;p0-next=NULL;} /*插到最后的結(jié)點之后*/
}
n=n+1; /*結(jié)點數(shù)加1*/
head=sort(head); /*調(diào)用排序的函數(shù),將學(xué)生成績重新排序*/
printf("\n學(xué)生Student %s 已被更新have been inserted.\n",new-name);
printf("不要忘了保存Don't forget to save the new file.\n");
return(head);
}
/*保存數(shù)據(jù)到文件函數(shù)*/
void save(STUDENT *head)
{FILE *fp; /*定義指向文件的指針*/
STUDENT *p; /* 定義移動指針*/
char outfile[10];
printf("輸出文件例如:c:\\score Enter outfile name,for example c:\\score\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"w"))==NULL) /*為輸出打開一個二進(jìn)制文件,為只寫方式*/
{
printf("打不開文件Cannot open the file\n");
return; /*若打不開則返回菜單*/
}
printf("\n保存中...Saving the file......\n");
p=head; /*移動指針從頭指針開始*/
while(p!=NULL) /*如p不為空*/
{
fwrite(p,LEN,1,fp); /*寫入一條記錄*/
p=p-next; /*指針后移*/
}
fclose(fp); /*關(guān)閉文件*/
printf("保存成功....Save the file successfully!\n");
}
/* 從文件讀數(shù)據(jù)函數(shù)*/
STUDENT *load()
{STUDENT *p1,*p2,*head=NULL; /*定義記錄指針變量*/
FILE *fp; /* 定義指向文件的指針*/
char infile[10];
printf("倒入文件例如:c:\\score Enter infile name,for example c:\\score\n");
scanf("%s",infile);
if((fp=fopen(infile,"r"))==NULL) /*打開一個二進(jìn)制文件,為只讀方式*/
{
printf("打不開文件Can not open the file.\n");
return(head);
}
printf("\n尋找文件...Loading the file!\n");
p1=(STUDENT *)malloc(LEN); /*開辟一個新單元*/
if(!p1)
{
printf("內(nèi)存溢出!Out of memory!\n");
return(head);
}
head=p1; /*申請到空間,將其作為頭指針*/
while(!feof(fp)) /*循環(huán)讀數(shù)據(jù)直到文件尾結(jié)束*/
{
if(fread(p1,LEN,1,fp)!=1) break; /*如果沒讀到數(shù)據(jù),跳出循環(huán)*/
p1-next=(STUDENT *)malloc(LEN); /*為下一個結(jié)點開辟空間*/
if(!p1-next)
{
printf("Out of memory!\n");
return (head);
}
p2=p1; /*使p2指向剛才p1指向的結(jié)點*/
p1=p1-next; /*指針后移,新讀入數(shù)據(jù)鏈到當(dāng)前表尾*/
}
p2-next=NULL; /*最后一個結(jié)點的后繼指針為空*/
fclose(fp);
printf("\n你成功的從文件中讀取了數(shù)據(jù)!\nYou have success to read data from the file!\n");
return (head);
}
c語言學(xué)生管理系統(tǒng)
C 語言學(xué)生成績管理系統(tǒng)
#includestdio.h
#includemalloc.h
#includeconio.h
#includestring.h
typedef struct STUDENT
{
char studentNumber[20];/*學(xué)生學(xué)號*/
char studentName[20];/*學(xué)生姓名*/
char className[20];/*班級名稱*/
float mark1;/*第1門成績*/
float mark2;/*第2門成績*/
float mark3;/*第3門成績*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink; /*鏈表表頭指針*/
/*函數(shù)聲明*/
void ReadInfoFormFile();
void Menu();
void CreateHeadLink();
STUDENT *MallocNode();
void GetInformation(STUDENT *t);
void OutputInformation();
void DesplayInfoBystudentName();
void DesplayInfoBystudentNumber();
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber();
void ChangeMarkByName();
void ChangeMarkByNumber();
void SaveLinkToFile();
void paixu();
void DesplayMarkSegment();
int choose;/*用于接受用戶的選擇*/
/*主函數(shù)*/
main()
{
system("color 2a");
printf("\n\t\t歡迎進(jìn)入***學(xué)院***班學(xué)生成績管理系統(tǒng)\n\n\n");
printf("\t\t\t\tO(∩_∩)O\n\n\n\n");
printf("\t\t\t^_^\t\t\t^_^\n\n");
printf("\n\t\t 注意:請按照要求輸入相應(yīng)信息,謝謝!\n\n\n\n\n");
printf("\t\t\t\t\t\t\t\t制作人:***\n\n\n");
printf("\t\t\t 按任意鍵進(jìn)入…………");
getch();
system("cls");
CreateHeadLink();
ReadInfoFormFile();
Menu();
}
/*從文件中讀學(xué)生信息到鏈表中*/
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);
}
/*顯示菜單,根據(jù)用戶的輸入完成相應(yīng)的功能*/
void Menu(void)
{
STUDENT *p;
printf("\t\t (^o^)歡迎使用學(xué)生成績管理系統(tǒng)(^o^)\n\n");
printf("\t ※--------------------請選擇相應(yīng)功能---------------------※\n\n");
printf("\t 1: 顯示所有學(xué)生的信息 |");
printf(" \t 2: 按姓名查詢 |\n\n");
printf("\t 3: 按學(xué)號查詢 |");
printf(" \t\t 4: 增加學(xué)生 |\n\n");
printf("\t 5: 刪除學(xué)生 |");
printf(" \t\t 6: 按姓名修改學(xué)生成績 |\n\n");
printf("\t 7: 按學(xué)號修改學(xué)生成績 |");
printf(" \t 8: 保存所有學(xué)生信息 |\n\n");
printf("\t 9: 按成績輸出學(xué)生信息 |");
printf("\t 10: 顯示不及格及優(yōu)秀學(xué)生 |\n\n");
printf("\t 11: 返回主菜單 |");
printf("\t\t 12: 退出 |\n\n");
printf("\t ※----------------------O(∩_∩)O------------------------※\n\n");
printf("\t 請輸入對應(yīng)數(shù)字:");
scanf("%d",choose);/*取得用戶的選擇*/
switch(choose)
{
case 1:system("cls");
OutputInformation();/*顯示所有學(xué)生的信息*/
break;
case 2: system("cls");
DesplayInfoBystudentName();
break;
case 3: system("cls");
DesplayInfoBystudentNumber();/*根據(jù)用戶輸入的學(xué)號顯示該學(xué)生的信息*/
break;
case 4: system("cls");
p=MallocNode();/*先申請一個新結(jié)點*/
GetInformation(p);/*要求用戶輸入信息到新結(jié)點中*/
InsertOneNode(p);/*將新結(jié)點加到鏈表中*/
break;
case 5: system("cls");
DeleteNodeBystudentNumber();/*根據(jù)用戶輸入的學(xué)號刪除該學(xué)生*/
break;
case 6: system("cls");
ChangeMarkByName();/*根據(jù)用戶輸入的姓名修改學(xué)生成績*/
break;
case 7: system("cls");
ChangeMarkByNumber();/*根據(jù)用戶輸入的學(xué)號修改學(xué)生成績*/
break;
case 8: system("cls");
SaveLinkToFile();/*保存數(shù)據(jù)*/
break;
case 9: system("cls");
paixu();break;
case 10: system("cls");
DesplayMarkSegment();break;
case 11: system("cls");
break;
case 12: system("cls");
SaveLinkToFile();/*保存數(shù)據(jù)后再退出*/
free(headLink);
exit(1);
break;
default: system("cls"); break;
}
Menu();/*遞歸調(diào)用*/
}
/*建立鏈表表頭*/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p-next=NULL;
}
/*申請一個新結(jié)點,并將其初始化*/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i10;i++)
p-studentNumber='\0';
for(i=0;i20;i++)
p-studentName='\0';
for(i=0;i20;i++)
p-className='\0';
p-mark1=0.0;
p-mark2=0.0;
p-mark3=0.0;
p-next=NULL;
return p;
}
/*取得用戶輸入的學(xué)生信息*/
void GetInformation(STUDENT *t)
{
printf("請輸入學(xué)生學(xué)號:");
scanf("%s",t-studentNumber);
printf("請輸入學(xué)生姓名:");
scanf("%s",t-studentName);
printf("請輸入該生所在班級:");
scanf("%s",t-className);
printf("請輸入第1門成績:");
scanf("%f",(t-mark1));
printf("請輸入第2門成績:");
scanf("%f",(t-mark2));
printf("請輸入第3門成績:");
scanf("%f",(t-mark3));
}
/*在鏈表的結(jié)尾處增加一個結(jié)點*/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p-next)
{
p=p-next;
}
p-next=t;
}
/*根據(jù)用戶輸入的學(xué)生姓名顯示該學(xué)生的信息*/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
p=headLink-next;
printf("請輸入學(xué)生姓名:");
scanf("%s",studentName);
while(p)
{
if(strcmp(p-studentName,studentName)==0)
{system("cls");
printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p-next;
}
if(!flag) {system("cls");
printf("\t 對不起,不存在姓名為 %s 的學(xué)生\n",studentName);}
}
/*根據(jù)用戶輸入的學(xué)號顯示該學(xué)生的信息*/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
p=headLink-next;
printf("請輸入學(xué)生學(xué)號:");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p-studentNumber,studentNumber)==0)
{ system("cls");
printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p-next;
}
if(!flag) {system("cls");
printf("\t 對不起,不存在學(xué)號為 %s 的學(xué)生\n",studentNumber);
}}
/*輸出一個結(jié)點的信息*/
void DesplayOneNode(STUDENT *t)
{
printf("\t%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);
}
/*根據(jù)用戶輸入的學(xué)號刪除該學(xué)生*/
void DeleteNodeBystudentNumber(void)
{
char studentNumber[10];
STUDENT *p,*q;
char flag=0;
printf("請輸入要刪除的學(xué)生學(xué)號:");
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)
{ system("cls");
printf("\t 不存在該學(xué)號的學(xué)生\n");
return;
}
system("cls");
printf("\t 成功刪除\n");
}
/*顯示所有學(xué)生的信息*/
void OutputInformation(void)
{
STUDENT *p;
p=headLink-next;
if(p==NULL)
{
printf("\t 現(xiàn)在沒有學(xué)生信息,請先輸入學(xué)生信息\n\n");
return;
}
printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");
while(p)
{
DesplayOneNode(p);
p=p-next;
}
}
/*根據(jù)輸入的姓名修改成績*/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink-next;
printf("請輸入學(xué)生姓名:");
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) {system("cls");
printf("\t 對不起,不存在姓名為 %s 的學(xué)生\n",studentName);
} }
/*根據(jù)輸入的姓名修改成績*/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink-next;
printf("請輸入學(xué)生學(xué)號:");
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){system("cls");
printf("\t 對不起,不存在學(xué)號為 %s 的學(xué)生\n",studentNumber);
}}
/*保存鏈表數(shù)據(jù)到文件中*/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink-next;
if(p==NULL)
{
printf("\t 現(xiàn)在沒有學(xué)生信息,請先輸入學(xué)生信息\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);
}
/*顯示優(yōu)秀和不及格學(xué)生成績*/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink-next;
printf("\t60分以下(不及格)的學(xué)生成績?nèi)缦拢篭n");
printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n\n");
while(p)
{
if((6((int)(p-mark1/10)))||(6((int)(p-mark2/10)))||(6((int)(p-mark3/10))))/*只要有一科不及格就認(rèn)為該生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p-next;
}
printf("\t不及格的學(xué)生一共有%d人\n",count);
p=headLink-next;
printf("\t成績優(yōu)秀的學(xué)生成績?nèi)缦拢篭n");
printf("\t學(xué)號\t姓名\t班級\t成績1\t成績2\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("\t成績優(yōu)秀的學(xué)生一共有%d人\n",count);
}
/*按總成績排序*/
void paixu(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink-next;
if(r==NULL)
{
printf("\t 現(xiàn)在還沒學(xué)生信息,請先輸入學(xué)生信息\n");
return;
}
while(r)/*兩層while循環(huán)實現(xiàn)排序*/
{
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);/*先復(fù)制q結(jié)點信息到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);/*再復(fù)制p結(jié)點信息到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);/*最后復(fù)制exchange結(jié)點信息到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();
}
如何建立“學(xué)生管理”數(shù)據(jù)庫,并在“學(xué)生管理”數(shù)據(jù)庫中分別建立“學(xué)生基本情況表”求高手教一下
USE [master]
GO
CREATE DATABASE StudentManage ON PRIMARY
( NAME = N'StudentManage', FILENAME = N'D:\StudentManage.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'StudentManage_log', FILENAME = N'D:\StudentManage_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
/*學(xué)生管理數(shù)據(jù)庫(StudentManage)創(chuàng)建完成,下面創(chuàng)建學(xué)生表(Student):*/
USE [Jinlong]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Student](
[學(xué)號C9] [char](7) NOT NULL,
[姓名C10] [char](6) NULL,
[性別C2] [char](2) NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[SID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
網(wǎng)站名稱:go語言學(xué)生管理系統(tǒng) go語言圖書管理系統(tǒng)
URL地址:http://www.ef60e0e.cn/article/dosdhgj.html