第一篇:宿舍管理系統(tǒng)課程設計報告
青島農業(yè)大學 理學與信息科學學院
高級語言課程設計報告
設 計 題 目 宿舍管理系統(tǒng)
學生專業(yè)班級班
學生姓名(學號)
設計小組其他同學姓名(學號)
指 導 教 師
完 成 時 間
設 計 地 點
2016年12月06日
一、課程設計目的和任務
《高級語言程序設計》課程設計是計算機相關專業(yè)的主要實踐性教學環(huán)節(jié)。其目的在于加深對高級語言程序設計理論和基本知識的理解,掌握使用C語言進行面向過程設計的基本方法,提高運用面向過程知識解決實際問題的能力。為畢業(yè)設計和以后的工程實踐打下良好的基礎。
宿舍管理系統(tǒng):用C語言為學生宿舍管理人員編寫一個宿舍管理軟件。設某宿舍有:101,102,201,202四個房間,每個房間可住學生<=4人,存儲結構:學號、姓名、房間號,按房間號有序,實現學生的入住、退房和查詢,按給定學號、姓名、房號查詢。
二、分析與設計
1.程序的基本功能:(1).實現新生入住登記(2).修改入住學生信息(3)實現退房
(4)實現以姓名查詢學生信息(5)實現以學號查詢學生信息(6)實現以寢室號查詢學生信息(7)實現按照寢室號從小到大排序(8)實現按學號從小到大排序(9)實現顯示所有學生信息(10)實現退出程序并保存數據 2.定義的函數及說明:
此程序由11個函數構成。
Add----------添加學生信息函數(姓名、學號、宿舍號、班級)Alter----------修改學生信息函數 Delete--------刪除學生信息函數
Display_All--------顯示所有學生信息函數
Query_S_name---------查詢函數以姓名為關鍵字進行查詢 Query_S_number-------查詢函數以學號為關鍵字進行查詢 Query_D_number------查詢函數以寢室號為關鍵字進行查詢 Save-----存儲函數
Judge_Save----退出程序時判斷是否保存函數 Menu--菜單 Main---主函數
3.系統(tǒng)總框圖:
三、系統(tǒng)實施
1.源程序代碼:
#include
int D_number;//學生所在寢室的宿舍號 char S_class1[10];//班級
int Total;//學生總數 }Student[16];int sushehao[4]={101,102,201,202};int count[4]={0};//判斷學號是否與表中所存學號重復 void S_number_Judge(Student S,int t){ int i;for(i=1;i<=(S->Total)-1;i++)
while(strcmp(S[i].S_number,S[t].S_number)==0)//strcmp字符串比較函數,兩個字符逐個比較,相等返回值為
{
printf(“學號輸入失敗,該學號已存在,請重新輸入學號!n”);
printf(“請輸入學生的學號(10個字符以內):”);scanf(“%s”,S[t].S_number);
getchar();
i=1;
} } //添加學生信息函數 void Add(Student S){ int j;int flag=1;printf(“請輸入學生姓名(10個字符以內):”);scanf(“%s”,S[++(S->Total)].S_name);getchar();//獲取換行符
printf(“請輸入學生的學號(10個字符以內):”);scanf(“%s”,S[S->Total].S_number);getchar();S_number_Judge(S,S->Total);//判斷輸入的學號是否與表中所存在的學號重復
while(flag){ printf(“請輸入宿舍號碼:”);
scanf(“%d”,&S[S->Total].D_number);for(j=0;j<4;j++){
if(S[S->Total].D_number==sushehao[j] && count[j]<4)
{
count[j]++;
flag=0;
break;
}
if(S[S->Total].D_number==sushehao[j]&&count[j]==4)
{
printf(“該宿舍已滿,請重新輸入n”);
break;
} } } getchar();printf(“請輸入所在班級:”);scanf(“%s”,S[S->Total].S_class1);getchar();printf(“添加成功!nn”);
}//修改學生信息函數 void Alter(Student S){ int i;int flag=0;//用來判斷表中是否存在所要修改的學生的信息
char number[10];printf(“請輸入你要修改學生的學號:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++)
if(strcmp(S[i].S_number,number)==0)
flag=i;if(!flag)
printf(“你所要修改的學生信息在表中不存在!n”);else {
printf(“新信息如下:n”);
printf(“請輸入學生姓名(10個字符以內):”);
scanf(“%s”,S[flag].S_name);
getchar();
printf(“請輸入學生的學號(10個字符以內):”);
scanf(“%s”,S[flag].S_number);
getchar();
S_number_Judge(S,flag);
printf(“請輸入宿舍號:”);
scanf(“%d”,&S[flag].D_number);
getchar();printf(“請輸入床鋪號碼:”);scanf(“%s”,&S[S->Total].S_bednum);getchar();printf(“請輸入所在班級:”);scanf(“%s”,&S[S->Total].S_class1);getchar();
dirty=1;
printf(“修改成功!n”);} putchar('n');} //刪除學生信息
void Delete(Student S){ int i,j;int flag=0;//用來判斷表中是否存在所要刪除的學生的信息
char number[10];printf(“請輸入你要刪除學生的學號:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++)
if(strcmp(S[i].S_number,number)==0)
flag=i;if(!flag)
printf(“你所要刪除的學生在表中不存在!”);else { for(i=flag;i
j=i+1;
strcpy(S[i].S_name,S[j].S_name);//字符串拷貝函數,格式:符數組名,字符數組名),賦值給
strcpy(S[i].S_number,S[j].S_number);
字 strcpy(S[i].D_number=S[j].D_number;
strcpy(S[i].S_bednum,S[j].S_bednum);
strcpy(S[i].S_class1,S[j].S_class1);}
(S->Total)--;
dirty=1;
printf(“刪除成功!”);} printf(“nn”);} //顯示所有學生信息函數
void Display_All(Student S){ int i;printf(“全體學生信息如下:n”);printf(“--------------------n”);/*格式頭*/ printf(“ 房間號床位號學號姓名班級 n”);printf(“--------------------n”);for(i=1;i<=S->Total;i++)
printf(“ %-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);
putchar('n');} //查詢函數以姓名為關鍵字進行查詢(順序查找)void Query_S_name(Student S){ int i,j=0;char name[10];printf(“請輸入你要查找的學生的姓名(10個字符以內):”);scanf(“%s”,name);getchar();printf(“所查找學生信息如下:n”);printf(“tt-----------------n”);/*格式頭*/ printf(“tt房間號床位號學號姓名班級 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++)
if(strcmp(name,S[i].S_name)==0)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1;
} if(!j)
printf(“n查找失敗,表中不存在該學生的信息!nn”);} //查詢函數以學號為關鍵字進行查詢(折半查找)void Query_S_number(Student S){ int i,j=0;char number[10];printf(“請輸入你要查找的學生的學號(10個字符以內):”);scanf(“%s”,number);getchar();printf(“所查找學生信息如下:n”);printf(“tt-----------------n”);/*格式頭*/ printf(“tt房間號床位號學號姓名班級 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++)
if(strcmp(number,S[i].S_number)==0)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1;
} if(!j)
printf(“n查找失敗,表中不存在該學生的信息!nn”);} //查詢函數以寢室號為關鍵字進行查詢(折半查找)void Query_D_number(Student S){ int i,j,m,n,base,top,mid;j=0;base=1;top=S->Total;printf(“請輸入你要查詢的寢室號:”);scanf(“%d”,&i);getchar();Sort_D_number(S);//將表中原數據按照寢室號從小到大排序
printf(“所查找寢室信息如下:n”);printf(“tt-----------------n”);/*格式頭*/ printf(“tt房間號床位號學號姓名班級 n”);printf(“tt-----------------n”);if(i>=S[1].D_number&&i<=S[S->Total].D_number){
while(base<=top)
{
mid=(base+top)/2;
if(i==S[mid].D_number)
{
m=mid;n=mid-1;
while(S[m].D_number==i)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[m].D_number,S[m].S_bednum,S[m].S_number,S[m].S_name,S[m].S_class1);m++;
if(m>S->Total)
break;
}
if(n>0)
{
while(S[n].D_number==i)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[n].D_number,S[n].S_bednum,S[n].S_number,S[n].S_name,S[n].S_class1);n--;
if(n<1)
break;
}
}
j=1;
putchar('n');
break;
}
else if(i>S[mid].D_number)
base=mid+1;
else
top=mid-1;
} } if(!j)
printf(“n查找失敗,表中不存在該寢室的信息!nn”);} //存儲函數
void Save(Student S){ int i=0;FILE *fp;/*定義文件指針*/ char filename[100];/*定義文件名*/ printf(“tt輸入文件名:”);/*輸入文件名*/ scanf(“tt%s”,&filename);if((fp=fopen(filename,“w”))==NULL)/*打開文件*/ { printf(“tt無法打開該文件n”);system(“pause”);return;} fprintf(fp,“%dn”,S->Total);/*循環(huán)寫入數據*/ while(i<(S->Total)){
fprintf(fp,“%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);i++;} fclose(fp);/*關閉文件*/ printf(“寫入成功!n”);/*返回成功信息*/ } //退出程序時判斷是否保存函數
void Judge_Save(int i,Student S){ char ch;if(i){
printf(“表中數據已改變,是否保存后再退出(Y/N)?:”);
ch=getchar();
getchar();
while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
{
printf(“請輸入N(n)或者Y(y):”);
ch=getchar();
getchar();
}
if(ch=='y'||ch=='Y')
Save(S);} } //菜單
void Menu(){ system(“cls”);/*運行前清屏*/ printf(“n”);printf(“
青島農業(yè)大學學生宿舍管理系統(tǒng)nn”);
printf(“ n”);printf(“ 作者:明偉、李善虎、胡蒙亨n”);printf(“n”);printf(“tt=============學生宿舍管理系統(tǒng)===========n”);/*菜單選擇*/ printf(“tt n”);
printf(“tt 1.新生入住 n”);printf(“tt 2.修改入住學生信息 n”);printf(“tt 3.退房服務 n”);printf(“tt 4.以姓名查詢學生信息 n”);printf(“tt 5.以學號查詢學生信息 n”);printf(“tt 6.以寢室號查詢學生信息 n”);
printf(“tt 7.查詢全部學生信息 n”);printf(“tt 0.退出程序 n”);printf(“tt=========================================n”);} int main(){ int i;Student S;S->Total=0;do {
Menu();
printf(“請選擇您要運行的選項按(0-9):”);
scanf(“%d”,&i);
getchar();//獲取換行符
putchar('n');
switch(i)
{
case 1:Add(S);
system(“pause”);
break;
case 2:Alter(S);
system(“pause”);
break;
case 3:Delete(S);
system(“pause”);
break;
case 4:Query_S_name(S);
system(“pause”);
break;
case 5:Query_S_number(S);
system(“pause”);
break;
case 6:Query_D_number(S);
system(“pause”);
break;
case 7:Display_All(S);system(“pause”);
break;
case 0:Judge_Save(dirty,S);
exit(0);
break;
default:printf(“選擇錯誤:請在選項到之間選擇!nn”);
break;
} }while(i!=10);}(注:黑體部分為我負責的部分)2.程序運行說明(包括結果說明)程序運行說明
運行程序后,出現主菜單界面,按照主菜單上的編號進行操作即可,每輸入一個編號后按回車即進入該子程序,然后按照提示輸入或查詢信息。結果說明:
3.存在的問題
本程序在新生入住時將宿舍號限定在101,,12,201,202.當輸入的宿舍號不符合要求時只是重復出現“請輸入宿舍號”而沒有明確的文字提示。而且在修改入住學生信息時對宿舍號沒有限制。還需進一步完善。
四、總結與體會
當看到課程設計任務時,完全找不著頭緒,由于對C語言的認識和了解只是停留在表面,所以不知道從何下手。后來在不停的復習課本,在老師和同學的幫助下,逐漸找到了方向,也對設計中需要用到的方法和結構有所了解和認識,學會了如何使用,之后的一次課又經過仔細的思考了解了這個程序的基本框架,確定了程序的流程圖,為程序的完成奠定了基礎,接下來在寫代碼的過程中仍然遇到了很多問題,經過不斷的查閱課本和網絡,逐步解決了代碼問題,在實現整個程序功能方面,有些結構和方法不會用,最后在老師的幫助下才得以順利解決。做出來的程序在執(zhí)行過程中仍然有一些問題,比如在上述“存在的問題”中提到的。設計過程確實讓我認識到了自己技術上的不足,在以后的學習中應該加強這方面的學習和重視。為以后的畢業(yè)設計和就業(yè)做準備。
第二篇:酒店管理系統(tǒng)課程設計報告
課程設計報告
課程名稱: 項目名稱: 院 系: 專 業(yè): 姓 名: 班 級: 學 號: 指導教師: 設計地點:
基于ASP.net 2.0的Web應用開發(fā)
酒店管理系統(tǒng)
計算機科學與工程學院
計算機科學與技術
王晨光 計科121 090312114 王劍
九章樓 N6-109
開課時間: 2014 至 2015 學年第 1 學期
常熟理工學院計算機科學與工程學院 制
目錄
一、前言.........................................................................................................................1 1.1、系統(tǒng)開發(fā)背景...................................................................................................1 1.2、研究目的及意義................................................................................................1 1.3、系統(tǒng)開發(fā)工具...................................................................................................1
二、系統(tǒng)分析..................................................................................................................1 2.1、需求分析..........................................................................................................1 2.1.1、系統(tǒng)主要功能.........................................................................................1 2.1.2、系統(tǒng)實現目標.........................................................................................2 2.1.3、系統(tǒng)性能需求.........................................................................................2 2.2、可行性分析......................................................................................................2 2.2.1、技術可行性............................................................................................2 2.2.2、經濟可行性............................................................................................2 2.2.3、操作可行性............................................................................................2
三、系統(tǒng)設計..................................................................................................................2 3.1、系統(tǒng)功能結構設計............................................................................................2 3.2、數據庫設計......................................................................................................3 3.2.1、數據庫E-R圖設計..................................................................................3 3.2.2、數據庫的邏輯設計..................................................................................5
四、系統(tǒng)詳細設計與實現..................................................................................................7 4.1、用戶登錄..........................................................................................................7 4.2、系統(tǒng)主界面......................................................................................................7 4.3、客房類型管理...................................................................................................8 4.4、客房經營管理...................................................................................................9 4.5、客戶信息檢索.................................................................................................12 4.6、客房經營狀況分析..........................................................................................12
五、課程設計小結..........................................................................................................13
一、前言 1.1、系統(tǒng)開發(fā)背景 隨著當今世界經濟和計算機的飛速發(fā)展,酒店在內部實現用戶通過電話預約或親自前往酒店預訂客房,服務員人工填寫客房預訂表進行客房預訂的傳統(tǒng)模式已經十分落后,滿足不了現代人的需要。一個成功的酒店,其經營者不僅要提供高質量的服務水平和服務質量,還要提供最完善的設備和先進的技術。從而提高客房的占有率和回頭率,還要有好的工作效率,并嚴格的控制住成本。在現如今的信息化時代,更重要的是還必須要有一個完善的管理信息系統(tǒng),便于方便客人和更好的管理酒店。1.2、研究目的及意義 隨著計算機網絡的發(fā)展,Internet技術越來越廣泛的應用,網絡覆蓋的區(qū)域不斷擴大,給酒店業(yè)計算機應用帶來了蓬勃發(fā)展的機遇。采用全新的計算機網絡和管理系統(tǒng)將成為提高酒店管理效率,改善服務水準的重要手段之一。所以酒店入住信息管理系統(tǒng)是酒店經營不可或缺的現代工具。而本系統(tǒng)就是為了實現酒店高效管理而設計的。1.3、系統(tǒng)開發(fā)工具 Visual Studio 2013、SQL Server2008、PhotoShop CC Visual Studio 2013是一套完整的開發(fā)工具集,用于生成ASP.NET Web應用程序、XML Web Services、桌面應用程序和移動應用程序。Visual Basic、Visual C++和Visual C#全部都是用相同的集成開發(fā)環(huán)境(IDE)。SQL Server 2008是一個分布式的關系數據庫管理系統(tǒng),具有客戶機/服務器體系結構,具有易用性、適合分布式組織的可伸縮性、用于決策支持的數據庫倉庫功能、與許多其他服務器軟件緊密關聯的集成性、良好的性價比等優(yōu)點,是一種應用廣泛的數據庫管理系統(tǒng)。PhotoShop CC是Adobe公司出品的一個二維圖像處理軟件,主要用于對圖像進行編輯和繪制,對用到的圖片進行美工,使系統(tǒng)界面更加美觀友好。
二、系統(tǒng)分析 2.1、需求分析 2.1.1、系統(tǒng)主要功能 該系統(tǒng)以酒店訂房業(yè)務為基礎,提供科學有效的管理模式。系統(tǒng)主要功能設計有客房類型管理、客房信息管理、客房經營管理、客房信息檢索、經營狀況分析等五個部分。1 2.1.2、系統(tǒng)實現目標 ? 系統(tǒng)界面友好美觀,操作簡單易行; ? 業(yè)務管理信息化,可隨時掌握客戶入住、客戶退租、客房信息等情況; ? 采用流行的C/S方式,響應速度快,安全性高,擴充方便; ? 該軟件應盡可能地降低使用者的勞動強度,同時提高工作質量和效率。2.1.3、系統(tǒng)性能需求 ? 本著“簡單易用”的原則,方便各層次人員的使用; ? 系統(tǒng)必須穩(wěn)定可靠,保證營業(yè)高峰期時不出現故障。2.2、可行性分析 2.2.1、技術可行性 系統(tǒng)采用了C/S技術結構,使用Microsoft Visual Studio 2013開發(fā)軟件,數據庫服務器使用Microsoft SQL Server 2008數據庫,該數據庫是目前最方便的流行數據庫,能夠處理大量的數據。它的活動性、安全性和易用性為數據庫編程提供了良好的條件。2.2.2、經濟可行性 對于酒店這樣的企業(yè)來說,開發(fā)一個這樣的系統(tǒng)是非常必要的,他們完全有能力和資金來負擔系統(tǒng)的開發(fā)成本。而且,系統(tǒng)開發(fā)完成投入使用之后,將大大提高工作效率,減少成本,增加收益。2.2.3、操作可行性 該系統(tǒng)擁有非常簡潔的圖形界面,并且在某些操作中附有操作說明,即使是對系統(tǒng)毫不了解的人來說,也是很容易接受的。因此,該酒店管理系統(tǒng)在技術、經濟、技術上都是可行的。
三、系統(tǒng)設計 3.1、系統(tǒng)功能結構設計 采用本系統(tǒng)可大大減少前臺服務人員(系統(tǒng)管理人員)的人數,前臺服務員直接掌控整個系統(tǒng)。由于采用計算機操作,可以大大提高操作速度。本酒店管理系統(tǒng)主要包括以下五個模塊,分別是:客房類型管理、客房信息管理、客房經營管理、客房信息檢索、經營狀況分析。圖3.1為酒店管理系統(tǒng)功能結構: 2
圖3.1 酒店管理系統(tǒng)功能結構
3.2、數據庫設計 關系模型是目前應用最廣泛、技術最成熟的一種數據庫模型,其特點是概念簡單清晰、易于被用戶掌握和接受,有嚴格的數學基礎和關系數據理論,能極大的簡化數據庫開發(fā)和維護工作,深受廣大用戶的歡迎,是現代計算機信息系統(tǒng)和計算機應用系統(tǒng)的基礎和核心。3.2.1、數據庫E-R圖設計 酒店管理系統(tǒng)的核心功能主要設計7個表,分別是:RoomsCategory(客房類型表)、RoomsInfo(客房信息表)、CustomerInfo(客戶信息表)、RoomOperation(客房操作表)、RoomsStatus(客房狀態(tài)表)、History(歷史記錄表)、UserInfo(用戶信息表)。RoomsCategory(客房類型):主要存儲房間編號、房間名、大小、床的數量、價格、空調數、電視數。其E-R圖設計如圖3.2所示: 圖3.2 客房類型E-R圖
RoomsInfo(客房信息): 主要存儲房間編號、房間類型、房間位置、房間描述。其E-R圖設計3 如圖3.3所示: 圖3.3 客房信息E-R圖 圖設計如圖3.4所示:
CustomerInfo(客戶信息):主要存儲客戶身份證號、客戶姓名、客戶電話、客戶住址。其E-R圖3.4 客戶信息E-R圖
RoomsStatus(客房狀態(tài)):主要存儲房間編號、房間狀態(tài)。其E-R圖設計如圖3.5所示: 圖3.5 客房狀態(tài)E-R圖 E-R圖設計如圖3.5所示:
History(歷史記錄):主要存儲入住時間、退租時間、房間編號、總消費、客戶身份證號。其
圖3.5 歷史記錄E-R圖
RoomOperation(客房操作):主要存儲房間編號、入住時間、客戶身份證號、房間狀態(tài)標記。其E-R圖設計如圖3.6所示:
圖3.6 客房操作E-R圖
UserInfo(用戶信息):主要存儲用戶編號、姓名、密碼、郵箱、地址、電話。其E-R圖設計如圖3.7所示:
圖3.7 用戶信息E-R圖 3.2.2、數據庫的邏輯設計 RoomsCategory(客房類型表)如表1所示:
表1 客房類型表
RoomsInfo(客房信息表)如表2所示: 5
表2 客房信息表 CustomerInfo(客戶信息表)如表3所示:
表3 客戶信息表
RoomOperation(客房操作表)如表4所示: 表4 客房操作表
RoomsStatus(客房狀態(tài)表)如表5所示: 表5 客房狀態(tài)表 History(歷史記錄表)如表6所示:
表6 歷史記錄表 UserInfo(用戶信息表)如表7所示:
表7用戶信息表 6
四、系統(tǒng)詳細設計與實現 4.1、用戶登錄 用戶通過輸入用戶編號和密碼登錄系統(tǒng),如果密碼不正確,則不允許用戶登錄到系統(tǒng)。圖4.1為用戶登錄流程圖,圖4.2為用戶登錄界面。
圖4.1 用戶登錄流程圖
圖4.2 用戶登錄主界面
4.2、系統(tǒng)主界面 用戶登錄成功后,進入系統(tǒng)主界面,主界面分為三個部分:頂端酒店照片頁面、左側導航欄和右側顯示操作界面。當點擊左側導航欄名稱的時候,不需要重新打開新的窗口,而是在右側的顯示欄中顯示內容。圖4.3為系統(tǒng)主界面。7
圖4.3 系統(tǒng)主界面
4.3、客房類型管理 用戶在成功登錄系統(tǒng)后,點擊【客房經營管理】,在右側顯示欄中就會顯示客房的信息和對客房進行修改的操作,有添加、編輯和刪除客房信息的操作。點擊【編輯】按鈕,可以對客房的信息進行修改;點擊【刪除】按鈕,可以將選中的客房從數據庫中刪除掉;點擊【添加房間】可以添加數據庫中不存在的客房類型。圖4.4為客房類型管理流程圖,圖4.5為客房類型管理界面,圖4.6為添加客房界面。圖4.4 客房類型管理流程圖
圖4.5 客房類型管理界面
圖4.6 添加客房界面
4.4、客房經營管理 系統(tǒng)登錄成功后,點擊導航欄中的【客房經營管理】,根據客戶的需求,查詢相應的客房是否有入住信息。如果有,則告知客戶本客房已滿,請選擇其它的客房;如果沒有,則進行訂房操作。當用戶接收到客戶的退房申請時,用戶根據客戶的信息查找入住的客房,登記結算并進行退房。圖4.7為客房經營管理流程圖,圖4.8為客房經營管理界面,圖4.9為訂房界面,圖4.10為退房界面。
圖4.7 客房經營管理流程圖
圖4.8 客房經營管理界面
圖4.9 訂房界面 10
圖4.10 退房界面
當用戶點擊【退房】時,系統(tǒng)會彈出【確定要退房?】對話框進行驗證,點擊【取消】則不會執(zhí)行退房操作;點擊【確定】后,則執(zhí)行退房操作,系統(tǒng)彈出【退房成功】對話框,點擊【確定】,則退房成功,并顯示消費總金額。圖4.11為【確定要退房】對話框,圖4.12為【退房成功】對話框,圖4.12為退房信息結算界面。圖4.11 【確定要退房】對話框 圖4.12 【退房成功】對話框
圖4.12 退房信息結算界面 11
4.5、客戶信息檢索 系統(tǒng)登錄成功后,點擊左側導航欄中的【客戶信息檢索】,右側顯示出檢索客戶信息界面,可以利用“姓名”、“房間號”、“時間段”等關鍵字對客戶入住的信息進行查詢。圖4.13為客戶信息檢索流程圖,圖4.14為按姓名查詢客戶信息,圖4.15為按時間段查詢客戶信息。圖4.13為客戶信息檢索流程圖
圖4.14 按姓名查詢客戶信息
圖4.15 按時間段查詢客戶信息
4.6、客房經營狀況分析 系統(tǒng)登錄成功后,點擊左側導航欄中的【客房經營狀況分析】,右側顯示出客房經營狀況的界面,選擇相應的時間段,點擊【總收入】按鈕,就可以顯示出選定時間段內的收入,點擊【客流量】按鈕,12 就可以顯示出選定時間段內的入住人數。點擊【收入顯示】按鈕,可以顯示出【標準間】、【商務套房】、【情侶套房】三種客房類型各自的收入和在總收入所占的比例。圖4.16為客房經營狀況分析流程圖,圖4.17為客房經營狀況分析界面。圖4.16 客房經營狀況分析流程圖
圖4.17 客房經營狀況分析界面
五、課程設計小結 本次課程設計是基于ASP.net進行Web程序開發(fā),開發(fā)的項目系統(tǒng)是酒店管理系統(tǒng)。本次的課程設計,由于自身能力有限,難免會有一些遺漏和疏忽的地方,系統(tǒng)有時也不穩(wěn)定,有些功能還沒有真正的實現,測試運行的時候也有一些問題的存在。通過這次對酒店管理系統(tǒng)的設計與開發(fā),讓發(fā)更加認識到了自身學習的不足之處,但也讓我對Web編程語言的了理解和應用有了更深的認識。課程設計之后,感受到了動手能力有所提高,并能夠結合實際存在的問題在專業(yè)領域內進行更深人的學習。同時,通過本次的課程設計讓我了解到,僅學習書本上的知識是不夠的,還要有較強的實踐動手能力。因為我們學習知識就是為了實踐。而只有多實踐,多編寫程序,才能更好地理解與掌握書本上的知識。
第三篇:倉庫管理系統(tǒng)課程設計報告
倉庫管理系統(tǒng)課程設計報告
一、概述
項目背景:
倉庫管理在企業(yè)的整個供應鏈中起著至關重要的作用,如果不能保證正確的進貨和庫存控制及發(fā)貨,將會導致管理費用的增加,服務質量難以得到保證,從而影響企業(yè)的競爭力。傳統(tǒng)簡單、靜態(tài)的倉庫管理已無法保證企業(yè)各種資源的高效利用。如今的倉庫作業(yè)和庫存控制作業(yè)已十分復雜化多樣化,僅靠人工記憶和手工錄入,不但費時費力,而且容易出錯,給企業(yè)帶來巨大損失。使用倉庫管理系統(tǒng) , 對倉庫各環(huán)節(jié)實施全過程控制管理,并可對貨物進行貨位、批次、保質期、配送等實現系統(tǒng)列號管理,對整個收貨、發(fā)貨、補貨、集貨、送貨等各個環(huán)節(jié)的規(guī)范化作業(yè) , 還可以根據客戶的需求制作多種合理的統(tǒng)計報表。倉庫管理系統(tǒng)能幫助企業(yè)合理有效地利用倉庫空間,以快速、準確、低成本的方式為客戶提供最好的服務。
系統(tǒng)特點: 本系統(tǒng)是采用面向對象的設計思想進行編制,整個系統(tǒng)由若干個表單、報表及一個主菜單組成,由項目管理器統(tǒng)一管理全部程序的編寫和調試.用戶在操作中可以通過主菜單調用系統(tǒng)的各個功能.在表單設計方面盡量考慮方便用戶,簡化操作,絕大部分操作只需點擊鼠標即可完成,力求突出系統(tǒng)的便利性、實用性.設計環(huán)境與工具: 在現有的DBMS(Visual FoxPro)支持下進行。
二、需求分析
問題陳述:
需完成的功能: 產品入庫管理,可以填寫入庫單,確認產品入庫;
產品出庫管理,可以填寫出庫單,確認出庫;
借出管理,憑借條借出,然后能夠還庫;
初始庫存設置,設置庫存的初始值,庫存的上下警戒限;
可以進行盤庫,反映每月、年的庫存情況;
可以查詢產品入庫情況、出庫情況、當前庫存情況,可以按出庫單、入庫單,產品、時間進行查詢;
三、系統(tǒng)結構設計
(1)系統(tǒng)功能結構設計(包括主要功能模塊及功能模塊的細化。)
本系統(tǒng)應能夠方便的實現倉庫貨物存儲信息的錄入、修改、編輯和瀏覽等功能,高效地完成企業(yè)的各種產品信息的統(tǒng)計功能,打印出各種產品入庫出庫和盤庫查詢的信息表格,系統(tǒng)的各主要功能的要求如下: 信息錄入功能: 倉庫產品基本信息、產品入庫信息、產品出庫信息、產品清單資料等.瀏覽功能: 瀏覽倉庫產品基本信息,瀏覽產品入庫情況、出庫情況、當前庫存情況.查詢功能: 產品標號,或者按驗收時間查詢庫存設置等.報表打印功能: 打印倉庫產品貨單表,空白產品登記表和各種統(tǒng)計表.(2)數據庫設計
一個數據庫中包含許多表,表之間又有關聯,所以設計數據庫的步驟為:第一步,確定所需要的表;第二步,確定每個表所需要的字段;第三,確定各個表之間的關聯關系;最后形成表的結構.定義表(包括表中的字段)、視圖、索引、主關鍵字、確定表間的聯系。
數據庫要求:在數據庫中至少應該包含下列數據表:
出庫單表(chjy): 記錄產品出庫狀況。
入庫單表(cgdd):記錄產品入庫狀況。
產品供應商表(gys):記錄產品提供者。
公司雇員表(gy):記錄來倉庫存取產品的人員名單。產品表(cp):記錄倉庫現存狀況。
庫存情況表;出庫臺帳; 入庫臺帳;
借條信息表(反映借出人,借出時間,借出產品,借出數量,還庫時間等)。
(3)系統(tǒng)流程結構圖
數據流圖的基本目的是利用它作為交流信息的工具,利用它將對現有系統(tǒng)的認識或對目標系統(tǒng)的設想用數據流圖描繪出來,供有關人員審查確認: 數據流圖的另一個主要用途是作為分析和設計的工具,幫助分析員實現總結現有系統(tǒng)的目標,對更詳細的設計步驟提供幫助.數據流圖是描繪系統(tǒng)的邏輯模型,以圖形的形式表示出來,以下是倉庫管理系統(tǒng)的數據流圖.四、系統(tǒng)詳細設計
(1)描述每一個功能所完成的任務,指明實現該功能的表單、菜單、報表等。
系統(tǒng)的功能模塊設計
圖1-1
系統(tǒng)功能模塊
(2)說明主要功能的設計思想和方法(包括涉及到的數據源、關鍵的屬性和代碼等。)
設計思想分析:
將管理系統(tǒng)分為進庫操作、出庫操作、損耗操作、查詢操作、報表操作、維護操作六部分。
1、入庫時根據商品的具體情況進行處理,如果庫中已存在此商品,就在原來的數量基礎上加上進貨數量,如果沒有則自動新增此產品,并提醒管理員在最新報價表中加上此商品的最新報價(為了出庫的正確性,某商品的最新報價的存在是其出庫的前提)。如果商品已以入庫,則自動在商品進出表中加上相關記錄,以便于以后的核對。
2、為了達到出庫價格的正確性,出庫時系統(tǒng)自動將此商品的售價和最新報價里的價格進行比較,如果不相等則出現提示信息。另外,程序還有其他服務功能,比如如果商品數量不足或沒有相關商品則出現提示信息。
3、商品的查詢專門提供給廣大客戶使用,客戶可以按商品編號和商品名稱、數量、單價、進庫出庫信息、對庫中的具體商品進行查詢,查詢有商品代號和商品名稱兩種方法,這樣,客戶可以輕松掌握倉庫的庫存情況,便于交易。
4、核對措施也是此系統(tǒng)中必備的,為了便于以后核對,出庫的記錄也將存儲起來。出庫單打印默認為2份,其一用交給交易對方,另一份管理員自己保存。便于核對。同樣,本系統(tǒng)還會自動對入庫情況進行記錄,這樣,用戶能輕松掌握倉庫的變化,可以隨時對庫存進行分析核對。
5、保密性是作為一個企業(yè)或者機構所十分重視的,給用戶一個安全的環(huán)境是優(yōu)秀的管理軟件所必須做到做好的,本軟件也做到了安全性,就是說登錄時要有正確的密碼,這樣一來,只有系統(tǒng)管理員才有權更改系統(tǒng)里面的數據了。
6、本系統(tǒng)還帶有自動清除測試記錄功能(課本是本系統(tǒng)的測試數據),如果用戶要正式使用倉庫,只要選擇操作菜單下的正式使用命令。這樣就不需要用記一條條去刪記錄了。
(3)界面設計要合理、簡明。
五、實施及測試 指出已實現的每個功能,附上運行、測試結果。
六、結束語
心得體會:
經過了這次倉庫管理系統(tǒng)的課程設計我從中學到了很多,同時明白了做一個小型軟件的步驟和流程.如何讓自己設計的軟件運用到具體的實際工作中,這是一個關鍵的環(huán)節(jié).還有就是程序設計和運行測試中遇到的問題該如何解決,從解決問題中我也學到了許多平時課本上所沒有的知識.當然,能夠完成這個倉庫管理系統(tǒng)我自己也感覺很有成就感.運用到的開發(fā)工具和軟件技術: 此系統(tǒng)結合貨物倉庫管理的要求,對Visual FoxPro(VFP)數據庫管理系統(tǒng)、SQL語言的學習和應用,主要完成貨物倉庫管理系統(tǒng)的需求分析,系統(tǒng)的數據庫設計和實現,系統(tǒng)的表單設計,主控程序設計,并由此設計了數據庫結構和應用程序。系統(tǒng)運行結果證明,本人設計的貨物倉庫管理系統(tǒng)可以滿足倉庫管理者完成倉庫管理的日常工作,包括材料的入庫,出庫以及庫存材料信息的管理維護等
軟件還需要哪些改進:
在編寫源程序代碼的過程中對語言的運用還需要提高,應使寫出來的程序更加簡潔,易讀懂,更加滿足實際工作的需要.要想使做出來的程序更好的利用還需根據實際需要在今后的運用中不斷的改進和完善.七、參考資料
1.Visual FoxPro 程序設計及其應用系統(tǒng)開發(fā)
李作緯 等
中國水利水電出版社 2.數據庫應用系統(tǒng)開發(fā)技術
劉軍
等
機械工業(yè)出版社 3.其它資料若干
第四篇:倉庫管理系統(tǒng)課程設計報告
《軟件工程》課程設計報告
倉庫信息管理系統(tǒng)
專業(yè)班級: 學生學號: 學生姓名: 指導教師姓名:
2016年月
目錄
一、系統(tǒng)可行性研究.......................................2
二、系統(tǒng)的需求分析.......................................5
三、系統(tǒng)概要設計........................................14
四、系統(tǒng)的詳細設計......................................17
五、系統(tǒng)的實現和測試....................................20
六、實驗總結............................................26
倉庫信息管理系統(tǒng)一、系統(tǒng)可行性研究
1.1引言 1.1.1編寫目的
為了以最小的代價在最短的時間內確定倉庫管理系統(tǒng)項目是否值得去開發(fā),其中的關鍵和技術難點是什么,問題能否得到解決,怎樣達到目的?我們編寫了可行性報告以對這些問題進行分析。
除此之外,經過對此項目進行詳細調查研究,我們初步擬定了系統(tǒng)實現報告,對軟件開發(fā)中將要面臨的問題及其解決方案進行初步設計及合理安排。明確開發(fā)風險及其所帶來的經濟效益。以便于中小規(guī)模工廠的倉庫管理人員閱讀及理解整個項目。1.1.2項目背景
開發(fā)的軟件系統(tǒng)的名稱:倉庫信息管理系統(tǒng) 項目提出者: 項目開發(fā)者:
項目使用者:倉庫管理人員 1.2可行性研究的前提 1.2.1要求
A.功能:極大提高倉庫工作人員的工作效率,大大減少以往入貨、出庫流程繁瑣,雜亂,周期長的弊端;基于倉庫管理的全面自動化,減少入庫管理、出庫管理及庫存管理中的漏洞,節(jié)約不少管理開支,增加企業(yè)收入;實現倉庫的管理操作自動化和信息的電子化,全面提高倉庫的管理水平。
B.性能:系統(tǒng)的存貨信息必須保持更新狀態(tài),客戶的產品出入庫信息必須無差錯,及時的 保存到倉庫管理系統(tǒng)的服務器上,對服務器上的數據必須定時的檢查并與倉庫中存放的貨物進行核對。
C.本系統(tǒng)要求輸出的數據有:數據完整,詳實,及時。
在此方面,若此項目投入使用,將給企業(yè)帶來豐厚的經濟效益社會效益。并且,此項目開發(fā)成本低,占用資源少,在經濟方面可行。1.5操作可行性分析
本系統(tǒng)設計思路清晰,操作簡捷,具有良好的用戶界面,和較為完善的異常處理機制及信息處理機制,一般倉庫管理者稍加培訓即可使用。在操作方面可行。
二、系統(tǒng)的需求分析
2.1功能描述
本軟件主要有以下幾方面的功能:
(1)信息管理:可對商品進行查詢,刪除,修改操作,完成對商品信息管理的功能;
(2)庫存管理:對商品入庫,出庫的管理。2.2數據流圖 2.2.1數據流分析
數據流圖是組織中信息運動的抽象,是管理信息系統(tǒng)邏輯模型的主要形式。它可以綜合的反映出信息在系統(tǒng)中的流動、處理和存儲情況,具有良好的抽象性
商品入庫請求商品入庫管理入庫商品信息更新商品信息出庫商品信息商品出庫請求商品出庫管理庫存商品信息更新后的商品信息修改商品請求刪除商品請求商品信息管理商品信息庫存商品信息表商品清單查詢商品請求圖2-2 二層數據流圖
對每一個功能模塊的分解圖
(1)對第一個模塊“商品入庫管理”的細分圖
商品入庫管理子系統(tǒng)包含兩個功能模塊:“商品入庫”、“處理商品”; 一個文件存儲:“入庫商品信息表”
入庫請求1商品入庫商品編號1.11.21.31.4商品名稱商品數量商品價格輸入商品編輸入商品名輸入商品數輸入商品價號稱量格商品信息入庫商品信息表入庫商品信息
圖2-3 “商品入庫管理”分解圖
(2)對“商品出庫管理”的細分圖
商品出庫管理子系統(tǒng)包含兩個功能模塊:“商品出庫”、“處理商品”;
一個文件存儲:“出庫商品信息表”
入庫請求1商品入庫商品編號1.1輸入商品編號商品名稱商品價格1.21.31.4商品數量輸入商品名輸入商品數輸入商品價稱量格商品信息商品商品出庫信息出庫商品信息表入庫商品信息表出庫商品信息出庫請求2商品出庫商品名稱2.1輸入商品名稱商品數量2.2輸入出庫數量入庫商品信息6更新商品信息3刪除商品輸入商品編號3.1輸入商品編號輸入商品名稱3.2輸入商品名稱商更新后的商品品信息信息輸入編號4.1.1輸入商品編號輸入名稱4.1.2輸入商品名稱商品信息庫存商品信息刪除商品請求管理員查詢商品信息請求44.1請求分類查詢商品信按條件查詢息商品信息請求分類4.2查詢所有商品信息庫存商品信息表查詢所有商品信息請求庫存商品信息5.2輸入新的編號修改后的商品信息輸出信息修改商品信息請求修改編號商品名稱5修改商品信息5.1輸入商品名稱管理員修改數量修改后的商品信息5.3輸入新的數量
圖2-6 底層數據流圖
2.3 數據字典
數據字典是各類數據描述的集合,它是進行詳細的數據收集和數據分析后所獲得的主要成果。該系統(tǒng)的數據字典如下: 2.3.1 數據流
數據字典是各類數據描述的集合,它是進行詳細的數據收集和數據分析后所獲得的主要成果。該系統(tǒng)的數據字典如下:
1.數據源點和終點描述(1)名稱:商品
加工編號:1.4 輸入數據流:商品數量
輸出數據流:商品信息
加工邏輯:輸入商品價格,輸出商品信息(6)加工名:商品出庫
加工編號:2 輸入數據流:出庫請求
輸出數據流:商品名稱
加工邏輯:接收出庫請求(7)加工名:輸入商品名稱
加工編號:1.2 輸入數據流:商品名稱
輸出數據流:商品數量
加工邏輯:輸入商品名稱(8)加工名:輸入出庫數量
加工編號:2.2 輸入數據流:商品數量
輸出數據流:商品出庫信息
加工邏輯:輸入出庫數量(9)加工名:更新商品信息
加工編號:6 輸入數據流:出庫商品信息,入庫商品信息,庫存商品信息
輸出數據流:更新后的商品信息
加工邏輯:接收修改的商品信息進行修改(10)加工名:刪除商品
加工編號:3 輸入數據流:刪除商品請求
輸出數據流:輸入商品編號
加工邏輯:接收刪除請求
0 加工邏輯:修改商品信息
3.文件存儲
(1)文件名稱:入庫商品信息表
簡述:存放入庫的商品信息
輸入數據:商品信息
輸出數據:入庫商品信息
文件組成:商品的編號、名稱、數量、價格(2)文件名稱:出庫商品信息表
簡述:存放出庫的商品信息
輸入數據:商品的出庫信息
輸出數據:出庫商品信息
文件組成:出庫商品數量(3)文件名稱:庫存商品信息表
簡述:存放所有商品信息
輸入數據:更新后的商品信息,修改后的商品信息,刪除后的商品信息
輸出數據:庫存商品信息
文件組成:商品的編號、名稱、數量、價格
4.數據流
(1)數據流名字:入庫請求 描述:對商品進行入庫 組成:入庫命令
(2)數據流名字:入庫商品信息 描述:對入庫商品信息處理
組成:入庫商品信息=商品編號+名稱+數量+價格(3)數據流名字:商品編號 描述:輸入商品編號 組成:商品編號
三、系統(tǒng)概要設計
3.1總體結構和模塊設計 3.1.1總體結構設計
模塊是軟件結構的基礎,軟件結構的好壞完全由模塊的屬性體現出來,把軟件模塊化的目的是為了降低軟件復雜性,使軟件設計,測試,調試,維護等工作變得簡易,但隨著模塊數目的增加,通過接口連接這些模塊的工作量也隨之增加。1.總體結構框圖
倉庫信息管理系統(tǒng)庫存管理信息管理商品入庫商品出庫刪除商品修改商品查詢商品信息按條件查詢商品信息查詢所有商品信息
圖3-1系統(tǒng)總體結構圖
2.模塊說明
信息管理系統(tǒng)刪除請求修改請求輸入名稱輸入商品名稱輸入標號輸入新編號商品信息查詢請求刪除商品信息刪除商品信息接收信息查詢商品信息反饋信息請求分類請求分類修改商品信息輸入編號反饋輸入名稱反饋接收信息按條件查詢商查詢所有商品品信息接商收品信信息息輸入商品編號及名稱輸入商品編號輸入商品名稱反饋輸入數量反饋輸入新數量
圖3-3信息管理子系統(tǒng)結構圖
(3)庫存管理子系統(tǒng)結構圖如圖3-4所示
庫存管理系統(tǒng)入庫請求出庫請求入庫商品信息商品入庫出庫商品信息商品出庫輸入編號反饋輸入名稱輸入反數饋量反饋反饋輸入價格輸入商品價格輸入名稱反饋信息輸入商品名稱輸入數量反饋信息輸入商品編號輸入商品名稱輸入商品數量輸入商品數量
圖3-4 庫存管理子系統(tǒng)結構圖
四、系統(tǒng)的詳細設計
4.1總體結構和模塊設計
6儲在入庫商品信息表中。
商品出庫模塊模塊:輸入出庫商品的編號以及出庫的數量,把出庫后的商品信息保存在出庫商品信息表中。
刪除商品模塊:先輸入商品的編號及名稱,再刪除該商品在庫存商品信息表中的信息。
修改商品信息模塊:先輸入商品的編號及名稱,在庫存商品信息表中查詢到該商品信息,再修改其對應信息。
查詢商品信息模塊:輸入編號查詢商品在庫存商品信息表中的信息或查詢庫存商品信息表中的所有商品的信息。4.1.2各個模塊設計
(1)根據數據畫出的結構圖如圖3-2所示
倉庫信息管理系統(tǒng)商品信息商品信息請求處理庫存管理系統(tǒng)請求處理信息管理系統(tǒng)
圖4-2 倉庫信息管理系統(tǒng)結構圖
(2)信息管理子系統(tǒng)結構圖如圖3-3所示
8商品入庫操作
商品出庫操作
出庫后的商品信息
出庫數量多余商品數量時
0
當刪除的商品不存在是
修改商品操作
修改商品界面
商品信息查詢界面
所有商品信息
六、實驗總結
包括實驗問題中遇到問題,解決過程的分析;實驗心得體會等,不得抄襲!
第五篇:宿舍管理系統(tǒng)
附件B:宿舍管理系統(tǒng)源代碼
#include “stdio.h” #include “stdlib.h”
#define SIZE 1000
char grade;
typedef struct StuNode{
char num[11];
char name[20];
char sex[2];
char birth[11];
char hometn[13];
char dorNum[7];
char dorTel[8];
struct StuNode *next;}StuNode,*StuList;
int readToList(StuList sl,FILE *fp){
StuList p;
int i=0;
while(1){
p=(StuList)malloc(sizeof(StuNode));
if(fread(p,sizeof(StuNode),1,fp)!=1)break;
p->next=sl->next;
sl->next=p;
i++;
}
fclose(fp);
return i;}
void addNode(){
FILE *fp;
StuList sl,p,q;
if((fp=fopen(“stu_list”,“rb”))==NULL){ /*the file doesn't exist*/
p=(StuList)malloc(sizeof(StuNode));
printf(“Please enter the student's information:n”);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
p->next=NULL;
if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
}
fclose(fp);
}
else{
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
readToList(sl,fp);
p=(StuList)malloc(sizeof(StuNode));
printf(“Please enter the student's information:n”);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
q=sl->next;
while(q){
if(strcmp(q->num,p->num)==0){
printf(“This student %s existed!Press Enter to continue....”,p->num);
getchar();
clrscr();
return;
}
else q=q->next;
}
p->next=sl->next;
sl->next=p;
p=sl->next;
if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void delNode(){
FILE *fp;
StuList sl,p,q;
char num[11];
int flag=1;
printf(“Please enter the student's num:”);
scanf(“%s”,&num);
getchar();
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
if((fp=fopen(“stu_list”,“rb”))==NULL){
printf(“cannot open filen”);
return;
}
readToList(sl,fp);
p=sl;
while(p){
q=p->next;
if(strcmp(q->num,num)==0){
p->next=q->next;
free(q);
flag=0;
}
else p=p->next;
}
if(flag==1){
printf(“Not exist this student--%s!Press Enter to continue....”,num);
getchar();
clrscr();
return;
}
else if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
p=sl->next;
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void editNode(){
FILE *fp;
StuList sl,p;
char num[11];
int flag=1;
printf(“Please enter the student's num:”);
scanf(“%s”,&num);
getchar();
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
if((fp=fopen(“stu_list”,“rb”))==NULL){
printf(“cannot open filen”);
return;
}
readToList(sl,fp);
p=sl->next;
while(p){
if(strcmp(num,p->num)==0){
printf(“nThe student's old information is:n%s %s %s %s %s %s %snPlease enter the student's new information:n”,p->num,p->name,p->sex,p->birth,p->hometn,p->dorNum,p->dorTel);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
flag=0;
break;
}
else p=p->next;
}
if(flag){
printf(“Not exist this student--%s!Press Enter to continue....”,num);
getchar();
clrscr();
return;
}
else if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
p=sl->next;
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void sort(StuList sl[],int n,char key[]){
int i,j,k;
if(strcmp(key,“num”)==0){
for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(sl[j]->num,sl[k]->num)<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } if(strcmp(key,“name”)==0){ for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(strlwr(sl[j]->name),strlwr(sl[k]->name))<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } if(strcmp(key,“dorNum”)==0){ for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(sl[j]->dorNum,sl[k]->dorNum)<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } } void scan(char key[]){ FILE *fp; StuList sortary[SIZE],sl,p; int i,n; sl=(StuList)malloc(sizeof(StuNode)); sl->next=NULL; if((fp=fopen(“stu_list”,“rb”))==NULL){ printf(“cannot open filen”); return; } n=readToList(sl,fp); p=sl->next; for(i=1;i<=n;i++){ sortary[i]=p; p=p->next; } sort(sortary,n,key); printf(“n num name sex birth hometown dorNum dorTeln”); printf(“---------------n”); for(i=1;i<=n;i++){ printf(“%-11s %-19s%-2s %-11s %-13s %-7s %-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); } printf(“---------------n”); printf(“Press Enter to continue...”); getchar();} void search(char key[],char value[]){ FILE *fp; StuList sortary[SIZE],sl,p; int i,n,low,high,mid,flag=1; sl=(StuList)malloc(sizeof(StuNode)); sl->next=NULL; if((fp=fopen(“stu_list”,“rb”))==NULL){ printf(“cannot open filen”); return; } n=readToList(sl,fp); p=sl->next; for(i=1;i<=n;i++){ sortary[i]=p; p=p->next; } sort(sortary,n,key); low=1;high=n; while(low<=high){ mid=(low+high)/2; if(strcmp(value,sortary[mid]->num)==0){ printf(“The student's information is:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); flag=0; break; } else if(strcmp(strlwr(value),strlwr(sortary[mid]->name))==0){ printf(“Result set:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid+1;strcmp(strlwr(value),strlwr(sortary[i]->name))==0;i++) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid-1;strcmp(strlwr(value),strlwr(sortary[i]->name))==0;i--) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); flag=0; break; } else if(strcmp(value,sortary[mid]->dorNum)==0){ printf(“Result set:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid+1;strcmp(value,sortary[i]->dorNum)==0;i++) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); for(i=mid-1;strcmp(value,sortary[i]->dorNum)==0;i--) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); flag=0; break; } else if((strcmp(key,“num”)==0)&&(strcmp(value,sortary[mid]->num)<0))high=mid-1; else if((strcmp(key,“name”)==0)&&(strcmp(strlwr(value),strlwr(sortary[mid]->name))<0))high=mid-1; else if((strcmp(key,“dorNum”)==0)&&(strcmp(value,sortary[mid]->dorNum)<0))high=mid-1; else low=mid+1; } if(flag)printf(“No result!n”); printf(“Press Enter to continue...”); getchar(); clrscr();} void printMenu(){ printf(“ *********************< MENU >*********************n”); printf(“ 1.Add one student's record.n”); printf(“ 2.Delete one student's record.n”); printf(“ 3.Edit one student's record.n”); printf(“ 4.Scan all records ordered by num.n”); printf(“ 5.Scan all records ordered by name.n”); printf(“ 6.Scan all records ordered by dorNum.n”); printf(“ 7.Search one student's record.n”); printf(“ 8.Exit.n”); printf(“ **************************************************n”); printf(“Please enter your choice(1~8):”); grade=getchar(); getchar();} void main(){ char key[7],value[20]; while(1){ printMenu(); switch(grade){ case'1':addNode();break; case'2':delNode();break; case'3':editNode();break; case'4':clrscr();scan(“num”);break; case'5':clrscr();scan(“name”);break; case'6':clrscr();scan(“dorNum”);break; case'7':clrscr(); printf(“Please enter the key and value(eg:num 0606054230/name ZhangSan/dorNum 030615):n”); scanf(“%s%s”,&key,&value); while((strcmp(key,“num”)!=0)&&(strcmp(key,“name”)!=0)&&(strcmp(key,“dorNum”)!=0)){ printf(“Wrong key!It must be num/name/dorNum:n”); scanf(“%s%s”,&key,&value); getchar(); } getchar(); clrscr(); search(key,value); break; case'8':exit(0); default:clrscr(); printf(“n Have no this choice--%c!Press Enter to continue...”,grade); getchar(); clrscr(); } } }