单词小助手——结构化程序设计
1.實驗目的
a.明確結構化程序設計的基本結構。
b.通過對問題的分析,設計合理的結構化程序解決問題;
2.題目描述
例2為單詞小助手,要求完成以下任務:
a.改寫程序為良好程序風格(文檔注釋,函數注釋,語句注釋)。
b.將單詞測試中的功能完善,可針對做錯的單詞重復記憶。
c.查詢單詞的功能添加英文詞查詢,中文查詢的功能完善(考慮如何顯示同樣中文意義,不同的英文單詞)
提高要求:
可將程序中的不足(如數據驗證,排名功能)等根據自己的能力與理解完成。
3.算法設計
采用結構化程序設計的方法對程序進行完善,下面為結構化程序設計的方法和原則:
原則:
自頂向下、逐步細化、模塊化設計
4.結構圖
|
5.調試及測試??
5.1調試界面
5.2數據測試
5.2.1對數據庫內的單詞進行修改
5.2.2向數據庫增加單詞????????
?
?
?
?
5.2.3在維護功能菜單下輸入編號超出
5.2.4單詞預覽
?
5.2.5單詞背誦(中英雙語)
5.2.6查詢成績
5.2.7data文檔內容
6.部分代碼
//從文件中讀取單詞的信息
void ?writefile()
{
? ?FILE *fp;
? ?int i=0;
? ?fp=fopen("data.txt","w");
? ?if(!fp)
? ?{
? ? ? ?printf("\n打開文件data.txt失敗!");
? ?}
? ?for(i=0;i<num;i++)
? ?{
? ? ? ?fprintf(fp,"\n%s %s ",s[i].en,s[i].ch);
? ?}
? ?printf("\n");
? ?fclose(fp);
}
void sort()/*按字典排序*/
{
? ? int i,j;
? ? char temp[MAX_CHAR];
? ? for(i=0;i<num-1;i++)
? ? {
? ? ? ? for(j=num-1;j>i;j--)
? ? ? ? ? ? if(strcmp(s[j-1].en,s[j].en)>0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? strcpy(temp,s[j-1].en);
? ? ? ? ? ? ? ? strcpy(s[j-1].en,s[j].en);
? ? ? ? ? ? ? ? strcpy(s[j].en,temp);
? ? ? ? ? ? ? ? strcpy(temp,s[j-1].ch);
? ? ? ? ? ? ? ? strcpy(s[j-1].ch,s[j].ch);
? ? ? ? ? ? ? ? strcpy(s[j].ch,temp);
? ? ? ? ? ? }
? ? }
}?
//添加單詞信息
void add()
{
? ? int i=num,j,flag=1;
? ?while(flag)
? ? {
? ? ? ? flag=0;
? ? ? ? printf("\n請輸入單詞的英文形式:");
? ? ? ? scanf("%s",s[i].en);
? ? ? ? for(j=0;j<i;j++)
? ? ? ? ? ? if(strcmp(s[i].en,s[j].en)==0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("已有該單詞,請檢查后重新錄入!\n");
? ? ? ? ? ? ? ? flag=1;
? ? ? ? ? ? ? ? break; /*如有重復立即退出該層循環,提高判斷速度*/
? ? ? ? ? ? }
? ?}
? ?printf("\n請輸入單詞的中文形式:");
? ?scanf("%s",s[i].ch);
? ?num++;
? ?printf("\n您輸入的信息為: 英文: %s 中文: %s ?",s[i].en,s[i].ch);
? ? sort();
}
//刪除單詞信息
void del()
{
? ? int i=0,j=0;
? ? char ?en[MAX_CHAR]; ? //英文形式
? ? printf("\n請輸入你要刪除的單詞英文形式:"); ? ?
? ? scanf("%s",en);
? ? for(i=0;i<num;i++)//先找到該英文形式對應的序號
? ? ? ? if(strcmp(s[i].en,en)==0)
? ? ? ? {
? ? ? ? ? ? for(j=i;j<num-1;j++)
? ? ? ? ? ? ? ? ?s[j]=s[j+1];
? ? ? ? ? ? num--; //數量減少 1
? ? ? ? ? ? return;
? ? ? ? }
? ? ?printf("\n沒有這個單詞!");
}
//修改單詞信息
void modify()
{
? ? int i=0,choose=0,flag=1;//chooses代表選項標識,flag代表是否找到單詞
? ? char ?en[MAX_CHAR]; ? //英文形式
? ? while(flag||choose)
? ? {
? ? ? ? printf("\n請輸入你要修改的單詞英文形式:"); ? ?
? ? ? ? scanf("%s",en);
? ? ? ? for(i=0;i<num;i++)//先找到該英文形式對應的序號
? ? ? ? ? ? if(strcmp(s[i].en,en)==0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\n請輸入單詞正確的英文形式:");
? ? ? ? ? ? ? ? scanf("%s",s[i].en);
? ? ? ? ? ? ? ? printf("\n請輸入此單詞正確的的中文形式:");
? ? ? ? ? ? ? ? scanf("%s",s[i].ch);
? ? ? ? ? ? ? ? printf("\n繼續修改請選1,返回上一級請選0:");
? ? ? ? ? ? ? ? scanf("%d",&choose);
? ? ? ? ? ? ? ? if(choose==0) return; ??
? ? ? ? ? ? }
? ? ? ? ? ?flag=0;
? ? }
? if(!flag) ?printf("\n沒有這個單詞!");
}
?
總結
以上是生活随笔為你收集整理的单词小助手——结构化程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秒表倒计时
- 下一篇: 【英语单词听写】英语单词背诵辅助