MC102 - Lab05
Calendário em HTML + feriados fixos

Atividade:
Para um ano e mês fornecidos pelo usuário via teclado o programa deve gerar um documento HTML contendo o calendário do mês correspondente. O calendário deve apresentar em destaque todos feriados fixos do mês (link externo).

Os programas que vocês fizeram até agora apenas liam dados da entrada padrão (teclado). Para ler dados de um arquivo em modo texto é bem fácil. Na parte onde são declaradas as variáveis você deve inserir a declaração de um identificador de arquivo: FILE *fp;. Depois você deve abrir o arquivo em modo de leitura (read) usando o comando: fp = fopen("feriados.txt","r");. Agora onde você usava scanf(...); você muda para fscanf(fp,...);. Ex: fscanf(fp,"%d",&dia);. Terminada a leitura dos dados você deve fechar o arquivo através do comando: fclose(fp);. Feito isso, o identificador fp pode ser reutilizado para abrir outros arquivos.

Vocês devem ler as datas e nomes dos feriados fixos a partir de um arquivo texto "feriados.txt". Esses dados lidos devem ser armazenados em vetores na memória para futura utilização. Por exemplo, o arquivo pode iniciar com o número de feriados contidos no arquivo e depois apresentar um feriado por linha. No caso de nomes como "Proclamacao da Republica" o uso de fscanf com %s vai ler apenas "Proclamacao". Para ler todo o nome até o final da linha use: fscanf(fp,"%[^\n]",nome);.

Abaixo segue um possível exemplo de calendário em HTML:

NOVEMBRO2007
DOMSEGTERQUAQUISEXSAB
123
45678910
11121314151617
18192021222324
252627282930

2 - Finados
15 - Proclamacao da Republica

<html>
<head>
<title>Calendario</title>
</head>
<body bgcolor="#D4DDED">
<table border="0" bgcolor="#FFFFFF">
<tr bgcolor="#FFFFFF"><th colspan="4">NOVEMBRO</th><th colspan="3">2007</th>
</tr>
<tr bgcolor="#FFFFCC">
<th>DOM</th><th>SEG</th><th>TER</th><th>QUA</th><th>QUI</th><th>SEX</th><th>SAB</th>
</tr>
<tr bgcolor="#FFCCFF">
<td></td><td></td><td></td><td></td><td>1</td><td bgcolor="#FFDD88"><b>2</b></td><td>3</td></tr>
<tr bgcolor="#CCFFFF">
<td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr>
<tr bgcolor="#FFCCFF">
<td>11</td><td>12</td><td>13</td><td>14</td><td bgcolor="#FFDD88"><b>15</b></td><td>16</td><td>17</td></tr>
<tr bgcolor="#CCFFFF">
<td>18</td><td>19</td><td>20</td><td>21</td><td>22</td><td>23</td><td>24</td></tr>
<tr bgcolor="#FFCCFF">
<td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td><td></td></tr>
</table>
<br>
<table border="0" bgcolor="#FFFFFF">
<tr bgcolor="#FFFFFF"><td align="right"><b>2 -</b></td><td>  Finados</td>
</tr>
<tr bgcolor="#FFFFFF"><td align="right"><b>15 -</b></td><td>  Proclamacao da Republica</td>
</tr>
</table>
</body>
</html>

Forma de entrega:
Enviar por email para o monitor da sua turma. Colocar na mensagem o nome completo, RA e turma a que pertence. No assunto da mensagem colocar "MC102 - Entrega Lab05", para facilitar a separação dos emails relativos a entrega em uma pasta a parte através de um filtro de email.

Observações:
Esse programa é essencialmente uma evolução da atividade do lab anterior. O calendário gerado não precisa ser idêntico ao do exemplo acima, você pode selecionar as cores da sua preferência, etc. Não se preocupem com acentuação.


AVISO: Esta página não é uma publicação oficial da UNICAMP. A responsabilidade por seu conteúdo é exclusivamente do autor.
DISCLAIMER: This is a personal page, and not an official UNICAMP page. Its contents are of entire responsibility of Paulo Miranda.