學生管理系統課程設計
文章目錄
- 一.課程設計目的
- 二.課程設計內容和要求
- 三.任務完成情況
- 四.設計報告
- 4.1需求分析
- 4.1.1用戶需求
- 4.2概要設計
- 4.2.1總體設計
- 4.2.2各功能函式的設計
- 4.3詳細設計
- 4.3.1 程式流程圖
- 4.4詳細代碼
- 4.4.1結構體定義
- 4.4.2 主函式
- 4.4.3 選單函式
- 4.4.4 關于成績錄入
- 4.4.5 學生資訊瀏覽
- 4.4.6 學生資訊按學號查詢
- 4.4.7 學生資訊按姓名查詢
- 4.4.8 學生資訊修改
- 4.4.9學生資訊洗掉
- 4.5使用說明
- 4.6測驗結果與分析
- 4.7參考文獻
- 5.體會與感想
- 附錄
一.課程設計目的
1.通過結構體和函式的綜合應用來實作一個具體的應用專案,使我們掌握小型系統程式設計的基本方法,掌握程式設計基本框架的搭建和模塊化程式設計的基本思路,能夠使用工具進行程式設計除錯,培養我們利用C語言進行軟體設計的能力,
2.設計出的學生資訊管理系統是針對學校人事處的大量業務處理作業而開發的管理軟體,主要用于學校學生資訊管理,總體任務是實作學生資訊關系的系統化、科學化、規范化和自動化,其主要任務是用計算機對學生各種資訊進行日常管理,如查詢、修改、增加、洗掉,針對這些要求設計了學生資訊管理系統,
二.課程設計內容和要求
設計一個學生管理系統,系統以選單方式作業,能夠提供以下功能:
1.學生資訊錄入功能
―――由for回圈陳述句錄入資訊,并使用結構體
2.學生資訊瀏覽功能
―――使用for回圈陳述句瀏覽資訊,并使用了結構體
3.學生資訊按學號查詢功能
―――學生姓名是字串型別,在if中使用strcmp進行字串比較;并使用for回圈陳述句以及結構體
4.學生資訊按姓名查詢功能
―――學號是unsign型別,在if陳述句中使用strcmp進行字串比較;并使用for回圈陳述句以及結構體
5.學生資訊修改功能
―――用for回圈陳述句以及結構體,while陳述句,switch陳述句進行多重選擇,還在if陳述句中使用strcmp進行字串比較
6.學生資訊的洗掉功能
―――用for回圈陳述句以及結構體,還在if陳述句中使用strcmp進行字串比較,還單獨使用if陳述句進行情況分類,
三.任務完成情況
1.對學生的資訊進行了保存,同時擁有了洗掉、排序、修改、根據學號查找、根據姓名查找的功能,
2.通過結構體的出現讓讀者一目了然,
四.設計報告
4.1需求分析
4.1.1用戶需求
(1)界面簡介,排列清晰,可以一目了然的看懂每一項功能,
(2)學生利用此系統能夠進行與自己有關資訊查詢與輸入,
4.2概要設計
4.2.1總體設計

4.2.2各功能函式的設計
1.學生資訊錄入
2.學生資訊瀏覽
3.學生資訊按學號查詢
4.學生資訊按姓名查詢
5.學生資訊修改
6.學生資訊的洗掉
4.3詳細設計
4.3.1 程式流程圖

4.4詳細代碼
4.4.1結構體定義
該系統包含的庫函式具體有:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
該系統創建的結構體有:
struct record
{
char xuehao[20];
char name[20];
char old[20];
char xingbie[20];
char date[20];
char phone[20];
}num[100];
4.4.2 主函式
int main()
{
while(1)
{
system("cls");
menu();
}
return 0;
}
4.4.3 選單函式
void menu()
{
int num=0;
char n;
char m;
printf("***************學生資訊管理系統***************\n");
printf("***************本系統選擇如下*****************\n");
printf("*** 1.學生資訊的錄入 ***\n");
printf("*** 2.學生資訊的瀏覽 ***\n");
printf("*** 3.學生資訊按學號查詢 ***\n");
printf("*** 4.學生資訊按姓名查詢 ***\n");
printf("*** 5.學生資訊修改 ***\n");
printf("*** 6.學生資訊的洗掉 ***\n");
printf("*** 7.退出系統 ***\n");
printf("**********************************************\n");
printf("請輸入(1~7):");
scanf("%d",&num);
4.4.4 關于成績錄入
void input()
{
int i;
printf("請輸入錄入的學生人數:");
scanf("%d",&n);
printf("\n\n");
for(i=0;i<n;i++)
{
printf("請輸入學號: ");
scanf("%s",&num[i].xuehao);
printf("\n");
printf("請輸入姓名: ");
scanf("%s",&num[i].name);
printf("\n");
printf("請輸入年齡: ");
scanf("%s",&num[i].old);
printf("\n");
printf("請輸入性別: ");
scanf("%s",&num[i].xingbie);
printf("\n");
printf("請輸入出生年月: ");
scanf("%s",&num[i].date);
printf("\n");
printf("請輸入電話: ");
scanf("%s",&num[i].phone);
printf("\n");
printf("\n\n");
}
printf("輸入完畢!按任意鍵回傳主選單!");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
4.4.5 學生資訊瀏覽
void look()
{
int i;
for(i=0;i<n;i++)
{
printf("學號: %s",num[i].xuehao);
printf("\n");
printf("姓名: %s",num[i].name);
printf("\n");
printf("年齡: %s",num[i].old);
printf("\n");
printf("性別: %s",num[i].xingbie);
printf("\n");
printf("出生年月: %s",num[i].date);
printf("\n");
printf("電話: %s",num[i].phone);
printf("\n\n");
}
printf("\n按任意鍵回傳主選單!");
getch();
}
4.4.6 學生資訊按學號查詢
void select1()
{
int i,no;
char no1[100];
printf("請輸入要查詢的學號:");
scanf("%s",no1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,no1)==0)如果學號的字串內容與no1的字串內容相同的話,strcmp == 0
no=i;
}
printf("請輸入學號: %s",num[no].xuehao);
printf("\n");
printf("請輸出姓名: %s",num[no].name);
printf("\n");
printf("請輸出年齡: %s",num[no].old);
printf("\n");
printf("請輸出性別: %s",num[no].xingbie);
printf("\n");
printf("請輸出出生年月: %s",num[no].date);
printf("\n");
printf("請輸出電話: %s",num[no].phone);
printf("\n\n");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
4.4.7 學生資訊按姓名查詢
void select2()
{
int i,mo;
char mo1[100];
printf("請輸入要查詢的學生姓名:");
scanf("%s",&mo1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].name,mo1)==0)如果學號的字串內容與mo1的字串內容相同的話,strcmp == 0
mo=i;
}
printf("請輸入學號: %s",num[mo].xuehao);
printf("\n");
printf("請輸出姓名: %s",num[mo].name);
printf("\n");
printf("請輸出年齡: %s",num[mo].old);
printf("\n");
printf("請輸出性別: %s",num[mo].xingbie);
printf("\n");
printf("請輸出出生年月: %s",num[mo].date);
printf("\n");
printf("請輸出電話: %s",num[mo].phone);
printf("\n");
printf("\n按任意鍵回傳主選單!");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
4.4.8 學生資訊修改
void xiugai()
{
int i,t,n;
char z1[30],z2[30];
printf(" 請輸入要修改的學號\n");
scanf("%s",z1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,z1)==0);
{
n=i;
}
}
printf("--------------------------------\n");
printf(" 1修改學號 \n");
printf(" 2修改姓名 \n");
printf(" 3修改年齡 \n");
printf(" 4修改性別 \n");
printf(" 5修改出生年月 \n");
printf(" 6修改電話 \n");
printf(" 7回傳主選單 \n");
printf("--------------------------------\n");
while(1)
{
printf("請輸入選單的編號:");
scanf("%d",&t);
switch(t)
{
case 1:
printf("請輸入新的學號:\n");
scanf("%s",z2);
strcpy(num[n].xuehao,z2);
break;
case 2:
printf("請輸入新的姓名:\n");
scanf("%s",z2);
strcpy(num[n].name,z2);
break;
case 3:
printf("請輸入新的年齡:\n");
scanf("%s",z2);
strcpy(num[n].old,z2);
break;
case 4:
printf("請輸入新的性別:\n");
scanf("%s",z2);
strcpy(num[n].xingbie,z2);
break;
case 5:
printf("請輸入新的出生年月:\n");
scanf("%s",z2);
strcpy(num[n].date,z2);
break;
case 6:
printf("請輸入新的電話:\n");
scanf("%s",z2);
strcpy(num[n].phone,z2);
break;
case 7: return;
default:
printf("請在1-7之間選擇\n");
}
}
printf("按任意鍵回傳主選單!\n");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
4.4.9學生資訊洗掉
void shanchu()
{
int i,j,flag=0;
char x1[30];
printf("請輸入將要洗掉的學生的學號:\n");
scanf("%s",x1);
for(i=0;i<n;i++)
if(strcmp(num[i].xuehao,x1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
num[j]=num[j+1];
}
if(flag==0)
printf("該學號不存在!\n");
if(flag==1)
{
printf("洗掉成功!\n");
n--;
}
printf("\n按任意鍵回傳主選單!");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
4.5使用說明
按提示操作即可,
4.6測驗結果與分析
主界面如圖:
學生資訊的錄入如圖:

學生資訊的瀏覽如圖:

學生資訊按學號查詢如圖:

學生資訊按姓名查詢如圖:

學生資訊的修改如圖:

學生資訊的洗掉:

4.7參考文獻
1.《C 程式設計》(第四版),譚浩強,清華大學出版社,2010 年,
2.csdn別人的代碼,
5.體會與感想
制作完這個程式其實我學到了挺多東西的,特別是結構體讓我能夠運用的更加順手了,但是花了挺多時間的,還有很多東西需要我去學習吸收,相信我只要堅持下去,一定會越來越好,
附錄
源代碼
#include<stdio.h>
#include<stdlib.h>//定義了四個變數型別、一些宏和各種通用工具函式
#include<string.h>//使用到字符陣列時需要使用
#include<conio.h>//getch()的頭檔案
using namespace std;
struct record//結構體
{
char xuehao[20];
char name[20];
char old[20];
char xingbie[20];
char date[20];
char phone[20];
}num[100];
bool cmp(record a,record b)
{
return strcmp(a.xuehao, b.xuehao) < 0;
}//為了后面使用字串比較函式
int n;
void input();
void menu();
void look();
void select1();
void select2();
void xiugai();
void shanchu();
void menu()
{
int num=0;
char n;
char m;
printf("***************學生資訊管理系統***************\n");
printf("***************本系統選擇如下*****************\n");
printf("*** 1.學生資訊的錄入 ***\n");
printf("*** 2.學生資訊的瀏覽 ***\n");
printf("*** 3.學生資訊按學號查詢 ***\n");
printf("*** 4.學生資訊按姓名查詢 ***\n");
printf("*** 5.學生資訊修改 ***\n");
printf("*** 6.學生資訊的洗掉 ***\n");
printf("*** 7.退出系統 ***\n");
printf("**********************************************\n");
printf("請輸入(1~7):");
scanf("%d",&num);
switch(num)//選擇函式
{
case 1: system("cls");
input();
break;
case 2: system("cls");
look();
break;
case 3: system("cls");
select1();
break;
case 4: system("cls");
select2();
break;
case 5: system("cls");
xiugai();
break;
case 6: system("cls");
shanchu();
break;
case 7: exit(0);
default:;
}
}
void input()
{
int i;
printf("請輸入錄入的學生人數:");
scanf("%d",&n);
printf("\n\n");
for(i=0;i<n;i++)
{
printf("請輸入學號: ");
scanf("%s",&num[i].xuehao);
printf("\n");
printf("請輸入姓名: ");
scanf("%s",&num[i].name);
printf("\n");
printf("請輸入年齡: ");
scanf("%s",&num[i].old);
printf("\n");
printf("請輸入性別: ");
scanf("%s",&num[i].xingbie);
printf("\n");
printf("請輸入出生年月: ");
scanf("%s",&num[i].date);
printf("\n");
printf("請輸入電話: ");
scanf("%s",&num[i].phone);
printf("\n");
printf("\n\n");
}
printf("輸入完畢!按任意鍵回傳主選單!");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
void look()
{
int i;
for(i=0;i<n;i++)
{
printf("學號: %s",num[i].xuehao);
printf("\n");
printf("姓名: %s",num[i].name);
printf("\n");
printf("年齡: %s",num[i].old);
printf("\n");
printf("性別: %s",num[i].xingbie);
printf("\n");
printf("出生年月: %s",num[i].date);
printf("\n");
printf("電話: %s",num[i].phone);
printf("\n\n");
}
printf("\n按任意鍵回傳主選單!");
getch();
}
void select1()
{
int i,no;
char no1[100];
printf("請輸入要查詢的學號:");
scanf("%s",no1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,no1)==0)如果學號的字串內容與no1的字串內容相同的話,strcmp == 0
no=i;
}
printf("請輸入學號: %s",num[no].xuehao);
printf("\n");
printf("請輸出姓名: %s",num[no].name);
printf("\n");
printf("請輸出年齡: %s",num[no].old);
printf("\n");
printf("請輸出性別: %s",num[no].xingbie);
printf("\n");
printf("請輸出出生年月: %s",num[no].date);
printf("\n");
printf("請輸出電話: %s",num[no].phone);
printf("\n\n");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
void select2()
{
int i,mo;
char mo1[100];
printf("請輸入要查詢的學生姓名:");
scanf("%s",&mo1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].name,mo1)==0)如果學號的字串內容與mo1的字串內容相同的話,strcmp == 0
mo=i;
}
printf("請輸入學號: %s",num[mo].xuehao);
printf("\n");
printf("請輸出姓名: %s",num[mo].name);
printf("\n");
printf("請輸出年齡: %s",num[mo].old);
printf("\n");
printf("請輸出性別: %s",num[mo].xingbie);
printf("\n");
printf("請輸出出生年月: %s",num[mo].date);
printf("\n");
printf("請輸出電話: %s",num[mo].phone);
printf("\n");
printf("\n按任意鍵回傳主選單!");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
void xiugai()
{
int i,t,n;
char z1[30],z2[30];
printf(" 請輸入要修改的學號\n");
scanf("%s",z1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,z1)==0);
{
n=i;
}
}
printf("--------------------------------\n");
printf(" 1修改學號 \n");
printf(" 2修改姓名 \n");
printf(" 3修改年齡 \n");
printf(" 4修改性別 \n");
printf(" 5修改出生年月 \n");
printf(" 6修改電話 \n");
printf(" 7回傳主選單 \n");
printf("--------------------------------\n");
while(1)
{
printf("請輸入選單的編號:");
scanf("%d",&t);
switch(t)
{
case 1:
printf("請輸入新的學號:\n");
scanf("%s",z2);
strcpy(num[n].xuehao,z2);
break;
case 2:
printf("請輸入新的姓名:\n");
scanf("%s",z2);
strcpy(num[n].name,z2);
break;
case 3:
printf("請輸入新的年齡:\n");
scanf("%s",z2);
strcpy(num[n].old,z2);
break;
case 4:
printf("請輸入新的性別:\n");
scanf("%s",z2);
strcpy(num[n].xingbie,z2);
break;
case 5:
printf("請輸入新的出生年月:\n");
scanf("%s",z2);
strcpy(num[n].date,z2);
break;
case 6:
printf("請輸入新的電話:\n");
scanf("%s",z2);
strcpy(num[n].phone,z2);
break;
case 7: return;
default:
printf("請在1-7之間選擇\n");
}
}
printf("按任意鍵回傳主選單!\n");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
void shanchu()
{
int i,j,flag=0;
char x1[30];
printf("請輸入將要洗掉的學生的學號:\n");
scanf("%s",x1);
for(i=0;i<n;i++)
if(strcmp(num[i].xuehao,x1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
num[j]=num[j+1];
}
if(flag==0)
printf("該學號不存在!\n");
if(flag==1)
{
printf("洗掉成功!\n");
n--;
}
printf("\n按任意鍵回傳主選單!");
getch();// 拿來判斷鍵盤的按鍵 ,等待按下任意鍵再繼續執行下面的陳述句,
}
int main()
{
while(1)
{
system("cls");
menu();
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275788.html
標籤:其他
上一篇:主機規劃與磁盤磁區(Linux)
