C語言課程設(shè)計報告——教務(wù)管理系統(tǒng)_第1頁
C語言課程設(shè)計報告——教務(wù)管理系統(tǒng)_第2頁
C語言課程設(shè)計報告——教務(wù)管理系統(tǒng)_第3頁
C語言課程設(shè)計報告——教務(wù)管理系統(tǒng)_第4頁
C語言課程設(shè)計報告——教務(wù)管理系統(tǒng)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、功能說明:實現(xiàn)兩種權(quán)限的身份登陸的教務(wù)管理系統(tǒng)*/#include "stdio.h"#include "stdlib.h"#include "string.h"#include "time.h"#include "memory.h"#define share "d:share.dat"/定義郵件地址#define manager "d:manager.dat" /定義管理員郵件地址#define outmsg "d:outmsg.dat&quo

2、t;/定義公告郵件地址#define logtimemsg "d:used login time.dat"/定義用戶登錄時間信息#define star_stu "d:stu_scname.dat"/定義學(xué)生起始文件信息#define stu_msg"d:stu.dat"/定義學(xué)生成績信息地址#define mass_key "3110008758"/定義文件頭部密碼typedef struct student stu;#define sc_num 4/只設(shè)定4門科目,不允許改動#define uint unsig

3、ned int/*學(xué)生成績管理系統(tǒng)結(jié)構(gòu)*/struct studentchar num10;/*學(xué)生學(xué)號*/char name10;/*學(xué)生姓名*/uint scoresc_num;/*科目分數(shù)*/uint average;/*科目平均分*/stu *next;st;char gettemp=0;/*管理員身份識別結(jié)構(gòu)*/typedef struct username user;struct usernamechar username20;/char password20;use;/*時間登錄信息*/struct Logtimechar userlogin20;struct tm;char l

4、ogc;/登錄次數(shù)typedef struct Logtime logtime;/=/定義通訊協(xié)議/=#define mass_max200/定義信息量struct Massageint cont;/文件數(shù)量char username15;/發(fā)送人char massmass_max;/信息mas;typedef struct Massage massage;/=/=char userlogin10;char sc_namesc_num10;/*以上是學(xué)生信息*/char welcome(void);/*用戶界面,返回0,則表示退出系統(tǒng)*/*=學(xué)生信息操作=*/stu*creat();/*建立鏈

5、表*/void display(stu *head);/*顯示用戶信息*/void insert(stu *head);/*增加學(xué)生信息*/stu* delname(stu*head,char *stu_name);/*根據(jù)學(xué)生姓名刪除用戶信息*/stu* delnum(stu *head,char *stu_num);/*根據(jù)學(xué)生學(xué)號刪除用戶信息*/stu* checkname(stu *head,char *stu_name);/*輸出指定學(xué)生的信息*/stu* checknum(stu *head,char *stu_num);/*輸出指定學(xué)生學(xué)號的學(xué)生信息*/void changsc_

6、name(stu *head,char *name);/*修改用戶成績*/void changsc_num(stu *head,char *num);/*修改用戶成績*/void waring(void);/*產(chǎn)生警告信息*/char cheknum(char *num);/*檢查學(xué)生學(xué)號是否符合格式*/char chekname(char *name);/*檢查學(xué)生姓名是否符合格式*/char chekscore(char score);/*檢查學(xué)生分數(shù)是否符合格式*/stu* sortscore(stu *head);/*學(xué)生按平均成績排序*/stu* sortnum(stu *head)

7、;/*學(xué)生信息按學(xué)號排序*/*=學(xué)生用戶登錄=*/char stulogin(void);/*進入普通用戶登錄界面*/char stucheck(char *nam,char *stnum);/*查找是否存在該學(xué)生信息*/char newlogin(char *nam,char *stnum);/*注冊學(xué)生信息*/void disnewst(void);/*獲得學(xué)生信息*/*=系統(tǒng)管理選擇,管理員權(quán)限=*/void stu_system(void);/*對各種操作集中管理*/void sentmsg(void);/*發(fā)送公告*/char readmsg(void);/*瀏覽信息*/char d

8、elemsg(void);/刪除信息void chagesbject(void);/*修改課程信息*/*=用戶登錄信息=*/void setlogintime(void);/*記錄用戶登錄時間*/void dislogintime(void);/*顯示用戶登錄信息*/void setused(void);/*注冊新用戶資料*/char usedcheckname(char *name);/*用戶信息檢查,若存在用戶,則返回1,否則返回0*/char usedcheckpass(char *name,char *password);/*查看用戶名密碼是否符合*/*=存儲操作=*/char sav

9、e(stu *head);/*保存用戶數(shù)據(jù)*/char disload();/*顯示用戶信息*/stu* load(void);/*加載用戶數(shù)據(jù)*/void clrtxt(char *str);/*清除文本信息*/char* creat_txt(char *username);/*根據(jù)用戶名,創(chuàng)建一個用戶文件*/FILE* chekuser(char *username);/*根據(jù)用戶名,查找是否有此用戶信息,若無,返回NULL*/*=-main函數(shù)-=*/void main()FILE *fp;char i,j;char name15;system("color b5")

10、;memset(name,'0',sizeof(name);if(fp=fopen(star_stu ,"r+")=NULL)printf("將新建文件!n");fp=fopen(star_stu ,"w+");fread(name,sizeof(name),1,fp);if(strcmp(name,mass_key)!=0)printf("文件載入出錯!t N為退出 回車鍵繼續(xù).:");i=getchar();if(i='n')|(i='N')fclose(fp);

11、exit(1);elseprintf("nn數(shù)據(jù)將重新初始化!n");printf("nn請輸入4門科目名稱n");memset(name,'0',sizeof(name);fwrite(name,sizeof(name),5,fp);strcpy(name,mass_key);rewind(fp);fwrite(name,sizeof(name),1,fp);for(i=0;i<sc_num;i+)printf("nn第%d門科目名稱 : ",i+1);scanf("%s",sc_namei

12、);if(fwrite(sc_namei,sizeof(sc_namei),1,fp)!=1)printf("nntttt保存出錯!n");getchar();exit(1);elseif(fp=NULL)printf("n文件錯誤!");fscanf(fp,"%s%s%s%s",sc_name0,sc_name1,sc_name2,sc_name3);fclose(fp);fp=fopen(share,"w");/為防止文件在后面打開錯誤fclose(fp);fp=fopen(manager,"w&qu

13、ot;);fclose(fp);fp=fopen(outmsg,"w");fclose(fp);doj=welcome();if(j=1)system("cls");printf("tt歡迎進入學(xué)生用戶中心系統(tǒng)!");setlogintime();j=stulogin();else if(j=2)setlogintime();stu_system();while(j!=0);fp=fopen(share,"w");/為防止文件未關(guān)閉,倒置文件內(nèi)容丟失fclose(fp);fp=fopen(manager,"

14、;w");fclose(fp);fp=fopen(outmsg,"w");fclose(fp);fp=fopen(logtimemsg,"w");fclose(fp);fp=fopen(star_stu,"w");fclose(fp);fp=fopen(stu_msg,"w");fclose(fp);/*=-初始化用戶界面-=*/返回1,則進入stu用戶界面/返回0,則表示退出/返回2,則表示進入管理員界面char welcome(void)char username20;char userpass20;

15、char i,wrong_cont=0,key=0,weling=1,back=0;char temp;system("color b5");while(weling)dosystem("cls");printf("t*歡迎進入教務(wù)管理系統(tǒng)*n");printf("t* *n");printf("t* 1.用戶登錄 *n");printf("t* *n");printf("t* 2.用戶注冊 *n");printf("t* *n");p

16、rintf("t* 3.管理員登陸 *n");printf("t* *n");printf("t* 4.管理員注冊 *n");printf("t* *n");printf("t* 5.退出系統(tǒng) *n");printf("t* *n");printf("t=n");printf("t 請按命令提示操作n");printf("nnn");printf("nnn");printf("您輸入的命

17、令為:t");i=getchar();if(i!='1')&&(i!='2')&&(i!='3')&&(i!='4')&&(i!='5')printf("n輸入錯誤的指令!請按命令提示操作 1-3n");getchar();while(i!='1')&&(i!='2')&&(i!='3')&&(i!='4')&a

18、mp;&(i!='5');switch(i)case '1':system("cls");memset(username,'0',sizeof(username);memset(userpass,'0',sizeof(userpass);printf("nt請輸入用戶名 :t");scanf("%s",username);printf("nt請輸入學(xué)號 :t");scanf("%s",userpass);temp=stuch

19、eck(username,userpass);if(temp=0)printf("沒有學(xué)生檔案信息!請注冊.n");getchar();break;else if(temp=1)memset(userlogin,'0',sizeof(userlogin);strcpy(userlogin,username);printf("nt學(xué)生成績登錄有效!");getchar();return 1;getchar();/=break;case '2':system("cls");memset(username,&

20、#39;0',sizeof(username);memset(userpass,'0',sizeof(userpass);printf("nt請輸入用戶名 :t");scanf("%s",username);printf("nt請輸入學(xué)號 :t");scanf("%s",userpass);while(cheknum(userpass)!=1)printf("您的輸入格式有誤,請重新輸入!n");printf("按回車鍵繼續(xù).n");getchar()

21、;memset(userpass,'0',sizeof(userpass);printf("nt請輸入學(xué)號 :t");scanf("%s",userpass);if(newlogin(username,userpass)printf("nt注冊成功!用戶名:%st學(xué)號:%s",username,userpass);getchar();break;case '3':dosystem("cls");memset(username,'0',sizeof(username);

22、memset(userpass,'0',sizeof(userpass);printf("nt請輸入用戶名 :t");scanf("%s",username);printf("nt請輸入密碼 :t");scanf("%s",userpass);if(usedcheckpass(username,userpass)=0)wrong_cont+;if(wrong_cont=3)printf("nt輸入次數(shù)大于3次!請按回車鍵退出系統(tǒng)!n");getchar();weling=0;re

23、turn 0;key=1;printf("nt按1選擇返回主菜單nt按0繼續(xù)輸入用戶驗證碼n");doback=getchar();if(back!='1')&&(back!='0')printf("nt輸入錯誤!按回車鍵繼續(xù).");getchar();while(back!='1')&&(back!='0');if(back='1')key=0;else key=0;weling =0;system("cls");prin

24、tf("nntt歡迎%s進入學(xué)生管理系統(tǒng)n",username);memset(userlogin,'0',sizeof(userlogin);strcpy(userlogin,username);/記錄用戶登錄信息return 2;while(key);back=0;weling=1;break;return 2;case '4':setused();/*注冊新管理員資料*/weling=1;break;case '5':weling=0;return 0; return 1;/*=-建立鏈表-=*/stu*creat()/

25、*建立鏈表*/char i,j;char stu_num;stu *p1, *p2;stu *head;FILE *fp;fp=fopen(stu_msg,"w+");head=(stu*)malloc(sizeof(stu);head->next=NULL;p1=p2=(stu*)malloc(sizeof(stu);i=0,j=0;system("cls");printf("nn請輸入要錄入的學(xué)生人數(shù): ");scanf("%d",&stu_num);for(i=0;i<stu_num;i+

26、)system("cls");p1->average=0;printf("nn請輸入學(xué)生學(xué)號: ");scanf("%s",p1->num);while(!cheknum(p1->num)printf("nn輸入格式錯誤!請重新輸入學(xué)號 : ");scanf("%s",p1->num);printf("nn請輸入學(xué)生姓名 : ");scanf("%s",p1->name);while(!chekname(p1->name

27、)printf("nn輸入格式出錯!不能帶數(shù)字或下劃線!n");printf("nn請重新輸入學(xué)生姓名: ");scanf("%s",p1->name); do printf("nn請輸入學(xué)生%s成績 :",sc_namej); scanf("%d",&p1->scorej);while(100<p1->scorej)|(p1->scorej<0)printf("nn成績格式出錯!n ");getchar();printf(&quo

28、t;nn請重新輸入學(xué)生成績 : ");scanf("%d",&p1->scorej);p1->average+=p1->scorej;j+;while(j<sc_num);j=0;p1->average=p1->average/4;if(i=0)head->next=p1;/*分清楚是head->next=p還是head=p*/p2=p1;p1->next=NULL;else p2->next=p1;p2=p1;p2->next=NULL;/*產(chǎn)生新的節(jié)點*/fwrite(p1,sizeof

29、(stu),1,fp);p1=(stu*)malloc(sizeof(stu);display(head);getchar();fclose(fp);return head;/*=檢查學(xué)生學(xué)號是否符合格式,若正確,則返回1,否則返回0=*/char cheknum(char *num)/*檢查學(xué)生學(xué)號是否符合格式*/char i;/*獲取字符串長度*/char j=strlen(num);for(i=0;i<j;i+)if('0'>numi)|('9'<numi)return 0;exit(1);return 1;/*=檢查學(xué)生姓名是否符合格式

30、,若正確,則返回1,否則返回0=*/char chekname(char *name)/*檢查學(xué)生姓名是否符合格式*/char i;for(i=0;i<strlen(name);i+)/*if('A'>namei)|('Z'<namei)&&('a'>namei)|('z'<namei)/if(namei<18)return 0;exit(1);*/return 1;/*=顯示學(xué)生成績情況=*/void display(stu *head)/*顯示用戶信息*/stu *p1;ch

31、ar i=0;p1=head->next;system("cls");if(p1!=NULL)while(p1!=NULL)if(i=0)printf("姓名t學(xué)號t %st %st %st%st平均分 n",sc_name0,sc_name1,sc_name2,sc_name3);i+;printf("%st%st %dt %dt%dt%dt%dn",p1->name,p1->num,p1->score0,p1->score1,p1->score2,p1->score3,p1->ave

32、rage); p1=p1->next;getchar();elseprintf("ttt鏈表為空!nnn請按回車鍵繼續(xù).n");getchar();/*=插入學(xué)生信息=*/void insert(stu *head)/*增加學(xué)生信息*/stu *p1,*p2;char j=0;p1=head->next;p2=(stu*)malloc(sizeof(stu);/*創(chuàng)建新的學(xué)生信息*/p2->average=0;system("cls");printf("nn請輸入要增加的學(xué)生學(xué)號: ");scanf("%s

33、",p2->num);while(!cheknum(p2->num)printf("nn輸入格式錯誤!請重新輸入學(xué)號 : ");scanf("%s",p2->num);printf("nn請輸入學(xué)生的姓名 : ");scanf("%s",p2->name);while(!chekname(p2->name)printf("nn輸入格式出錯!不能帶數(shù)字或下劃線!n");printf("nn請重新輸入學(xué)生姓名: ");scanf("

34、;%s",p2->name); do printf("nn請輸入學(xué)生%s成績 :",sc_namej); scanf("%d",&p2->scorej);while(100<p2->scorej)|(p2->scorej<0)printf("nn成績格式出錯!n ");getchar();printf("nn請重新輸入學(xué)生成績 : ");scanf("%d",&p2->scorej);p2->average+=p2->

35、;scorej;j+;while(j<sc_num);p2->average=p2->average/4;if(head->next=NULL)printf("n原鏈表為空!");getchar();head->next=p2;elsewhile(p1->next!=NULL)p1=p1->next;p1->next=p2;p2->next=NULL;display(head);getchar();/*=刪除學(xué)生信息=*/stu* delname(stu*head,char *stu_name)/*根據(jù)學(xué)生姓名刪除用戶信

36、息*/stu *p1,*p2;char i,j=0;system("cls");if(head->next=NULL)printf("nn沒有學(xué)生信息!t操作錯誤!n");return head;p1=head->next;p2=p1;while(p1!=NULL)if(strcmp(p1->name,stu_name)=0)printf("nn你所刪除的學(xué)生姓名為: %st學(xué)號為:%sn",p1->name,p1->num);printf("nn確定為:y,取消為nt:");i=ge

37、tchar();while(!(i='y')|(i='Y')|(i='n')|(i='N')printf("nn輸入錯誤!t請重新輸入 :");i=getchar();if(i='y')|(i='Y')if(j=0)head->next=p1->next;/*刪除頭部接點*/elsep2->next=p1->next;printf("nntttt成功刪除用戶信息!nnttt按回車鍵繼續(xù).n");free(p1);return head;

38、else return head;j+;p2=p1;p1=p1->next;printf("nntt沒有此用戶記錄信息!n按回車鍵繼續(xù)n");getchar();system("cls");display(head);getchar();return head;/*=刪除學(xué)生信息(以學(xué)號為對象)=*/stu* delnum(stu *head,char *stu_num)/*根據(jù)學(xué)生學(xué)號刪除用戶信息*/stu *p1,*p2;char i,j=0;system("cls");if(head->next=NULL)print

39、f("nntt沒有存儲學(xué)生信息!nntt操作錯誤!n");return head;p1=head->next;p2=p1;while(p1->next!=NULL)if(strcmp(p1->num,stu_num)=0)printf("nn你所刪除的學(xué)生姓名為: %st學(xué)號為:%sn",p1->name,p1->num);printf("nn確定為:y,取消為nt:");i=getchar();while(!(i='y')|(i='Y')|(i='n')|

40、(i='N')printf("nn輸入錯誤!t請重新輸入 :");i=getchar();if(i='y')|(i='Y')if(j=0)head->next=p1->next;elsep2->next=p1->next;printf("nntttt成功刪除用戶信息!nnttt按回車鍵繼續(xù).n");free(p1);return head;else return head;p2=p1;p1=p1->next;j+;printf("nn沒有此用戶信息!n按回車鍵繼續(xù).n

41、");getchar();system("cls");display(head);getchar();return head;/*=輸出指定學(xué)生信息(以學(xué)生姓名為對象)=*/stu* checkname(stu *head,char *stu_name)/*輸出指定學(xué)生的信息*/stu *p1;system("cls");if(head=NULL)printf("nntt沒有存儲學(xué)生信息!t操作錯誤!n");getchar();return head;p1=head;while(p1->next!=NULL)if(st

42、rcmp(p1->name,stu_name)=0)printf("nn你所查找的學(xué)生信息如下n");printf(" nn%st學(xué)號為:%sn",p1->name,p1->num);printf("姓名t學(xué)號tt %st %st %st%st平均分 n",sc_name0,sc_name1,sc_name2,sc_name3);printf("%st%stt %dt %dt%dt%dt%dn",p1->name,p1->num,p1->score0,p1->score1,

43、p1->score2,p1->score3,p1->average);getchar();return p1;p1=p1->next;printf("nntt找不到相關(guān)用戶信息!n按回車鍵繼續(xù).n");getchar();system("cls");display(head);getchar();return (stu*)NULL;/*=輸出指定學(xué)生信息(以學(xué)生學(xué)號為對象)=*/stu* checknum(stu *head,char *stu_num)/*輸出指定學(xué)生學(xué)號的學(xué)生信息*/stu *p1,*p2;p2=(stu*)m

44、alloc(sizeof(stu);system("cls");if(head=NULL)printf("nntt沒有存儲學(xué)生信息!t操作錯誤!n");return head;p1=head;while(p1->next!=NULL)if(strcmp(p1->num,stu_num)=0)printf("nn你所查找的學(xué)生信息如下n");printf(" %st學(xué)號為:%sn",p1->name,p1->num);printf("姓名t學(xué)號tt %st %st %st%st平均分 n",sc_name0,sc_name1,sc_name2,sc_name3);printf("%st%stt %dt %dt%dt%dt%dn",p1->name,p1->num,p1->score0,p1->score1,p1->score2,p1->score3,p1->average);getchar();return p1;p1=p1->next;printf(&quo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論